← 個人開発に戻る

作品

自宅サーバーの運用

GitLab、YouTrack、Zulip などを、自宅のサーバーで Docker Compose を使って動かしています。開発と日々の連絡を、外部のサービスに預けずに回すための環境です。設定は Git で管理し、変更は CI で検査します。

使用技術:

  • Docker Compose
  • GitLab
  • YouTrack
  • Linux

動かしているもの

GitLab
リポジトリと CI。設定の検査や、失敗の通知もここで動かしています。
YouTrack
チケットと、仕様書などのナレッジベース。このサイトの仕様書とチケットも、ここで管理しています。
Zulip
チャットと通知。CI の失敗や、サーバーの異常の知らせを受け取ります。

構成

  1. 入口

    • リバースプロキシ外からの接続を受け、各サービスへ振り分ける
  2. サービス

    • GitLab
    • YouTrack
    • Zulip
  3. 運用

    • 監視異常を Zulip に通知
    • バックアップ定時の取得と、復元の訓練
    • CI設定の検査と、失敗の通知
自宅サーバーの構成(上から下へ、リクエストが流れます)

技術スタック

コンテナ
Docker Compose です。サービスごとに compose ファイルを分け、Git で管理しています。
入口
リバースプロキシを置いて、外からの接続を受けています。
定時処理
バックアップやデプロイは、定時に自動で実行します。
CI
GitLab CI と GitLab Runner です。秘匿値の検査と YAML の構文検査を、Docker のイメージで実行します。
通知と監視
Zulip への通知と、サーバーの監視を、シェルスクリプトで組んでいます。
自動化
設定の取り込み、バックアップ、復元の訓練を、シェルスクリプトにしています。

設定の管理

サーバー上のファイルが正で、リポジトリは履歴と検査のための写しです。サーバーで Compose を変更したら、同期のスクリプトで取り込み、差分を確認してコミットします。

秘匿値の検査
CI で、パスワードやトークンの混入を検査します。
構文の検査
Compose の YAML の構文を、CI で検査します。
失敗の通知
パイプラインが失敗すると、Zulip に通知が届きます。
入れないもの
シークレットとデータは、リポジトリに入れません。Compose は、変数やファイルの参照で読みます。

運用で気をつけていること

バックアップは、取るだけでなく、復元を試す訓練まで含めて運用しています。サービスの死活は監視の仕組みで見ています。