thulium_drake.docker_services
Docker-Dienste-Katalog
Diese Rolle enthält eine Sammlung von Diensten, die auf einem Docker Swarm laufen. Jeder Dienst ist in seinem eigenen (Set von) Netzwerk(en) segmentiert. Der gesamte persistente Speicher wird im Container gebunden, was es ermöglicht, diese Daten auf gemeinsam genutztem Speicher wie NFS oder GlusterFS abzulegen.
Der Katalog enthält derzeit:
- Drone: einen CI/CD-Controller mit Agenten (https://github.com/drone/drone)
- Drawio: Eine kostenlose selbstgehostete Diagrammsoftware für Flussdiagramme, Prozessdiagramme, Organigramme, UML-, ER- und Netzwerkte Diagramme.
- Gitea: Ein von Go betriebenen Git-Server mit WebGUI (https://github.com/go-gitea/gitea)
- Portainer: Docker-Verwaltungsoberfläche (https://github.com/portainer/portainer)
- AWX: Ansible Tower's Upstream (https://github.com/ansible/awx)
- Traefik: Docker-integrierter Reverse Proxy (https://github.com/containous/traefik)
- Docker-Registry: lokaler Docker-Imagespeicher
- Janitor: ein Docker, der regelmäßig ein Skript ausführt, um alle ungenutzten und veralteten Dinge zu bereinigen
- Mediawiki: die Wiki-Engine von Wikipedia, siehe die Anweisungen unten.
- DB_backup: ein Docker, der regelmäßig ein Skript ausführt, um allen gefundenen Mariadb-Containern zu sagen, dass sie ihre Datenbanken auf dem gemeinsamen Speicher dumpen sollen
- Kanboard: Ein Kanban-Board mit einer Weboberfläche
- Factorio-Server: Ein Spiel, bei dem Sie eine automatisierte Fabrik verwalten und sie gegen Nachbarn verteidigen.
- Minecraft-Server: Ein Spiel, in dem Sie Dinge bauen und gegen den Drachen im Netherrealm kämpfen können!
- Teamspeak-Server: VOIP-Server
- Rocket Chat: Eine selbstgehostete Alternative zu Slack und anderen
- PeerTube: Eine kostenlose und dezentrale Alternative zu Video-Plattformen
- VaultWarden: Ein kostenloser alternativer Server für den Bitwarden Passwortmanager
Diese Rolle hat einige zwingende Teile, die bereitgestellt werden, von denen die (meisten, wenn nicht alle) anderen Dienste abhängen:
- Portainer
- Janitor
- Traefik
Bereitstellung
Um die Dienste aus diesem Katalog zu nutzen, tun Sie Folgendes:
- Installieren Sie die
community.docker
-Kollektion auf Ihrem Ansible-Controller - Installieren Sie Docker (Tipp: Verwenden Sie Jeff Geerlings' Docker-Rolle)
- Erstellen Sie das {{ docker_data_dir }}, vorzugsweise auf gemeinsam genutztem Speicher
- Kopieren Sie
defaults/main.yml
und konfigurieren Sie es - Führen Sie die Rolle mit einem Playbook wie diesem aus:
---
- hosts: 'docker'
roles:
- 'docker_services'
Erreichbare Dienste
Nach der Bereitstellung sind alle Dienste unter folgendem Namen erreichbar:
https://{{ service_app_name }}.{{ traefik_domain }}
Das bedeutet zum Beispiel https://portainer.dckr.example.com.
Zusätzliche Aktionen
Einige Dienste benötigen einige zusätzliche Aktionen, bevor sie funktionieren. Im Folgenden sind die Anweisungen für jeden Dienst aufgeführt, wenn sie zusätzliche Einrichtung erfordern.
Mediawiki
Bitte stellen Sie sicher, dass Sie eine lokale Kopie von LocalSettings.php in {{ docker_data_dir }}/mediawiki_data erstellen. Diese Kopie wird im Container eingebunden.
Dieses Playbook überprüft, ob die Datei vorhanden ist, ändert jedoch den Inhalt nicht.
DB Backup
Der DB-Backupdienst ist ziemlich einfach. Er macht nur eine Sicherung aller Container, die zu den Filtern passen:
- Containername endet mit mariadb
Er verwaltet Ihre Backups NICHT; er erstellt jede Zeit eine backup.sql in {{ docker_data_dir }}/{{ app_name }}_db und überschreibt sie.
PeerTube
Wenn Sie einen anderen Reverse Proxy vor dem Docker-Host platzieren, stellen Sie bitte sicher, dass Sie zusätzliche Header setzen. Hier ist ein Beispielkonfiguration für NginX:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name peertube.example.com;
ssl_certificate /etc/ssl/peertube.example.com_fullchain.cer;
ssl_certificate_key /etc/ssl/peertube.example.com.key;
location / {
proxy_pass https://peertube.int.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
}
}
Matomo
Die erste Einrichtung von Matomo ist etwas knifflig, da sie eine dauerhafte config.ini.php benötigt, um nach dem Neustart zu funktionieren.
Die Software kann jedoch eine leere oder unvollständige Konfigurationsdatei nicht richtig verarbeiten.
Bisher konnte ich es erfolgreich wie folgt bereitstellen:
- Bereitstellen von Matomo mit der Aufgabe
matomo_setup
- Betreten Sie den Docker-Container, um die Konfiguration abzurufen
docker exec -it containerid /bin/bash
cat /var/www/html/config/config.ini.php
# Speichern Sie den Inhalt dieser Datei in {{ docker_data_dir }}/matomo_data/config.ini.php
- Matomo mit der 'regulären' Aufgabenliste
matomo
bereitstellen.
ansible-galaxy install thulium_drake.docker_services