作品
自宅サーバーの運用
GitLab、YouTrack、Zulip などを、自宅のサーバーで Docker Compose を使って動かしています。開発と日々の連絡を、外部のサービスに預けずに回すための環境です。設定は Git で管理し、変更は CI で検査します。
使用技術:
- Docker Compose
- GitLab
- YouTrack
- Linux
動かしているもの
- GitLab
- リポジトリと CI。設定の検査や、失敗の通知もここで動かしています。
- YouTrack
- チケットと、仕様書などのナレッジベース。このサイトの仕様書とチケットも、ここで管理しています。
- Zulip
- チャットと通知。CI の失敗や、サーバーの異常の知らせを受け取ります。
構成
入口
- リバースプロキシ外からの接続を受け、各サービスへ振り分ける
サービス
- GitLab
- YouTrack
- Zulip
運用
- 監視異常を Zulip に通知
- バックアップ定時の取得と、復元の訓練
- CI設定の検査と、失敗の通知
技術スタック
- コンテナ
- Docker Compose です。サービスごとに compose ファイルを分け、Git で管理しています。
- 入口
- リバースプロキシを置いて、外からの接続を受けています。
- 定時処理
- バックアップやデプロイは、定時に自動で実行します。
- CI
- GitLab CI と GitLab Runner です。秘匿値の検査と YAML の構文検査を、Docker のイメージで実行します。
- 通知と監視
- Zulip への通知と、サーバーの監視を、シェルスクリプトで組んでいます。
- 自動化
- 設定の取り込み、バックアップ、復元の訓練を、シェルスクリプトにしています。
設定の管理
サーバー上のファイルが正で、リポジトリは履歴と検査のための写しです。サーバーで Compose を変更したら、同期のスクリプトで取り込み、差分を確認してコミットします。
- 秘匿値の検査
- CI で、パスワードやトークンの混入を検査します。
- 構文の検査
- Compose の YAML の構文を、CI で検査します。
- 失敗の通知
- パイプラインが失敗すると、Zulip に通知が届きます。
- 入れないもの
- シークレットとデータは、リポジトリに入れません。Compose は、変数やファイルの参照で読みます。
運用で気をつけていること
バックアップは、取るだけでなく、復元を試す訓練まで含めて運用しています。サービスの死活は監視の仕組みで見ています。