引き継ぎ基本情報

引き継ぎ基本情報

みーきゅんクラウド システム引き継ぎ ― 概要・設定場所・操作手順

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@wg1
Nextcloud管理
# 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_conflicts VIEWで親端末重複を定期確認すること
  • 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とは連携サービス
みーきゅんクラウド システム概要ドキュメント / 最終更新: 2026-03-24 / 生成: Claude Code (Sonnet 4.6)

みーきゅんクラウド — Infrastructure Docs☁️ システムドキュメントWireGuard VPN + Nextcloud を組み合わせた顧客向けプライベートクラウド。データの主権はユーザーにあり、構造を説明できる透明性の高い設計を目指す。最終更新 2026-03-22
Nextcloud v32.0.6
FastAPI
MariaDB
WireGuard
Docker
Let’s Encrypt

Portal稼働中portal.wan-secure.netNextcloudv32.0.6cloud.k2-o.netSSL 有効期限2026-06-19自動更新設定済みIP プール252 台10.251.0.2 〜 .253

Pages☁️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
実装済み
TODO

Architecture 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.xVLAN20 → R640 直接✓ 可△ 要整備
管理者固定IP 114.164.250.167VPS Nginx✓ 可✓ 可
外部・不明IPVPS Nginx deny all✗ 403✗ 403
WG未接続のiPhone直接インターネット✗ 不可✗ 不可

Next ActionsPriority — High◦QR・契約作成時に Nextcloud アカウント(ID・PW・容量)を自動生成・割り当て◦顧客ポータルに Nextcloud 接続情報(URL・ID・PW・使用量)を表示◦契約ID・端末管理・QR・IP・Nextcloud を一元同期できる管理画面の整備◦運営用ポータル(/ui)の完成 + Basic認証の追加◦ローカルPC(192.168.20.x)からも運営ポータルにアクセスできるようにするPriority — Medium◦契約停止時の Nextcloud アカウント凍結連動◦portal_logs(顧客操作ログ)テーブル追加◦notifications テーブル・メンテナンス通知機能◦iptables 永続化(再起動後も pause 状態を保持)Priority — Low◦Collabora グローバルIP動的問題の恒久対策◦Supermicro LUKS 自動アンロックスクリプト再構築◦Borg バックアップ自動化

⚠️引き継ぎ注意: 旧テーブル(customers・wg_allocations)と新テーブル(contracts・customer_devices)が混在しています。旧ポータル(main.py の一部)は旧テーブルを参照しており、新ポータル(client_ui.py・ui_admin.py)は新テーブルを使用します。混在期間中は両方を壊さないよう注意してください。

みーきゅんクラウド ― ドキュメント☁️ Infrastructure DocsWireGuard VPN + Nextcloud を組み合わせた顧客向けプライベートクラウド。データの主権はユーザーにあり、構造を説明できる透明性の高い設計を目指す。最終更新 2026-03-22
Nextcloud v32.0.6
FastAPI
MariaDB
WireGuard
Docker

Current StatusPortal稼働中portal.wan-secure.netNextcloudv32.0.6cloud.k2-o.netSSL 有効期限2026-06-19自動更新設定済みIP プール252 台10.251.0.2 〜 .253

Pages

☁️

Nextcloudサービス概要・全体構成・データパス・ストレージ・Collabora連携・セキュリティ・バックアップ・将来拡張Docker
NFS
Collabora
LUKS

👥

顧客ポータル設計思想・顧客モデル・親端末/子端末ルール・接続ポリシー・パスフレーズ認証・QR発行・画面一覧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
実装済み
TODO

Architecture 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.xVLAN20 → R640 直接✓ 可△ 要整備
管理者固定IP 114.164.250.167VPS Nginx✓ 可✓ 可
外部・不明IPVPS Nginx deny all✗ 403✗ 403
WG未接続のiPhone直接インターネット✗ 不可✗ 不可

Next ActionsPriority — High○QR・契約作成時に Nextcloud アカウント(ID・PW・容量)を自動生成・割り当て○顧客ポータルに Nextcloud 接続情報(URL・ID・PW・使用量)を表示○契約ID・端末管理・QR・IP・Nextcloud を一元同期できる管理画面の整備○運営用ポータル(/ui)の完成 + Basic認証の追加○ローカルPC(192.168.20.x)からも運営ポータルにアクセスできるようにするPriority — Medium○契約停止時の Nextcloud アカウント凍結連動○portal_logs(顧客操作ログ)テーブル追加○notifications テーブル・メンテナンス通知機能○iptables 永続化(再起動後も pause 状態を保持)Priority — Low○Collabora グローバルIP動的問題の恒久対策○Supermicro LUKS 自動アンロックスクリプト再構築○Borg バックアップ自動化

⚠️

引き継ぎ注意: 旧テーブル(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

“`

配置役割
EdgeVPS / 将来のReverse Proxy外部入口
ControlR640Nextcloudアプリ、ポータル、VPN
StorageSupermicro実データ保管
NetworkVLAN30NFS / Storage LAN

“`

3. 実行環境

項目内容
ホストR640
方式Docker
OSUbuntu
データ保存NFS マウント経由
バックエンドストレージSupermicro / LUKS / LVM / 約66TB

“`

想定コンテナ

コンテナ役割
nextcloudアプリ本体
nginx or apacheWeb配信
redisキャッシュ / ロック
mariadbDB

“`

4. データパス

Nextcloud
 ↓
/mnt/maguro/nextclouddata
 ↓ NFS mount
192.168.30.30:/nextclouddata
 ↓
Supermicro /srv/storage

“`

項目内容
NFS Export192.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なし)→ 全て403

VPS 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)