Redmine einfach mit Docker-Images installieren
Hinweis: Siehe auch diesen Folgebeitrag zur Verwendung von Custom Themes in diesem Setup und diesen Folgebeitrag zum Backup von Redmine mit diesem Setup.
Dieses Tutorial zeigt dir Schritt für Schritt die einfachste Methode, eine frische Redmine-Installation einzurichten, die ich bisher gefunden habe. Die Befehle wurden auf Ubuntu 18.04 getestet, sollten aber mit minimalen Änderungen auch auf anderen DEB-basierten Distributionen funktionieren
Docker & Docker-Compose installieren
Bitte folge der Anleitung in Docker und docker-compose unter Ubuntu in 30 Sekunden installieren
Verzeichnis & docker-compose-Konfiguration erstellen
Wir installieren Redmine in /var/lib/redmine, welches die Datenverzeichnisse und das docker-compose-Skript hostet.
# Verzeichnisse erstellen
sudo mkdir /var/lib/redmine
sudo mkdir -p /var/lib/redmine/redmine_data /var/lib/redmine/mariadb_data
# Korrekte Berechtigungen für die Verzeichnisse setzen
sudo chown -R $USER:docker /var/lib/redmine
sudo chown -R 1001:1001 /var/lib/redmine/redmine_data /var/lib/redmine/mariadb_dataAls Nächstes erstellen wir /var/lib/redmine/docker-compose.yml.
Es gibt einige Dinge, die du hier ändern musst:
- Setze
REDMINE_EMAILauf die E-Mail-Adresse des Admin-Benutzers, den du verwenden möchtest (normalerweise deine E-Mail-Adresse!) - Setze die SMTP-Zugangsdaten (
SMTP_HOST,SMTP_PORT,SMTP_USERundSMTP_PASSWORD) auf einen gültigen SMTP-Server.SMTP_TLSist standardmäßig true — in seltenen Fällen, in denen - Die Port-Konfiguration, in diesem Fall
'3718:3000', bedeutet, dass Redmine auf Port 3718 auf dem lokalen PC abgebildet wird. Dieser Port wurde etwas willkürlich gewählt — da wir Redmine hinter einem nginx-Reverse-Proxy betreiben, muss der Port kein bestimmter sein (solange du überall denselben Port verwendest), aber er darf von nichts anderem verwendet werden. Du kannst hier einen beliebigen Port verwenden, sofern er nicht für etwas anderes verwendet wird. Lass3000wie es ist und ändere nur3718falls erforderlich.
Beachte, dass du REDMINE_PASSWORD nicht ändern musst — beim ersten Login wird Redmine dich ohnehin zwingen, das Passwort zu ändern.
services:
mariadb:
image: 'bitnami/mariadb:latest'
environment:
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- '/var/lib/redmine/mariadb_data:/bitnami'
redmine:
image: 'bitnami/redmine:latest'
environment:
- REDMINE_USERNAME=admin
- REDMINE_PASSWORD=redmineadmin
- [email protected]
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=25
- [email protected]
- SMTP_PASSWORD=yourGmailPassword
ports:
- '3718:3000'
volumes:
- '/var/lib/redmine/redmine_data:/bitnami'
depends_on:
- mariadbsystemd-Service einrichten
Als Nächstes konfigurieren wir den systemd-Service in /etc/systemd/system/redmine.service.
Setze User=... auf deinen aktuellen Benutzer im [Service]-Abschnitt.
[Unit]
Description=Redmine
Requires=docker.service
After=docker.service
[Service]
Restart=always
User=uli
Group=docker
# Container herunterfahren (falls laufend) wenn Unit gestoppt wird
ExecStartPre=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml down -v
; Container starten wenn Unit gestartet wird
ExecStart=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml up
; Container stoppen wenn Unit gestoppt wird
ExecStop=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml down -v
[Install]
WantedBy=multi-user.targetNach dem Erstellen der Datei können wir den redmine-Service aktivieren und starten:
sudo systemctl enable redmine
sudo systemctl start redmineDie Ausgabe von sudo systemctl start redmine sollte leer sein. Falls sie es nicht ist:
Job for redmine.service failed because the control process exited with error code.
See "systemctl status redmine.service" and "journalctl -xe" for details.debuge das Problem mit journalctl -xe und journalctl -e
Der erste Start dauert normalerweise etwa 3 Minuten, also hol dir eine Tasse Kaffee.
Nun kannst du prüfen, ob Redmine läuft mit
wget -qO- http://localhost:3718/(falls du die Port-Konfiguration zuvor geändert hast, musst du deinen Custom-Port in der URL verwenden).
Wenn es funktioniert hat, wird eine große HTML-Ausgabe angezeigt, die endet mit
[...]
<div id="footer">
<div class="bgl"><div class="bgr">
Powered by <a href="https://www.redmine.org/">Redmine</a> © 2006-2018 Jean-Philippe Lang
</div></div>
</div>
</div>
</div>
</body>
</html>Falls die Ausgabe leer ist, versuche wget -O- http://localhost:3718/ um die Fehlermeldung zu sehen
nginx-Reverse-Proxy einrichten (optional aber empfohlen)
Wir verwenden nginx, um die Anfragen von einer bestimmten Domain weiterzuleiten (Apache zu verwenden ist, falls du es bereits nutzt, auch möglich, aber es würde den Rahmen dieses Tutorials sprengen, dies zu beschreiben). Installiere es mit
sudo apt -y install nginxZuerst benötigst du einen Domainnamen mit konfiguriertem DNS. Für dieses Beispiel nehmen wir an, dass dein Domainname redmine.techoverflow.net ist! Du musst ihn durch deinen Domainnamen ersetzen!
Zuerst erstellen wir die Konfigurationsdatei in /etc/nginx/sites-enabled/redmine.conf. Ersetze redmine.techoverflow.net durch deinen Domainnamen! Wenn du einen anderen Port als 3718 verwendest, ersetze diesen ebenfalls.
server {
listen 80;
server_name redmine.techoverflow.net;
access_log /var/log/nginx/redmine.access_log;
error_log /var/log/nginx/redmine.error_log info;
location / {
proxy_pass http://127.0.0.1:3718; # docker-compose forwarded
proxy_read_timeout 3600s;
proxy_http_version 1.1;
}
}Führe nun sudo nginx -t aus, um zu testen, ob Fehler in der Konfigurationsdatei vorhanden sind. Wenn alles in Ordnung ist, siehst du
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulSobald du alle Fehler behoben hast, falls vorhanden, führe sudo service nginx reload aus, um die Konfiguration anzuwenden.
Teste das Setup, indem du deinen Domainnamen im Browser aufrufst. Du solltest die Redmine-Oberfläche sehen:

Den nginx-Reverse-Proxy mit Let’s Encrypt absichern
Zuerst müssen wir certbot und das certbot nginx-Plugin installieren, um das Zertifikat in nginx zu erstellen & zu installieren:
sudo apt -y install python3-certbot python3-certbot-nginxGlücklicherweise automatisiert certbot den Großteil des Prozesses der Installation & Konfiguration von SSL und dem Zertifikat. Führe aus
sudo certbot --nginxEs wird dich bitten, deine E-Mail-Adresse einzugeben und den Nutzungsbedingungen zuzustimmen sowie ob du den EFF-Newsletter erhalten möchtest.
Danach wird certbot dich bitten, den korrekten Domainnamen auszuwählen:
Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: redmine.techoverflow.net
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):In diesem Fall gibt es nur einen Domainnamen (es wird mehr geben, wenn du mehr Domains in nginx aktiv hast!).
Gib daher 1 ein und drücke Enter. certbot wird nun das Zertifikat generieren. Bei Erfolg siehst du
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/redmine.techoverflow.net.confNun wird dich gefragt, ob alle Anfragen automatisch auf HTTPS umgeleitet werden sollen:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):Wähle hier Redirect: Gib 2 ein und drücke Enter. Nun kannst du dich bei Redmine einloggen und die Installation abschließen.
Du musst das Zertifikat alle 3 Monate erneuern, damit es gültig bleibt, und danach sudo service nginx reload ausführen, um das neue Zertifikat zu verwenden. Wenn du dies versäumst, sehen Benutzer Fehlermeldungen über abgelaufene Zertifikate und können nicht leicht auf Redmine zugreifen! Siehe diesen Beitrag für Details, wie man diesen Prozess größtenteils automatisiert!
Redmine einrichten
Gehe zu deinem Domainnamen (wenn du den Anweisungen oben gefolgt bist, sollte dich automatisch auf HTTPS weitergeleitet werden). Klicke oben rechts auf Login und melde dich mit dem Benutzernamen admin und dem Standardpasswort redmineadmin an. Beim ersten Login wirst du aufgefordert, das Passwort in ein neues — und sichereres — Passwort zu ändern.
Ich werde nicht im Detail beschreiben, wie man Redmine für dein Projekt einrichtet. Es gibt jedoch zwei Dinge, die du sofort nach dem ersten Login erledigen solltest:
- Konfiguriere den korrekten Domainnamen: Gehe zu Administration -> Settings und setze
Host name and pathauf deinen Domainnamen, z.B.redmine.techoverflow.net. SetzeProtocolaufHTTPS. Du kannst auch einen Custom-Namen für deine Redmine-Installation unterApplication Titlefestlegen - Immer noch unter Administration -> Settings, gehe zum Tab Email Notifications, setze eine geeignete Absender-E-Mail-Adresse unter
Emission email address(normalerweise würdest du hier[email protected]verwenden, aber bei einigen SMTP-Anbietern wie GMail möchtest du vielleicht deinen SMTP-Benutzernamen verwenden) - Scrolle zum Ende der Email Notifications-Seite und klicke auf
Send a test email, was eine Test-E-Mail an die E-Mail-Adresse des aktuellen Redmine-Benutzers sendet. Sofern du sie nicht geändert hast, ist die Standardadresse die inREDMINE_EMAILin/var/lib/redmine/docker-compose.ymlkonfigurierte.
Falls die E-Mail nicht funktioniert, ändere SMTP_...=... in /var/lib/redmine/docker-compose.yml, aber du musst sie auch in /var/lib/redmine/redmine_data/redmine/conf/configuration.yml ändern! Nach den Änderungen starte Redmine neu mit
sudo systemctl restart redminewas die neue Konfiguration aus der Konfigurationsdatei verwendet.
Zugriff auf den weitergeleiteten Port mit ufw blockieren (optional)
ufw ist eine einfache Firewall für Ubuntu. Verwende sudo apt install ufw zur Installation und sudo ufw enable zur Aktivierung. Die Standardkonfiguration erlaubt SSH, blockiert aber andere Ports, einschließlich Port 3718 oder einen anderen Custom-Port, den du möglicherweise verwendet hast.
Um sie zu aktivieren, verwende
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow httpsDenk daran, auch alle Ports hinzuzufügen, die du offen haben möchtest. Siehe die ufw-Dokumentation für weitere Informationen.