Docker and Compose
Use this to run a community on your own Linux machine. Compose runs the server, and Caddy in front of it gets the TLS certificate.
What you need
- A Linux server with Docker and the Compose plugin.
- A DNS
Arecord, such aschat.example.com, that points to it. - Ports 80 and 443 open, for Caddy.
Install
-
Make a folder and copy the Compose files into it. They are in
deploy/compose/in the server repository:docker-compose.yml,Caddyfileandenv.example.mkdir -p /opt/sblurp && cd /opt/sblurp cp env.example .env -
Edit
.env. Set the domain, the base URL and the name:SBLURP_DOMAIN=chat.example.com SBLURP_BASE_URL=https://chat.example.com SBLURP_NAME=My Community SBLURP_TRUSTED_ISSUERS=https://sblurp.chat SBLURP_TAG=stable -
Start it:
docker compose --profile caddy up -d -
Join your community first. The first person to join becomes the owner.
Every setting in .env is listed in Configuration.
Behind your own proxy
Leave out --profile caddy:
docker compose up -d
The server then listens on 127.0.0.1:8080 only. Point your proxy at it. The proxy must pass HTTP/2 streams and must not buffer them. See TLS and reverse proxies.
The image
Released images are at ghcr.io/OWNER/sblurp-server. OWNER is the GitHub owner of the public server repository. The tag picks a track: stable, beta, nightly or a pinned version.
The container:
- runs as user 65532, with a read-only root filesystem,
- listens on port 8080,
- keeps its data in
/data, the Docker volumesblurp-data.
Where the data is
The volume sblurp-data holds:
| File | What |
|---|---|
sblurp.db |
The SQLite database: members, channels, messages. |
files/ |
Uploads. |
file-key |
The key that signs file URLs. |
plugins/ |
Your plugins, if any. |
Backups
Set the R2 values in .env and the container backs itself up to Cloudflare R2. See Backups.
Build your own image
From the server folder of the repository:
docker build -t sblurp-server .
docker run -p 8080:8080 -v sblurp:/data \
-e SBLURP_BASE_URL=http://localhost:8080 sblurp-server
The Dockerfile builds for linux/amd64 and linux/arm64.
View this page as Markdown · Glossary · API schema.json · openapi.json