引き継ぎ基本情報
みーきゅんクラウド システム引き継ぎ ― 概要・設定場所・操作手順
8. 引き継ぎ用まとめ
システム概要(一言)
みーきゅんクラウドは、WireGuard VPNとNextcloudを組み合わせたプライベートクラウドサービス。顧客は外部VPS (vpn.wan-secure.net:51820) 経由でVPN接続し、オンプレDell R640上のNextcloudにアクセスする。管理は運営ポータル(/ui)、顧客自身の操作は顧客ポータル(/client)で行う。重要な設定場所
| 項目 | 場所 |
|---|---|
| メインアプリ | /root/mikyun-cloud/app/ (mikyun-cloud.service, :9000) |
| VPNエンジン | /opt/mikyun-portal/mikyun_vpn_engine.py (mikyun-portal.service, :9081) |
| WireGuard設定 | /etc/wireguard/wg1.conf (syncconfで動的更新) |
| クライアントconf出力先 | /opt/mikyun/output/client-configs/ |
| QRコード出力先 | /opt/mikyun/output/qr/ |
| Nginx設定 | /etc/nginx/sites-enabled/ (5ファイル) |
| Nextcloudスタック | /root/nextcloud-stack/compose.yml (:9080) |
| 管理者認証情報 | 環境変数 ADMIN_USER / ADMIN_PASS (systemd EnvironmentFile等) |
| DB接続情報 | 各Pythonファイルにハードコード (user: mikyun, PW: StrongPassword123!) |
| トラフィック収集ログ | /var/log/wg_traffic.log |
| バックアップログ | /var/log/nc_backup.log, /var/log/remote_backup.log |
| 運営スクリプト群 | /opt/mikyun/bin/ |
よくある操作手順
新規契約作成1. https://admin.wan-secure.net にアクセス
(VPN or 管理LAN必須)
2. /ui/contracts/new をクリック
3. 必要事項を入力して「契約を作成する」
- contract_id: 4桁推奨 (例: 0021)
- nc_username: 永久変更不可・要注意
4. 完了後 /ui/contracts/{id} で
親端末のQR/confを確認
5. QR/confを顧客に渡す(QRは24h有効)契約解除1. /ui/contracts で対象契約の「解除」
2. 解除確認画面で内容確認
3. 「解約を確定する」ボタン
※不可逆操作
※Nextcloudデータも完全削除される
※WGピア削除・NCアカウント削除が
自動実行されるサービス再起動# メインアプリ再起動 sudo systemctl restart mikyun-cloud # VPNエンジン再起動 sudo systemctl restart mikyun-portal # Nginx再起動 sudo systemctl restart nginx # WireGuard (wg1) 再起動 sudo systemctl restart wg-quick@wg1Nextcloud管理
# OCC コマンド実行例
sudo docker exec nextcloud-stack-app-1
php occ user:list
# NCユーザー削除(解約時は自動実行)
sudo docker exec nextcloud-stack-app-1
php occ user:delete {uid}
# ファイル数確認
sudo mysql -uroot nextcloud -e
"SELECT REPLACE(s.id,'home::','') uid,
COUNT(*) cnt FROM oc_filecache fc
JOIN oc_storages s ON
s.numeric_id=fc.storage
WHERE s.id LIKE 'home::%' GROUP BY s.id;"新エンジニアへの注意事項
- DBパスワード・WG秘密鍵がソースコードにハードコードされている — 早急にセキュリティ改善が必要
- 旧フロー (SQLite/SFTP: /create, /customers 等) と新フロー (MySQL/WireGuard: /ui/contracts 等) が混在している
- 顧客ポータルのVPN IP認証は wg1 (10.251.0.x) を参照するが、wg_traffic_collector は外部VPSのwg0を参照する。経路を混同しないこと
v_parent_conflictsVIEWで親端末重複を定期確認すること- expire/rollup系スクリプトがcron未設定のため、issued状態の端末が自動クリーンアップされない
- Nextcloud は cloud.k2-o.net と nextcloud.vpn の2つのドメインでアクセス可能。証明書は別系統(Let’s EncryptとCaddy自己署名)
- QRは24時間有効。顧客に渡すタイミングに注意
- Collabora CODE (office.k2-o.net) は 172.31.22.1:9980 で稼働。Nextcloudとは連携サービス
Nextcloud v32.0.6
FastAPI
MariaDB
WireGuard
Docker
Let’s EncryptPortal稼働中portal.wan-secure.netNextcloudv32.0.6cloud.k2-o.netSSL 有効期限2026-06-19自動更新設定済みIP プール252 台10.251.0.2 〜 .253Pages☁️Nextcloudサービス概要・全体構成・データパス・ストレージ設計・Collabora連携・アクセス制御・セキュリティ・バックアップ・将来拡張Docker
NFS
Collabora
LUKS👥顧客ポータル設計思想・顧客モデル・親端末/子端末ルール・接続ポリシー・パスフレーズ認証・QR発行・画面一覧・Nextcloud連携方針FastAPI
親端末制
QR
Zero Trust🗃DB 設計contracts・customer_devices・admin_logs・v_parent_conflicts・ER図・インデックス方針・SQLたたき台・将来推奨テーブルMariaDB
ER図
SQL🔌API 設計顧客向けAPI・管理者API・内部VPN Engine API・将来のNextcloud連携API・APIとDBの対応・実装優先順位/api/me
/api/admin
NC連携🛠運用運用対象・日次/週次/月次確認・VPN監視・DB確認・ストレージ監視・バックアップ・変更作業ルール・コマンド集R640
Supermicro
VPS
Cisco📌引き継ぎ現状本日完了した作業・実装済み機能・未実装一覧・次のTODO・IP採番ルール変更・WG設定基準値・主要ファイル一覧2026-03-22
実装済み
TODOArchitecture Overview
Internet
↓
VPS 162.43.8.20 (Xserver / Ubuntu 25.04 / 4vCPU / 6GB)
├─ wg0 10.251.0.254/24 ← 顧客端末・管理端末接続 :51820
├─ wg1 10.250.0.1/24 ← R640 サイト間トンネル :61000
├─ Nginx portal.wan-secure.net → 10.250.0.2:9000
├─ Nginx cloud.k2-o.net → 10.250.0.2:9080
├─ Nginx office.wan-secure.net → 172.31.22.2:9980
└─ dnsmasq 10.251.0.254:53 (cloud.k2-o.net を内部解決)
↓ WireGuard トンネル (10.250.0.x)
R640 192.168.20.21 (Dell PowerEdge R640 / Ubuntu)
├─ 顧客ポータル :9000 /root/mikyun-cloud/
├─ VPN Engine :9081 /opt/mikyun-portal/mikyun_vpn_engine.py
├─ Nextcloud :9080 Docker compose (nextcloud:32-apache)
├─ MariaDB mikyun_cloud DB
└─ wg2 10.250.0.2 VPS 常時接続トンネル
↓ 40G DAC 直結 (172.31.22.x / 0.2ms)
hirame PC 172.31.22.2 (Core i7-950 / Ubuntu 22.04)
└─ Collabora Online :9980 Docker (LibreOffice ベース)
↓ NFS (VLAN30 / 192.168.30.x)
Supermicro 192.168.30.30 (Storage Node)
└─ /srv/storage/nextcloud/data 約66TB LUKS暗号化 + LVM
Access Matrix| クライアント | 経路 | Nextcloud | 顧客ポータル |
|---|---|---|---|
| iPhone — WG接続・親端末 | VPS wg0 → wg1 → R640 | ✓ 可 | ✓ 可 |
| iPhone — WG接続・子端末 | VPS wg0 → wg1 → R640 | ✓ 可 | ✗ 不可 |
| ローカルPC 192.168.20.x | VLAN20 → R640 直接 | ✓ 可 | △ 要整備 |
| 管理者固定IP 114.164.250.167 | VPS Nginx | ✓ 可 | ✓ 可 |
| 外部・不明IP | VPS Nginx deny all | ✗ 403 | ✗ 403 |
| WG未接続のiPhone | 直接インターネット | ✗ 不可 | ✗ 不可 |
Nextcloud v32.0.6
FastAPI
MariaDB
WireGuard
DockerCurrent StatusPortal稼働中portal.wan-secure.netNextcloudv32.0.6cloud.k2-o.netSSL 有効期限2026-06-19自動更新設定済みIP プール252 台10.251.0.2 〜 .253Pages
☁️
Nextcloudサービス概要・全体構成・データパス・ストレージ・Collabora連携・セキュリティ・バックアップ・将来拡張DockerNFS
Collabora
LUKS
👥
顧客ポータル設計思想・顧客モデル・親端末/子端末ルール・接続ポリシー・パスフレーズ認証・QR発行・画面一覧FastAPI親端末制
QR
Zero Trust
🗃
DB 設計contracts・customer_devices・admin_logs・v_parent_conflicts・ER図・インデックス・SQLたたき台・将来推奨テーブルMariaDBER図
SQL
🔌
API 設計顧客向けAPI・管理者API・内部VPN Engine API・将来のNextcloud連携API・APIとDBの対応・実装優先順位/api/me/api/admin
NC連携
🛠
運用運用対象・日次/週次/月次確認・VPN監視・DB確認・ストレージ監視・バックアップ・変更作業ルール・コマンド集R640Supermicro
VPS
Cisco
📌
引き継ぎ現状本日完了した作業・実装済み機能・未実装一覧・次のTODO・IP採番ルール・WG設定基準値・主要ファイル一覧2026-03-22実装済み
TODOArchitecture Overview
Internet
↓
VPS 162.43.8.20 (Xserver / Ubuntu 25.04)
├─ wg0 10.251.0.254/24 ← 顧客端末・管理端末接続 port 51820
├─ wg1 10.250.0.1/24 ← R640 サイト間トンネル port 61000
├─ Nginx portal.wan-secure.net → 10.250.0.2:9000
├─ Nginx cloud.k2-o.net → 10.250.0.2:9080
├─ Nginx office.wan-secure.net → 172.31.22.2:9980
└─ dnsmasq 10.251.0.254:53
↓ WireGuard トンネル (10.250.0.x)
R640 192.168.20.21 (Dell PowerEdge / Ubuntu)
├─ 顧客ポータル :9000 /root/mikyun-cloud/
├─ VPN Engine :9081 /opt/mikyun-portal/
├─ Nextcloud :9080 Docker compose
├─ MariaDB mikyun_cloud
└─ wg2 10.250.0.2 VPS 常時接続
↓ 40G DAC 直結 0.2ms
hirame PC 172.31.22.2 (i7-950 / Ubuntu 22.04)
└─ Collabora Online :9980 Docker
↓ NFS (VLAN30 / 192.168.30.x)
Supermicro 192.168.30.30 (Storage Node)
└─ /srv/storage/nextcloud/data 約66TB / LUKS暗号化 / LVM
Access Matrix| クライアント | 経路 | Nextcloud | 顧客ポータル |
|---|---|---|---|
| iPhone — WG接続・親端末 | VPS wg0 → wg1 → R640 | ✓ 可 | ✓ 可 |
| iPhone — WG接続・子端末 | VPS wg0 → wg1 → R640 | ✓ 可 | ✗ 不可 |
| ローカルPC 192.168.20.x | VLAN20 → R640 直接 | ✓ 可 | △ 要整備 |
| 管理者固定IP 114.164.250.167 | VPS Nginx | ✓ 可 | ✓ 可 |
| 外部・不明IP | VPS Nginx deny all | ✗ 403 | ✗ 403 |
| WG未接続のiPhone | 直接インターネット | ✗ 不可 | ✗ 不可 |
⚠️
引き継ぎ注意: 旧テーブル(customers・wg_allocations)と新テーブル(contracts・customer_devices)が混在しています。旧ポータル(main.py の一部)は旧テーブルを参照しており、新ポータル(client_ui.py・ui_admin.py)は新テーブルを使用します。混在期間中は両方を壊さないよう注意してください。☁️ みーきゅんクラウド Nextcloudサービス設計書
引き継ぎ用 / 詳細版
1. サービス概要
Nextcloudは、みーきゅんクラウドにおける 顧客向けクラウドストレージ基盤 である。単なるファイル置き場ではなく、VPN、顧客ポータル、将来のOffice連携、ストレージ販売を束ねる中心サービスとして位置づける。
- ファイルストレージ
- WebDAV
- モバイル同期
- 将来のOffice/Collabora統合
- 顧客ポータルとの連携
- VPN利用者向けプライベートクラウド
2. 全体構成
User ↓ HTTPS / VPN Portal / Reverse Proxy ↓ R640 ↓ Docker Nextcloud Container ↓ NFS Supermicro Storage ↓ /srv/storage
“`
| 層 | 配置 | 役割 |
|---|---|---|
| Edge | VPS / 将来のReverse Proxy | 外部入口 |
| Control | R640 | Nextcloudアプリ、ポータル、VPN |
| Storage | Supermicro | 実データ保管 |
| Network | VLAN30 | NFS / Storage LAN |
“`
3. 実行環境
| 項目 | 内容 |
|---|---|
| ホスト | R640 |
| 方式 | Docker |
| OS | Ubuntu |
| データ保存 | NFS マウント経由 |
| バックエンドストレージ | Supermicro / LUKS / LVM / 約66TB |
“`
想定コンテナ
| コンテナ | 役割 |
|---|---|
| nextcloud | アプリ本体 |
| nginx or apache | Web配信 |
| redis | キャッシュ / ロック |
| mariadb | DB |
“`
4. データパス
Nextcloud ↓ /mnt/maguro/nextclouddata ↓ NFS mount 192.168.30.30:/nextclouddata ↓ Supermicro /srv/storage
“`
| 項目 | 内容 |
|---|---|
| NFS Export | 192.168.30.30:/nextclouddata |
| R640側マウント | /mnt/maguro/nextclouddata |
| 保存先実体 | Supermicro /srv/storage |
重要: Nextcloud本体はR640、実データ本体はSupermicro。この役割分離が、みーきゅんクラウドの設計上の基本。
“`
5. ネットワーク設計
| ネットワーク | 用途 | 備考 |
|---|---|---|
| VLAN10 | 管理 | Nextcloud運用管理、SSH、OOB |
| VLAN20 | サービス本線 | R640の主通信 |
| VLAN30 | ストレージ | NFS / 内部専用 |
| VLAN50 | 更新 | OS更新系 |
“`
Nextcloudデータ通信は VLAN30 を使う。管理・公開・更新・ストレージを分けることで、障害時の切り分けが容易になる。
“`
6. アクセス方式
“`
Web
https://cloud.mikyun.example
WebDAV
https://cloud.mikyun.example/remote.php/dav/files/
モバイル
- Nextcloud App
- WebDAVクライアント
- VPN経由優先
“`
7. 顧客ポータルとの関係
Nextcloudは単体運用ではなく、顧客ポータルの一部として扱う。
“`
| ポータル表示項目 | 内容 |
|---|---|
| ログイン情報 | Nextcloudユーザー名 / 接続先URL |
| 容量 | 契約容量 / 利用量 |
| 状態 | active / disabled など |
| 将来機能 | パスワード再発行、クォータ変更反映 |
“`
8. セキュリティ設計
- 通信: HTTPS
- 内部データ通信: VLAN30
- 保存データ: LUKS暗号化ストレージ
- 入口: VPNまたはReverse Proxy
- 管理操作: admin_logs / 将来 portal_logs で追跡
9. バックアップ対象
- Nextcloud data
- DB
- 設定ファイル
- reverse proxy設定
- ポータルとの連携設定
“`
基本方針
borg backup ``` + DB dump + 設定退避
10. 将来拡張
- Collabora / Office統合
- Nextcloudユーザーの自動作成
- ポータルからクォータ同期
- オブジェクトストレージ化(将来Ceph)
- VPS経由の外部公開最適化
🌐 顧客ポータル完全設計書
Nextcloud / WireGuard / 契約情報を束ねる統合UI
1. 目的
顧客ポータルは、みーきゅんクラウドにおける 顧客セルフ操作基盤 である。利用者はこの画面から、自分の契約、端末、VPN設定、Nextcloud情報を確認・操作する。
- 契約状態確認
- 親端末 / 子端末管理
- WireGuard QR再発行
- 一時停止 / 復帰
- ストレージ利用状況確認
- 将来の請求 / 通知 / パスワード管理
2. 設計思想
“`
セルフサービス
運営手動作業を減らし、顧客が自分で操作できる範囲を広げる。
Zero Trust
重要操作は再認証、親端末承認、場合により電話認証を組み合わせる。
親端末中心
契約の中心となる親端末を1台持ち、追加端末は子端末として扱う。
“`
3. システム構成
顧客 ↓ Portal UI ↓ FastAPI ├ DB (mikyun_cloud) ├ WireGuard engine ├ QR生成 ├ Config出力 └ 将来 Nextcloud連携
“`
| 配置 | 内容 |
|---|---|
| ホスト | R640 |
| 実装 | FastAPI / uvicorn |
| 主要コード | /opt/mikyun-portal/app.py, /opt/mikyun-portal/app/main.py |
| 内部エンジン | /opt/mikyun-portal/mikyun_vpn_engine.py |
| 補助発行スクリプト | /opt/mikyun-admin/add_customer.sh, add_customer_full.sh |
“`
4. 顧客モデル
“`
| 単位 | 内容 |
|---|---|
| 契約 | 1顧客 = 1契約。契約ID、容量、端末上限、帯域、VPNサブネットを持つ。 |
| 端末 | 契約配下に複数端末を持つ。親端末1台 + 子端末複数。 |
契約状態
active / paused / terminated / deleted
端末状態
issued / active / paused / revoked / expired
“`
5. 親端末 / 子端末ルール
- 親端末: 契約の中心端末。重要操作可能。
- 子端末: 追加端末。利用はできるが重要操作不可。
- 親端末紛失時: 電話認証 + 本人確認パスフレーズ + 管理者承認。
- v_parent_conflicts により親端末重複を監査。
6. 主要機能
“`
| 顧客向け | 内容 |
|---|---|
| 契約確認 | 契約状態、容量、端末数、プラン確認 |
| 端末一覧 | 親 / 子、状態、最終接続、WG IP |
| 端末追加 | 子端末を新規発行 |
| QR再表示 | WG設定再取得 |
| 一時停止 / 復帰 | 端末単位制御 |
| Nextcloud情報 | 接続先・ユーザー名・容量(将来自動取得) |
| 管理者向け | 内容 |
|---|---|
| 顧客作成 | 契約作成 + 親端末初回発行 |
| 容量変更 | 契約ストレージ上限変更 |
| 契約停止 / 解約 | 状態変更 |
| 親端末昇格 | child → parent 切替 |
| 監査ログ閲覧 | admin_logs |
“`
7. 生成物と保存場所
/opt/mikyun/output/client-configs /opt/mikyun/output/qr
“`
発行物:
- WireGuard .conf
- QRコードPNG
- 端末説明文(将来)
“`
8. Nextcloudとの連携方針
- 契約に対してNextcloudユーザーを1:1で管理
- ポータル画面にクォータ・使用量・URLを表示
- 将来は契約作成時にNextcloudユーザー自動生成
- 契約停止時にアカウント凍結も可能にする
9. 画面一覧
| 画面 | 内容 |
|---|---|
| 顧客トップ | 契約状態、親端末、利用量、通知 |
| 端末管理 | 端末一覧、追加、停止、QR再発行 |
| ストレージ | Nextcloud接続先、容量、使用量 |
| 管理者一覧 | 顧客一覧、検索、状態変更 |
| 管理者詳細 | 契約・端末・ログを統合表示 |
2. wg1.confのPSK全書き換えバグ(解決済み)
- 原因:
sed -i "s|PresharedKey = .*|...|"が全peerのPSKを同じ値で上書き - 解決:DBから完全再構築する方式に変更
3. cronが毎分実行されていた(解決済み)
- 解決:
*/5 * * * *に変更
現在のシステム構成
iPhone(WireGuard)
→ VPS wg0(162.43.8.20:51820)
→ R640 wg1(10.251.0.1)
→ Caddy(443)
→ ポータル(9000) / Nextcloud(9080)
外部アクセス(WireGuardなし)→ 全て403VPS nginx(/etc/nginx/conf.d/nextcloud.conf)
cloud.k2-o.net→ R640:9080(Nextcloud)- 許可IP:10.251.0.0/24、10.250.0.0/24、192.168.20.0/24、10.200.0.0/16、172.31.22.0/24、162.43.8.20
VPS nginx(/etc/nginx/sites-available/admin-portal)
admin.wan-secure.net→ R640:9000(運営ポータル)- 許可IP:10.251.0.0/24、10.250.0.0/24、192.168.20.0/24、192.168.10.0/24
R640 Caddy(/etc/caddy/Caddyfile)
cloud.k2-o.net/ui*→ R640:9000(運営ポータル・IP制限あり)cloud.k2-o.net/*→ R640:9080(Nextcloud)
