Deploy redmine-template
Redmine — the classic open-source project management, one click
Redmine
Just deployed
/usr/src/redmine/files
Postgres
Just deployed
/var/lib/postgresql
One-click Redmine: the classic open-source project management web app (issues, Gantt charts, wikis, forums, time tracking), running the official redmine Docker image on PostgreSQL. Everything is wired for you — database credentials, private networking, persistent upload storage, and automatic schema migrations on every start. No deploy-form inputs: secrets are generated per deployment and never need your attention.
First login: the app creates a default administrator admin / admin. On first login Redmine forces you to set a new password. Then go to Administration → Load the default configuration (one click) so trackers, roles, and issue statuses are created — the official image ships without them, and issue creation fails until this is done once.
Deploy and Host
Deploying Redmine via this template gives you a production-shaped install in about two minutes: a redmine:7.0 web service exposed on a Railway domain and a postgres:16-alpine database that is reachable only over Railway's private network. Both services restart automatically on failure, the web service has an HTTP healthcheck on /login, and schema migrations (rake db:migrate) run automatically on every deploy — including version upgrades of the Redmine image.
About Hosting
Hosting Redmine yourself means your projects, issues, and attachments never leave infrastructure you control. On Railway this template provisions:
| Service | Image | Notes |
|---|---|---|
| Redmine | redmine:7.0 (official image) | Public HTTP domain; listens on the Railway-provided port; healthcheck GET /login; ON_FAILURE restart policy (max 10 retries) absorbs the first-boot race while Postgres initializes |
| Postgres | postgres:16-alpine | Private networking only; data persists on a volume at /var/lib/postgresql |
Persistent storage: uploaded files and attachments live on a dedicated volume mounted at /usr/src/redmine/files, so they survive redeploys and restarts. Database variables are wired by reference — Redmine reads the Postgres service's password and private hostname via ${{...}} expressions, so there is nothing to type. SECRET_KEY_BASE is generated with ${{secret(64,"hex")}} per deployment; it is stored, stable across redeploys, and must never be rotated or deleted afterwards (rotation invalidates every active session). Postgres's POSTGRES_PASSWORD is likewise generated fresh per deployment.
Post-deploy steps (two minutes): open your Railway domain, log in as admin / admin, accept the forced password change, then click Administration → Load the default configuration. Optional: enable the REST API under Administration → Settings → API and grab your key from My account.
Why Deploy
- Zero-config: database host/user/password/database name are all resolved automatically — Railway references plus the official images' own sane defaults. No deploy-form inputs at all.
- Official images only: pinned
redmine:7.0andpostgres:16-alpine, no custom build step, no forks, upgrades are a tag bump. - Durable by default: uploads on a Railway volume, database on its own volume, sessions stable across redeploys thanks to a persisted
SECRET_KEY_BASE. - Self-healing boot: the Redmine image starts migrating immediately and does not wait for the database; the
ON_FAILURErestart policy (max 10 retries) plus the/loginhealthcheck absorbs that race automatically. - Private database: Postgres has no public endpoint — only Redmine can reach it, over Railway's private network.
Common Use Cases
- Teams replacing spreadsheets and email with structured issue tracking, roadmaps, and Gantt views.
- Software projects needing per-project wikis, forums, file repositories, and time tracking in one place.
- Internal helpdesks and IT ticketing with granular roles and workflows.
- Agencies managing multiple client projects with separate members, permissions, and activity feeds.
- Organizations that require a self-hosted, open-source project tracker with no per-seat licensing.
Dependencies for
Redmine needs a PostgreSQL 14+ database (Redmine 7.0 line), persistent disk for uploaded files, and a stable session secret. This template bundles all of them.
Deployment Dependencies
- PostgreSQL 16 (
postgres:16-alpine) with its own volume at/var/lib/postgresql; password generated per deployment via${{secret(32)}}. - Redmine 7.0 (
redmine:7.0, official image) with a volume at/usr/src/redmine/filesfor uploads; connects to Postgres through${{Postgres.RAILWAY_PRIVATE_DOMAIN}}and${{Postgres.POSTGRES_PASSWORD}};SECRET_KEY_BASEvia${{secret(64,"hex")}}. - Railway private networking — no public database endpoint; Railway volumes — two persistent disks; HTTP healthcheck on
/login; ON_FAILURE restart policy (max 10 retries). - First-run data (roles, trackers, issue statuses) is loaded by you in the admin UI after the first login, as described above.
Template Content
Redmine
redmine:7.0Postgres
postgres:16-alpine