Guide

Redmine in 15 minutes – with Docker, no prior knowledge.

One file, three commands, and a complete Redmine is running. This guide covers the way from nothing to the first login and ends with setting up Time Tracking. Prerequisite: a Linux server or virtual machine with Docker installed.

Step 1

Create one file.

A new directory, inside it the file docker-compose.yml with this content. Replace the two passwords and the key with your own values – the key may be long and arbitrary, it is never typed anywhere.

services:
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: redmine
      POSTGRES_USER: redmine
      POSTGRES_PASSWORD: change-me
    volumes:
      - ./data/db:/var/lib/postgresql/data

  redmine:
    image: redmine:6.1
    restart: unless-stopped
    depends_on: [db]
    ports:
      - "3000:3000"
    environment:
      REDMINE_DB_POSTGRES: db
      REDMINE_DB_DATABASE: redmine
      REDMINE_DB_USERNAME: redmine
      REDMINE_DB_PASSWORD: change-me
      SECRET_KEY_BASE: replace-with-a-long-random-string
    volumes:
      - ./data/files:/usr/src/redmine/files
      - ./data/plugins:/usr/src/redmine/plugins

Then create the data directories – before the first start, so they belong to you and not to the container:

mkdir -p data/db data/files data/plugins

Database, attachments and plugins live there – that is everything you need to back up.

Step 2

Start it and load the defaults.

In the same directory:

docker compose up -d
docker compose exec redmine bundle exec rake redmine:load_default_data REDMINE_LANG=en RAILS_ENV=production

The first command pulls the images and starts both containers; the second creates roles, issue statuses and workflows – once. Redmine is then reachable at http://<server>:3000. Log in with admin / admin; Redmine asks for a new password right away.

Step 3

Set up Time Tracking.

Unzip the plugin from your purchase e-mail into the plugin directory create its database tables, restart:

unzip at_zeiterfassung-1.6.0.zip -d data/plugins/
docker compose exec redmine bundle exec rake redmine:plugins:migrate RAILS_ENV=production
docker compose restart redmine

In Redmine: Administration → Roles and permissions → give your staff's role the permission View own timesheet, create a project, add members. Time Tracking now sits in the top menu. The manual covers the rest.

Good to know

Three things for day-to-day operation.

HTTPS

For access from the internet put a reverse proxy with a certificate in front – Caddy does it with two lines of configuration, nginx or Traefik likewise. Inside the company network port 3000 is fine.

Backup

Copy the data/ directory regularly; for the database cleanly with docker compose exec db pg_dump -U redmine redmine > backup.sql.

Updates

Redmine: raise the image version in the file, docker compose up -d – the container migrates the database on start. Plugin: delete the old directory, unzip the new file, plugins:migrate, restart – exactly as on installation.

Or have a look first

The demo needs no installation.

Open the demo To Time Tracking