Redmine auf Uberspace installieren

Um die Projektmanagementsoftware Redmine auf einem Uberspace zu installieren, gibt es unter wiki.uberspace.de eine Anleitung für Redmine 3.3 mit Ruby 2.3.

Um die neueste Version von Redmine, 3.4 zu nutzen, das inzwischen auf mit Ruby 2.4. kompatibel ist zu nutzen, müssen ein paar Änderungen vorgenommen werden.

Hier die Anleitung von Uberspace CC-BY-NC-SA mit den entsprechenden Ergänzungen. Diese basiert auch auf der Anleitung von redmine.org.

Installation

Zuerst holen wir uns die aktuelle, stabile Redmine-Version von GitHub:

[mueller@server ~]$ git clone https://github.com/redmine/redmine -b 3.4-stable

Da Redmine 3.3 nicht mit Ruby 2.4 kompatibel ist, muss die Ruby-Version auf 2.3 eingestellt werden:
Redmine 3.4 ist kompatibel mit Ruby 2.4, also stellen wir Ruby 2.4 ein.

[mueller@server ~]$ echo "RUBYVERSION=2.4" > ~/etc/rubyversion

Umgebung

[mueller@server ~]$ cat >> $HOME/.bash_profile <<__EOF__
export RAILS_SERVE_STATIC_FILES=true
export RAILS_ENV=production
__EOF__
[mueller@server ~]$ source $HOME/.bash_profile

Datenbank erstellen

Wir empfehlen dir, eine separate Datenbank für Redmine zu verwenden. Diese kannst du dir leicht selbst anlegen – hier im Beispiel verwenden wir deinen Usernamen und hängen _redmine hintendran (für den User mueller heißt die Datenbank dann also mueller_redmine):

[mueller@server ~]$ mysql -e "CREATE DATABASE ${USER}_redmine CHARACTER SET utf8"

Als nächstes konfigurierst du diese Datenbank für Redmine.

Dieser Schritt unterscheidet sich von der Uberspace-Anleitung. Statt nur die production-Datenbank zu konfigurieren, definieren wir auch die development-Datenbank mit identischen Werten.

[mueller@server ~]$ cd redmine
[mueller@server redmine]$ cat > config/database.yml <<__EOF__
production:
  adapter: mysql2
  database: ${USER}_redmine
  host: localhost
  username: $USER
  password: $(my_print_defaults client | grep -- --password | awk -F = '{ print $2 }')
  encoding: utf8

production:
  adapter: mysql2
  database: ${USER}_redmine
  host: localhost
  username: $USER
  password: $(my_print_defaults client | grep -- --password | awk -F = '{ print $2 }')
  encoding: utf8
__EOF__

Wenn die development-Datenbank nicht definiert wird, kommt es zu einem Fehler beim späteren Befehl bundle exec rake db:migrate.

Das Passwort füllen wir so mit etwas Shell-Magie automatisch aus.

Achtung: Bei dieser Datei ist die Einrückung aller Zeilen bis auf production: syntaktisch wichtig, ohne klappt es nicht.

Gems

Installiere nun die benötigten Gems. Gems sind Komponenten, die gepackt und versioniert wurden, um sie in Projekten wie Redmine einzubauen. Wir fügen Unicorn hinzu, das wir später noch benötigen und installieren alles auf einmal.

Achtung! Sollte Dein Account schon länger als Juli 2015 besteht, fehlen ihm noch nötige Konfigurationsdateien damit bundle nicht versucht gems global zu installieren, was an mangelnden Berechtigungen scheitern würde. Die Lösung ist das Überschreiben verschiedener Konfigurationsdateien (nur für ältere Uberspaces verwenden):

$ mkdir $HOME/.bundle
$ cp /etc/skel/.bundle/config $HOME/.bundle/config
$ cp /etc/skel/.gemrc $HOME/

Dann funktionieren auch im Anschluss die regulären Befehle:

[mueller@server redmine]$ echo "gem 'unicorn'" > Gemfile.local
[mueller@server redmine]$ bundle install --without development test postgresql sqlite

Token

Wie jede Rails-Anwendung benötigt auch Redmine ein geheimes Token, mit dem Daten in User-Sessions verschlüsselt werden, um diese sicherer zu machen:

[mueller@server redmine]$ bundle exec rake generate_secret_token

Datenbank füllen

Nun erstelle die Tabellen in der Datenbank mittels des Migrations-Scripts:

[mueller@server redmine]$ bundle exec rake db:migrate

… und befülle die Datenbank:

[mueller@server redmine]$ bundle exec rake redmine:load_default_data

An dieser Stelle wirst du nach der Sprache gefragt, die dein Redmine sprechen soll. Wenn du Deutsch haben möchtest, dann gib de ein.

Achtung! Wenn folgender Fehler hier auftritt, muss die Datenbankkonfiguration geändert werden, siehe oben Datenbank erstellen:

rake aborted!
ActiveRecord::AdapterNotSpecified: ‚development‘ database is not configured. Available: [„production“]

Mail

Zum Versenden von Mails stellen wir Redmine auf Sendmail ein:

[mueller@server ~]$ cat > $HOME/redmine/config/configuration.yml <<__EOF__
production:
  email_delivery:
    delivery_method: :sendmail
__EOF__

Service

Nun starten wir Redmine als Service. Dazu müssen wir zunächst einen freien Port raussuchen …

[mueller@server ~]$ REDMINE_PORT=$(( $RANDOM % 4535 + 61000)); netstat -tulpen | grep $REDMINE_PORT && echo "versuch's nochmal"
[mueller@server ~]$ test -d $HOME/service || uberspace-setup-svscan
[mueller@server ~]$ uberspace-setup-service redmine bundle exec unicorn_rails --port $REDMINE_PORT
[mueller@server ~]$ sed -i -e 's/exec/cd $HOME\/redmine\/\nexec/' $HOME/service/redmine/run
[mueller@server ~]$ svc -u $HOME/service/redmine

Solltest du einmal den Dienst neu starten müssen, dann geht das so:

[mueller@server ~]$ svc -du $HOME/service/redmine

Proxy

[mueller@server ~]$ cat > $HOME/html/.htaccess <<__EOF__
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{ENV:HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
RewriteRule (.*) http://localhost:${REDMINE_PORT}/\$1 [P]
__EOF__

Login

Besuche nun deine Redmine-Installation im Browser und logge dich ein. Benutzername und Passwort lauten beide ‚admin‘.

https://[user].[host].uberspace.de

Als erstes solltest du natürlich /das Passwort ändern. Dazu wirst du beim ersten Login direkt aufgefordert.

Fertig!

Damit bist du nun fertig. Viel Spaß mit Redmine!

PS: Kleiner Hinweis am Rande. Die Anleitung funktioniert auch mit älteren Redmine-Versionen, unter Verwendung der entsprechenden Ruby-Version. Welche das ist, siehe hier: redmine.org/projects/redmine/wiki/RedmineInstall/history