Files
Inanis_Vault/21-Server Reference/homelab/stacks/openproject.md

2.2 KiB

OpenProject

Self-hosted project management tool (tasks, timelines, wikis).

Access

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=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