Install with Docker

Diffrook runs as one Docker container with a persistent data volume. There is no separate database service: configuration, run history and the encryption key live in that volume. These steps install version v0.2.0-beta.3.

Requirements

  • A Linux server (x86-64 or ARM64) with Docker Engine and the Docker Compose plugin.
  • Git, to fetch the tagged source.
  • An AI provider: an Anthropic or OpenAI-compatible API key, or an Ollama instance the server can reach.
  • An access token for a bot account on your code host (GitHub, GitLab, Bitbucket, Forgejo or Gitea).

1. Get the source

Check out the release tag. The image is built from this source; no prebuilt registry image is published.

git clone --branch v0.2.0-beta.3 --depth 1 https://github.com/Alexandre1116/diffrook.git
cd diffrook

2. Configure (optional)

The defaults work for a first local run: Diffrook listens on 127.0.0.1:8080 only. To change the address, port or public URL, copy the example settings and edit them:

cp .env.example .env
SettingPurpose
DIFFROOK_BIND_ADDRESSAddress the port is published on. Keep 127.0.0.1 behind a reverse proxy.
DIFFROOK_PUBLISHED_PORTHost port, 8080 by default.
DIFFROOK_PUBLIC_URLThe HTTPS URL people use to open Diffrook, for example https://reviews.your-company.example.
DIFFROOK_SECURE_COOKIESSet to true when Diffrook is served over HTTPS.
DIFFROOK_LICENSE_FILEPath to a signed licence file, mounted read-only. Leave empty for the free plan.

Single sign-on and the remaining settings are covered in SSO and HTTPS.

3. Start Diffrook

docker compose up --build -d
docker compose logs diffrook

The first build compiles the server and the web interface, so it can take a few minutes. The logs print a setup token: a one-time code for creating the first administrator. It is not an AI API key.

4. Create the administrator

Open http://localhost:8080 (or your server's address), enter the setup token and choose a username and password. You are signed in to the dashboard.

5. Connect your tools

  1. In Connections, add your code host with the bot account's token and a webhook secret, then test it.
  2. In AI providers, add your provider and default model, then test it.
  3. Optionally add Discord, Slack, Teams or webhook destinations in Notifications.
  4. In Automations, create an automation: repositories, trigger, action, model and limits.
  5. In your repository settings, add a webhook that posts to https://YOUR-HOST/api/webhooks/CONNECTION_ID with the same secret, or rely on scheduled and manual runs. The connection ID is returned by GET /api/connections.

The overview lists the token, repository format and webhook events for each code host.

Access from other machines

The Compose file binds to localhost on purpose. For remote access, put Diffrook behind an HTTPS reverse proxy that forwards to port 8080, set DIFFROOK_PUBLIC_URL and DIFFROOK_SECURE_COOKIES=true, and keep the plain HTTP port off the Internet. See SSO and HTTPS.

Back up the data volume

The volume holds the encryption key. Encrypted credentials cannot be restored without it, so back up the whole volume while Diffrook is stopped:

docker compose stop diffrook
docker run --rm -v YOUR_VOLUME_NAME:/data:ro -v "$PWD/backups:/backup" alpine tar czf /backup/diffrook-data.tgz -C /data .
docker compose start diffrook

Find the volume name with docker volume ls. Keep backups private.

Update to a new version

Back up first, then check out the new tag and rebuild:

git fetch --tags
git checkout NEW_TAG
docker compose up --build -d

Keep the same Compose project name and data volume. Linux installations can also install updates from the dashboard. Read releases and upgrades before upgrading across versions.

Written for Diffrook v0.2.0-beta.3.