# novarex.com.tw 上線最短流程（授權伺服器）

目標：讓授權站與 API 可用 `https://license.novarex.com.tw`（建議用子網域，不要把 API 跟官網首頁混在同一個根網域）。

## 1) 準備一台主機

你需要一台可長期對外的主機（VPS/雲端/自架 Windows Server），並取得「對外 IP」。

- 對外必開：TCP `80`、`443`
- 伺服器內部：授權服務可跑在 `http://127.0.0.1:5000`

## 2) DNS 設定（在網域商後台）

以 `license.novarex.com.tw` 為例：

- 新增 `A` 記錄
  - 名稱/主機：`license`
  - 值：你的主機對外 IP
- （可選）官網 `www`：`CNAME` 指到 `@` 或你的官網主機

等 DNS 生效（通常幾分鐘到數小時）。

## 3) HTTPS + 反向代理（建議用 Caddy）

最省事的方式：用 Caddy 取得/續期 Let’s Encrypt 憑證，並反代到本機 `5000`。

在伺服器安裝 Caddy 後，建立 `Caddyfile`：

```caddyfile
license.novarex.com.tw {
  encode gzip
  reverse_proxy 127.0.0.1:5000
}
```

啟動 Caddy 後，外網應可打開：
- `https://license.novarex.com.tw/`
- `https://license.novarex.com.tw/health`

## 4) 部署 NovaRexLicensing.Server

在伺服器上發布並常駐執行（Release）：

```pwsh
# 在你的開發機（或建置機）
dotnet publish .\NovaRexLicensing.Server\NovaRexLicensing.Server.csproj -c Release -o .\publish\lic
```

把 `publish\lic` 整包複製到伺服器（例如 `C:\NovaRex\LicServer\`）。

伺服器上設定環境變數（至少要改掉 token）：

```pwsh
$env:ASPNETCORE_URLS = 'http://127.0.0.1:5000'
$env:ASPNETCORE_ENVIRONMENT = 'Production'
$env:NREX_ADMIN_TOKEN = '<請換成長且隨機的字串>'
# 可選：把 /admin/ 藏到私密路徑
# $env:NREX_ADMIN_PATH = '/_nr_admin_<random>'
```

常駐方式（你 repo 內已有腳本）：
- `scripts/install-service.ps1`（Windows 服務，記得先把腳本內的 `$exePath` 改成你伺服器上的實際路徑）

## 5) App 指向你的網域

把 WPF App 的 `LicensingServerBaseUrl` 設為：
- `https://license.novarex.com.tw`

設定檔位置（目前你的專案是從這裡讀）：
- `%APPDATA%\NovaRexOptimizer\settings.json`

## 6) 最快驗證

在任一台能上網的機器：

```pwsh
Invoke-WebRequest https://license.novarex.com.tw/health
```

看到 `{"ok":true,...}` 就代表外網可用。

---

備註：如果你希望「官網」與「授權 API」同域，仍建議用子路徑分流（例如 `/api`），但維運與安全控管通常用子網域更乾淨。