2082 字
10 分鐘

Openship 自架安裝教學:Ubuntu VPS、網域與 HTTPS 設定

這次把 Openship 裝到 Ubuntu VPS 上,從互動式設定、建立管理員帳號,到用自訂網域開啟後台,最後確認了 VPS 與 Cloudflare 兩端的 HTTPS。

安裝過程有一個地方需要特別確認:終端機顯示 Openship is live,後台也能開啟,仍然要另外檢查憑證是否生效。下面依照安裝順序整理操作與驗證方式。

先提醒主機規格:這次使用約 1 GB RAM、系統顯示總磁碟容量 44.1 GB 的 VPS,雖然完成了安裝,但記憶體規格太小,不適合長期跑完整 Openship 部署平台,再加上其他應用程式。 如果還在選機,可以先看 Openship、Coolify 與 VPS 規格比較。

安裝前準備#

本文使用 Ubuntu 上的 Docker Compose 模式,需要:

  • 可透過 SSH 登入、具備管理權限的 VPS。
  • 已啟動的 Docker Engine 與 Docker Compose 外掛。
  • 可以修改 DNS 的網域。
  • 可供 Openship 使用的 TCP 80、443 連接埠。

以下指令在 VPS 上執行,範例網域 openship.example.com 請換成自己的網域。

確認 Docker 可以使用#

Terminal window
docker version
docker compose version
docker ps

若尚未安裝 Docker,先依 Docker 官方 Ubuntu 安裝文件完成安裝。若 docker ps 出現 socket 權限錯誤,先按官方 Linux post-install 步驟處理目前使用者的 Docker 權限,再進行 Openship 設定。

設定 DNS 與防火牆#

在 DNS 管理介面新增 A 紀錄:

類型名稱指向
AopenshipVPS 的公開 IPv4

若使用 Cloudflare,初次設定可以先選 DNS only(灰雲),方便直接測試 VPS。等來源站的路由與憑證正常後,再啟用橘雲代理。如果同時有 AAAA 紀錄,也要確認 IPv6 指向正確的服務入口。

雲端防火牆與 Ubuntu 主機防火牆都要允許 TCP 80、443。使用 HTTP-01 申請憑證時,Port 80 必須能連到驗證端點,詳見 Openship 網域與 SSL 排錯文件。SSH 則保留自己使用的連接埠。

先檢查主機上的監聽服務與 INPUT 規則:

Terminal window
sudo ss -lntp
sudo iptables -L INPUT -n -v --line-numbers

若 Nginx、Caddy 或其他代理已佔用 80、443,先確認它是否承載其他網站,再決定如何交由 Openship 處理入口。防火牆規則要透過目前使用的管理工具保存,避免重開機後失效。

安裝 Openship CLI 與管理後台#

依 Openship 官方安裝文件,先安裝 CLI:

Terminal window
curl -fsSL https://get.openship.io | sh

如果安裝後找不到 openship,重新開啟 SSH 工作階段,或載入安裝路徑:

Terminal window
export PATH="$HOME/.openship/bin:$PATH"

啟動互動式設定:

Terminal window
openship

依精靈提示設定公開入口、管理網域,以及管理員名稱、Email 和密碼。在具備 Docker 的 Linux 上,預設會使用 Compose 模式。

完成後會看到管理入口與服務狀態,輸出格式如下:

Openship is live
URL https://openship.example.com
Dashboard http://localhost:3001
API http://localhost:4000
Login [email protected] (email + password you set)
Status running · Docker Compose stack (restarts on boot)

用剛才設定的帳號密碼登入管理網域。這裡的 localhost:3001 指的是 VPS 本機,不是你正在操作的電腦。

再檢查平台與容器狀態:

Terminal window
openship status
docker ps

若容器持續重啟,先查看對應容器的日誌。容器顯示 running,也不代表資料庫已經可以接受連線;這部分可參考 Docker Compose healthcheck 與啟動順序。

後台能開啟後,確認 HTTPS 憑證#

這次設定完成後,曾遇到後台可以開啟、HTTPS 卻看起來尚未生效的狀況。處理時分別檢查後台的 SSL 狀態、VPS 本機憑證和公開網址,才確認連線結果。

查看網域的 SSL 狀態#

在 Openship 後台開啟自身的 App/專案,進入 Domains,確認管理網域是否存在,再查看 SSL 狀態。

依 Openship 網域教學,尚未驗證的網域先使用 Verify;若 SSL 顯示 Provisioning,使用 Recheck SSL 檢查憑證。仍未完成時,依錯誤訊息處理 DNS、驗證端點或連線問題,再使用 Renew SSL 重試。

如果收到 404 no route,則要檢查管理網域是否路由到 Dashboard。路由缺失和憑證問題要分開處理,重新申請憑證不會補上路由。

檢查 VPS 本機提供的憑證#

在 VPS 執行:

Terminal window
openssl s_client \
-connect 127.0.0.1:443 \
-servername openship.example.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates

檢查輸出的 subject 是否包含管理網域、issuer 是否為預期的憑證簽發者,以及 notBefore、notAfter 是否在有效期間內。

這次本機輸出確認了 Let’s Encrypt 憑證,有效期為 2026 年 10 月 8 日至 2027 年 1 月 6 日。這代表 VPS 的 443 已提供正式憑證,接著還要確認公開連線。

用 curl 驗證公開網址#

Terminal window
curl -Iv https://openship.example.com

不要加 -k,否則 curl 會跳過憑證驗證。這次公開請求得到以下結果:

SSL certificate verify ok.
HTTP/2 307
server: cloudflare
location: /login?from=%2F

SSL certificate verify ok. 表示這次連線的憑證驗證通過;307 搭配 /login?from=%2F,則是後台將未登入的請求導向登入頁面。

最後用瀏覽器開啟管理網域,確認登入頁面能正常載入,並登入後台。

使用 Cloudflare 時,設定 Full (strict)#

VPS 的憑證與路由正常後,可以將 DNS 紀錄切成 Proxied(橘雲),再到 Cloudflare 的 SSL/TLS 加密模式選擇 Full (strict)。

Full (strict)會驗證來源站憑證的有效期、信任來源與網域匹配。此時有兩段 HTTPS:

瀏覽器
↓ HTTPS
Cloudflare
↓ HTTPS
VPS 上的 Openship Edge
↓
Dashboard

這次透過公開網域查到的簽發者是 Google Trust Services,VPS 本機則是 Let’s Encrypt。啟用代理後,瀏覽器看到的是 Cloudflare 對訪客提供的憑證,兩端簽發者不同是正常的。

切換後再執行一次 curl -Iv,確認憑證驗證通過、回應仍導向登入頁面。Full (strict) 也要在 Cloudflare 控制台確認,不能只憑公開網址能開啟就推定設定正確。

檢查 Dashboard 與 API 是否直接暴露在公網#

除了管理網域,也要檢查 Dashboard 的 3001 和 API 的 4000:

Terminal window
docker ps --format 'table {{.Names}}\t{{.Ports}}'
sudo ss -lntp

若看到 0.0.0.0:3001 或 0.0.0.0:4000,表示服務綁定所有 IPv4 介面。依安裝版本限制綁定位置,或使用適合 Docker 的防火牆規則限制來源;變更後確認 Edge 仍能連到後台,再從另一台主機測試對外存取。

Docker 官方防火牆文件指出,bridge 容器發布的連接埠可能在進入 UFW 的 INPUT 規則前就被轉送。因此,不能只看主機的 INPUT 規則,就判定 Docker 連接埠已阻擋。使用 host networking 的 Edge 入口則按主機連線規則處理。

這次的 VPS 資源觀察:1 GB RAM 太小#

安裝後,管理介面顯示以下用量。這是當下整台主機的狀態,不是 Openship 個別容器的用量。

項目當時觀察
總記憶體954.2 MB,約 1 GB 級別
已用記憶體542.2 MB,約 57%
總磁碟容量44.1 GB
已用磁碟14.7 GB,約 33%
CPU 使用率82%
Load Average3.11 / 1.85 / 1.24

磁碟當下仍有空間,但約 1 GB RAM 留給部署、更新和新增服務的餘裕太少。記憶體使用率 57% 只是單次觀察,不能代表建置尖峰也能承受;CPU 82% 則要配合容器用量與後續觀察,才能找出負載來源。

用以下指令檢查:

Terminal window
docker stats --no-stream
free -h
nproc
uptime
df -h

先在初始化完成、閒置一段時間後記錄一次,再於部署時觀察尖峰。free -h 的 available 可用來看剩餘記憶體,Load Average 則需要搭配 CPU 核心數判讀。

如果要長期使用,我會先以 2 vCPU、4 GB RAM、40–60 GB SSD 規劃小規模自架環境,再依應用程式與建置負載調整。這是容量規劃起點,不是 Openship 官方最低需求,也不保證能承載固定數量的專案。

這次約 1 GB RAM 的 VPS 能完成安裝,但規格太小,不適合作為長期使用的完整部署平台。 正式搬服務前,先換用記憶體更充足的主機,再用一個可重建的測試服務跑過部署與更新,觀察實際尖峰用量。

參考資料:

Openship 安裝文件

Openship 自訂網域與 HTTPS

Openship 網域、路由與 SSL 排錯

Docker Engine:Ubuntu 安裝

Docker 網路與防火牆

Cloudflare Full (strict)

Openship 自架安裝教學:Ubuntu VPS、網域與 HTTPS 設定
https://laplusda.com/posts/openship-vps-installation-https/
作者
Zero
發佈於
2026-10-08
許可協議
CC BY-NC-SA 4.0