# CodiMD 管理腳本使用說明 這個目錄包含一系列腳本來簡化 CodiMD 的管理。 ## 🚀 快速開始 給所有腳本執行權限: ```bash chmod +x *.sh ``` ## 📜 可用腳本 | 腳本 | 功能 | 說明 | |------|------|------| | `start.sh` | 啟動服務 | 啟動 CodiMD 和資料庫 | | `stop.sh` | 停止服務 | 停止所有服務 | | `restart.sh` | 重啟服務 | 重啟所有服務 | | `logs.sh` | 查看日誌 | 顯示即時日誌 | | `status.sh` | 檢查狀態 | 顯示服務狀態和資源使用 | | `backup.sh` | 備份資料 | 備份資料庫和上傳檔案 | | `restore.sh` | 還原備份 | 從備份還原資料 | | `update.sh` | 更新服務 | 更新 Docker 映像 | | `cleanup.sh` | 清理資源 | 清理未使用的 Docker 資源 | ## 📖 詳細說明 ### start.sh - 啟動服務 ```bash ./start.sh ``` 功能: - 檢查 `.env` 是否存在(不存在則複製 `.env.example`) - 啟動所有 Docker 服務 - 顯示服務狀態和訪問地址 ### stop.sh - 停止服務 ```bash ./stop.sh ``` 功能: - 優雅地停止所有服務 - 保留資料和容器 ### restart.sh - 重啟服務 ```bash ./restart.sh ``` 功能: - 重啟所有服務 - 等待服務完全啟動 - 顯示服務狀態 ### logs.sh - 查看日誌 ```bash # 查看 CodiMD 日誌(預設) ./logs.sh # 查看資料庫日誌 ./logs.sh database ``` 功能: - 即時顯示服務日誌 - 按 `Ctrl+C` 離開 ### status.sh - 檢查狀態 ```bash ./status.sh ``` 功能: - 顯示容器運行狀態 - 顯示最近 20 行日誌 - 顯示磁碟空間 - 顯示 Docker 資源使用 ### backup.sh - 備份資料 ```bash ./backup.sh ``` 功能: - 備份 PostgreSQL 資料庫 - 備份上傳檔案 - 備份環境設定(`.env`) - 自動清理超過 30 天的舊備份 備份位置:`./backups/` ### restore.sh - 還原備份 ```bash ./restore.sh ``` 功能: - 列出可用的備份 - 選擇要還原的備份 - 可選擇還原資料庫、上傳檔案、環境設定 ### update.sh - 更新服務 ```bash ./update.sh ``` 功能: - 執行備份 - 拉取最新的 Docker 映像 - 可選擇立即重啟服務 ### cleanup.sh - 清理資源 ```bash ./cleanup.sh ``` 功能: - 清理未使用的 Docker 映像 - 清理停止的容器 - 清理未使用的網路 - 清理建置快取 ## 🔧 設置 Crontab 自動備份 編輯 crontab: ```bash crontab -e ``` 添加以下內容(每天凌晨 2 點備份): ```cron 0 2 * * * cd /path/to/codimd && ./backup.sh >> backups/cron.log 2>&1 ``` ## 📊 備份範例 備份檔案命名格式: ``` backups/ ├── database_20260317_020000.sql # 資料庫備份 ├── uploads_20260317_020000.tar.gz # 上傳檔案備份 ├── env_20260317_020000.env # 環境設定備份 └── backup_20260317_020000.txt # 備份資訊 ``` ## 🛠️ 故障排除 ### 腳本無法執行 ```bash chmod +x *.sh ``` ### Docker 未運行 ```bash sudo systemctl start docker ``` ### 權限問題 ```bash sudo usermod -aG docker $USER # 然後重新登入 ``` ## 📝 注意事事項 1. **備份前先測試**:第一次使用建議先手動測試備份和還原 2. **定期檢查備份**:確認備份檔案完整且可還原 3. **監控磁碟空間**:定期清理舊備份以節省空間 4. **保持腳本更新**:更新 CodiMD 時也要檢查腳本是否需要更新 ## 🔗 相關文件 - [README.md](README.md) - 完整部署指南 - [SSL-SETUP.md](SSL-SETUP.md) - SSL 設置指南 - [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - 故障排除指南