-
Notifications
You must be signed in to change notification settings - Fork 1
Installation and Requirements
This page covers what S9TerpSync needs to run, the two ways to install it, and what actually lands on disk once you do. It doesn't cover Ethos/Banner setup or writing s9terpsync.yaml — those are separate pages, linked at the bottom.
-
Node.js
>=24 <25— this is the exact range frompackage.json'sengines.nodefield. Node 24.x is required; earlier majors (including 22 LTS) and Node 25 are both outside the supported range. - RHEL 8/9-friendly systemd Linux. The service is designed to be installed and supervised as a systemd unit on a standard RHEL-family box. Other systemd Linux distributions should work the same way, but RHEL 8/9 is the primary target.
- No Docker, no database. S9TerpSync is a single Node.js process with file-based state (locks, run manifests, audit records) on local disk. There's no container runtime to provision and no database server to stand up or back up separately.
Everything else — outbound network access to your Slate SFTP/API endpoint and to your institution's Ethos APIs, plus the Banner-side integration user and Ethos application/proxy — is covered on the next page, Ethos & Banner Prerequisites.
The published package is @soft9tech/s9terpsync. Install it globally so the CLI is on your PATH:
npm install -g @soft9tech/s9terpsyncThis is the recommended path for most operators — it pulls a released, versioned build and does not require a local clone or a build step.
If you need to build from source (for example, to run a pre-release commit, or to build on a machine without npm registry access), clone the repository and build it:
git clone https://github.com/soft9tech/s9terpsync.git
cd s9terpsync
npm ci
npm run buildnpm run build compiles TypeScript into dist/. When installed from source, there's no global s9terpsync command on PATH — invoke the built CLI entry point directly with Node instead:
node dist/cli.js config init --source both --institution-id <school-id> --environment production --out /etc/s9terpsync/s9terpsync.yamlSubstitute node dist/cli.js for s9terpsync in every command shown elsewhere in this wiki when you've installed from source.
package.json defines two binaries under its "bin" field:
| Binary | Entry point | Purpose |
|---|---|---|
s9terpsync |
dist/cli.js |
The CLI — configuration, manual runs, diagnostics, retention, and replay/recovery commands. This is what an operator runs directly from a terminal. |
s9terpsync-service |
dist/service-bin.js |
The long-running daemon. It is started and supervised by systemd (see Service & Systemd Operation) and is not something you invoke by hand at a shell prompt. |
Installing via npm (global install) puts both of these on PATH as s9terpsync and s9terpsync-service. Installing from source gives you the same two entry points at dist/cli.js and dist/service-bin.js, run via node.
The npm package also ships a few supporting files alongside the compiled code: an example configuration at config/s9terpsync.example.yaml (walked field-by-field on the Configuration Reference page) and a systemd unit template under assets/systemd/ (covered on the Service & Systemd Operation page). Neither requires any action at install time — they're templates you copy and edit later.
Installing the software doesn't get you a running sync — two things still need to happen first:
- Ethos & Banner Prerequisites — the Banner-side integration user and the Ethos application/proxy need to exist, with the right resources granted, before S9TerpSync can talk to your ERP at all.
-
Configuration Reference —
s9terpsync.yamlneeds to describe your institution, your Slate source, and your Ethos connection before you can run anything beyondconfig init.