seppv0.1.0
Get Started

Install

Get the sepp binary: prebuilt release, cargo install, Docker image or build from source.

Download a release binary

Prebuilt binaries are available for Linux, Windows and macOS on the releases page.

Install with Cargo

If you have Cargo installed, you can install the latest release of sepp with:

cargo install sepp --locked

Build from source

sepp is written in Rust and requires no additional dependencies to build. Clone the repo and build with Cargo:

git clone https://github.com/sepp-org/sepp
cd sepp
cargo build --release

Run with Docker

sepp is also published as a container image on the GitHub Container Registry, which is the easiest way to run the server if you already have Docker. The image contains nothing but the single sepp binary and runs it as a non-root user.

docker pull ghcr.io/sepp-org/sepp:latest

Several tags are published:

  • latest is the most recent tagged release.
  • 1.2.3, 1.2 and 1 let you pin to an exact release or to a minor or major version line.
  • master follows the tip of the master branch and is rebuilt on every push.
  • sha-<short> points at a single commit, for example sha-caa284e.

The same image runs on both amd64 and arm64 machines. Each tag is a multi-architecture manifest, so Docker pulls the build that matches your host and you never have to pass a --platform flag.

Run the server

docker run --rm \
  -p 50051:50051 \
  -v sepp-data:/sepp/sepp-data \
  ghcr.io/sepp-org/sepp:latest

sepp listens for gRPC on port 50051 and writes its database to /sepp/sepp-data inside the container. The admin UI is on by default, bound to 0.0.0.0:9465 with a demo admin key. Publish the port to reach it:

docker run --rm \
  -p 50051:50051 -p 9465:9465 \
  -v sepp-data:/sepp/sepp-data \
  ghcr.io/sepp-org/sepp:latest

Log in with name admin and key admin. Replace the demo key before exposing the port on a network. See the admin UI guide for details.

Mount a volume for the data directory

Everything sepp persists lives under /sepp/sepp-data. If you do not mount a volume or a host directory there, those jobs are lost as soon as the container is removed. The directory is owned by user 65532 inside the image, so a bind-mounted host directory has to be writable by that user.

A named volume like the one above works without any setup, because Docker creates it from the image and keeps the same ownership. If you would rather bind-mount a directory from the host, create it first and hand it to user 65532 so that the server can write to it:

mkdir -p ./sepp-data
sudo chown 65532:65532 ./sepp-data

docker run --rm \
  -p 50051:50051 \
  -v "$(pwd)/sepp-data:/sepp/sepp-data" \
  ghcr.io/sepp-org/sepp:latest

Configuration

The image ships with the example configuration at /etc/sepp/sepp.toml and sets SEPP_CONFIG so that the server loads it on startup. You can override any single field with an environment variable, by prefixing it with SEPP_, uppercasing it and joining the section and field with __. For example, this runs the server on a different port:

docker run --rm \
  -p 6000:6000 \
  -e SEPP_SERVER__LISTEN_ADDR=0.0.0.0:6000 \
  -v sepp-data:/sepp/sepp-data \
  ghcr.io/sepp-org/sepp:latest

To change more than a field or two, mount your own configuration file over /etc/sepp/sepp.toml instead. You can print one to start from with:

docker run --rm ghcr.io/sepp-org/sepp:latest config example > sepp.toml

See the configuration docs for more details on the available options.

On this page