From 833dddd92e7ce5fe58e1014878beb1479bd22630 Mon Sep 17 00:00:00 2001 From: Timmy Date: Thu, 2 Jul 2026 20:45:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20CT124=20tinyauth=20?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=89=8B=E5=86=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v5 兩實例:tinyauth.lotimmy.com(:3005)、tinyauth.timmy.edu.kg(:3006) Co-Authored-By: Claude Opus 4.8 (1M context) --- CT124_tinyauth操作手冊_20260702.md | 99 ++++++++++++++++++++++++++++++ README.md | 1 + 2 files changed, 100 insertions(+) create mode 100644 CT124_tinyauth操作手冊_20260702.md diff --git a/CT124_tinyauth操作手冊_20260702.md b/CT124_tinyauth操作手冊_20260702.md new file mode 100644 index 0000000..6931488 --- /dev/null +++ b/CT124_tinyauth操作手冊_20260702.md @@ -0,0 +1,99 @@ +# CT124 tinyauth(反向代理認證 / SSO)— 操作手冊 + +> 主機:CT124(192.168.42.124,Ubuntu 24.04 LXC) | 位置:`/opt/tinyauth`、`/opt/tinyauth2` +> 用途:輕量認證/授權伺服器,可當反向代理的 forward-auth 中介層(保護沒有內建登入的服務),或獨立登入伺服器。支援 OAuth / LDAP / 存取控制。專案: + +--- + +## 一、基本資訊 + +- 版本:**tinyauth v5**(`ghcr.io/tinyauthapp/tinyauth:v5`,實際 v5.0.7) +- **兩個獨立實例**(各自獨立 SQLite DB、獨立設定,互不相干): + + | 實例 | 目錄 | 容器 | 埠 | 對外網域(NPM) | + |---|---|---|---|---| + | 1 | `/opt/tinyauth` | `tinyauth` | `3005 → 3000` | `https://tinyauth.lotimmy.com`(NPM #58, cert 86,已驗證 200) | + | 2 | `/opt/tinyauth2` | `tinyauth2` | `3006 → 3000` | `https://tinyauth.timmy.edu.kg`(NPM #59, cert 87,已驗證 200) | + +- 皆 `restart: unless-stopped`、內建 healthcheck(`healthy`)。 +- 實例 1(`tinyauth`)帶 `com.centurylinklabs.watchtower.enable=true` → Watchtower 會自動拉新版;實例 2 未帶此標籤,需手動更新。 +- DNS:`tinyauth.lotimmy.com` A 記錄 → `125.229.110.50`(WAN,Cloudflare DNS-only 灰雲),與 picsur/headscale 同模式。 + +## 二、存取與帳號 + +- Web:`https://tinyauth.lotimmy.com`(內網 `http://192.168.42.124:3005`);實例 2 同理走 `:3006`。 +- 管理員帳號:`admin`(兩個實例目前**共用同一組 bcrypt 雜湊**,寫在各自 `stack.env` 的 `TINYAUTH_AUTH_USERS`)。 + - **密碼見密碼管理器**(不落在此手冊)。`stack.env` 只存雜湊,無法反推明文。 + +### 改密碼 / 加使用者 + +tinyauth 沒有註冊 UI,帳號由環境變數帶入。用 CLI 產生 bcrypt 雜湊: + +```bash +docker run --rm ghcr.io/tinyauthapp/tinyauth:v5 user create --username <帳號> --password <密碼> +# 輸出 <帳號>:$2a$10$... 貼回對應目錄的 stack.env 的 TINYAUTH_AUTH_USERS(多人以逗號分隔) +cd /opt/tinyauth && docker compose up -d # 套用 +``` + +> `--docker` 旗標會把 `$` 跳脫成 `$$` 供 compose 插值使用;放進 `env_file`(`stack.env`)時用哪種都可,兩個實例現況分別是單 `$` 與 `$$`,均正常運作。 + +## 三、操作 + +```bash +cd /opt/tinyauth # 或 /opt/tinyauth2 +docker compose up -d # 啟動 / 套用設定變更 +docker compose ps +docker compose logs -f +docker compose pull && docker compose up -d # 更新 image(實例 1 平常 Watchtower 也會自動更) +docker compose down # 停止並移除容器(data/ 保留) +``` + +## 四、設定與資料 + +每個實例目錄含: + +| 檔案 | 用途 | +|---|---| +| `docker-compose.yml` | 服務定義 | +| `stack.env` | 環境變數(`TINYAUTH_APPURL`、`TINYAUTH_DATABASE_PATH`、`TINYAUTH_AUTH_USERS`)。用獨立檔名而非 `.env`,避免被 compose 當插值來源 | +| `data/` | SQLite DB(`/data/tinyauth.db`)+ resources,**備份只認這個目錄** | + +備份:`cd /opt/tinyauth && docker compose stop && tar -czf tinyauth-data-$(date +%F).tar.gz data && docker compose start`(兩個實例分別備)。 + +關鍵環境變數: + +- `TINYAUTH_APPURL` — 對外完整網址。**必須是 hostname,不接受 IP**(填 IP 會 `IP addresses not allowed` 直接 crash-loop);cookie/OAuth 導向都依賴它。 +- `TINYAUTH_AUTH_USERS` — `帳號:bcrypt雜湊`,逗號分隔多人。 +- `TINYAUTH_DATABASE_PATH` — 指到 `/data/tinyauth.db` 讓 DB 落在綁定卷。 + +## 五、用 tinyauth 保護其他服務(forward-auth,NPM) + +NPM 沒有原生 forward-auth UI,需在**被保護服務**的 Proxy Host → Advanced 分頁加 `auth_request`,指向 tinyauth 的 `/api/auth/nginx`。大致片段(依實際調整): + +```nginx +location /tinyauth { + internal; + proxy_pass http://192.168.42.124:3005/api/auth/nginx; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Uri $request_uri; +} +error_page 401 = @tinyauth_login; +location @tinyauth_login { + return 302 https://tinyauth.lotimmy.com/login?redirect_uri=https://$host$request_uri; +} +location / { + auth_request /tinyauth; + # ...原本的 proxy_pass... +} +``` + +設定細節與 OAuth/LDAP 供應商請參官方文件 (頁面偶爾 404,以 repo 的 `.env.example` 為準)。 + +## 六、注意事項 + +- **兩個實例是各自獨立的**:改帳號、改設定、備份都要分目錄做;`tinyauth.lotimmy.com` 的變更不會同步到 `tinyauth.timmy.edu.kg`。 +- 主機埠 `3005`/`3006` 對 LAN 開放(`0.0.0.0`),任何能連到 CT124 的人可直接打登入頁。真要收斂可把 `ports` 拿掉、只留 NPM 內網存取。 +- 對外 443 經 NPM → 依賴 docker daemon 與 NPM 容器(見 [`CT124_故障復原_20260529.md`](CT124_故障復原_20260529.md));NPM 掛了兩個網域都不通。 +- tinyauth 仍在活躍開發,升級前先看 release notes 並確認 `data/` 有近期備份。 +``` diff --git a/README.md b/README.md index fe67579..45527e3 100644 --- a/README.md +++ b/README.md @@ -19,3 +19,4 @@ Claude Code 工作規範見 [`CLAUDE.md`](CLAUDE.md)。 | [CT124_NocoDB操作手冊_20260622.md](CT124_NocoDB操作手冊_20260622.md) | CT124 | 自架 NocoDB(`:28080` / `noco.timmy.edu.kg`)操作、API、備份;附 DB 對外與弱帳密提醒 | | [CT124_Redash操作手冊_20260622.md](CT124_Redash操作手冊_20260622.md) | CT124 | 自架 Redash 10.1.0(6 容器,`:5001`,僅 LAN)操作;附 DB 在匿名 volume 的備份風險 | | [CT124_Picsur操作手冊_20260622.md](CT124_Picsur操作手冊_20260622.md) | CT124 | 自架 Picsur 0.5.6 圖床(`:8080` / `picsur.lotimmy.com`)操作、ShareX、備份;Watchtower 自動更新 | +| [CT124_tinyauth操作手冊_20260702.md](CT124_tinyauth操作手冊_20260702.md) | CT124 | 自架 tinyauth v5 反代認證/SSO,兩實例(`:3005`/`tinyauth.lotimmy.com`、`:3006`/`tinyauth.timmy.edu.kg`);APPURL 不接受 IP、forward-auth 設定 |