Four things that broke when we set up 5 opensource apps and cost us a day
Description and use
Deploying five open‑source apps in Docker caused four critical failures that took a full day to fix. Solutions involve proper environment variable settings and volume mounting.
Problem
Deploying five open‑source apps (Gitea, Wiki.js, HedgeDoc, Etherpad, Mattermost) in Docker containers caused multiple failures that consumed a full day of troubleshooting.
Outcome
By applying specific environment variable settings and volume configurations, the team resolved four critical deployment issues, restoring all five applications to stable operation.
Workflow
- 1. For Wiki.js, mount volume to /wiki/data (exists in image) or delete pre‑existing /data volume before starting.
- 2. For HedgeDoc, set only CMD_DB_URL and omit DATABASE_URL when starting the container.
- 3. For Gitea, set GITEA__server__ROOT_URL and GITEA__server__DOMAIN env vars before first start; use four underscores for top‑level settings like GITEA____APP_NAME.
- 4. For Mattermost, create teams via API with "type": "O" to enable invite links; test links in private windows and account for login proxies.
Evidence
The container starts, the health check is happy, and the log says this ten times before it gives up: ... SQLITE_CANTOPEN
If you give HedgeDoc a DATABASE_URL variable, even with CMD_DB_URL set as well, it dies at once: ... Cannot read properties of undefined (reading 'dbURL')
On first start, Gitea shows its install page with everything pre-filled, including "Gitea Website URL". It guesses that from whatever address the first request came in on.
Invite people, Copy invite link, send it, and the new person gets: "This invite link is invalid"
- Record date: 2026-10-21T16:41:13.019Z