みーきゅんクラウド — 引き継ぎ現状
📌 引き継ぎ現状 2026-03-22
本日完了した作業・実装済み機能・未実装一覧・次のTODO・IP採番ルール変更・WireGuard設定基準値・主要ファイル一覧をまとめる。
2026-03-22 更新
顧客ポータル稼働中
IP採番変更済み
DNS修正済み
本日完了
7 項目
DNS・IP採番・QR・SSL等
実装済み機能
8 機能
ポータル全基本機能
未実装
2 機能
Nextcloud連携
次のTODO
5 項目
優先度高
1 — 本日完了した作業

WireGuard DNS設定のズレを修正
1.1.1.1 → 10.251.0.254 に変更。WG接続中に cloud.k2-o.net が正しく内部解決されるようになった。

IP採番ロジックを共有セグメント方式に変更
mikyun_vpn_engine.py を修正。旧:契約ごとに固定IP返し → 新:10.251.0.0/24の空きIPを全契約共通でスキャン。

顧客ポータルのQR認証問題を修正
ui_admin.py に public_router を追加。/ui/devices/{device_id}/qr を認証除外し、/client からQRが表示できるようになった。

VPSにNginx設定追加(portal.wan-secure.net)
/etc/nginx/conf.d/portal.conf を作成。10.250.0.2:9000 へプロキシ。

SSL証明書取得
portal.wan-secure.net の証明書を certbot で取得。有効期限 2026-06-19・自動更新設定済み。

M010の親端末IPを更新
customer_devices の wg_ip を 10.200.10.2 → 10.251.0.10 に変更。iPhoneからポータルログインが可能になった。

顧客ポータルへのログイン・動作確認完了
https://portal.wan-secure.net/client にアクセス。M010・パスフレーズ mikyun-pass-001 でログイン成功。
2 — 実装済み機能
機能状態備考
親端末IP自動認識+パスフレーズログイン✓ 完了WG接続元IPをDBと照合
契約情報・端末一覧表示✓ 完了WG通信量・最終接続時刻も表示
QR表示✓ 完了2026-03-22 認証除外修正済み
conf ダウンロード✓ 完了.conf ファイル直接DL
子端末追加✓ 完了空きIP自動採番・WG peer追加・QR生成
一時停止 / 復旧✓ 完了iptables DROP制御と連動
親端末昇格✓ 完了子端末から親へのトランザクション処理
子端末削除✓ 完了論理削除・WG peer除去
Nextcloud容量・ID・PW連携表示○ 未実装次フェーズ
QR作成時Nextcloudアカウント自動生成○ 未実装次フェーズ
3 — 次に実装が必要なもの
Priority — 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 バックアップ自動化
4 — IP採番ルール(2026-03-22 変更)
項目内容
使用セグメント10.251.0.0/24(全契約共有)
予約IP10.251.0.1(VPS/GW)、10.251.0.254(DNSサーバ)
割当範囲10.251.0.2 〜 10.251.0.253(最大252台)
採番方式customer_devices の使用中IPを全件取得し、空き最小番号を割り当て
重複防止空きスキャン+DBのwg_ip UNIQUE制約で二重防御
旧契約A001・A002・M010は旧セグメント(10.200.x.x)のまま残存。新規契約から10.251.0.xが割り当てられる。
5 — WireGuard設定基準値
[Interface]
PrivateKey = <クライアント秘密鍵>
Address    = 10.251.0.X/24
DNS        = 10.251.0.254

[Peer]
PublicKey           = F6jJ+/xR8YGx45kH1YQvCj412N1HcUuKsHAH5hJaKV0=
Endpoint            = vpn.wan-secure.net:51820
AllowedIPs          = 0.0.0.0/0
PersistentKeepalive = 25
  
項目備考
エンドポイントvpn.wan-secure.net:51820 
DNS10.251.0.2542026-03-22 修正済み(旧: 1.1.1.1)
AllowedIPs(端末用conf)0.0.0.0/0全トラフィックをVPN経由
AllowedIPs(サーバー側peer)10.251.0.X/32変更禁止。0.0.0.0/0にすると壊れる
Keepalive25秒 
6 — 主要ファイル一覧
ファイル役割備考
/opt/mikyun-portal/mikyun_vpn_engine.pyVPN Engine API(:9081)。IP採番・契約作成・端末発行・WG設定生成2026-03-22 修正済み
/opt/mikyun-portal/mikyun_vpn_engine.py.bak上記のバックアップ修正前
/root/mikyun-cloud/app/main.pyポータル本体(:9000)。Basic認証ミドルウェア管理2026-03-22 認証除外修正済み
/root/mikyun-cloud/app/client/client_ui.py顧客向けポータルUI(/client) 
/root/mikyun-cloud/app/ui_admin.py管理者向けUI(/ui)。public_router追加済み2026-03-22 修正済み
/opt/mikyun/bin/wg_issue_device.pyconf・QR生成スクリプト(IP採番はしない) 
/etc/wireguard/wg1.confサーバー側WireGuard設定(peerブロック管理) 
/opt/mikyun/output/client-configs/発行済みconfファイル置き場 
/opt/mikyun/output/qr/発行済みQR PNG置き場 
/etc/nginx/conf.d/portal.confVPS Nginx portal.wan-secure.net設定2026-03-22 新規作成
7 — DB現状
mysql -u mikyun -pStrongPassword123! mikyun_cloud \
  -e "SELECT contract_id, wg_ip, is_parent, device_role, status \
      FROM customer_devices WHERE deleted_at IS NULL;"

+-------------+-------------+-----------+-------------+--------+
| contract_id | wg_ip       | is_parent | device_role | status |
+-------------+-------------+-----------+-------------+--------+
| A001        | 10.200.1.2  |         1 | parent      | active |
| A002        | 10.200.2.2  |         1 | parent      | active |
| A002        | 10.200.2.3  |         0 | child       | issued |
| M010        | 10.251.0.10 |         1 | parent      | issued |  ← 本日更新
| M010        | 10.200.10.3 |         0 | child       | active |
| M010        | 10.200.10.4 |         0 | child       | issued |
+-------------+-------------+-----------+-------------+--------+
  
⚠️
混在注意: 旧テーブル(customers・wg_allocations)と新テーブル(contracts・customer_devices)が混在しています。旧ポータル(main.py の一部)は旧テーブルを参照。新ポータル(client_ui.py・ui_admin.py)は新テーブルを使用。混在期間中は両方を壊さないよう注意してください。
8 — サービスURL一覧
サービスURLアクセス条件
顧客ポータルhttps://portal.wan-secure.net/clientWG接続中の親端末のみ
管理者ポータルhttps://portal.wan-secure.net/ui/contractsBasic認証 / 許可IP
Nextcloudhttps://cloud.k2-o.netWG接続中 / ローカルPC / 管理者IP
Collaborahttps://office.wan-secure.netWG接続中 / ローカルPC
VPN Engine APIhttp://127.0.0.1:9081R640内部のみ
ポータル API docshttps://portal.wan-secure.net/docsBasic認証

“`