Quickstart: self-host in 5 minutes
You need a machine with Podman (or Docker) and Compose, about 4 GB of free memory, and git. The stack is Slipway itself plus Postgres 17, NATS JetStream, MinIO (S3) and Valkey.
1. Start the stack
Section titled “1. Start the stack”git clone https://github.com/slipway-systems/slipwaycd slipwaypodman compose -f deploy/compose/compose.yaml --profile app up -d --buildUse docker compose if you run Docker. The default profile starts only the dependencies; --profile app adds the slipway service (all mode: server, scheduler and worker in one process, migrations applied on start) and one docker-executor runner.
Wait for the health check, then open the UI:
curl -fsS http://localhost:8080/healthz && echo okBrowse to http://localhost:8080 and create your account and organisation. The first user becomes the organisation owner.
2. Create a runner pool and token
Section titled “2. Create a runner pool and token”In the UI, go to Settings, Runners, New pool (executor docker, label linux), then copy the registration token. Or use the CLI:
slipway login --server http://localhost:8080slipway runner pool create linux-docker --executor docker --label linuxslipway runner token linux-dockerGive the token to the bundled runner and restart it:
export SLIPWAY_RUNNER_TOKEN=<token>podman compose -f deploy/compose/compose.yaml --profile app up -d runnerThe runner needs a Docker-compatible socket. The Compose file defaults to the rootless Podman socket; set SLIPWAY_RUNNER_SOCKET=/var/run/docker.sock for Docker.
Check that it registered:
slipway runner list3. Connect a repository and run
Section titled “3. Connect a repository and run”Add an SCM integration under Settings, Integrations (for a laptop install, GitHub needs a reachable webhook URL; use a tunnel, or trigger runs manually). Create .slipway/ci.yaml as shown in the cloud quickstart, then:
slipway run trigger ci --branch main --watchWhere things live
Section titled “Where things live”| Component | Port | Purpose |
|---|---|---|
slipway |
8080 | UI, Connect API, webhooks, /healthz, /readyz, /metrics |
| Postgres | 5432 | State, with row-level security per organisation |
| NATS | 4222 / 8222 | Queues and event streams (JetStream) |
| MinIO | 9000 / 9001 | Logs, artifacts, caches (bucket slipway) |
| Valkey | 6379 | Sessions and rate limits |
Next steps
Section titled “Next steps”- Self-hosting overview for production topologies.
- Configuration reference for every
SLIPWAY_*setting. - Backups. Losing the master key loses all stored secrets.