63 lines
2.2 KiB
Markdown
63 lines
2.2 KiB
Markdown
# 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=<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`
|