Install with the one-line installer. It detects your OS/arch, downloads the release binary, verifies its SHA-256, and runs the binary's own exec-install — for the client that places it on PATH; for the server it sets up the systemd service (left stopped).
Server
Server (public Linux host; binds :80/:443, point your admin DNS at it). The systemd setup needs root, so install with sudo. It leaves the service stopped — configure the admin host, then start:
# 1. install the binary + set up the service (stopped). Needs root for systemd.
curl -fsSL https://seikan.okonomi.cloud/server/install.sh | sudo bash
# 2. set the admin host (+ options) — opens $EDITOR, or use --set for unattended installs
sudo seikan-server configure --set SEIKAN_ADMIN_HOST=admin.example.com
# 3. start it — prints the one-time admin API key
sudo seikan-server start
Steps 2–3 are scriptable: configure --set KEY=VALUE (repeatable) edits the env file with no editor. Add SEIKAN_ACME_STAGING=true while testing (avoids Let's Encrypt rate limits; the cert won't be browser-trusted). start refuses to run until the admin host is set. To upgrade later, re-run the installer — the binary is swapped, your config kept, and it restarts only if it was already running. To pin a version: curl -fsSL https://seikan.okonomi.cloud/server/install.sh | sudo bash -s -- --version 0.17.0.
Client
Client (macOS or Linux) — no root needed; install just places the binary; configure after:
curl -fsSL https://seikan.okonomi.cloud/client/install.sh | bash
seikan init --server admin.example.com --api-key sk_...
The installer installs the latest release. Update by re-running it; remove with seikan uninstall --purge.
Install manually
The installer is a thin wrapper — it downloads + checksum-verifies the binary, then runs the binary's own exec-install. With a binary already in hand (e.g. from the GitLab package registry, or make dist) you can call that convention directly:
V=0.17.0
P=https://gitlab.com/api/v4/projects/<ID>/packages/generic/seikan/$V
curl -fsSLO "$P/seikan-linux-amd64" -O "$P/seikan-linux-amd64.sha256"
echo "$(cut -d' ' -f1 seikan-linux-amd64.sha256) seikan-linux-amd64" | sha256sum -c -
# The binary installs itself under its own filename — rename it before running.
mv seikan-linux-amd64 seikan && chmod +x seikan
./seikan exec-install # drop the client on your PATH (--bin <dir> to override)
sudo seikan-server install --admin-host admin.example.com # set up the server service (stopped)
sudo seikan-server start # then start it
For the client, exec-install / exec-uninstall place/remove the binary. For the server, install (alias exec-install) sets up the systemd service; uninstall (alias exec-uninstall) removes it.
Run with Docker
Container images are not currently published — distribution moved off the Okonomi hub and Docker Hub publishing is on hold. Build both images locally with make docker-build (tags seikan/server:$VERSION and seikan/client:$VERSION), then use them with the reference Compose file at deploy/docker/compose.yaml. They are configured entirely through the SEIKAN_* environment variables (see the server- and client-reference tables); an empty value is treated as unset, so unset a variable to fall back to its default. The server image runs seikan-server run; the client image runs seikan connect.
make docker-build
docker compose -f deploy/docker/compose.yaml up -d server
docker compose -f deploy/docker/compose.yaml logs server # one-time admin API key
Uninstall
Runs the binary's own exec-uninstall:
sudo seikan-server uninstall
seikan uninstall
- Server: removes the systemd service, unit and env file; to also drop the state DB, system user and binary, run the binary directly with
sudo seikan-server uninstall --purge. - Client: removes the binary. To also remove the per-user background service and saved config, run
seikan uninstall --purge.