將Cusdis部署到Vercel和Railway

目錄
  1. 1. 在Railway部署資料庫
  2. 2. 在Vercel部署網站
  3. 3. Cusdis變數說明
  4. 4. 其他Vercel設定

Cusdis的部署非常簡單,我個人使用官方建議部署到Vercel(網站託管)和Railway(PostgreSQL資料庫)。請參考〈Deploy Cusdis on Vercel〉和〈Deploy Cusdis on Railway〉的解說,很容易就能一鍵部署完成。但是自行部署的Cusdis只能單一使用者自用,無法給其他人用,因為沒有連結其他帳戶服務。

在Railway部署資料庫

Railway雖然可以同時部署網站和資料庫,但不知為何只要開始建置時就會出現Banned Dependency Detected!,導致無法建置成功。
Railway Cusdis Build Fail

因為還要查問題,實在太麻煩了,所以我們把該專案的網站刪除,只留資料庫就好。資料庫不用改任何設定。
Railway Delete Cusdis Service

在Vercel部署網站

到Vercel一鍵部署網站,環境變數只有四個要填寫,其他變數之後再補填。
Vercel Setting Cusdis Deploy Environment

Cusdis部署完成的畫面。
Vercel Cusdis Deploy Complete

到Vercel → Dashboard → 專案 → Settings → Environment Variables,填入其他變數。所有變數都是在這裡設定。
Vercel Setting Cusdis Other Environment Variables

Cusdis變數說明

基本的環境變數:

  • NEXTAUTH_URL:系統給的網域或自訂的網域,例如:https://foo.vercel.app。沒填的話,登入管理後台要登入兩次,登入後的網域會不一樣(登入到部署專用的動態網域),會影響很多功能。
  • USERNAME:登入管理後台的使用者名稱。
  • PASSWORD:登入管理後台的密碼。
  • DB_URL:資料庫的連結位址,例如:postgresql://johndoe:randompassword@localhost:5432/mydb。這裡我們需填入Railway的資料庫連結位址。
  • HOST:系統給的網域或自訂的網域,例如:foo.vercel.app。沒填的話,Email Notification的Token連結會無效,信件裡的網域也是錯的(例如取消訂閱連結)。
  • JWT_SECRET:不知道要填什麼的話,可以使用JWT generator來產生Token。

以下為Email Notification的環境變數,以Gmail為例:

  • SMTP_HOST:smtp.gmail.com
  • SMTP_PORT:465
  • SMTP_SECURE:true
  • SMTP_USER:your gmail email
  • SMTP_PASSWORD:<app password>。到Google帳戶設定一組應用程式密碼。
  • SMTP_SENDER:your gmail email。可給予顯示名稱,例如John Doe <john.doe@gmail.com>

以上變數全部都要設定,功能才算完整。設定完成需重新部署(選擇Redeploy或Promote to Production)才可使用。
Vercel Redeploy or Promote to production

其他Vercel設定

如果要設定自訂網域,請到Domains設定。
Vercel Setting Custom Domains

Serverless Function Region:可選擇部署的區域。
Vercel Setting Serverless Function Region