thulium_drake.docker_services
Dockerサービスカタログ
この役割はDocker Swarm上で実行されるサービスのコレクションを含んでいます。各サービスはそれぞれの(セットの)ネットワークで区切られています。そして、すべての永続ストレージはコンテナにバインドマウントされています。これにより、NFSやGlusterFSなどの共有ストレージにデータを配置できます。
現在のカタログには以下のものが含まれています:
- Drone: エージェントを持つCI/CDコントローラ(https://github.com/drone/drone)
- Drawio: フローチャート、プロセス図、組織図、UML、ER、ネットワーク図を作成するための無料のセルフホスト型図面ソフトウェア
- Gitea: ウェブGUIを持つ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バックアップ
DBバックアップサービスは非常にシンプルです。フィルターに一致するすべてのコンテナをバックアップします:
- コンテナ名がmariadbで終わる
バックアップを管理することはありません。{{ docker_data_dir }}/{{ app_name }}_db にbackup.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 コンテナID /bin/bash
cat /var/www/html/config/config.ini.php
# このファイルの内容を{{ docker_data_dir }}/matomo_data/config.ini.phpに保存します
- 通常の
matomo
タスクリストを使ってMatomoをデプロイします