thulium_drake.docker_services

Estado de la Construcción

Catálogo de servicios de Docker

Este rol contiene una colección de servicios que funcionan en un Docker Swarm, cada servicio está segmentado en su(s) propia(s) red(es). Y todo el almacenamiento persistente se monta en el contenedor, lo que permite colocar esos datos en un almacenamiento compartido, como NFS o GlusterFS.

El catálogo actualmente contiene:

  • Drone: un controlador CI/CD con agentes (https://github.com/drone/drone)
  • Drawio: un software de diagramas autohospedado y gratuito para hacer diagramas de flujo, diagramas de procesos, organigramas, UML, diagramas ER y de red.
  • Gitea: servidor Git impulsado por Go con interfaz web (https://github.com/go-gitea/gitea)
  • Portainer: interfaz de gestión de Docker (https://github.com/portainer/portainer)
  • AWX: la versión upstream de Ansible Tower (https://github.com/ansible/awx)
  • Traefik: proxy inverso integrado en Docker (https://github.com/containous/traefik)
  • Registro de Docker: almacenamiento local de imágenes de Docker
  • Janitor: un contenedor que ejecuta periódicamente un script para limpiar todo lo que no se usa y lo que está desactualizado
  • Mediawiki: el motor wiki de Wikipedia, consulta las instrucciones a continuación.
  • DB_backup: un contenedor que ejecuta periódicamente un script para pedir a todos los contenedores de mariadb que vuelquen sus bases de datos en el almacenamiento compartido
  • Kanboard: un tablero Kanban con interfaz web
  • Servidor de Factorio: un juego donde gestionas una fábrica automatizada y la defiendes de los vecinos.
  • Servidor de Minecraft: un juego donde puedes construir cosas y luchar contra el dragón en el Netherrealm.
  • Servidor de Teamspeak: servidor VOIP
  • Rocket chat: una alternativa autohospedada a Slack y otros
  • PeerTube: una alternativa gratuita y descentralizada a plataformas de video
  • VaultWarden: un servidor alternativo gratuito para el administrador de contraseñas Bitwarden

Este rol tiene algunas partes obligatorias que serán provisionadas y de las que (la mayoría, si no todas) los otros servicios dependen:

  • Portainer
  • Janitor
  • Traefik

Implementación

Para usar los servicios de este catálogo, sigue estos pasos:

  • Instala la colección community.docker en tu controlador de Ansible
  • Instala Docker (consejo: utiliza el rol de Docker de Jeff Geerling)
  • Crea el {{ docker_data_dir }}, preferiblemente en almacenamiento compartido
  • Copia defaults/main.yml y configúralo
  • Ejecuta el rol con un playbook como el siguiente:
---
- hosts: 'docker'
  roles:
    - 'docker_services'

Acceso a los servicios

Después de la provisión, todos los servicios serán accesibles bajo el siguiente nombre:

https://{{ service_app_name }}.{{ traefik_domain }}

Lo que se traduce en algo como https://portainer.dckr.example.com

Acciones adicionales

Algunos servicios requieren acciones adicionales antes de funcionar. A continuación se presentan las instrucciones por servicio si requieren configuración adicional.

Mediawiki

Asegúrate de crear una copia local de LocalSettings.php en {{ docker_data_dir }}/mediawiki_data. Esta copia se montará dentro del contenedor.

Este playbook verificará si el archivo está presente, pero no cambiará el contenido.

DB Backup

El servicio de respaldo de bases de datos es bastante simple, solo respaldará todos los contenedores que coincidan con los filtros:

  • el nombre del contenedor termina con mariadb

NO gestionará tus respaldos, creará un backup.sql en {{ docker_data_dir }}/{{ app_name }}_db y lo sobrescribirá cada vez.

PeerTube

Al poner otro proxy inverso frente al host de Docker, asegúrate de establecer encabezados adicionales. A continuación, un ejemplo de configuración para 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

La configuración inicial de Matomo es un poco complicada, ya que requiere un archivo config.ini.php persistente para funcionar después de reinicios.

Sin embargo, el software no puede manejar un archivo de configuración vacío o incompleto correctamente.

Hasta ahora, he podido implementarlo con éxito de la siguiente manera:

  • Implementar Matomo con la tarea matomo_setup
  • Entra en el contenedor de Docker para recuperar la configuración
docker exec -it containerid /bin/bash
cat /var/www/html/config/config.ini.php
# Guarda el contenido de este archivo en {{ docker_data_dir }}/matomo_data/config.ini.php
  • Implementa Matomo con la lista de tareas 'regular' matomo
Instalar
ansible-galaxy install thulium_drake.docker_services
Licencia
gpl-3.0
Descargas
4.3k
Propietario