DEPLOYMENT GUIDE
部署與維運手冊
原始檔
docs/deploy/README.md · 在 GitHub 上檢視給學校資訊管理者/教學組長的完整操作文件。系統為單校自架、純 Web,以 Docker Compose 一鍵部署,六個容器(web / api / worker / worker-ops / postgres / redis)在一台主機上跑完。
worker專跑自動排課(一次可跑好幾分鐘),worker-ops跑匯出、備份、還原、寄信與定時任務。分開的用意是:排課那幾分鐘裡,你按「匯出課表」仍然是秒回的。
我該從哪裡開始?
| 你的情況 | 看這篇 |
|---|---|
| 第一次安裝,想在校內主機/NAS 上架起來 | 安裝指南 |
| 已在跑,要升級到新版本 | 升級指南 |
| 想確認資料有備份、或要搬移/還原資料 | 備份與還原 |
| 要讓校外也能連(網域 + HTTPS) | 網域與 HTTPS(選配) |
| 遇到問題、啟動不了、忘記密碼 | 常見問題 FAQ |
三分鐘理解這套系統怎麼跑
使用者瀏覽器
│ http://校內主機IP
┌───────▼────────┐
│ web (Caddy) │ 靜態前端 + 反向代理 /api
└───────┬────────┘
│
┌─────────────▼──────────────┐
│ api (FastAPI) │ 登入、資料維護、手動排課、報表
└───┬──────────────────┬─────┘
│ │
┌──────▼──────┐ ┌──────▼───────┐
│ postgres │ │ redis │ 兩條工作佇列 + session 時效
│ (你的資料) │ └──┬────────┬──┘
└─────────────┘ │ │
▲ ┌──────▼─────┐ ┌▼──────────────┐
├───────┤ worker │ │ worker-ops │
│ │ 自動排課 │ │ 匯出/備份/還原 │
└───────┤ (可跑數分鐘)│ │ 寄信/每日備份 │
└────────────┘ └───────────────┘
- 你的資料只在
postgres(存於 Docker volumepgdata),備份檔在 volumebackups。只要這兩者在,系統可隨時重建。 - worker 只跑自動排課——它一開跑就會佔住好幾分鐘,這是正常的。
- worker-ops 跑匯出、備份、還原、寄信與每日自動備份。分開的用意:排課那幾分鐘正是組長最常按「匯出課表」的時候,不該排在排課後面等。
- 全部跑在一台主機,不需要外網、不需要雲端帳號,校內網路即可使用。
兩種部署方式
同一份 docker-compose.yml 支援兩種做法:
- 拉取官方預建映像(推薦,免建置、升級快):只要
docker-compose.yml+.env兩個檔案,docker compose pull && docker compose up -d。 - 從原始碼自行建置(想改程式、或內網無法連 GHCR 時):
git clone本專案後docker compose up -d,首次會在本機建置映像(數分鐘)。
詳見 安裝指南。
名詞對照
| 文件用詞 | 意思 |
|---|---|
| 主機 / host | 跑 Docker 的那台電腦(校內伺服器、桌機、NAS 皆可) |
| 容器 container | 一個服務的執行實體,如上圖六個 |
| volume | Docker 管理的資料儲存區,容器刪掉也不會消失 |
.env |
你的設定檔(密碼、校名、埠號),含機密,不要上傳到任何地方 |
本頁由
排課與調代課系統 · MIT 授權 · GitHub
docs/deploy/README.md 自動產生(scripts/build_docs.py)。
要修改內容請改 Markdown 原始檔,不要直接編輯這份 HTML。排課與調代課系統 · MIT 授權 · GitHub