# ============================================================================ # docker-compose.dev.yml — Synapse DEV homeserver for RFC-001 P1 (presence) # ============================================================================ # # *** DEV-ONLY. LOCAL SANDBOX. Do NOT point this at, or run alongside, any # live/production homeserver. *** # # Single-instance Synapse (RFC-002 Mode B, federation OFF) + an optional # Element web client for the human view (A4). Brought up by ./dev-up.sh, which # renders config into ./.data (gitignored) first. # # Isolated by design: dedicated project name + network + high host ports so it # never collides with other stacks on the box (A5). # # Host ports: ${MATRIX_HTTP_PORT:-18008} -> Synapse 8008 (plain HTTP) # ${MATRIX_TLS_PORT:-18448} -> Synapse 8448 (self-signed TLS) # ${ELEMENT_PORT:-18080} -> Element web (profile: element) # ---------------------------------------------------------------------------- name: matrix-p1-dev services: synapse: image: matrixdotorg/synapse:latest container_name: matrix-p1-synapse restart: 'no' # Run against the rendered config in /data (dev-up.sh puts it there). environment: SYNAPSE_CONFIG_DIR: /data SYNAPSE_CONFIG_PATH: /data/homeserver.yaml volumes: - ./.data:/data ports: - '127.0.0.1:${MATRIX_HTTP_PORT:-18008}:8008' - '127.0.0.1:${MATRIX_TLS_PORT:-18448}:8448' networks: - matrix-p1-net healthcheck: test: ['CMD-SHELL', 'curl -fsS http://localhost:8008/health || exit 1'] interval: 3s timeout: 5s retries: 40 start_period: 5s # Optional human view (A4). `docker compose --profile element up -d element`. element: image: vectorim/element-web:latest container_name: matrix-p1-element restart: 'no' profiles: [element] volumes: - ./.data/element-config.json:/app/config.json:ro ports: - '127.0.0.1:${ELEMENT_PORT:-18080}:80' networks: - matrix-p1-net networks: matrix-p1-net: name: matrix-p1-net driver: bridge