Sblurp

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 A record, such as chat.example.com, that points to it.
  • Ports 80 and 443 open, for Caddy.

Install

  1. Make a folder and copy the Compose files into it. They are in deploy/compose/ in the server repository: docker-compose.yml, Caddyfile and env.example.

    mkdir -p /opt/sblurp && cd /opt/sblurp
    cp env.example .env
    
  2. 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
    
  3. Start it:

    docker compose --profile caddy up -d
    
  4. 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 volume sblurp-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.