2.2 KiB
2.2 KiB
OpenProject
Self-hosted project management tool (tasks, timelines, wikis).
Access
- Tailscale: 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
services:
openproject:
image: openproject/openproject:17
container_name: openproject
restart: always
ports:
- "5010:80"
environment:
- SECRET_KEY_BASE=<redacted>
- 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=<redacted>
- 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=truetells 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 inspector 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, andopenproject_openproject_tailscale_state