Taiga

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen

Taiga installieren

Taiga ist eine Software für die agile Projektverwaltung. Es werden Scrum- und einfache Kanban-Projekte unterstützt. Weitere Komponenten sind ein Issue-Tracker und ein Wiki pro Projekt. User Stories können optional zu Epics zugeordnet werden.

Bei Hostsharing kann Taiga im Managed Webspace mit dem Apache Passenger Modul betrieben werden. Es wird eine PostgreSQL Datenbank benötigt.

Diese Installationsanleitung beschreibt ein minimales Setup und verzichtet auf die Komponenten "taiga-events" und "taiga-protected".

Vorbereitung in HSAdmin

Mit Hilfe von HSAdmin werden angelegt:

  • ein User mit der Shell '/bin/bash', im Beispiel "xyz00-taiga"
  • beim User wird eine Domain aufgeschaltet, mein Beispiel ist: "projekte.hs-example.de"
  • ein PostgreSQL-User und eine PostgreSQL-Datenbank, beide heißen hier: "xyz00_taiga"

Installation des Backend

Das Backend ist eine Python-/Django-Anwendung. Die Sourcen werden aus dem Git-Repository bei Github ausgecheckt:

cd ~
git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable

Dann wird im Projekt-Verzeichnis ein Python.Virtualenv angelegt:

cd ~/taiga-back
python3 -m venv .venv --prompt taiga-back
source .venv/bin/activate
(taiga-back) pip install --upgrade pip wheel
(taiga-back) pip install -r requirements.txt
(taiga-back) pip install git+https://github.com/taigaio/taiga-contrib-protected.git@6.0.0#egg=taiga-contrib-protected

Es folgt die Konfiguration der Django-Anwendung

cd ~/taiga-back
cp settings/config.py.prod.example settings/config.py
nano settings/config.py

Folgende Einstellungen müssen angepasst werden:

In der Struktur "DATABASES" wird die angelegte PostgreSQL-Datenbank eingetragen.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'xyz00_taiga',
        'USER': 'xyz00_taiga',
        'PASSWORD': 'das-passwort-von-xyz00_taiga',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

Für die Variablen "SITES" und TAIGA_URL muss die richtige Domain eingetragen werden, als "SECRET_KEY" wird ein zufällige Zeichenkette eingetragen.

SECRET_KEY = "xxxxxxxxxxxxxxxxxxxxxxx"
TAIGA_URL = "https://projekte.hs-example.de"
SITES = {
    "api": {"domain": "hs-example.jalin.de", "scheme": "https", "name": "api"},
    "front": {"domain": "hs-example.jalin.de", "scheme": "https", "name": "front"}
}

Im Bereich "MEDIA AND STATIC" werden die bisher auskommentierten Variablen "MEDIA_ROOT" und "STATIC_ROOT" definiert.

# MEDIA_ROOT = '/home/taiga/media'
MEDIA_ROOT = '/home/pacs/xyz00/users/taiga/data/media'
MEDIA_URL = f"{ TAIGA_URL }/media/"
DEFAULT_FILE_STORAGE = "taiga_contrib_protected.storage.ProtectedFileSystemStorage"
THUMBNAIL_DEFAULT_STORAGE = DEFAULT_FILE_STORAGE
# STATIC_ROOT = '/home/taiga/static'
STATIC_ROOT = '/home/pacs/xyz00/users/taiga/data/static'
STATIC_URL = f"{ TAIGA_URL }/static/"

Für das Versenden von E-Mail ist der Bereich "EMAIL" anzupassen.

DEFAULT_FROM_EMAIL = 'noreply@projekte.hs-example.de'
EMAIL_USE_TLS = True
EMAIL_HOST = '127.0.0.1'
EMAIL_PORT = 4587
EMAIL_HOST_USER = 'xyz00-taiga'
EMAIL_HOST_PASSWORD = 'passwort-von-xyz00-taiga'

Alle Zeilen, die mit "EVENTS_PUSH" oder "CELERY" beginnen, können auskommentiert werden, lediglich

CELERY_ENABLED = False

sollte gesetzt werden.

Zum Schluss ist bei mir konfiguriert:

PUBLIC_REGISTER_ENABLED = True
USER_EMAIL_ALLOWED_DOMAINS = "hs-example.de"

und

ENABLE_TELEMETRY = False

Nun werden mit den folgenden Kommandos die Datenverzeichnisse angelegt

cd ~
mkdir data
mkdir data/static
mkdir data/media

Und die initialen Daten in die Datenbank geladen

cd ~/taiga-back
source .venv/bin/activate
(taiga-back) DJANGO_SETTINGS_MODULE=settings.config python manage.py migrate --noinput
(taiga-back) CELERY_ENABLED=False DJANGO_SETTINGS_MODULE=settings.config python manage.py createsuperuser
(taiga-back) DJANGO_SETTINGS_MODULE=settings.config python manage.py loaddata initial_project_templates
(taiga-back) DJANGO_SETTINGS_MODULE=settings.config python manage.py compilemessages
(taiga-back) DJANGO_SETTINGS_MODULE=settings.config python manage.py collectstatic --noinput

An dieser Stelle können wir den Server testweise starten

DJANGO_SETTINGS_MODULE=settings.config python manage.py runserver

Und in einer anderen Shell die API abfragen. Das Kommando

curl http://localhost:8000/api/v1/

liefert eine JSON-Datenstruktur mit der API-Definition. Den Server kann man mit "Ctrl-C" wieder beenden.

Nun wird die Anwendung im Apache Webserver konfiguriert. Im Domain-Verzeichnis "~/doms/projekte.hs-example.de/" wird eine Datei ".htaccess" mit der Passenger-Konfiguration abgelegt:

PassengerFriendlyErrorPages off
PassengerPython /home/pacs/xyz00/users/taiga/taiga-back/.venv/bin/python3
SetEnv PYTHONPATH /home/pacs/xyz00/users/taiga/taiga-back
SetEnv DJANGO_SETTINGS_MODULE settings.config

Die Verzeichnisse "subs/www", "subs-ssl/www" und "htdocs-ssl" werden gelöscht. In "app-ssl" wird eine Datei "passenger_wsgi.py" mit folgendem Inhalt abgelegt:

from taiga.wsgi import application

An dieser Stelle sollte sich die Backend-API auch im Browser unter der URL "https://projekte.hs-example.de/api/v1/" aufrufen lassen. Unter "https://projekte.hs-example.de/admin/" ist eine Anmeldung mit dem angelegten Admin-Account im Django-Backend möglich.

Installation des Frontend

Auschecken von Github:

cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
cd ~/taiga-front-dist
git checkout stable

Konfiguration

cd ~/taiga-front-dist/dist
cp conf.example.json conf.json

In "conf.json" muss der Wert "api" angepasst werden, ggf. kann die Default-Sprache auf "de" geändert werden.

"api": "https://projekte.jalin.de/api/v1/",
"defaultLanguage": "de",

Im Domainverzeichnis werden zum Abschluss Links für die statischen Inhalte gesetzt:

cd ~/doms/projekte.hs-example.de/
ln -s $HOME/taiga-front-dist/dist htdocs-ssl
cd htdocs-ssl
ln -s $HOME/data/media media
ln -s $HOME/data/static static

Zum Schluss wird in diesem Verzeichnis "htdocs-ssl" noch eine Datei ".htaccess" mit dem folgenden Inhalt angelegt:

 DirectoryIndex disabled
 RewriteEngine On
 RewriteBase /
  
 RewriteCond %{REQUEST_URI} !^/api(.*) 
 RewriteCond %{REQUEST_URI} !^/admin(.*)
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-l
 RewriteRule ^(.*) /index.html

Taiga mit Ansible installieren

Alternativ lässt sich Taiga auch mit einem Ansible Skript bei Hostsharing installieren. Damit lassen sich die Installationsschritte automatisiert durchführen.

Die Quellen für das Ansible Skript können hier eingesehen werden: https://github.com/tpokorra/Hostsharing-Ansible-Taiga/

Dort ist auch eine README Datei mit einer Anleitung.

Links