Companion Planning / Setup

Set up Companion Planning on your own server

Run the public Docker image on a computer you control, sign in with a username and password, then open the planner from any browser on your network.

What you need

  • A computer that stays on: a desktop, a mini PC, a home server or a Docker host.
  • Docker, or a Companion Hub appliance with Companion Planning installed from the store.
  • Your time zone as an IANA name, such as Europe/Berlin.

Run it with Docker

The image is public and runs on amd64 and arm64. Replace the time zone, the address, the session secret and the password before you run it.

docker run -d --name ci-planning \
  -p 3848:3848 \
  -v ci-planning-data:/data \
  -e TZ=Europe/Berlin \
  -e AUTH_MODE=sso \
  -e DISABLE_OIDC=true \
  -e PUBLIC_BASE_URL=http://192.168.1.20:3848 \
  -e SESSION_SECRET=REPLACE_WITH_OPENSSL_RAND_HEX_32 \
  -e AUTH_DEFAULT_USERNAME=you \
  -e AUTH_DEFAULT_PASSWORD=REPLACE_WITH_A_STRONG_PASSWORD \
  ghcr.io/companionintelligence/ci-planning:latest

Settings to know

  • PUBLIC_BASE_URL is the address you type into the browser, with the scheme and port.
  • Generate SESSION_SECRET once with openssl rand -hex 32, and keep it. If it changes, every device signs out.
  • AUTH_DEFAULT_USERNAME and AUTH_DEFAULT_PASSWORD create the first owner when the server starts for the first time. Changing them later does not change that account. Use the in-app password reset instead.
  • Your data lives in the ci-planning-data volume, mounted at /data.

Open it and sign in

  1. Check that the server answers. Open http://192.168.1.20:3848/api/health in a browser on your network.
  2. Open http://192.168.1.20:3848 and sign in with the username and password you set.
  3. On a phone, open the same address in the browser, then add the planner to your home screen.

Optional: AI, Google Calendar and crash reports

AI

Point the server at an Ollama model with OLLAMA_URL, or at an OpenAI-compatible endpoint with APP_OPENAI_BASE_URL. Without a reachable model, the AI features stay hidden. The project's docker-compose.yml runs the app with a bundled Ollama.

Google Calendar

Set CP_KEK_B64 to a random key, generated with openssl rand -base64 32, so that stored tokens are encrypted. Keep that key the same. Then add a Google OAuth client under Settings → Connections and save it. Each person connects their own Google account. The steps for creating the client are in the Google Cloud setup guide.

Crash reports

Released images send error reports by default. They contain errors only, are scrubbed, and never include your data. Set CI_TELEMETRY=off, or CI_LOCAL_ONLY=true, to turn them off.

Web Push

Browser notifications work without extra setup. The server creates its push keys the first time it starts.

Backups

Read the Backup and restore section of the project README before you rely on the server for real data. It covers built-in scheduled snapshots, Litestream, and export and import.

Run from source

Developers can run Companion Planning from a source checkout with Node.js 22 or newer and pnpm. The local development guide has the steps.