OpenProject Docker HowTo
OpenProject wird als Docker-Container gut gepflegt und ist daher die erste Wahl. Damit die Daten bei einem Update nicht verschwinden, ist ein überblenden von lokalen Verzeichnissen des Docker-Container zum Host-System ratsam.
Die Datenverzeichnisse mit:
mkdir -p /var/lib/openproject/pgdata
mkdir /var/lib/openproject/logs
mkdir /var/lib/openproject/static
erstellen.
Der Docker-Container wird mit folgenden Befehl geholt und gestartet:
docker run \
-p 127.0.0.1:8080:80 \
-v /var/lib/openproject/pgdata:/var/lib/postgresql/9.6/main \
-v /var/lib/openproject/logs:/var/log/supervisor \
-v /var/lib/openproject/static:/var/db/openproject \
-e SECRET_KEY_BASE=secret \
openproject/community:8 &
Die Postgres Datenbank wird automatisch installiert und konfiguriert.
Da man ja nicht per http://localhost:8080 auf den Docker Container zugreifen kann, ist ein Apache virtueller Host notwendig.Wer noch nicht mod_proxy in den Apache eingebunden hat muss diesen erst noch installieren.
- sudo a2enmod proxy
- sudo a2enmod proxy_http
- sudo a2enmod proxy_balancer
- sudo a2enmod lbmethod_byrequests
- sudo service apache2 restart
Man erstellt eine eigene Domain oder Subdomain openproject.<domainname>. Die Konfiguration für den virtuellen Host könnte so aussehen:
Apache ##############################
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/openproject.<domainname>/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/openproject.<domainname>/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/openproject.<domainname>/privkey.pem
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
ServerAdmin webmaster@<domainname>
DocumentRoot /var/www/project
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerName project.<domainname>:443
RequestHeader unset Authorization
RequestHeader set X-Forwarded-Proto "https"
<Directory /var/www/project>
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
<RequireAny>
<RequireAll>
Require all grantedt
</RequireAll>
</RequireAny>
</Directory>
<Location />
ProxyPreserveHost On
ProxyPass http://127.0.0.1:8080/
ProxyPassReverse http://127.0.0.1:8080/
</Location>
Apache ##############################
Wichtig ist hierbei ProxyPreserveHost , da sonst der Host 127.0.0.1 nicht umgeschrieben wird und die Webseite teilweise Web-Links mit 127.0.0.1 versieht.
In der Anfangszeit habe ich meine Webseite zusätzlich mit einem Passwort geschützt. Damit war eine Erstellung von Arbeitspaketen nicht möglich. Fehlermeldung: Logindaten nicht korrekt. Ursache war mein zusätzlicher Passwortschutz. Der Apache2 Eintrag "RequestHeader unset Authorization" hat hier die erste Authorization entfernt und der Login von OpenProject wird nun genutzt.
Man muss sich zu Anfang mit admin / admin anmelden. Im nächsten Schritt vergibt man ein neues Passwort und wählt die Sprache aus. Unter Administration->Systemkonfiguration Protokoll auf https stellen.
Sollte im Nachgang OpenProject den Fehler 422 ausgeben oder kommt der Fehler nach einem Neustart des Docker-Containers, liegt es wahrscheinlich an Sessions, die unter http angelegt werden. Der Apache2 Eintrag - RequestHeader set X-Forwarded-Proto "https" - hat diesen Fehler beseitigt.
Nun sollte die Instanz sauber laufen.
OpenProject kann den Projektteilnehmer über ihre Task per Mail informieren. Hierbei kann man einen SMTP Server in der Software angeben. Die Einstellungen können direkt beim Start des Docker-Container oder später über das Admin Menu eingestellt werden.
Hierbei unbedingt die Namensauflösung prüfen. Der Docker-Container muss zugriff zu einem evtl. vorhandenen lokalen DNS Server bekommen.
Weiter Informationen im Benutzerhandbuch von OpenProject.