Hetzner Cloud Tools

12 Nov 2020 Lesezeit: ~1 Minute

Ich mag es ja wirklich mit der Cloud-umgebung von Hetzner zu arbeiten. Sie hat noch was von nachvollziehbar und bodenständig. Dennoch gibt es ein paar moderne Dinge, die man vielleicht nicht vermissen möchte.

Mir macht das Arbeiten mit Terraform zum Beispiel sehr viel Spaß und ich freue mich, dass es einen entsprechenden Provider dafür gibt. Aber auch die Arbeit mit Ansible ist sehr sehr geil und so freut es mich, dass es ein dynamisches Inventory gibt.

Sicherlich hat der eine oder andere Leser meines Blogs andere Bedürfnisse - so ist auf JEDEN FALL ein Blick in dieses sündige, fabulöse und vor allem richtig nice Git-Repo empfohlen... Es gibt viele Tolls und Helferlein zu entdecken.

Quellen und Links


rsync per ssh einschränken mit rrsync

10 Nov 2020 Lesezeit: 2 Minuten

Es ist gar schlimm. Da hat man einen feinen Server, der tut auch seinen Dienst und prompt will ihn auch jeder benutzen. Men legt Benutzer an, richtet Gruppen ein und doch fühlt es sich nicht gut an jemandem einfach so - natürlich mit guter Absicht - Daten und Dateien auf den Server zu legen.

Grade bei RSync erlebe ich es immer wieder, das man eigentlich nur das Ziel hat immer mal wieder einen Datenbestand zu synchronisieren - aber Einschränkungen werden nicht oder nur zu lasch gesetzt.

Freude, Strahlen, Sonnenschein: Die Entwickler von Rsync haben das Thema bereits aufgegriffen und rrsync eine Lösung dafür gebaut. Dies wird sogar in den meisten Fällen mit installiert und befindet sich dann an unscheinbaren Orten wie /usr/share/doc/rsync/scripts/rrsync.gz.

Im Grunde genommen muss man dann auch nicht viel mehr tun als

gunzip /usr/share/doc/rsync/scripts/rrsync.gz -c > /bin/rrsync
chmod +x /bin/rrsync

und natürlich die gewünschten Beschränkungen in die ~/.ssh/authorizedkeys aufnehmen. Das geschieht dann in der Art wie

command="/bin/rrsync -ro /path/to/dir"

und wie sich der normalintelligente schon denken kann, ist mir ro READ ONLY gemeint.

Und schon fühle ich mich ein wenig sicherer jemanden was mit meinem Server machen zu lassen.

Quellen und Links


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