"vault backup: 2026-03-08 13:41:28 from Flow"
This commit is contained in:
62
21-Server Reference/homelab/stacks/openproject.md
Normal file
62
21-Server Reference/homelab/stacks/openproject.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user