Project

General

Profile

Redmine Configuration

Redmine plays a central role in the homelab environment—serving as the hub for issue tracking, documentation, project visibility, and integration with infrastructure-as-code workflows. This page details how Redmine is integrated with Active Directory for authentication and how it interfaces with a local Git mirror of the homelab's Ansible repository.

The goal: a fast, secure, and tightly integrated project management platform.


🔐 1. LDAP Authentication (Active Directory Integration)

Redmine authenticates users directly against the refol.us Active Directory domain. This provides:

  • Unified identity management
  • Automatic user provisioning
  • Consistent credentials across the homelab

Below are the validated LDAP settings used in the environment:

Setting Value
Name refol.us
Host 192.168.2.251
Port 389
Account
Base DN CN=Users,DC=refol,DC=us
On-the-fly user creation Enabled
Login attribute sAMAccountName
Firstname attribute givenName
Lastname attribute sn
Email attribute mail

These values follow Redmine’s recommended LDAP guidelines and are aligned with the homelab’s AD structure.
Reference: Redmine LDAP Configuration — https://www.redmine.org/projects/redmine/wiki/RedmineLDAP


📁 2. Repository Integration (Local Git Mirror of the GitHub Ansible Repo)

Redmine integrates directly with a local bare Git mirror of the GitHub-based Ansible repository. This design provides:

  • Ultra-fast access to source code
  • No dependency on GitHub availability
  • An authoritative, locally cached representation of all changes
  • Automatic updates via cron

The mirrored repository resides in:

/data/redmine/repos

This ensures Redmine can render diffs, browse files, and track changesets with minimal latency.


2.1 Preparing the Repository Directory

Create the directory and set correct ownership:

sudo mkdir -p /data/redmine/repos
sudo chown redmine:redmine /data/redmine/repos

Switch to the redmine user:

sudo -u redmine -i

2.2 Creating the Bare Repository Mirror

From within the repository folder:

cd /data/redmine/repos
git clone --bare https://github.com/t3knoid/ansible.git

Once cloned, instruct Redmine to fetch and index the repository’s changesets:

cd /data/redmine/redmine-6.0.5/
./bin/rails runner "Repository.fetch_changesets" -e production

2.3 Keeping the Mirror Updated

To sync the bare mirror with GitHub:

git fetch origin +refs/heads/*:refs/heads/* && git reset --soft

Automate this with a cron job that runs every 10 minutes:

sudo crontab -u redmine -e

Add:

*/10 * * * * cd /data/redmine/repos/ansible.git && git fetch origin +refs/heads/*:refs/heads/* && git reset --soft

This ensures Redmine always displays the latest commits, branches, and diffs without manual intervention.