Run the server with Docker

dockerself-hosting

The server ships as a Docker image, distributed as a tarball through the licence-gated download page rather than a public registry.

1. Get the image

Paste your licence key at docucommit.se/download and download server-image.tar.gz, then load it:

docker load < server-image.tar.gz

The key must be a server-surface key — an editor key does not activate the server. See Trial, licences, and seats.

This makes the image docucommit-server:v1.0.1 available locally. The compose file below sets pull_policy: never, so Docker uses the loaded image and never tries to reach a registry.

2. compose.yml

services:
  docucommit-server:
    image: docucommit-server:v1.0.1
    pull_policy: never
    container_name: docucommit-server
    restart: unless-stopped
    ports:
      - "8080:8080"
    env_file:
      - .env
    volumes:
      - docucommit-repos:/var/repos
      - ~/.ssh:/root/.ssh:ro
volumes:
  docucommit-repos:

Two volumes matter:

  • docucommit-repos:/var/repos — the working directory. The cloned repository, the licence token, users, and comments all live here. It must persist across restarts.
  • ~/.ssh:/root/.ssh:ro — mounted read-only, so the container can use your existing SSH key to clone over ssh://. Omit it if you clone over HTTPS.

3. .env

Keep configuration in .env rather than inlining it in the compose file:

# Required
DOCUCOMMIT_LICENSE_KEY=<your-licence-key>
DOCUCOMMIT_SYNC_REPOS_0_ID=docs
DOCUCOMMIT_SYNC_REPOS_0_URL=ssh://git@github.com/your-org/docs.git
DOCUCOMMIT_SYNC_REPOS_0_BRANCH=main
DOCUCOMMIT_WORKDIR=/var/repos

DOCUCOMMIT_WORKDIR is not optional — the image sets no default, and without it the server has nowhere to keep the clone.

To publish more than one repository, add another numbered block: DOCUCOMMIT_SYNC_REPOS_1_ID, _URL, _BRANCH, and so on. For HTTPS remotes, supply _USERNAME and _TOKEN instead of mounting a key.

Your plan sets how many repositories the server may publish (one on Pro and Team, five on Enterprise) — extra configured repositories are not served.

4. Bring it up

docker compose up -d

The server clones the repository on first start and serves it on port 8080. Put it behind whatever reverse proxy and TLS you already use.

5. Check it

docker compose logs -f docucommit-server

A successful start clones the repository and reports the licence as valid. If the clone fails over SSH, the usual cause is that the mounted key has no access to the remote — test the same URL with git clone from the host.