Self-hosting

Self-hosting the team server and task runner

Team Sharing and scheduled tasks run on services you deploy yourself. Start with one container, grow to several replicas.

Oxys DB Studio’s team features are two open-source services that run on your infrastructure. There is no vendor cloud in the loop, and the desktop app works fully offline without them.

ServiceBinaryDefault portWhat it keeps
Team serveroxysdb-server8443Accounts, shared folders and their items, invitations, quick shares
Task runneroxysdb-runner8444Saved tasks, schedules, run history, the connections tasks use (passwords encrypted)

Both serve HTTPS, reload renewed certificates without a restart, and expose Prometheus metrics only on a listener you turn on.

Choose a topology

TopologyStoreReplicasFor
Single nodeA SQLite file on a volume1 server, 1 runnerSmall teams and evaluation: back up one volume
High availability, fully open sourceFerretDB 2 on PostgreSQL with DocumentDB2 or more of eachProduction without SSPL software
High availability on MongoDBA MongoDB replica set you run, or a managed one2 or more of eachTeams that already operate MongoDB

With several replicas, no state is kept in the processes: a load balancer can send any request to any replica, and the runners elect a leader for schedules so each occurrence runs once.

Docker Compose

Three ready-made profiles live in the repository under deploy/compose/: single (one team server on SQLite behind Caddy for TLS), ha-mongodb and ha-ferretdb. The single-node profile:

cd deploy/compose
cp .env.example .env                      # optional: images, host name, ports
docker compose -f compose.single.yaml up -d

# First account (the password is read from standard input)
printf '%s\n' 'a long passphrase' | \
  docker compose -f compose.single.yaml exec -T server oxysdb-server add-account --email [email protected]

Every service runs with a read-only root filesystem, all capabilities dropped, memory and CPU limits and health checks. Only the reverse proxy publishes a port.

Kubernetes with Helm

The chart in deploy/helm/oxysdb/ installs the team server, with the task runner as a subchart. It needs Kubernetes 1.30 or later and Helm 3.

helm install oxysdb deploy/helm/oxysdb -n oxysdb --create-namespace \
  --set image.registry=registry.example.com/oxys
helm test oxysdb -n oxysdb

The store is chosen with global.database.mode: sqlite (the default, one replica), external (your own MongoDB-protocol database), mongodbOperator, or ferretdb with PostgreSQL managed by CloudNativePG, the recommended open-source high-availability setup. Secrets are read from mounted files, so external-secrets, sealed-secrets or a vault injector work unchanged.

Connect the desktop app

  • Team Sharing: sign in with the server’s URL and your account. Shared folders appear under My resources.
  • Task runner: give the app the runner’s URL and its access token, then send a saved task to it and choose a schedule.

Read more

The complete operator guide is in the repository: deployment guide (topologies, high availability, backups, abuse limits), Docker Compose profiles and the Helm chart’s values.