Mattermost nativ zu docker-compose setup migrieren

9 Nov 2020 Lesezeit: 3 Minuten

ich kam letztens in die Gelegenheit einen nativ betriebenen Mattermost Dienst zu dockerisieren. Dabei sollten natürlich auch die Daten erhalten bleiben.

Wie das geht, zeige ich nachfolgend:

Backup der Daten(Bank)

Zunächst einmal müssen wir natürlich ein Backup der Datenbank und der Daten erstellen. Auf meinem System wurde postgresql genutzt und die Daten lagen gemäßg der Dokumentation auch brav unter /opt

su postgres -c "pg_dumpall > /tmp/mattermostbackup_all.psql"
cd /opt
tar -czvf /tmp/mattermostbackup.tgz mattermost

Upload auf den neuen Host

Nachdem nun die Daten schön geordnet gesichert sind, müssen sie natürich auf den neuen (Docker) Host.

scp  /tmp/mattermostbackup_all.psql root@neuer-docker-host:/root
scp /tmp/mattermostbackup.tgz root@neuer-docker-host:/root

Einrichten von Mattermost als Docker-Compose Setup

Mattermost ist so freundlich und stellt gleich ein paar Docker-Compose Files etc zur Verfügung. Sehr löblich. Diese wollen wir nutzen

git clone https://github.com/mattermost/mattermost-docker.git
cd mattermost-docker
docker-compose build

Damit haben wir schon mal unser image gebaut. Nun brauchen wir noch ein paar Volumes. Die Daten vom früheren /opt müssen natürlich anschließend auch dahin kopiert werden. Das die Ordnerstruktur beachtet werden muss ist obligatorisch.

mkdir -pv ./volumes/app/mattermost/{data,logs,config,plugins,client-plugins}
sudo chown -R 2000:2000 ./volumes/app/mattermost/

Jetzt kann es losgehen: wir starten die Maschinen

docker-compose up -d

Einrichten von SSL

Selbstverständlich nutzen wir SSL. Wer will das denn schon nicht machen? Dazu kopieren wir unser super, duper Zertifikat einfach in das Volume und starten das deployment neu.

cp /etc/ssl/mein-tolles-ssl-cert.pem ./volumes/web/cert/cert.pem
cp /etc/ssl/mein-tolles-ssl-key.pem ./volumes/web/cert/key-no-password.pem
docker-compose restart

Import der Datenbank

Wenn wir schon grade dabei sind, können wir auch unsere Datenbank importieren und so zumindest den Großteil der releanten Datenk rekonstruieren.

docker stop mattermost-docker_app_1
docker stop mattermost-docker_web_1
docker-compose exec db dropdb mattermost -U postgres
docker-compose exec db createdb mattermost -U postgres
cat /root/mattermostbackup_all.psql | docker-compose exec -T db psql -d mattermost -U postgres
docker start mattermost-docker_app_1
docker start mattermost-docker_web_1

Quellen und Links


Folding at home - schnell und einfach starten

26 Mär 2020 Lesezeit: 2 Minuten

In der aktuellen zeit vergeht nicht einmal eine halbe Stunde, ohne das irgendwas über Corona oder Covid-19 geschrieben wird. Obwohl Pandemien bereits bekannt sind, zeigt sich sehr unterschiedliches Verhalten und noch unterschiedliche Ansichten bezüglich des Umgangs mit der Thematik.

Ein Projekt was mir in letzter Zeit immer häufiger in die Timeline gespühlt wird ist Folding@home. Es handelt sich dabei um ein "Projekt für die Krankheitsforschung, das die Proteinfaltung und andere Arten von Molekulardynamik simuliert". Dafür braucht es viel Rechenpower. Durch die aktuelle dynamik und die Bereitschaft der Teilnehmer konnte damit der größte Supercomputer der Welt erschaffen werden.

Wer mitmachen möchte ist herzlich dazu eingeladen. Der Eintieg ist einfach und in der FAQ der Seite beschrieben. Wer ein Fan von Statistiken ist, erstellt sich vorher noch einen Passkey.

Auf meinen Linux-Systemen (RedHat basierend) konnte ich wie folgt:

export USERNAME=DERROCKER
export PASSKEY=1234567890ß123457890ß1234567890
export TEAM=12345
wget https://download.foldingathome.org/releases/public/release/fahclient/centos-5.3-64bit/v7.4/fahclient-7.4.4-1.x86_64.rpm
rpm -i --nodeps fahclient-7.4.4-1.x86_64.rpm
FAHClient --user=$USERNAME --team=$TEAM --passkey=$PASSKEY --gpu=true --smp=true --log=FAHlog.txt --power=full

Wer darauf keine Lust hat, kann das natürlich auch per Docker machen:

export USERNAME=DERROCKER
export PASSKEY=1234567890ß123457890ß1234567890
export TEAM=12345
docker run --name folding-at-home -e USER=$USERNAME -e TEAM=$TEAM -e PASSKEY=$PASSKEY -e ENABLE_GPU=true -e ENABLE_SMP=true --restart unless-stopped yurinnick/folding-at-home

und wer einen Kubernetes Cluster zur Hand hat ist natürlich auch eingeladen.

Das Ganze kann eine Weile dauern bis man eine Aufgabe zugewiesen bekommt. Aber dann geht es durchaus zur Sache und die Karre brummt.

Bildbeschreibung


Docker daran hindern ein Netzwerk zu nutzen das es schon gibt

3 Sep 2019 Lesezeit: ~1 Minute

Leider kommt es in einem etwas größeren Netzwerk immer mal wieder vor, das Netzwerke zur Trennung von Datenverkehr angelegt werden. Auch wenn es manchmal missfällt, so muss man sich der Tatsache fügen, das Netzwerke und das Internet nicht immer lieb zueinander sind.

Bei der Verwendung von Docker und Kubernetes macht man die ganze Netzwerkmagie noch einmal und verkompliziert in der Regel das ganze Netzwerkvodoo in einem privaten Netzwerk - wie zum Beispiel bei einer Firma.

In meinem Fall geht es um einzelne Docker-Hosts die immer wieder mit docker network create ein neues Netzwerk zur isolierung der Daten innerhalb des Docker-Universums auf dem Host erzeugen. Leider kollidieren die erzeugten Netzwerke dann aber auch mit bereits existierenden privaten Netzwerken und schwups funktioniert die Sache mit dem Datenverkehr nicht mehr sauber.

Leider ist es wohl recht unüblich vorher sowas durchblicken zu können und daher hat Docker dafür auch keine andere Lösung als einfach statische routen zu den Netzwerken die es schon in der Firma gibt auf dem Hosts zu setzen, damit diese dann durch den Algorithmus nicht mehr automatisch herangezogen wird... Nicht! Cool!

Quellen und Links