# opencode-devbox docker-compose for shared machines # # For machines where multiple users share one OS account (e.g. 'garage'). # Each user gets isolated config, data, and named volumes by setting # SIGNUM in their .env file. # # Setup per user: # 1. mkdir -p ~//opencode-devbox && cd ~//opencode-devbox # 2. cp docker-compose.shared.yml docker-compose.yml # 3. cp .env.shared.example .env # 4. Edit .env with your signum, provider, keys, etc. # 5. mkdir -p ~//.config/opencode # 6. docker compose up -d # # Named volumes are automatically isolated per user because Docker Compose # prefixes them with the project directory name (e.g. opencode-devbox_devbox-data). # Since each user runs from ~//opencode-devbox/, volumes don't collide. services: devbox: image: joakimp/opencode-devbox:latest container_name: devbox-${SIGNUM:?Set SIGNUM in .env} stdin_open: true tty: true env_file: - .env environment: - TERM=xterm-256color volumes: # Host workspace — user's project directory - ${WORKSPACE_PATH:-~/src}:/workspace # SSH keys — user-specific if available, else shared - ${SSH_KEY_PATH:-~/.ssh}:/home/developer/.ssh:ro # Opencode config — per-user (persists settings across restarts) - ${HOME}/${SIGNUM}/.config/opencode:/home/developer/.config/opencode # Persist opencode data (auth, memory, session history) - devbox-data:/home/developer/.local/share/opencode # Persist uv data (Python installs) - devbox-uv:/home/developer/.local/share/uv # Optional: AWS credentials (per-user if available) # - ${HOME}/${SIGNUM}/.aws:/home/developer/.aws volumes: devbox-data: devbox-uv: