Skip to content

How to deploy with Docker ​

This page runs alldayrec long-term with Docker Compose on a Linux or macOS machine. If you are new to it, go through Your first transcript first.

Version

docker-compose.yml uses the image ghcr.io/suyiiyii/alldayrec:latest by default, the newest version tag (v0.1.0 when this page was written); the main tag follows the main branch. To choose a version, see Pin an image version below.

Prerequisites ​

  • Docker (with Compose), amd64 or arm64.
  • An Alibaba Cloud Bailian API key, Beijing region, or a key for another ASR engine (see Change the ASR engine).
  • An OpenAI-compatible LLM endpoint; with Bailian, the same key works.

Steps ​

  1. Get the code and copy the config template:

    bash
    git clone https://github.com/suyiiyii/alldayrec && cd alldayrec
    cp .env.example .env
  2. Edit .env and fill in at least DASHSCOPE_API_KEY and LLM_API_KEY. With the LLM settings in .env.example (Bailian compatible mode, qwen-plus), put the same key in both. Every setting is in Configuration.

    Put each comment on a line of its own: Compose reads VAR= # comment as the value # comment.

  3. Generate data/tenants.json, which holds your token:

    bash
    mkdir -p data && echo '[{"id": "main", "token": "'$(openssl rand -hex 16)'", "data": "/data/main", "recordings": "/data/main/recordings"}]' > data/tenants.json && chmod 600 data/tenants.json
  4. Start it and watch the logs:

    bash
    docker compose up -d
    docker compose logs -f

    Once the log shows ready on 0.0.0.0:8770, the server is ready. The first start downloads the model files first (about 70 MB).

  5. Open http://<server IP>:8770/?token=<your token> in a browser: 127.0.0.1 on this machine, this machine's LAN or Tailscale address from another computer. A cookie keeps you signed in after that.

docker-compose.yml publishes port 8770 on every interface of this machine, so a phone on the same LAN or Tailscale network can connect directly; see Reach the server from a phone. The token in data/tenants.json is the only lock, and the server refuses to start with an empty one. To keep it on this machine only, change the line under ports: to "127.0.0.1:8770:8770"; to reach it over the public internet, put a reverse proxy with TLS in front.

Common adjustments ​

The key gets 403 on the chat model ​

If this Bailian key is restricted to specific models in the console, calls to the chat model (qwen-plus) return 403. Use a key without a model restriction, or point LLM_* at another LLM service.

Time zone ​

The container uses UTC by default. .env.example has TZ=Asia/Shanghai: conversation dates and the daily recap time RECAP_AT follow this time zone. Delete that line to use UTC.

Pin an image version ​

Replace the tag on the image: line of docker-compose.yml with any of the tags below, then run docker compose up -d:

TagWhat it is
latestThe newest version tag (v*)
0.1.0, 0.1One version, or the newest version of a minor series
mainThe latest build of the main branch
sha-<7-character commit hash>One commit on main, e.g. sha-1971bca

.github/workflows/docker.yml publishes these tags.

Build the image locally ​

Uncomment the # build: . line in docker-compose.yml, then run:

bash
docker compose up -d --build

Where the data lives ​

All data is in ./data: tenants.json, the model files (data/models), and each person's database and original audio (data/main in the quickstart). The full layout is in Data layout; for backups, see Back up and restore.