最近の作業履歴 — 2026年3月 〜 5月

// RECENT WORK LOG — タイムライン形式の作業記録 / 最終更新: 2026-05-14

記録 2026年3月以降の大きな作業を時系列で記録。 「いつ・何を・なぜ」の判断材料を残す

2026-05 / R640 → maguro 大移植 + DMZ転換
2026-05-12 〜 13: スイッチ大規模再設定
  • ✓ 12XS / T48 で VLAN70 新設 (WG 専用、 192.168.70.0/24)
  • ✓ Po1 削除、 全ポート 1ポート左シフト、 Po70 (20G LACP) 新設
  • ✓ 全 bond の両足 10G 化 (合計 80Gbps)
  • ✓ maguro に NIC 増設 + VLAN70 IF
  • ✓ 永続化設定 (netplan / interfaces) で reboot safe 化
  • ✓ Telegram 監視スクリプト 3本改善
  • ✓ 初期フルバックアップ + リストア検証 (97MB、 18ファイル SHA256 一致)
2026-05-14 早朝: NC + mikyun-portal を maguro へ全面移植
  • ✓ NC stack (mariadb:11 + redis:7-alpine + nextcloud-stack-app) を maguro /opt/nextcloud/compose/ で稼働
  • ✓ NC データを maguro /srv/storage/nextcloud-data/ へ rsync
  • ✓ mikyun-portal を maguro の Docker image mikyun-portal:1.1 として稼働
  • ✓ maguro ホスト MariaDB の mikyun_cloud DB を Docker MariaDB に統合 (ホスト MariaDB は disable)
  • ✓ WireGuard wg-clients (10.200.0.0/16) / wg-customers (61001) / wg-storage (62001) を maguro へ移植
  • ✓ nginx vhost (cloud.k2-o.net 等) を maguro へ
  • ✓ Let’s Encrypt 証明書を maguro snap certbot で再発行 (4ドメイン)
2026-05-14 午後: R640 再構築 + DMZ転換
  • ✓ R640 ディスク再構成: 6本 RAID10 (3.3T) + 2本 RAID1 (1.1T OS)
  • ✓ /mnt/data LUKS化 + auto-unlock (keyfile /etc/cryptsetup-keys.d/data.key)
  • ✓ Ubuntu 22.04 fresh install + Xfce (GNOME は Matrox G200 で不安定)
  • ✓ katuocloud.com WP を xserver VPS から R640 へ rsync 移行 (fabric 経由で帯域確保)
  • ✓ wp-config.php に HTTP_X_FORWARDED_PROTO 対応追加 (301ループ防止)
  • ✓ Let’s Encrypt 本物 cert 取得 (katuocloud.com + www)
  • ✓ nginx stream module + ssl_preread で SNI 振り分け
  • ✓ R640 旧 WG 完全停止・退避 (/etc/wireguard-r640-snapshot/)
  • ✓ DuckDNS (maguro-storage.duckdns.org) 完全撤去 (cert + ssh config + アカウント削除)
2026-05-14 夕方: Collabora fabric 直結化
  • ✓ Collabora --add-host cloud.k2-o.net:173.0.0.5 (maguro fabric) に変更
  • ✓ NC wopi_allowlist = 173.0.0.4/30, 173.0.0.8/30, 119.26.175.225 に縮小
  • ✓ 旧 R640 SNI 経由経路を廃止
  • ✓ ホップ数 3 → 1、 R640 障害時も NC⇄Collabora 継続稼働可能に
残作業 (Phase 4)
  • ! xserver VPS (162.43.8.20) 6月末解約 (¥3,000/月節約)
  • ! 他クライアントHP (can-construction, shinkoujyuusetu 等) 移行
  • ! WiFi 移管 (VLAN80 独立) finalize
  • ! iDRAC Console Redirection 無効化 (Web手作業)
  • ! Fail2ban 導入
2026-04 / セキュリティ脆弱性対応

作業日: 2026年4月6日 22:00 〜 22:34

// ① MySQL パスワードのハードコード対応 (Critical)

問題: mikyun_vpn_engine.py の 2箇所で DB パスワードが直書きされていた。

対応:

  • /root/mikyun-cloud/mikyun-portal/.env を作成 (perm 600, owner root:root)
  • 環境変数から読み込むように変更 (1399行目、 1465行目)
  • load_dotenv() と DB_CONFIG を追加、 pymysql.connect(**DB_CONFIG) へ
// ② systemd 管理者パスワード平文記載対応 (Critical)

問題: mikyun-cloud.service に ADMIN_PASS が平文で書かれてた。

対応:

  • 専用ディレクトリ /etc/mikyun-portal/ (700) を作成
  • /etc/mikyun-portal/admin.env (600) に環境変数移動
  • systemd service を EnvironmentFile= 方式に変更
# 旧
Environment="ADMIN_USER=admin"
Environment="ADMIN_PASS=***"

# 新
EnvironmentFile=/etc/mikyun-portal/admin.env
// ⑧ シェルインジェクションリスク対応 (High)

問題: WG 公開鍵生成時にシェル経由で秘密鍵を渡していた。

# 旧 (危険)
pub = subprocess.check_output(["bash", "-lc",
    f"echo '{priv}' | wg pubkey"], text=True).strip()

# 新 (安全)
pub = subprocess.run(["wg", "pubkey"],
    input=priv, text=True, capture_output=True, check=True).stdout.strip()

対応箇所: app/main.py 383行目・526行目、 app/services/wg_service.py 61行目。

同日の効果: ① DB パスワード保護、 ② 管理者認証情報保護、 ③ コマンドインジェクション対策 (特殊文字を含む秘密鍵でも安全)。 サービス (port 9000 / 9081) 再起動して正常稼働確認。
残タスク (次回以降): ⑨ SQLite と MySQL の二重管理 / ⑩ Nextcloud パスワードがレスポンスに含まれる / ⑪ バックアップファイル散乱 / ⑫ トークンがメモリ内辞書管理 / ⑬ PSK の一時ファイル競合 / ⑭ WireGuard サーバー公開鍵ハードコード。 ③④⑤⑦は既に対応済 (メモリ記録)。
2026-03 / Fabric 移行 + R640 ↔ hirame 直結発見
// Fabric ネットワーク移行
  • fabric を 172.31.22.x / 172.31.20.x から 173.0.0.x mesh へ移行
    • R640 ↔ maguro: 173.0.0.0/30
    • maguro ↔ hirame: 173.0.0.4/30
    • R640 ↔ hirame: 173.0.0.8/30 (直結発見・設定)
  • maguro iptables FORWARD chain ブロック修正 (ルーティングされたトラフィック許可)
  • NFS マウント、 remote_backup.sh 更新。 VPS バックアップセクション削除
  • maguro RAID1 boot volume (md0、 mdadm) 構築。 Telegram 監視 (mdadm-watch.timer) 追加
  • hirame ハードウェアメンテ (CPU/memory/PSU 交換、 温度確認)
  • R640 NC Docker stack を Samsung 970 EVO Plus NVMe (/mnt/nvme-cache) へ移行 (bind mount) ※その後 2026-05-14 で maguro 移植時に廃止
  • NVMe SMART 監視 (nvme-watch.timer) デプロイ ※2026-05-14 で perc-watch に統合
  • 日次バックアップを 2回実行 (3:00 と 15:00)
// ネットワーク再設計策定
  • 現在アーキテクチャの 5つの根本的設計欠陥を特定 (VLAN10 インターネット露出、 IPv6 RA flooding、 Squid SPOF、 Po1 が VLAN10 を運ぶ、 12XS 外部 ACL)
  • VLAN60 → 最終的に VLAN70 (WG) で再設計
  • 設計原則: 「R640 に特別な設定を集中させない、 スイッチはドリフトしない」
// R640 bond0 修復
  • bond0 LACP 問題修正 (NetworkManager override が systemd-networkd をブロック)
  • R640-DATA1 / DATA2 を各10Gbps で復旧 (Po20 が 12XS で完全バンドル)
  • nginx portal.vpn allowlist 修正 → WireGuard subnet 全体 (10.200.0.0/16) カバー
  • VLAN50 が意図的に R640 / maguro / hirame で共有されていることを確認 (apt 更新用)
// Collabora 再統合 (5層障害解決)

fabric IP 移行後、 5層の障害が発生し解決。 詳細は「障害・トラブル (id:19)」参照。

  1. server_name 環境変数欠落 → Discovery XML がプライベートIPを返す
  2. aliasgroup1 port サフィックス バグ
  3. nginx CIDR 不一致 (/30 → /29)
  4. container DNS が /etc/hosts をバイパス (外部IP 119.26.175.225 で cloud.k2-o.net を解決)
  5. wopi_allowlist に外部IP欠落

一時修正: 119.26.175.225 を nginx allow と wopi_allowlist に追加。 恒久修正は 2026-05-14 の fabric 直結化で完了。

// wanchance.com ドキュメント整備
  • Claude Code (コードくん) が infra_page.html (849行)、 ip_daichou_page.html (492行)、 port_wiring_page.html (1419行) を完成
  • 7台中6台のターゲットマシンに SSH 接続
  • R640 / maguro / hirame / Cisco 12XS-48T (id_rsa_cisco, legacy KEX) / RTX1300 (id_ed25519) の SSH 認証情報を確立
// NC 動画再生対応
  • Music_Video フォルダの AV1 動画を ffmpeg (Docker コンテナ内) で H.264 バッチ変換
  • yt-dlp を H.264 デフォルト設定 (-f "bestvideo[vcodec^=avc1]+bestaudio")
// 3月26日: VPS 外し構成への移行
  • サイトへのアクセスが遅いため、 当初の VPS フロント構成を廃止
  • R640 直接接続構成へ移行 (wg0: 10.200.0.1/16、 port 54024)
  • RTX1300 で NAT/フィルタ設定 (UDP 54024、 TCP 443、 TCP 80)
  • nginx SSL 終端 (cloud.k2-o.net:443 → localhost:9080)
  • dnsmasq 内部DNS (10.200.0.1:53) で cloud.k2-o.net → 192.168.20.21 を解決 ※その後 2026-05-14 で dnsmasq 廃止
  • VPS は wg2 バックホール接続のみ保持 ※その後 2026-05-14 で完全停止、 6月末解約予定
タイムライン早見表
時期主な作業結果
2026-03 上旬fabric 172.31.x → 173.0.0.x mesh 移行R640↔hirame 直結発見、 帯域確保
2026-03-26VPS フロント構成廃止、 R640 直接化アクセス速度改善
2026-03-30Collabora 統合 5層障害解決暫定対処で動作
2026-04-06セキュリティ脆弱性 ①②⑧ 対応パスワード/シェル安全化
2026-05-12〜13スイッチ大規模再設定 (VLAN70 新設)20G LACP + 全 bond 10G 両足化
2026-05-14NC + Portal + WG を maguro 移植 / R640 再構築 / Collabora fabric 直結化R640 = DMZ Web 専用、 maguro = ストレージ+VPN+Portal、 hirame = Office
マイルストーン: 2026-05-14 で「自社インフラ運用 (Tier1相当の冗長性・暗号化・監視体制)」の最初のメジャーマイルストーン到達。 残るは VPS解約と他クライアント HP 移行。