{" services services "}
…lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla elementum, eros at sagittis facilisis, ante est rutrum ligula, at interdum eros sapien vel magna.
✅ 主な変更: 173.0.0.x対応 / VPSバックアップ廃止
| 対象 | 内容 | 保存先 | 世代 |
|---|---|---|---|
| NC ユーザーデータ | /mnt/maguro/nextclouddata | SM-storage/backup/nextcloud/latest_data/ | 差分rsync |
| NC MariaDB | DBダンプ | SM-storage/backup/nextcloud/日付/ | 7世代 |
| NC config.php | 設定ファイル | SM-storage/backup/nextcloud/日付/ | 7世代 |
| NC custom_apps | カスタムアプリ | SM-storage/backup/nextcloud/日付/ | 7世代 |
| hirame netplan | /etc/netplan/ | SM-storage/backup/hirame/日付/ | 5世代 |
| hirame systemd | /etc/systemd/system/ | SM-storage/backup/hirame/日付/ | 5世代 |
| hirame home | /home/hirame/ | SM-storage/backup/hirame/日付/ | 5世代 |
| GitHubリポジトリ | コード全体 | wanperochance-code/mikyun-cloud | Git履歴 |
- パス: /opt/mikyun/bin/nc_backup.sh
- ログ: /var/log/nc_backup.log
- 手動実行: bash /opt/mikyun/bin/nc_backup.sh
- メンテナンスモード ON
- MariaDB ダンプ
- config.php バックアップ
- custom_apps バックアップ
- ユーザーデータ同期(rsync差分)
- メンテナンスモード OFF
- 古いバックアップ削除(7世代保持)
- パス: /opt/mikyun/bin/remote_backup.sh
- ログ: /var/log/remote_backup.log
- 接続先: hirame@173.0.0.10(新ファブリック)
- 認証: SSH鍵認証 + sudo rsync
- netplan設定: /etc/netplan/
- systemd設定: /etc/systemd/system/
- Dockerコンテナ一覧
- ホームディレクトリ(.cache除外)
| 時刻 | スクリプト | 内容 |
|---|---|---|
| 毎日 3:00 | nc_backup.sh | Nextcloud完全バックアップ |
| 毎日 4:00 | remote_backup.sh | hirameバックアップ |
| 項目 | 内容 |
|---|---|
| アカウント | wanperochance-code |
| リポジトリ | mikyun-cloud |
| URL | git@github.com:wanperochance-code/mikyun-cloud.git |
| 公開設定 | Private |
| 認証 | SSH鍵(/root/.ssh/id_ed25519) |
- app/ – 顧客・運営ポータル本体
- mikyun-portal/ – VPNエンジン
- scripts/backup/ – バックアップスクリプト
- venv/ __pycache__/ – 仮想環境
- privatekey / publickey / keys/ – 秘密鍵
- passphrase.csv – 顧客パスフレーズ
- data/ issued/ logs/ – 実データ・ログ
| パス | 実体 | 容量 |
|---|---|---|
| /srv/storage/SM-storage/ | Supermicro NFS(173.0.0.1) | 66TB |
| /srv/storage/backup/ | R640ローカル | 2.2TB |
- NFSマウント: df -h | grep 173.0.0
- 最新バックアップ: ls -lt /srv/storage/SM-storage/backup/nextcloud/ | head -3
- 世代管理: 指定世代以上が残っていないか確認
- GitHub同期: cd /root/mikyun-cloud && git status
– GitHubはコード管理のみ
– ユーザーデータはSupermicroバックアップが本体
– 173.0.0.x ファブリック経由でバックアップ実行
– VPSバックアップは廃止済み
173.0.0.1:/srv/storage/nextcloud-data 66T 2.8T 63T 5% /srv/storage/SM-storage 173.0.0.1:/srv/storage/nextcloud/backup 66T 2.8T 63T 5% /mnt/backup
| 頻度 | 確認項目 | コマンド | 正常基準 |
|---|---|---|---|
| 毎日 | NFSマウント | df -h | grep 173.0.0 | 2行表示 |
| 最新バックアップ | ls -lt /srv/…/backup/nextcloud/ | head -5 | 24時間以内 | |
| エラーログ | tail -50 /var/log/nc_backup.log | grep -i error | 出力なし | |
| cron実行 | crontab -l | grep backup | 2行表示 | |
| 毎週 | 世代数 | ls -d /…/nextcloud/202* | wc -l | 7以下 |
| 容量 | df -h /srv/storage/SM-storage/ | 空き60TB以上 | |
| hirame接続 | ssh hirame@173.0.0.10 hostname | hirame-X58A-UD3R | |
| GitHub同期 | cd /root/mikyun-cloud && git status | clean |
– 毎日のチェックは朝5時以降に実施(cron実行後)
– エラーが出た場合は即座に原因調査
– NFSマウント異常は全バックアップ停止を意味する
– 世代数が増えすぎている場合は手動削除検討
| 時刻 | タスク | スクリプト | 実行方式 |
|---|---|---|---|
| 毎日 3:00 | Nextcloud完全バックアップ | /opt/mikyun/bin/nc_backup.sh | cron |
| 毎日 4:00 | hirameバックアップ | /opt/mikyun/bin/remote_backup.sh | cron |
– Nextcloud(3:00)を先に実行してメンテナンスモード中の負荷を避ける
– hirame(4:00)はNextcloud完了後に実行し、リソース競合を回避
0 3 * * * /bin/bash /opt/mikyun/bin/nc_backup.sh >> /var/log/nc_backup.log 2>&1 0 4 * * * /bin/bash /opt/mikyun/bin/remote_backup.sh >> /var/log/remote_backup.log 2>&1
– リダイレクト(>> と 2>&1)が正しく設定されているか
– ログファイルパスが正しいか
– ログディレクトリの書き込み権限があるか
| 項目 | 確認コマンド | 正常基準 |
|---|---|---|
| cron設定存在 | crontab -l | grep backup | 2行表示 |
| cronサービス | systemctl status cron | active (running) |
| スクリプト権限 | ls -l /opt/mikyun/bin/*.sh | -rwxr-xr-x |
| ログ出力設定 | crontab -l | grep “>>” | リダイレクトあり |
| 本日実行確認 | grep “$(date +%Y-%m-%d)” /var/log/nc_backup.log | ログあり |
| 実行成功確認 | grep “完了” /var/log/nc_backup.log | tail -1 | 24時間以内 |
| ログファイル存在 | ls -lh /var/log/*backup*.log | ファイル存在 |
| ログサイズ確認 | du -h /var/log/*backup*.log | 異常肥大なし |
| 時刻 | 対象 | 保存先 | 世代数 | 通信経路 |
|---|---|---|---|---|
| 毎日 3:00 | Nextcloud全体 | /mnt/backup(SM NFS) | 7世代 | 173.0.0.1(NFS) |
| 毎日 15:00 | Nextcloud全体 | /mnt/backup(SM NFS) | 7世代 | 173.0.0.1(NFS) |
| 毎日 4:00 | バックアップ→hirame | hirame:/srv/backup/ | 5世代 | 173.0.0.10(SSH) |
DATE=$(date +%Y%m%d-%H%M%S)
BACKUP_DIR=”/mnt/backup/nextcloud-backup-${DATE}”
SOURCE_DIR=”/srv/storage/SM-storage”
# Nextcloud メンテナンスモード ON
docker exec nextcloud-stack-app-1 php occ maintenance:mode –on
# バックアップ実行
rsync -avz –delete ${SOURCE_DIR}/ ${BACKUP_DIR}/
# Nextcloud メンテナンスモード OFF
docker exec nextcloud-stack-app-1 php occ maintenance:mode –off
# 7世代より古いバックアップ削除
find /mnt/backup/ -name “nextcloud-backup-*” -type d -mtime +7 -exec rm -rf {} \;
# Telegram通知
curl -X POST “https://api.telegram.org/bot${BOT_TOKEN}/sendMessage” \
-d “chat_id=${CHAT_ID}” \
-d “text=✅ R640 Nextcloud Backup Completed: ${DATE}”
0 3 * * * root /opt/mikyun/bin/nextcloud_backup.sh
0 15 * * * root /opt/mikyun/bin/nextcloud_backup.sh
| 時刻 | 送信元 | 受信先 | 世代数 | 通信経路 |
|---|---|---|---|---|
| 毎日 4:00 | R640 /mnt/backup | /srv/backup/r640/ | 5世代 | 173.0.0.10(SSH) |
DATE=$(date +%Y%m%d)
REMOTE_USER=”backup”
REMOTE_HOST=”173.0.0.10″
REMOTE_DIR=”/srv/backup/r640/${DATE}”
SOURCE_DIR=”/mnt/backup/nextcloud-backup-*”
# SSH経由でhirameへバックアップ
ssh ${REMOTE_USER}@${REMOTE_HOST} “mkdir -p ${REMOTE_DIR}”
# 最新バックアップのみ転送
LATEST_BACKUP=$(ls -td ${SOURCE_DIR} | head -1)
rsync -avz -e “ssh -i /root/.ssh/id_ed25519” \
${LATEST_BACKUP}/ ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/
# hirameで5世代より古いバックアップ削除
ssh ${REMOTE_USER}@${REMOTE_HOST} \
“find /srv/backup/r640/ -type d -mtime +5 -exec rm -rf {} \;”
# Telegram通知
curl -X POST “https://api.telegram.org/bot${BOT_TOKEN}/sendMessage” \
-d “chat_id=${CHAT_ID}” \
-d “text=✅ R640→hirame Remote Backup Completed: ${DATE}”
0 4 * * * root /opt/mikyun/bin/remote_backup.sh
| 項目 | 内容 |
|---|---|
| RAID名 | md0 |
| 構成 | Samsung 476.9GB + Crucial 465.8GB |
| 状態 | [2/2] [UU](正常) |
| 監視方式 | systemd timer(mdadm-watch.timer) |
| 通知先 | Telegram |
MD_STATUS=$(cat /proc/mdstat | grep -A2 “md0” | grep “\[UU\]”)
if [ -z “$MD_STATUS” ]; then
# RAID degraded検出
curl -X POST “https://api.telegram.org/bot${BOT_TOKEN}/sendMessage” \
-d “chat_id=${CHAT_ID}” \
-d “text=🚨 ALERT: Supermicro RAID1 (md0) DEGRADED!”
fi
[Unit]
Description=RAID1 monitoring timer
[Timer]
OnBootSec=5min
OnUnitActiveSec=30min
[Install]
WantedBy=timers.target
# 有効化
systemctl enable mdadm-watch.timer
systemctl start mdadm-watch.timer
# 状態確認
systemctl status mdadm-watch.timer
| 項目 | 内容 |
|---|---|
| デバイス | /dev/nvme0n1 |
| 型番 | Samsung 970 EVO Plus 1TB |
| マウント先 | /mnt/nvme-cache |
| 用途 | Nextcloud/MariaDB/Redis高速化 |
| 監視方式 | systemd timer(nvme-watch.timer) |
| 通知先 | Telegram |
NVME_DEV=”/dev/nvme0n1″
HEALTH=$(nvme smart-log ${NVME_DEV} | grep “critical_warning” | awk ‘{print $3}’)
if [ “$HEALTH” != “0x00” ]; then
# SMART警告検出
curl -X POST “https://api.telegram.org/bot${BOT_TOKEN}/sendMessage” \
-d “chat_id=${CHAT_ID}” \
-d “text=🚨 ALERT: R640 NVMe SMART Warning Detected!”
fi
# 使用量監視(80%超えで警告)
USAGE=$(df -h /mnt/nvme-cache | tail -1 | awk ‘{print $5}’ | sed ‘s/%//’)
if [ “$USAGE” -gt 80 ]; then
curl -X POST “https://api.telegram.org/bot${BOT_TOKEN}/sendMessage” \
-d “chat_id=${CHAT_ID}” \
-d “text=⚠️ WARNING: R640 NVMe Usage ${USAGE}% (threshold: 80%)”
fi
[Unit]
Description=NVMe SMART monitoring timer
[Timer]
OnBootSec=10min
OnUnitActiveSec=1h
[Install]
WantedBy=timers.target
# 有効化
systemctl enable nvme-watch.timer
systemctl start nvme-watch.timer
# 状態確認
systemctl status nvme-watch.timer
ls -lth /mnt/backup/ | head -10
# 世代数確認
ls -ld /mnt/backup/nextcloud-backup-* | wc -l
# バックアップサイズ確認
du -sh /mnt/backup/nextcloud-backup-*
ssh backup@173.0.0.10 “ls -lth /srv/backup/r640/”
# 世代数確認
ssh backup@173.0.0.10 “ls -ld /srv/backup/r640/* | wc -l”
# 最新バックアップのサイズ
ssh backup@173.0.0.10 “du -sh /srv/backup/r640/$(date +%Y%m%d)”
docker compose -f /opt/nextcloud-stack/docker-compose.yml down
# 2. 現在のデータ退避
mv /srv/storage/SM-storage /srv/storage/SM-storage.old
# 3. バックアップからリストア
BACKUP_DATE=”20260330-030000″
rsync -avz /mnt/backup/nextcloud-backup-${BACKUP_DATE}/ /srv/storage/SM-storage/
# 4. 権限修正
chown -R www-data:www-data /srv/storage/SM-storage
# 5. Nextcloud起動
docker compose -f /opt/nextcloud-stack/docker-compose.yml up -d
# 6. メンテナンスモード解除
docker exec nextcloud-stack-app-1 php occ maintenance:mode –off
| 通知種別 | トリガー | 頻度 |
|---|---|---|
| ✅ R640 Backup完了 | nextcloud_backup.sh成功 | 毎日3:00/15:00 |
| ✅ R640→hirame完了 | remote_backup.sh成功 | 毎日4:00 |
| 🚨 RAID1 Degraded | Supermicro md0異常 | 30分毎チェック |
| 🚨 NVMe SMART警告 | R640 NVMe異常 | 1時間毎チェック |
| ⚠️ NVMe使用率警告 | 使用率80%超過 | 1時間毎チェック |
– R640: 日次2回(3:00/15:00)7世代保持
– hirame: 日次1回(4:00)5世代保持(オフサイト)
– RAID監視: 30分毎自動チェック
– NVMe監視: 1時間毎自動チェック
– 全通知Telegram連携済み
