feat: v0.1.9 - 全頁拖曳上傳 + i18n 修正 + 文件更新

 Features:
- 全頁拖曳上傳:檔案可拖曳到頁面任何位置上傳
- 原本的上傳框視覺效果保持不變

🌍 i18n:
- 刪除任務的 confirm/alert 訊息改用 i18n
- 隨語言切換即時更新顯示內容

📚 Documentation:
- README 新增「如何更新 ConvertX-CN 版本」章節
- 新增 deployment.md(Reverse Proxy、HTTPS)
- 新增 Docker Compose 範例分層
- 更新 environment-variables.md
This commit is contained in:
Your Name 2026-01-20 15:09:30 +08:00
parent a0eccf0437
commit a45a049fe2
14 changed files with 1475 additions and 167 deletions

View file

@ -1,50 +1,194 @@
# ==============================================================================
# ConvertX-CN 部署範例docker-compose.yml / compose.yaml
# ConvertX-CN Docker Compose 教學版範例
#
# 📚 這份範例的設計理念:
# - 刻意保留完整註解,讓第一次用 Docker 的人也能成功部署
# - 每個設定都有說明其用途與風險
# - 如果你是 Docker 老手,可以自行精簡
#
# 🎉 這是完整版 image已內建所有轉換依賴
# - LibreOffice (headless)
# - TexLiveCJK + 阿拉伯/希伯來語)
# - LibreOffice (headless) - 文件轉換
# - TexLive Full - LaTeX 完整版(含 CJK、阿拉伯、希伯來語支援
# - Tesseract OCR + 中日韓英德法語言包
# - CJK 字型Noto CJK、標楷體
# - Pandoc、FFmpeg、ImageMagick、OpenCV 等所有轉換器
# - CJK 字型Noto CJK、標楷體、微軟核心字型
# - Pandoc、FFmpeg、ImageMagick、Calibre 等所有轉換器
#
# ✅ 使用者不需要自己寫 Dockerfile
# ✅ 直接 docker compose up -d 即可使用
#
# ⚠️ 遠端部署注意事項:
# 若透過 Nginx/Traefik 等 reverse proxy 存取,請設定:
# - HTTP_ALLOWED=true若 proxy 處理 HTTPS
# - 或 TRUST_PROXY=true讓應用正確判斷 HTTPS
# ⚠️ 部署前必做:
# 1. 先建立 data 資料夾(見 README.md 步驟 2
# 2. 修改 JWT_SECRET 為你自己的隨機字串
# ==============================================================================
services:
convertx:
# =========================================================================
# 映像檔設定
# =========================================================================
# convertx-cn 是完整版,已內建所有轉換工具
# ⚠️ 首次下載約 4-6 GB請耐心等待
image: convertx/convertx-cn:latest
# 容器名稱,方便識別與管理
container_name: convertx-cn
# 重啟策略:
# - unless-stopped除非手動停止否則自動重啟推薦
# - always永遠自動重啟
# - no不自動重啟
restart: unless-stopped
# =========================================================================
# 連接埠設定
# =========================================================================
# 格式:「主機埠號:容器埠號」
#
# 範例:
# - "3000:3000" → http://localhost:3000
# - "8080:3000" → http://localhost:8080
# - "80:3000" → http://localhost需要 root 權限)
#
# 💡 若 3000 埠被佔用,改第一個數字即可
ports:
- "3000:3000"
# =========================================================================
# 資料儲存設定(⚠️ 非常重要)
# =========================================================================
# 格式:「主機路徑:容器路徑」
#
# ./data 是你主機上的實體資料夾(相對於 docker-compose.yml 的位置)
# /app/data 是容器內的路徑
#
# 這裡存放:
# 📁 上傳的檔案
# 📁 轉換後的結果
# 📁 使用者帳號資料SQLite 資料庫)
#
# 🚨 重要提醒:
# 1. 請務必先建立 data 資料夾再啟動容器!
# 若資料夾不存在Docker 可能會建立「匿名 volume」
# 這會導致容器刪除後資料全部遺失,且難以找回。
#
# 2. 如果你想用 Docker named volume 取代本地資料夾:
# - convertx_data:/app/data
# 但資料會存在 Docker 內部,較難直接存取與備份。
#
# 3. 建議定期備份 data 資料夾!
volumes:
- ./data:/app/data
# =========================================================================
# 環境變數設定
# =========================================================================
environment:
# === 帳號設定 ===
- ACCOUNT_REGISTRATION=false # 是否允許註冊新帳號(首次帳號不受此限制)
- JWT_SECRET=請更換為一個長且隨機的字串 # 若不設定則使用 randomUUID()
# === 安全設定 ===
- HTTP_ALLOWED=false # 是否允許非 HTTPS 連線(僅本地測試時設為 true
- TRUST_PROXY=false # 透過 reverse proxy 時設為 true正確判斷 HTTPS
- ALLOW_UNAUTHENTICATED=false # 是否允許未登入使用(僅本地測試時設為 true
# === 檔案管理 ===
- AUTO_DELETE_EVERY_N_HOURS=24 # 自動刪除超過 N 小時的檔案0 = 停用)
# === 時區設定 ===
# -----------------------------------------------------------------------
# 時區設定
# -----------------------------------------------------------------------
# 影響檔案時間戳記與日期顯示格式
# 常用值Asia/Taipei, Asia/Shanghai, America/New_York, Europe/London
- TZ=Asia/Taipei
# === 可選設定 ===
# - WEBROOT=/convertx # 子路徑部署(例如 example.com/convertx/
# - HIDE_HISTORY=true # 隱藏歷史紀錄頁面
# - LANGUAGE=zh-TW # 日期格式語言
# - FFMPEG_ARGS=-hwaccel vaapi # FFmpeg 硬體加速參數
# - MAX_CONVERT_PROCESS=4 # 最大同時轉換數0 = 無限制)
# -----------------------------------------------------------------------
# JWT 密鑰(🔐 強烈建議設定)
# -----------------------------------------------------------------------
# 用於使用者登入驗證的加密金鑰
#
# ⚠️ 若不設定會怎樣?
# 系統會使用 randomUUID() 產生臨時金鑰,
# 但每次容器重啟後金鑰會改變,導致:
# → 所有使用者的登入狀態失效
# → 所有人都需要重新登入
#
# ✅ 正確做法:
# 設定一個長且隨機的字串(建議 32 字元以上)
# 可以用 openssl rand -hex 32 產生
#
# 🚨 請務必將下面的值改成你自己的!
- JWT_SECRET=請改成你自己的長隨機字串-至少32個字元-不要用這個預設值
# -----------------------------------------------------------------------
# 帳號註冊設定
# -----------------------------------------------------------------------
# true = 允許任何人註冊新帳號
# false = 關閉註冊功能
#
# 💡 注意:首次註冊的帳號不受此限制
# 即使設為 false仍可註冊第一個帳號管理員
#
# 📌 建議:
# - 首次部署時設為 true註冊好帳號後改為 false
# - 或者直接設為 false只用第一個註冊的帳號
- ACCOUNT_REGISTRATION=true
# -----------------------------------------------------------------------
# HTTP 存取設定(🔒 安全性相關)
# -----------------------------------------------------------------------
# true = 允許非 HTTPS 連線
# false = 必須 HTTPS 連線Cookie 設定 Secure 屬性)
#
# ⚠️ 這個設定影響登入功能是否正常運作!
#
# 📌 設定指南:
# 🏠 本地測試http://localhost → true
# 🌐 遠端部署且有 HTTPS → false
# 🌐 遠端部署但沒有 HTTPS不建議 → true但不安全
#
# 🚨 常見問題:
# 若設為 false 但實際用 HTTP 存取,
# 會導致「登入後又被導回登入頁」的問題
- HTTP_ALLOWED=true
# -----------------------------------------------------------------------
# Reverse Proxy 信任設定
# -----------------------------------------------------------------------
# 若你透過 Nginx / Traefik / Cloudflare / Caddy 等存取,設為 true
#
# 作用:讓應用程式信任 X-Forwarded-Proto 等 header
# 正確判斷連線是否為 HTTPS
#
# 📌 設定指南:
# 直接存取容器(無 proxy → false
# 透過 reverse proxy 存取 → true
- TRUST_PROXY=false
# -----------------------------------------------------------------------
# 未登入存取設定
# -----------------------------------------------------------------------
# true = 允許未登入的訪客使用轉換功能
# false = 必須登入才能使用
#
# ⚠️ 設為 true 的風險:
# - 任何人都可以使用你的服務器資源
# - 可能被濫用(大量轉換、儲存空間耗盡)
#
# 📌 建議:除非你明確要提供公開服務,否則設為 false
- ALLOW_UNAUTHENTICATED=false
# -----------------------------------------------------------------------
# 自動清理設定
# -----------------------------------------------------------------------
# 自動刪除超過 N 小時的轉換檔案
# 設為 0 = 停用自動刪除
#
# 💡 建議設定適當的值,避免磁碟空間被轉換檔案塞滿
- AUTO_DELETE_EVERY_N_HOURS=24
# -----------------------------------------------------------------------
# 進階設定(可選,需要時取消註解)
# -----------------------------------------------------------------------
# 子路徑部署(例如 https://example.com/convertx/
# - WEBROOT=/convertx
# 隱藏歷史紀錄頁面
# - HIDE_HISTORY=true
# 日期格式語言(影響時間顯示格式)
# - LANGUAGE=zh-TW
# FFmpeg 硬體加速參數
# - FFMPEG_ARGS=-hwaccel vaapi
# 最大同時轉換數0 = 無限制)
# - MAX_CONVERT_PROCESS=4