Caddy Server 是什麼?有主機和固定 IP,裝了它就能把程式公開上網嗎

恆遠數位編輯團隊約 23 分鐘閱讀
Caddy Server 是什麼?固定 IP 能不能架站的初學者指南封面
複製引文

Caddy 是一套開源的網頁伺服器,最常被拿來當「反向代理」:它站在你的程式前面,替程式接收來自網路的連線,還會自動幫網站申請並續期 HTTPS 憑證。所以回答標題那個問題:有一台主機、有固定 IP、裝好 Caddy,離「別人打網址就看得到你的程式」已經很近,但還差幾件事要湊齊:一個指向這個 IP 的網域、讓 80 和 443 這兩個 port 從外面打得進來(路由器、防火牆、ISP 三關都要過)、程式本身只對內開放,以及一台能長期穩定開著的主機。

這篇用初學者的角度,把整條路從頭講一遍。你會看到 port 是什麼、80 和 443 為什麼特別、ISP 是誰、為什麼有人明明照教學做了卻怎樣都連不進來,最後再談公司到底該不該自己架主機。每個新名詞第一次出現時,都會配一個生活化的比喻。

先說一下我們為什麼會寫這題。我們公司自己幾乎所有系統(官網、SalesKing、會員中樞等約 40 個專案)都放在雲端部署平台上,官網前面再擋一層 Cloudflare。每天處理的就是「程式怎麼安全地被外面看到」這件事,所以對新手卡在哪裡特別有感:卡關的地方幾乎都在 Caddy 之外。

下面這張表先把整篇的答案濃縮起來,三十秒看完就知道自己還缺哪一塊。

上線條件

它在做什麼

生活比喻

沒做好會怎樣

網域與 DNS A 記錄

把好記的名字(example.com)對應到你的 IP

大樓名稱登記在查號台

別人只能打一串數字,Caddy 也拿不到公開憑證

80 與 443 打得進來

讓瀏覽器的連線抵達你的主機

大樓正門與掛號信收件口

瀏覽器轉圈圈後顯示連線逾時

路由器 port forwarding 與防火牆

把外面來的連線轉給對的那台機器

警衛知道訪客要往哪一樓帶

連線停在路由器,主機根本沒收到

ISP 給的是真正的公網 IP

確認你的 IP 在網路上是唯一、可被找到的

門牌是你家獨有的,沒有和整條街共用

共用 IP(CGNAT)時,外面的人找不到你

程式只聽 127.0.0.1

程式只接 Caddy 轉來的連線

員工只在辦公室裡辦公,訪客一律先經過櫃台

掃描機器人繞過 Caddy 直接打你的程式

五個條件裡,Caddy 只負責最後一段的「櫃台工作」。其他四個條件,一個屬於網域商,三個屬於網路線那一端。理解這個分工之後,後面所有的設定都會變得很好懂。

Caddy 是什麼?用一棟大樓的櫃台來理解

先給一句話的定義:Caddy 是一個用 Go 語言寫成的網頁伺服器與反向代理,特色是設定檔很短,而且預設就會自動開啟 HTTPS。

網路上的名詞很多,我們乾脆把整台主機想成一棟商辦大樓,所有角色都能找到對應:

網路名詞

大樓比喻

一句話說明

IP 位址

大樓的地址

網路上找到這台主機的號碼,例如 203.0.113.10

Port(連接埠)

大樓裡的房間號碼

同一台主機上,不同服務各自佔一個號碼,範圍 0 到 65535

網域(domain)

大樓的名稱

example.com 比一串數字好記,要花錢跟網域商註冊

DNS

查號台

瀏覽器拿著大樓名稱去問:這棟在哪個地址?

Caddy

一樓櫃台兼總機

所有訪客先到櫃台,櫃台查好對象再轉到樓上房間

你的程式

樓上某間辦公室

例如跑在 3000 號房的 Node.js 或 Python 服務

ISP

幫整棟樓接水接電的公司

中華電信 HiNet、台灣大寬頻、遠傳、凱擘大寬頻這類網路業者

用這個比喻來看「反向代理」就很直覺了。訪客(瀏覽器)只認得大樓正門,他不知道也不需要知道你的程式在幾號房。Caddy 坐在櫃台,收到「我要找 example.com」的訪客,就把他帶到 3000 號房;收到「我要找 api.example.com」,就帶到 8080 號房。對外只有一個門口,對內可以有很多間辦公室。

Caddy 在市場上算是小眾但成長中的選擇。W3Techs 的網頁伺服器統計寫得很清楚:在已知伺服器軟體的網站裡,Nginx 大約佔 30.8%,Caddy 大約 1.1%。份額不大,可是開發者社群很活躍,Caddy 的 GitHub 有七萬多顆星,2026 年 10 月初才剛釋出 v2.11.7,更新頻率相當穩定。

它被新手喜歡的原因很單純:同樣是「把網域轉給本機 3000 port 並開 HTTPS」,Caddy 的設定只要三行,其他伺服器常常要寫二三十行,再另外裝一套申請憑證的工具。少寫一行設定,就少一個出錯的地方。

如果你對「程式跑在容器裡」這件事還不熟,可以先看Docker 是什麼那篇。Caddy 本身也很常和 Docker 一起用,一個容器跑 Caddy、其他容器跑你的程式。

80 和 443 是什麼?網路世界的兩個標準門口

直接講答案:80 是 HTTP(沒加密)的預設 port,443 是 HTTPS(有加密)的預設 port。瀏覽器打 http:// 開頭的網址時,會自動去敲對方的 80 號門;打 https:// 開頭時,會自動去敲 443 號門。這就是為什麼你平常上網從來不用輸入 port 號碼。

機房配線架上標著號碼的網路孔,就像伺服器上不同編號的 port
機房配線架上標著號碼的網路孔,就像伺服器上不同編號的 port

回到大樓比喻:80 和 443 就像全世界約定好的「正門」與「掛號信收件口」。你的程式在本機跑在 3000 port 時,等於開在 3000 號房,訪客要打 http://你的IP:3000 才找得到。這樣能用,但很難看,也沒有加密,多數公司網路和瀏覽器還會對非標準 port 比較警戒。

Caddy 的工作就是佔住 80 和 443 這兩個正門,把訪客轉進 3000 號房。它還會做一件很貼心的事:有人從 80 進來(沒加密的 http),Caddy 會自動把他導到 443(加密的 https)。

為什麼 443 幾乎是必備?因為現在的網路已經預設全加密。Let's Encrypt 在 2025 年底的年度信提到,他們剛成立時網路上只有 39% 的頁面載入有加密,現在世界上許多地區已經超過 95%。瀏覽器對沒加密的網站會直接標示「不安全」,表單、登入、付款這些功能等於不能用。

下面這張圖是一個訪客從輸入網址到看到畫面,連線會經過的每一關。任何一關沒開,就會卡住:

圖表載入中…

看懂這張圖,除錯就有方向了。Caddy 只住在 F 這一格,前面的 B 到 E 都在它的管轄範圍外。新手最常遇到的狀況是 F 設得完美,訪客卻在 C 或 D 就被擋下來。

順帶一提,我們自家的產品也是照這個分工在跑。像恆遠會員中樞系統(讓多個產品共用註冊、登入、訂閱與權限)就放在雲端部署平台上,HTTPS 憑證和對外的門口交給平台處理,工程師只管程式本身。這也是後面會談到的替代方案之一。

ISP 是什麼?為什麼家裡的網路常常讓 Caddy 白忙

ISP(Internet Service Provider,網路服務供應商)就是幫你拉網路線、給你 IP 的公司。在台灣,中華電信 HiNet、台灣大寬頻、遠傳、凱擘大寬頻都屬於 ISP。你每個月繳的網路費,就是付給它們的。

ISP 會決定三件影響架站的事:你的 IP 會不會變、你的 IP 是不是獨享、它讓不讓外面的連線進來。這三件事 Caddy 都改變不了。

機櫃裡的網路交換器與光纖線路,ISP 拉進來的網路從這裡分到各台主機
機櫃裡的網路交換器與光纖線路,ISP 拉進來的網路從這裡分到各台主機

浮動 IP 與固定 IP

浮動 IP 就像每隔一段時間被換一次門牌號碼的房子。家用寬頻多半是浮動 IP,數據機重開、斷線重連都可能換一個號碼。DNS 記錄卻還指著舊門牌,訪客就找不到你。固定 IP 則是門牌永遠不變,DNS 設一次就好。固定 IP 通常需要另外申請,或改成企業方案,各家條件與費用不同,以 ISP 客服的回覆為準。

CGNAT:整條街共用一個門牌

比浮動 IP 更麻煩的是 CGNAT(Carrier-Grade NAT,電信等級網址轉換)。用比喻來說,ISP 為了省 IPv4 位址,讓一整條街的住戶共用同一個大門牌,再在 ISP 那邊自己分配。從外面看,你和鄰居長得一模一樣,訪客敲門時,ISP 根本不知道要送給哪一戶。

CGNAT 使用的位址段是 RFC 6598 規定的 100.64.0.0 到 100.127.255.255。判斷方法很簡單:登入路由器看 WAN(外網)IP,再用手機連家裡 Wi-Fi 去搜尋「what is my ip」。兩個數字一樣,代表你拿到的是公網 IP。路由器上顯示 192.168 或 10 開頭,代表前面還有一層 NAT,通常是 ISP 給的數據機,請 ISP 改成橋接模式多半就能解決;顯示 100.64 到 100.127 開頭,就是 CGNAT,port forwarding 怎麼設都沒用。手機行動網路(4G、5G)幾乎都是這種情況,所以用手機分享網路架站基本上行不通。

ISP 可能擋 80 或 443

有些 ISP 的家用方案會擋住從外面進來的 80 port,目的是避免一般住戶在家裡經營網站或被駭客當跳板。這個問題很老:iT 邦幫忙上 2012 年就有人在問ADSL 從外部連不進 80 port,十幾年後同類型的求救文還是每年出現。各家政策會改,最準的方法是自己測:請朋友用手機行動網路連你的 IP,或用線上的 port 檢查工具看 80 和 443 是否開放。

你的網路狀況

怎麼判斷

能不能直接架站

建議做法

固定的公網 IP

路由器 WAN IP 等於查到的外網 IP,且長期不變

可以

設 DNS A 記錄、開 port forwarding,照本文第四段做

浮動的公網 IP

WAN IP 等於外網 IP,但重開機後會變

勉強可以

用 DDNS 自動更新 DNS,或申請固定 IP

CGNAT 共用 IP

WAN IP 是 100.64 到 100.127 開頭,或和外網 IP 不同

不行

改用 Cloudflare Tunnel 或租雲端主機

80 或 443 被 ISP 擋

其他 port 連得到,唯獨 80 或 443 連不到

憑證申請會失敗

問 ISP 能否開放,或改用 DNS 驗證、通道服務

網路痛點討論區最常見的劇情是這樣:照著英文教學把 Caddy 裝好、Caddyfile 也寫對了,日誌卻一直出現憑證申請失敗。花了一個週末重灌系統,最後才發現路由器上看到的 IP 是 100 開頭。這類求救在 Reddit 的 r/selfhosted 與各種自架社群幾乎天天都有,問題的根源全在 ISP 那一端。

實際動手:從安裝 Caddy 到寫好 Caddyfile

假設你已經確認自己有固定公網 IP,而且 80 和 443 沒被擋,整個流程大約 30 分鐘就能做完。以下以 Ubuntu 或 Debian 主機為例,安裝指令照 Caddy 官方安裝文件。

第一步,先在網域商(或 Cloudflare)的 DNS 設定裡,新增一筆 A 記錄:名稱填 @ 或子網域,值填你的固定 IP。設好之後在主機上確認它真的指過來:

Bash
dig +short example.com
# 應該回傳你的固定 IP,例如 203.0.113.10

第二步,安裝 Caddy。官方提供的套件庫會自動處理更新,裝完後 Caddy 會以系統服務的方式在背景執行:

Bash
sudo apt install --yes debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

第三步,編輯設定檔 /etc/caddy/Caddyfile。下面這三行就是整篇文章的主角:把 example.com 的訪客,轉給本機 3000 port 上的程式。

Bash
example.com {
    reverse_proxy 127.0.0.1:3000
}

想讓同一台主機服務兩個程式?再加一段就好,櫃台會依照訪客要找的名字分流:

Bash
example.com {
    reverse_proxy 127.0.0.1:3000
}

api.example.com {
    reverse_proxy 127.0.0.1:8080
}

第四步,開主機防火牆、設路由器。主機在公司或家裡的路由器後面時,要在路由器的 port forwarding(虛擬伺服器)頁面,把外部的 80 與 443 轉到這台主機的內網 IP。主機防火牆則只放行這兩個 port 加上 SSH:

Bash
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
journalctl -u caddy -f   # 看憑證申請的即時日誌

步驟

要做什麼

怎麼驗收

常見卡點

DNS A 記錄

網域指向固定 IP

dig +short 回傳你的 IP

DNS 生效需要幾分鐘到幾小時

安裝 Caddy

用官方套件庫安裝

systemctl status caddy 顯示 active

主機上已有其他程式佔用 80 或 443

寫 Caddyfile

網域 + reverse_proxy

caddy validate 沒有錯誤

大括號或縮排打錯

開 port

路由器轉發 + 主機防火牆

用手機行動網路打開網址

CGNAT、ISP 擋 port、雲端主機的安全群組沒開

確認 HTTPS

等 Caddy 自動申請憑證

網址列出現鎖頭,日誌顯示 certificate obtained

80 從外面連不到,驗證失敗

最後一步驗收記得用手機行動網路測試,別用同一個 Wi-Fi。很多路由器不支援「從內網連自己的外網 IP」(一般稱為 NAT loopback 或 hairpin),內網測試失敗不代表外面連不到,內網測成功也不代表外面一定連得到。

Caddy 自動 HTTPS 怎麼做到的?Let's Encrypt 在背後做什麼

一句話:Caddy 會自動向免費的憑證機構(預設是 Let's Encrypt,失敗時改用 ZeroSSL)證明「這個網域真的是你的」,拿到憑證後裝好,快到期前再自動續期。整個過程你不用下任何指令。

HTTPS 憑證可以想成一張「大樓名稱的公證書」。瀏覽器看到公證書,才相信 example.com 這棟樓確實是你的,連線也才會加密。以前申請一張要花錢、要手動上傳檔案、每年續約,忘了續就整站跳紅色警告。Let's Encrypt 把這件事變成免費又自動化,現在服務的網站已經從一年前的 4.92 億成長到 7.62 億(同樣出自上面那封年度信)。

Caddy 證明網域所有權的方法叫 ACME 驗證,常用的有三種。Caddy 官方的自動 HTTPS 文件把條件列得很清楚:網域的 A 記錄要指向主機、80 和 443 要從外面打得進來、Caddy 要能使用這兩個 port、存放憑證的資料夾要能寫入且不會被清掉。

驗證方式

怎麼運作

需要開的 port

適合的情況

HTTP 驗證

憑證機構從 80 port 來讀一個暫時檔案

80

一般情況,Caddy 預設會用

TLS-ALPN 驗證

憑證機構在 443 port 上做一次特殊的握手

443

80 被擋但 443 開著

DNS 驗證

在 DNS 加一筆暫時的 TXT 記錄來證明

不需要對外開 port

ISP 擋 port、內網服務、要申請萬用字元憑證;需要另外裝對應 DNS 業者的 Caddy 外掛

關於憑證,2026 年有兩個新變化值得知道。第一,Let's Encrypt 宣布會把憑證效期從 90 天縮短,2027 年 2 月起預設改為 64 天,2028 年 2 月再縮到 45 天,這是整個憑證產業依照 CA/Browser Forum 規範一起調整的。用 Caddy 的人幾乎不用煩惱,因為續期本來就是自動的;手動管理憑證的系統就要開始檢查自動化流程。

第二,很多人會問:「我只有固定 IP、沒有網域,能不能直接拿憑證?」Let's Encrypt 在 2026 年 1 月正式開放 IP 位址憑證,但規定只能用短效版本,效期大約 160 小時(六天多一點),理由是 IP 很容易換手。Caddy 遇到純 IP 的網址,預設會用自己簽的內部憑證,訪客的瀏覽器會跳出「不安全」警告。結論很實際:一年幾百元買個網域,比折騰 IP 憑證省事太多,網域怎麼挑可以參考企業網域怎麼選與註冊。

還有一個常被忽略的坑:用 Docker 跑 Caddy 時,如果沒有把資料夾掛到外面保存,每次重建容器都會重新申請憑證。重複申請太多次會撞到 Let's Encrypt 的頻率限制,網站可能好幾天拿不到新憑證。

安全性:程式只聽 127.0.0.1,門只開 80 和 443

最重要的一條規則:你的程式應該只監聽 127.0.0.1,讓 Caddy 當唯一的對外門口。

127.0.0.1 是「本機自己」的特殊位址,只有同一台主機上的程式連得到。0.0.0.0 則代表「所有網路介面都接受」,外面的人只要知道 port 號碼就能直接連進來。很多框架的開發模式預設綁 0.0.0.0,新手在本機開發時不會發現差別,一上線就等於在大樓側面多開了一扇沒有警衛的門。

這扇側門很快就會被找到。網路上隨時有大量自動化程式在掃描整個 IPv4 空間,看哪個 IP 開了哪些 port。Palo Alto Networks 的 Unit 42 在 2021 年做過一次蜜罐實驗:故意把 320 台有弱點的服務放到公開雲上,80% 在 24 小時內就被入侵,一週內全部淪陷。實驗距今幾年了,數字會變動,可是「上線就被掃」的現象只會更普遍。

Port

用途

該不該對外開

說明

80

HTTP

開(給 Caddy)

用來申請憑證與自動導向 HTTPS

443

HTTPS

開(給 Caddy)

網站的正門

22

SSH 遠端登入

限定來源 IP,或只用金鑰登入

關掉密碼登入,暴力破解每天都在發生

3000、8080 等

你的程式

不開

讓程式只聽 127.0.0.1,由 Caddy 轉送

3306、5432、27017

MySQL、PostgreSQL、MongoDB

絕對不開

資料庫直接暴露是外洩事件最常見的起點

6379

Redis

絕對不開

預設沒有密碼,被掃到就可能被植入挖礦程式

以 Node.js 為例,把 app.listen(3000) 改成 app.listen(3000, '127.0.0.1'),就把側門鎖起來了。Python 的 uvicorn 用 --host 127.0.0.1,Docker 則把 -p 3000:3000 寫成 -p 127.0.0.1:3000:3000。這一行的差別,決定了你的程式是躲在櫃台後面,還是直接站在街上。

綁 127.0.0.1 只是第一層。主機上還有 SSH、資料庫和 Docker 發布的 port,要讓「只開 80 和 443」真的成立,還需要一道預設拒絕的主機防火牆。為什麼需要、ufw 怎麼設、Docker 為什麼會繞過它,完整寫在伺服器防火牆是什麼。

AI 工具普及之後,這個問題被放大了。很多人用 AI 幫忙寫出一個能動的服務,順手就丟上網,結果整個管理介面都暴露在外。中小企業 AI agent 部署資安指南整理過真實的暴露事件,金鑰外洩的路徑可以再看Zeabur 資安事件白話拆解。

我們的判斷很直接:對外營業的服務,安全防線要假設「明天就會被掃到」來設計。Caddy 幫你把 HTTPS 這一關顧好,剩下的 port 管理、系統更新、備份,仍然是主機主人的責任。

Caddy 跟 Nginx 怎麼選?新手與團隊的判斷方式

簡單講:個人專案、小團隊、想快點上線,選 Caddy;團隊已經有 Nginx 經驗,或需要大量現成的設定範例與外掛,選 Nginx。兩個都是成熟的工具,挑錯也不會毀掉專案。

比較項目

Caddy

Nginx

設定方式

Caddyfile,反向代理三行就能完成

nginx.conf,語法較長,要理解 server、location 區塊

HTTPS

預設自動申請與續期

要另外裝 Certbot 等工具並設定排程

市佔率(W3Techs)

約 1.1%

約 30.8%

中文教學資源

較少,多數要看英文官方文件

非常多,遇到問題幾乎都搜得到答案

效能

一般網站與中小流量綽綽有餘

極高流量場景的調校經驗更豐富

擴充方式

要重新編譯加入外掛(例如 DNS 驗證)

模組生態龐大,多數雲端與面板都內建支援

適合誰

第一次架站、小團隊、內部工具、多個小服務

已有維運人員、大型網站、需要細緻調校的團隊

我們的看法是,對多數中小企業來說,網頁伺服器選哪一套的影響,遠比「主機放在哪裡、有沒有人顧」小。花一個月比較 Caddy 和 Nginx 的效能差異,還不如花一個下午把備份與監控設好。

如果你的服務會越長越多(十幾個程式、需要自動擴充),那時候要談的就是容器編排了,可以先看K3s 是什麼,了解輕量版 Kubernetes 怎麼接手這些工作。

沒有固定 IP 怎麼辦?三種替代方案

沒有固定 IP、遇到 CGNAT、或 ISP 擋 port 時,可以從三條路裡挑一條:Cloudflare Tunnel、租一台雲端主機(VPS)、或用部署平台(PaaS)。三條路都能讓程式被外面看到,差在費用、控制權和要顧的東西多寡。

Cloudflare Tunnel 的原理和一般架站相反。一般架站是「開門等訪客進來」,Tunnel 則是你的主機主動打一通電話給 Cloudflare,之後訪客的連線就沿著這條電話線送回來。主機不用開任何對外 port,CGNAT 也擋不住它。Cloudflare 官方文件有完整的安裝說明,基本功能免費,條件是網域的 DNS 要交給 Cloudflare 管。

租雲端主機(VPS) 等於直接在網路上租一間有固定門牌的房間,每台都附公網 IP,80 和 443 也不會被擋,Caddy 照本文第四段的步驟就能跑。主機類型怎麼挑,可以看網站主機怎麼選那篇的六種類型比較。

部署平台(PaaS) 則是連主機都不用顧,把程式碼交給平台,它幫你處理 HTTPS、網域、重啟與擴充。我們自己的系統大多跑在這類平台上,五大 PaaS 平台比較與Zeabur 評價整理了實際用過的心得。

方案

每月成本概念

需要固定 IP 嗎

你要顧的事

適合誰

自有主機 + Caddy

電費與網路費,固定 IP 可能要加價

需要

硬體、停電、網路、更新、備份全部自己來

學習用、內網工具、已有機房的公司

自有主機 + Cloudflare Tunnel

基本功能免費

不需要

主機穩定度與更新

CGNAT 用戶、想讓家中或辦公室的服務被外面看到

VPS + Caddy

小規格每月幾百元起

附公網 IP

系統更新、資安、備份

想要完整控制權的開發者與小團隊

PaaS 部署平台

依用量計費,小專案每月幾百元

不需要

幾乎只剩程式本身

想專心做產品、沒有專職維運的團隊

圖表載入中…

Cloudflare 除了 Tunnel,還能在主機前面擋一層快取與防護。主機偶爾掛掉時訪客仍看得到頁面的做法,寫在Cloudflare 救援機制實戰。只是想從外面連回公司或家裡的電腦(而非公開網站),用遠端連線工具更合適,可以參考Mac 對 Mac 遠端連線指南。

公司要自己架主機,還是交給雲端?老闆的判斷清單

給中小企業老闆的結論:對外營業的正式服務,優先放雲端;辦公室那台主機適合跑內部工具、測試環境與學習。

技術上,一台主機加固定 IP 加 Caddy 確實能撐起一個網站。問題出在技術以外:颱風天停電、大樓網路維修、硬碟老化、唯一懂設定的同事離職,任何一件都會讓網站停擺。雲端主機與部署平台的價值,就是把這些風險攤給專門處理它們的人。

判斷項目

自己架(辦公室主機)

交給雲端(VPS 或 PaaS)

停電與斷網

要自備 UPS、備援線路

機房有多路電力與網路

誰在半夜處理當機

公司內部同事

平台監控 + 你的工程師或廠商

前期成本

主機一次買斷,固定 IP 可能要加價

幾乎為零,按月付費

資料放哪裡

完全在公司內

在雲端業者機房,要確認合約與地區

擴充速度

要買硬體

幾分鐘內升級規格

適合的服務

內部 ERP 測試機、檔案分享、學習環境

官網、客戶入口、會員系統、任何對外收錢的服務

評估時可以用一個簡單的問題:「這個服務停掉一天,公司會損失多少?」答案是幾乎沒影響,在辦公室架、拿來練功都很好;答案是客戶打電話來罵、訂單進不來,就該交給有人顧的地方。

另一種很常見的情況:程式是用 AI 工具做出來的,在自己電腦上跑得很順,想直接放上網給客戶用。能跑和能安全上線中間還隔著一段距離,Vibe Coding 做出來的 App 能直接上線嗎那篇有工程師角度的完整檢查。你的程式已經有雛形、卡在上線這一步,我們很樂意幫你做一次上線前的健檢,看看哪些地方要先補起來。

上線前 10 項自我檢查清單

1. 網域 A 記錄已指向固定 IP(dig 驗證過)。2. 用手機行動網路測過 80 與 443 都連得到。3. 路由器 WAN IP 等於外網 IP,沒有卡在 CGNAT。4. 程式只監聽 127.0.0.1。5. 主機防火牆只開 22、80、443。6. SSH 已關閉密碼登入。7. Caddy 的資料夾有保存,重啟不會重新申請憑證。8. 資料庫 port 沒有對外。9. 有每日備份,而且實際還原過一次。10. 有人會收到當機通知。十項有任何一項答不出來,先處理它再上線。

如果評估完決定交給專業團隊,從規格到部署怎麼談,可以先讀客製化網站開發完整指南。已經在跑的網站想補強憑證與備份,WordPress 網站被駭怎麼辦裡的 SSL 與備份章節同樣適用。

ℹ️我們怎麼看

架站這件事正在快速往兩端分化:一端是 Caddy、Cloudflare Tunnel 這類工具讓個人越來越容易把程式公開,另一端是部署平台把 HTTPS、擴充、監控全部收進去。我們判斷 3 年後,中小企業幾乎不會再為對外服務自己買主機,辦公室主機會退回內部工具與資料備份的角色。我們自己的系統也是這樣選的:工程時間要花在產品上,門口交給專門顧門的人。對老闆而言,判斷工具就是前面那個問題:「這個服務停一天會損失多少?」損失越大,越該交給有人 24 小時顧的地方。

ℹ️我們做過這件事

這篇講的分工方式,就是我們每天在用的:公司幾乎所有系統(官網、SalesKing、會員中樞等約 40 個專案)都放在雲端部署平台上,官網前面再加一層 Cloudflare,這些經驗也用在我們累計 40+ 企業客製案的落地上。看到這裡,如果你也在想「我們公司的系統該放哪裡、怎麼上線才安全」,我們很樂意聽你聊聊現在的情況,一起看看從哪一塊開始最划算。

QCaddy 是什麼?

Caddy 是一套用 Go 語言寫的開源網頁伺服器與反向代理。它站在你的程式前面接收網路連線,再轉給本機上的程式,最大特色是預設就會自動向 Let's Encrypt 申請並續期 HTTPS 憑證,設定檔通常只要幾行。

Q有固定 IP 和主機,裝了 Caddy 就能架站嗎?

還差幾個條件:要有網域並設好 DNS A 記錄指向這個 IP、80 和 443 從外面打得進來(路由器 port forwarding、主機防火牆、ISP 都沒擋)、程式只監聽 127.0.0.1,以及主機能長期穩定開著。Caddy 只負責最後的轉送與 HTTPS。

Q80 port 和 443 port 是什麼?

80 是 HTTP(未加密)的預設連接埠,443 是 HTTPS(加密)的預設連接埠。瀏覽器打 http 網址會自動連 80,打 https 會自動連 443,所以平常上網不用輸入 port 號碼。Caddy 會佔用這兩個 port,並把 80 的訪客自動導到 443。

QISP 是什麼?會影響架站嗎?

ISP 是網路服務供應商,也就是幫你拉網路、給你 IP 的公司,例如中華電信 HiNet、台灣大寬頻、遠傳、凱擘大寬頻。它決定你的 IP 是浮動還是固定、是否和別人共用(CGNAT),也可能擋住外部連進來的 80 或 443,這些都會直接影響能不能架站。

Q沒有網域,只用 IP 可以開 HTTPS 嗎?

Let's Encrypt 在 2026 年 1 月正式開放 IP 位址憑證,但只提供約 160 小時的短效憑證。Caddy 對純 IP 預設使用自簽的內部憑證,訪客瀏覽器會跳警告。實務上買一個網域最省事。

Q沒有固定 IP 或遇到 CGNAT 怎麼辦?

可以用 Cloudflare Tunnel 讓主機主動連出去、不用開 port;或租一台附公網 IP 的雲端主機(VPS)再裝 Caddy;也可以直接用部署平台(PaaS),連主機和 HTTPS 都交給平台處理。

QCaddy 和 Nginx 哪個比較好?

第一次架站、小團隊、想快速上線選 Caddy,自動 HTTPS 和簡短設定可以少踩很多坑。團隊已有 Nginx 經驗、需要大量中文資源或複雜調校,選 Nginx。對中小企業而言,主機放哪裡和有沒有人維護,比選哪一套伺服器更重要。

分享文章
恆

AUTHOR

恆遠數位編輯團隊

查看作者頁

留言(0)

尚無留言,成為第一個留言的人吧!

需要網站系統架設或軟體開發?

無論是品牌官網、客製化系統還是應用程式,我們的團隊擁有豐富經驗,歡迎聯繫我們,讓專業為您的事業加分。