みーきゅんクラウド — 運用
🛠 運用 Runbook
日常運用・定期確認・保守作業の基準ページ。日次・週次・月次の確認項目とよく使うコマンド集をまとめる。
R640
Supermicro
VPS
Cisco 12XS
Cisco 48T
RTX1300
運用対象
6 機器
R640 / SM / VPS / SW×2 / Router
日次確認
5 項目
WG / Docker / DF / Systemd
SSL 期限
2026-06-18
自動更新設定済み
1 — 運用対象一覧
機器役割管理IP接続方法
R640Control Node(ポータル・VPN・Nextcloud)192.168.10.21ssh katuo@192.168.20.21
SupermicroStorage Node(NFS・約66TB)192.168.10.31ssh supermicro@192.168.10.31
VPS外部入口・Nginx・dnsmasq・WG162.43.8.20ssh xserver
Cisco WS-C3850-12XSCore L3 Switch192.168.10.1telnet / console
Cisco WS-C3850-48TAccess / OOB Switch192.168.10.2telnet / console
RTX1300Edge Router / MAP-E192.168.10.254Web UI / console
2 — 日次確認
R640
wg show
ip route
docker ps
df -h
systemctl --failed
Supermicro
df -h
lsblk
lvs
vgs
pvs
systemctl --failed
VPS
wg show
ss -lntup
ip route
iptables -S
iptables -t nat -S
3 — VPN監視
wg show
確認ポイント
  • latest handshake が定期的に更新されているか
  • transfer(rx/tx)が増加しているか
  • 期待している peer が欠けていないか
  • wg1 の peer 数が DB の active 端末数と一致しているか
4 — DB確認
mysql -u mikyun -pStrongPassword123! mikyun_cloud \
  -e "SELECT COUNT(*) FROM contracts;"

mysql -u mikyun -pStrongPassword123! mikyun_cloud \
  -e "SELECT COUNT(*) FROM customer_devices WHERE deleted_at IS NULL;"

mysql -u mikyun -pStrongPassword123! mikyun_cloud \
  -e "SELECT contract_id, wg_ip, is_parent, status FROM customer_devices WHERE deleted_at IS NULL;"

# 親端末重複チェック
mysql -u mikyun -pStrongPassword123! mikyun_cloud \
  -e "SELECT * FROM v_parent_conflicts;"
  
5 — ストレージ監視
Supermicro
df -h
lsblk
lvs
mount | grep /srv/storage
  
重要マウント確認
/srv/storage                      ← Supermicro 実データ
192.168.30.30:/nextclouddata      ← NFS Export
/mnt/maguro/nextclouddata         ← R640 NFS マウント先
  
6 — Nextcloud系確認
docker ps
df -h | grep nextcloud
mount | grep nextclouddata

# ステータス確認
docker exec -it nextcloud-stack-app-1 php occ status
  
確認ポイント
  • NFS マウントが有効か(/mnt/nextcloud が見えているか)
  • nextcloud-stack-app-1 コンテナが起動しているか
  • 残容量が逼迫していないか
  • maintenance モードが false になっているか
7 — バックアップ
対象
  • Nextcloud data(/srv/storage/nextcloud/data)
  • MariaDB(DB dump)
  • ポータル設定・出力物(/opt/mikyun/output/)
  • WireGuard 設定(/etc/wireguard/)
  • スイッチ・ルータ設定
現在の方式
# dd フルイメージ
# Fabric(172.31系)+ nc で R640 → Supermicro へ直接転送
# 40Gb 帯域使用(SSH未使用)
# 保存先: /srv/storage
  
将来方針
  • Borg Backup による自動・差分バックアップ
  • DB dump の定期自動取得
  • 設定ファイルの git 管理
8 — 週次点検
  • WG peer 状態確認(wg show で全 peer のハンドシェイク確認)
  • 契約・端末数の棚卸し(DB と wg1.conf の peer 数が一致しているか)
  • admin_logs の異常操作確認
  • ストレージ残量確認(Supermicro df -h)
  • Switch uplink / LACP エラー確認
  • UPS 状態確認
  • VPS の Nginx エラーログ確認
9 — 月次点検
  • OS アップデート方針確認(R640 / Supermicro / VPS)
  • VPS の Kernel / Package 更新可否確認
  • Nextcloud / Portal / DB バックアップ復元テスト
  • SSL 証明書期限確認(cloud.k2-o.net / portal.wan-secure.net / office.wan-secure.net)
  • ストレージ増設余力確認
  • Collabora グローバルIP変更確認(119.26.175.225 が有効か)
  • Xserver VPS コントロールパネル二段階認証の設定確認
10 — 変更作業ルール
  • 本番系変更前に必ず現状バックアップを取る
  • ネットワーク変更は CORE → ACCESS → Host の順で確認する
  • DB 変更は DDL 前に dump を取る
  • WireGuard 設定変更は peer 一覧退避後に実施する
  • Nginx 設定変更は nginx -t で構文確認後に systemctl reload nginx
  • Python ファイル変更は python3 -m py_compile で構文確認後にサービス再起動
11 — よく使うコマンド集
R640
ip -br a
ip route
wg show
docker ps
df -h
cat /etc/netplan/*.yaml

# ポータル再起動
cd /root/mikyun-cloud
kill $(ps aux | grep uvicorn | grep 9000 | awk '{print $2}')
nohup /root/mikyun-cloud/venv/bin/uvicorn \
  app.main:app --host 0.0.0.0 --port 9000 &

# VPN Engine 再起動
kill $(ps aux | grep mikyun_vpn | awk '{print $2}')
cd /opt/mikyun-portal
nohup /opt/mikyun-portal/venv/bin/uvicorn \
  mikyun_vpn_engine:app --host 127.0.0.1 --port 9081 &
    
Supermicro
ip -br a
ip route
df -h
lsblk
lvs
vgs
pvs
mount | grep srv
    
VPS
wg show
ss -lntup
nginx -t
systemctl reload nginx
systemctl status dnsmasq
    
Cisco スイッチ
show vlan brief
show ip interface brief
show interfaces status
show etherchannel summary
show interfaces trunk
show logging
    
RTX1300
show config
show nat descriptor address
show status tunnel 1
show status ipv6
    
Nextcloud OCC コマンド
# ステータス確認
docker exec -it nextcloud-stack-app-1 php occ status

# ブルートフォース保護解除
docker exec -it nextcloud-stack-app-1 php occ \
  security:bruteforce:reset {IP}

# アプリ管理
docker exec -it nextcloud-stack-app-1 php occ app:list
docker exec -it nextcloud-stack-app-1 php occ app:enable {app}
docker exec -it nextcloud-stack-app-1 php occ app:disable {app}

# Collabora wopi_url 確認
docker exec -it nextcloud-stack-app-1 php occ \
  config:app:get richdocuments wopi_url
  
12 — 障害時の復旧順序
全体障害(電源断等)
1. UPS 確認
2. Cisco 12XS(Core Switch)
3. Cisco 48T(Access Switch)
4. RTX1300(Router)
5. Supermicro(Storage Node)← LUKS アンロックが必要
6. R640(Control Node)      ← LUKS アンロックが必要
  
VPN接続できない
# VPS側確認
wg show
ping 10.250.0.2   # R640 トンネル疎通確認

# R640側確認
wg show
systemctl status wg-quick@wg2
  
Nextcloud 障害
docker ps                          # コンテナ確認
mount | grep nextclouddata         # NFS マウント確認
docker exec nextcloud-stack-app-1 php occ status
docker compose -f /path/to/docker-compose.yml restart
  
⚠️
Supermicro LUKS について: 現在 LUKS の自動アンロックスクリプトが未整備のため、再起動時には initramfs シェルから手動でアンロックが必要。USB キーボードドライバを initramfs に組み込む恒久対策が未実施。

“`

VLAN50 封鎖/復旧コマンド

🔒 VLAN50封鎖(使わないとき)

12XS側:

 
 
cisco
ssh admin@192.168.10.1
configure terminal
interface vlan 50
shutdown
end
write memory

🔓 VLAN50復旧(使うとき)

12XS側:

 
 
cisco
ssh admin@192.168.10.1
configure terminal
interface vlan 50
no shutdown
end
write memory

確認コマンド

12XS側:

 
 
cisco
show ip interface brief | include Vlan50

R640側:

 
 
bash
ping -I R640-UPD -c 3 1.1.1.1