Deploy redmine-template

Redmine — the classic open-source project management, one click

Deploy redmine-template

Just deployed

/usr/src/redmine/files

Just deployed

/var/lib/postgresql

Deploy on Railway

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:

ServiceImageNotes
Redmineredmine: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
Postgrespostgres:16-alpinePrivate 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.0 and postgres: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_FAILURE restart policy (max 10 retries) plus the /login healthcheck 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/files for uploads; connects to Postgres through ${{Postgres.RAILWAY_PRIVATE_DOMAIN}} and ${{Postgres.POSTGRES_PASSWORD}}; SECRET_KEY_BASE via ${{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

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
47
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51