Files
selfphoneng/deploy/contrack/compose.yml
T
iamdoubz 692dd59552
ci / check (push) Successful in 1m0s
ci / images (push) Successful in 32s
contacts: Contrack as the robust contacts (C3), picked in Settings or the setup wizard
Spec 11 §4: contacts.provider and contacts.contrack (local address only, company token
write-only), each person's own token (users.contrack_token_enc, migration 0010) in My settings,
books read from Contrack with a 5-minute cache, Add to contacts and accepted shares created in
Contrack, the company account on desk phones. Setup wizard step 8 Contacts. deploy/contrack
(2.0.2, pinned), Caddy/nginx blocks, decision 0003, admin guide Contacts. Tested against a fake
and a real Contrack 2.0.2 (contrack-live.test.ts).
2026-10-23 15:23:49 -05:00

33 lines
1.4 KiB
YAML

# SPDX-License-Identifier: AGPL-3.0-or-later
# Contrack (spec 11 §4, admin guide: Contacts): the "Robust" contacts, its own stack beside the PBX
# on the same server. Contrack is a separate open source program (AGPL-3.0) we talk to over HTTP.
#
# docker compose --env-file .env -f deploy/contrack/compose.yml up -d
#
# It listens on 127.0.0.1 only: the PBX (host networking) reaches it there, and people reach it
# through the reverse proxy at CONTRACK_HOSTNAME (deploy/caddy/Caddyfile, deploy/nginx).
# Then Settings → Contacts → Contrack, address http://127.0.0.1:3210.
services:
contrack:
# Pinned: SelfPhoneNG is tested against this version's API (decision 0003).
image: ghcr.io/arvarik/contrack:2.0.2
restart: unless-stopped
ports: ['127.0.0.1:3210:3210']
environment:
AUTH_REQUIRED: 'true' # everyone signs in; tokens need it
TRUST_PROXY_HOPS: '1'
PUBLIC_URL: https://${CONTRACK_HOSTNAME:?set CONTRACK_HOSTNAME in .env}
# Contrack's own AI and address lookups are outside SelfPhoneNG's "nothing leaves the
# server" rule. Uncomment to keep everything here (or point its AI at your local Ollama in
# Contrack's Settings → AI):
# AI_DISABLED: 'true'
# GEOCODING_DISABLED: 'true'
volumes:
- contrack-data:/app/data # its database, uploads and its own backups: back this up too
logging:
driver: json-file
options: { max-size: 10m, max-file: '3' }
volumes:
contrack-data: