# OpenProject Self-hosted project management tool (tasks, timelines, wikis). ## Access - **Tailscale:** [openproject.bunny-wyvern.ts.net](https://openproject.bunny-wyvern.ts.net) - **LAN:** `http://192.168.2.114:5010` ## Containers | Container | Image | Role | |---|---|---| | `openproject` | `openproject/openproject:17` (pinned hash) | Web app (all-in-one) | | `openproject-tailscale-sidecar` | `tailscale/tailscale` (pinned hash) | Tailscale node | > Both containers are running pinned image hashes rather than tags. This means they will not auto-update until the compose file is updated with a new image reference. ## Compose File **Path:** `/home/artanis/DockerFiles/openproject/docker-compose.yaml` ```yaml services: openproject: image: openproject/openproject:17 container_name: openproject restart: always ports: - "5010:80" environment: - SECRET_KEY_BASE= - OPENPROJECT_HOST__NAME=openproject.bunny-wyvern.ts.net - OPENPROJECT_HTTPS=true - OPENPROJECT_DEFAULT__LANGUAGE=en stdin_open: true tty: true openproject-tailscale-sidecar: image: tailscale/tailscale:latest container_name: openproject-tailscale-sidecar restart: always cap_add: - NET_ADMIN devices: - /dev/net/tun volumes: - openproject_tailscale_state:/var/lib/tailscale environment: - TS_AUTHKEY= - TS_HOSTNAME=openproject - TS_STATE_DIR=/var/lib/tailscale network_mode: "service:openproject" volumes: openproject_tailscale_state: ``` ## Notes - Uses the **all-in-one** OpenProject image (includes database, worker, web server in a single container) - Version pinned to `17` - `OPENPROJECT_HTTPS=true` tells OpenProject it is behind HTTPS (needed for correct URL generation even though TLS is terminated by Tailscale, not OpenProject itself) - Data is stored in two **anonymous volumes** (auto-generated hashes) — this means data is not trivially accessible on the host filesystem. Use `docker volume inspect` or the Dockhand volume browser to locate them - There are orphaned volumes from earlier OpenProject stack iterations: `open-project_open_project_tailscale_state`, `open-project_openproject_tailscale_state`, and `openproject_openproject_tailscale_state`