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。