Homelab / アプリ開発の取り組み
自宅サーバー(Homelab)を土台に、仮想化クラスタの運用とセルフホスト環境の構築、さらに iOS / Web / 業務効率化システムの開発を進めてきました。
1. 全体像
1.1 目的
- 日常利用・開発・検証に耐える 安定運用の自宅基盤を構築する
- 個人利用アプリに加え、業務のFAX書類を電子化して活用できる仕組みを作る
1.2 主要技術
- 仮想化: Proxmox VE(2ノードクラスタ)
- コンテナ: Docker / LXC
- ネットワーク/公開: Cloudflare(DNS/ドメイン管理, Tunnel), Reverse Proxy, VPN
- 監視: Uptime Kuma(各ノードで相互監視)
- メール: mailcow
- NAS/ストレージ: OpenMediaVault(NAS)
- 開発: Swift(iOS), Web(PWA), LLM活用(文書抽出・構造化)
2. インフラ(Proxmox:2ノードクラスタ)
2.1 基盤構成
- Proxmox VE を用いて 2ノードでクラスタ構成
- VM / LXC を用途別に分離し、サービスを段階的に追加
2.2 Proxmox上の VM / LXC(一覧)
-
DNSサーバー(基盤)
- 目的: 名前解決
- 備考: 各ノードに配置
-
リバースプロキシサーバー(基盤)
- 目的: 公開/ルーティング
- 備考: セルフホストサービスのSSL化用
-
VPNサーバー(基盤)
- 目的: リモートアクセス
- 備考: 外部からのアクセスに使用
-
Minecraftサーバー(運用)
- 目的: マルチサーバー運用
- 備考: 部活動メンバーが実利用
-
死活監視(Uptime Kuma)(運用)
- 目的: 監視/可用性確認
- 備考: 各ノードに配置・相互監視
-
Windows(運用)
- 目的: リモートアクセス用PC
-
Docker専用サーバー(基盤)
- 目的: コンテナ運用の集約
- 備考: Docker上で各種サービスを運用中
-
メールサーバー(mailcow)(基盤)
- 目的: メール運用
- 備考: セルフホストサービスからのメールや、個人用のメールに使用
-
NAS(OpenMediaVault)(基盤)
- 目的: ストレージ/メディア
3. Docker上で運用しているサービス
3.1 開発・運用基盤
-
Gitea
- 目的: Gitサーバー
-
CI/CDサーバー(Gitea用)
- 目的: ビルド/デプロイの自動化
-
Dockge / Portainer
- 目的: Docker管理(可視化・運用)
-
DNS同期サービス
- 目的: DNS設定の同期/管理
-
Cloudflare Tunnel
- 目的: サービス公開の経路
3.2 生活系
-
Upsnap(WOL)
- 目的: Wake-on-LAN 操作
-
Vaultwarden
- 目的: パスワードマネージャー
-
Wiki(自宅サーバー用)
- 目的: 構成/運用手順/IPなどの整理
-
Dawarich
- 目的: Google Mapタイムライン代替
-
FreshRSS
- 目的: RSSサービス
-
Paperless
- 目的: レシート等の電子化
3.3 デプロイ/検証
-
習慣管理アプリ(自作)
- 目的: 自作アプリの運用環境
-
開発中サービスのテスト環境
- 内容: FAX文書→受注書抽出→電子化(父親の会社導入予定)
4. NAS(OpenMediaVault)上のサービス
-
Jellyfin
- 目的: 動画メディアサーバー
- 備考: NAS保存の映像/アニメ等を視聴
-
Navidrome
- 目的: 音楽メディアサーバー
-
Nextcloud
- 目的: セルフホストクラウド
-
ArchiveBox
- 目的: Webアーカイブ取得
5. DNS / ドメイン / 公開
- Cloudflare で DNS とドメイン管理(jitaku.win)を実施
- 無料ドメインとして MyDNS / DDNS Now を利用
- OCI(Oracle Cloud)無料枠で外部公開も実施
- Minecraftサーバー公開、メールサーバー用途など
6. アプリ開発
6.1 iOS Swift
- 習慣化アプリ
- 日々の習慣を継続できるようにするためのアプリ
- 自分の欲しい機能を実装し、現在も継続利用中
- Samba上の音楽ファイルを再生するアプリ
- Sambaサーバー内の音楽をiOSで再生可能にするアプリを開発中
6.2 Web
- 習慣化アプリ(PWA)
- Webで利用でき、PWAとしてインストールも可能
- ただし ネイティブ比で遅さ/不便さがあり、Swiftネイティブへ移行
7. 業務効率化(開発中):FAX注文書の抽出・データ化システム
7.1 背景
- 父親の会社では、注文書/請求書/請け書などが FAXで届く
- その中から 注文書(受注書)を抽出し、業務で扱える形に電子化したい
7.2 目的と機能(要点)
- FAXのPDFから 注文書(受注書)を判別・抽出
- LLMで項目を構造化(データ化)
- マスターデータと照会して整合性確認
- DBへ記録し、管理画面で
- 記録データの 修正
- CSVとしてダウンロード
- 市場の既存システムを調査し、現場で便利になる要件を取り込みながら改善