blog.sharoo.org

自宅サーバのProxmoxインフラ構築計画

Proxmoxインフラ構築計画

現状確認(完了)

サーバー情報

  • ホスト名: minase
  • OS: Proxmox VE (Debian 12 Bookworm base)
  • スペック:
    • CPU: 4コア
    • メモリ: 16GB(使用中: 1.7GB、空き: 13GB)
    • ディスク: 94GB(使用中: 19GB、空き: 71GB)
    • Swap: 8GB

構築計画

全体構成

┌─────────────────────────────────────┐
│        Proxmox ホスト (minase)        │
│  CPU: 4コア / RAM: 16GB / Disk: 94GB │
└─────────────────────────────────────┘
              │
    ┌─────────┼─────────┐
    │         │         │
┌───▼───┐ ┌──▼────┐ ┌──▼─────┐
│ rivi  │ │GitLab │ │Redmine │
│ (既存) │ │統合管理│ │ (予定) │
└───────┘ └───────┘ └────────┘

1. GitLab統合管理LXC

目的

  • Git リポジトリ管理
  • CI/CD パイプライン実行
  • Terraform / Ansible の実行環境

スペック

  • タイプ: LXCコンテナ(統合型)
  • OS: Debian 12 / Ubuntu 22.04
  • メモリ: 4-6GB
  • ディスク: 20GB
  • CPU: 2コア

インストールするツール

  • GitLab CE (Community Edition)
  • GitLab Runner
  • Terraform
  • Ansible
  • Git

機能

  1. リポジトリ管理: プライベートGitホスティング
  2. CI/CDパイプライン: 自動テスト・デプロイ
  3. インフラ自動化: Terraform + Ansibleの実行
  4. Issue管理: プロジェクト管理(簡易版)

2. Redmine LXC

目的

  • 個人用プロジェクト管理
  • タスク管理・課題追跡

スペック

  • タイプ: LXCコンテナ
  • OS: Debian 12 / Ubuntu 22.04
  • メモリ: 1-2GB
  • ディスク: 8-10GB
  • CPU: 1-2コア

インストール方法

  • 直接インストール(Ruby + Rails + Redmine)
  • Ansible Playbookで自動化

アクセス

  • ローカル環境のみ(外部公開なし)

ワークフロー

開発フロー

┌──────────────┐
│  ローカルPC   │
│  - コード編集 │
│  - Git操作   │
└──────┬───────┘
       │ git push
       ↓
┌──────────────────────┐
│   GitLab統合管理LXC    │
│   - リポジトリ受信     │
│   - CI/CDトリガー     │
└──────┬───────────────┘
       │ Webhook / Pipeline
       ↓
┌──────────────────────┐
│  GitLab Runner実行    │
│  - Terraform apply   │
│  - Ansible playbook  │
└──────┬───────────────┘
       ↓ 自動構築
┌──────────────────────┐
│ Redmine / 他サービス  │
└──────────────────────┘

GitHub公開フロー

GitLab (プライベート開発)
  ├─ すべてのプロジェクト
  ├─ 実験的なコード
  └─ CI/CD実行
  
  ↓ ミラーリング(公開プロジェクトのみ)
  
GitHub (パブリック)
  └─ 公開用リポジトリ

実現方法:

  • GitLabの Mirror Repository 機能
  • または Git の複数リモート設定
  • または GitLab CI/CD での自動push

リソース配分(想定)

サービス メモリ CPU ディスク 用途
Proxmox ホスト 1.7GB - 19GB 基盤
rivi (既存) ~100MB Flask Web
GitLab統合管理 4-6GB 2 20GB Git + CI/CD + IaC
Redmine 1-2GB 1 10GB プロジェクト管理
空き 5-7GB - 45GB 余裕

インフラ as Code 方針

管理ツール

  • Terraform: LXCコンテナの作成・管理
  • Ansible: ソフトウェアのインストール・設定
  • GitLab CI/CD: 自動実行パイプライン

コード管理

  • すべてのインフラコードをGitLab管理
  • ローカルPCで開発・編集
  • GitLabで実行

再現性

  • コードベースでインフラを管理
  • 環境の再構築が容易
  • ドキュメント代わりになる

今後の拡張性

将来追加予定のサービス例

  • 各種Webサービス
  • データベースサーバー
  • 監視・ログ管理ツール

拡張時の対応

  • すべてTerraform + Ansibleで自動構築
  • GitLab CI/CDから実行
  • コードはGitで管理

次のステップ

Phase 1: GitLab統合管理LXC構築

  1. LXCコンテナ作成
  2. GitLab CEインストール
  3. Terraform / Ansibleセットアップ
  4. ローカルPCとの接続設定

Phase 2: Redmine構築

  1. Ansible Playbook作成
  2. TerraformでLXC作成
  3. Ansibleで自動インストール
  4. 動作確認

Phase 3: CI/CD パイプライン構築

  1. GitLab CI設定
  2. 自動デプロイパイプライン
  3. GitHub ミラーリング設定

備考

New Relic活用

  • アラート設定(CPU 80%超、ディスク 90%超)
  • 週次レポート有効化
  • サービス監視設定

セキュリティ

  • すべてローカル環境内で完結
  • 外部公開はGitHubミラーリングのみ
  • SSH鍵認証の徹底

バックアップ

  • LXCスナップショット定期取得
  • 重要なコードはGit管理
  • Proxmox標準バックアップ機能活用