thulium_drake.docker_services

构建状态

Docker 服务目录

该角色包含一系列在 Docker Swarm 上运行的服务,每个服务都在它自己的(集合)网络中分隔。所有持久存储都被绑定到容器中,这使得可以将数据放在共享存储上,如 NFS 或 GlusterFS。

目录目前包含:

  • Drone: CI/CD 控制器及代理(https://github.com/drone/drone)
  • Drawio: 免费自托管的图表软件,用于制作流程图、过程图、组织结构图、UML、ER 图和网络图。
  • Gitea: 基于 Go 的 Git 服务器,具有网页界面(https://github.com/go-gitea/gitea)
  • Portainer: Docker 管理界面(https://github.com/portainer/portainer)
  • AWX: Ansible Tower 的上游版本(https://github.com/ansible/awx)
  • Traefik: Docker 集成的反向代理(https://github.com/containous/traefik)
  • Docker 注册表: 本地 docker 镜像存储
  • Janitor: 定期运行脚本清理所有未使用和过时内容的 docker
  • Mediawiki: Wikipedia 的维基引擎,请查看下面的说明。
  • DB_backup: 定期运行脚本告诉所有找到的 mariadb 容器在共享存储上导出数据库的 docker。
  • Kanboard: 带有网页界面的看板。
  • Factorio 服务器: 一个管理自动化工厂并维护其安全的游戏。
  • Minecraft 服务器: 一个可以建造东西并在下界与龙作斗争的游戏!
  • Teamspeak 服务器: VOIP 服务器。
  • Rocket chat: 自托管的 Slack 和其他服务的替代品。
  • PeerTube: 一个免费和去中心化的视频平台替代品。
  • VaultWarden: Bitwarden 密码管理器的免费替代服务器。

该角色有几个必需的部分,其他大多数(如果不是全部)服务依赖于这些部分:

  • Portainer
  • Janitor
  • Traefik

部署

为了使用该目录中的服务,请执行以下操作:

  • 在 Ansible 控制器上安装 community.docker 集合。
  • 安装 docker(提示:使用 Jeff Geerlings 的 Docker 角色)。
  • 创建 {{ docker_data_dir }},最好在共享存储上。
  • 复制 defaults/main.yml 并进行配置。
  • 使用如下播放簿运行该角色:
---
- hosts: 'docker'
  roles:
    - 'docker_services'

访问服务

在配置后的所有服务都可以通过以下名称访问:

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

这转换成类似 https://portainer.dckr.example.com 的地址。

额外操作

一些服务需要在工作前进行额外操作,以下是每个服务的说明,如果需要额外设置。

Mediawiki

请确保您在 {{ docker_data_dir }}/mediawiki_data 中创建 LocalSettings.php 的本地副本,此副本将被挂载到容器内。

该播放簿将检查文件是否存在,但不会更改内容。

DB Backup

DB 备份服务相当简单,它只会备份所有匹配过滤器的容器:

  • 容器名称以 mariadb 结尾。

它不会管理您的备份,每次都会在 {{ docker_data_dir }}/{{ app_name }}_db 中创建备份.sql 并覆盖它。

PeerTube

在 Docker 主机前放置另一个反向代理时,请确保您设置额外的头信息。 以下是 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

Matomo 的首次设置有点麻烦,因为它需要一个持久的 config.ini.php 文件,以便在重启之后仍能正常工作。

但是,该软件无法正确处理空或不完整的配置文件。

到目前为止,我能成功部署它的方法如下:

  • 使用 matomo_setup 任务列表部署 Matomo。
  • 进入 docker 容器以获取配置。
docker exec -it containerid /bin/bash
cat /var/www/html/config/config.ini.php
# 将此文件的内容保存到 {{ docker_data_dir }}/matomo_data/config.ini.php
  • 使用常规的 matomo 任务列表重新部署 Matomo。
安装
ansible-galaxy install thulium_drake.docker_services
许可证
gpl-3.0
下载
4.3k
拥有者