Installation¶
The release ships as a single .tar.gz bundle containing the docker image,
install + lifecycle scripts, and a README. Works with docker or podman
out of the box.
Requirements¶
| OS | Linux x86_64 |
| Runtime | docker ≥ 20.10 or podman ≥ 4.0 |
| Disk | ~1 GB free for the image; data dir grows with usage (the synthmas demo data is ~ 500 MB) |
| Port | 8000 free (override via ORCHESTRATOR_LISTEN_PORT) |
Install¶
When it finishes you'll see a block with the URL and an initial admin password (random, generated once on first boot — copy it before clearing your terminal):
═══════════════════════════════════════════════════════════════════
ETL-Orchestrator 0.7.0 is running.
═══════════════════════════════════════════════════════════════════
URL: http://your-host:8000/
Local URL: http://localhost:8000/
Initial admin login:
username: admin
password: <random>
(You'll be asked to change it on first sign-in.)
═══════════════════════════════════════════════════════════════════
Open the URL, sign in as admin with the printed password, and you'll be
forced through a password change before reaching the app.
Final install step: upload the license¶
The orchestrator boots and lets you sign in without a license, but it can't actually run a pipeline without one — every engine spawn needs a valid license file. So before you do anything else:
- Make sure you have a
license.licfile (request a trial at https://rook-it.com/licenses). - Settings → License → Upload → pick your
.licfile. - The page now shows the licensed-to name + expiry.
That's the install done. You're now free to import / build pipelines, create environments, and run.
Customising port / data dir / container name¶
All three are env-var overrides on the installer:
ORCHESTRATOR_LISTEN_PORT=9000 \
ORCHESTRATOR_DATA_DIR=/srv/etlo \
ORCHESTRATOR_CONTAINER_NAME=etlo-staging \
./bin/install-etl-orchestrator.sh
The installer persists your chosen values to bin/etlo.config so the
lifecycle script (run-etl-orchestrator.sh) finds the right container
without you re-passing env vars.
Upgrading¶
Just re-run ./bin/install-etl-orchestrator.sh with the newer tarball. The
script removes the old container, loads the new image, restarts. Your data
dir is untouched, so pipelines / envs / run history all carry over.
If the new release includes a schema change, the entrypoint's bootstrap step applies the alembic migration on first start automatically.
Lifecycle¶
After install, manage the container with:
./bin/run-etl-orchestrator.sh status # container + /healthz
./bin/run-etl-orchestrator.sh logs # follow logs
./bin/run-etl-orchestrator.sh stop # data preserved
./bin/run-etl-orchestrator.sh start
./bin/run-etl-orchestrator.sh restart
./bin/run-etl-orchestrator.sh uninstall # remove container; data + image kept
What the installer does, in order¶
- Detects docker or podman. Hard error if neither is installed; clear error if the daemon isn't reachable from the current user (you need to be in the docker/podman group, or root).
$tool load -i data/etl-orchestrator.dockerthen re-tags as:latestin the same repo namespace the image landed in.- Creates the data directory (defaults to
/var/lib/orchestrator). - Probes the host for a container socket (
/var/run/docker.sock,/run/podman/podman.sock,$XDG_RUNTIME_DIR/podman/podman.sock) and bind-mounts the first hit to/var/run/docker.sockinside the container. The orchestrator uses it to spawn engine containers for each pipeline step. - Removes any existing container of the same name (the upgrade path).
$tool run -d --restart unless-stoppedwith port + volume + socket mounts; environment vars stripped to the essentials.- Waits for
/healthz(up to 60 s) so failures surface immediately. - Greps the bootstrap log for the initial admin password and prints URL + password in the block above.
- Writes
bin/etlo.configwith the chosen settings so the lifecycle script auto-loads them.