DigitalOcean 替代方案比較:開發者怎麼選?
比較 DigitalOcean 替代方案的每 GB RAM 價格、內含傳輸量、NVMe 儲存與備份費用,並提供可避免停機的遷移切換計畫。
DigitalOcean 替代方案實際改變了什麼
多數 DigitalOcean 替代方案改變的是帳單,而不是機器本身。無論選擇哪一家,你取得的都是具備公開 IP、virtio 磁碟與 root 存取權的 Linux 虛擬機器;至於控制面板上顯示哪個標誌,kernel 並不在意。真正影響選擇的差異包括每 GB RAM 的價格、包含的傳輸流量額度及超出額度後每 byte 的費用、磁碟實際採用的儲存媒介,以及作業系統以上的堆疊有多少由其他人代為執行。
本指南依這些面向進行比較,因為開發人員可以從 terminal 或已公布的價格表逐項確認。指南也會說明 DigitalOcean 適用的情況,因為完全不承認其優勢的比較文章其實只是廣告。
以下所有價格都是已公布的牌價,查核日期為 5 August 2026。價格會變動,而且本指南列出的不只一家 provider 在 2026 年內調整過價格。計價的結構變動慢得多,因此請先比較各項比例與計費模式,再在簽約前到 provider 的官方頁面確認當日價格。
每 GB RAM 的價格才是應比較的數字
The data behind this chart
[
{
"provider": "DigitalOcean 1 GB",
"ram_gb": 1,
"monthly_usd": "6.00",
"usd_per_gb_ram": "6.00"
},
{
"provider": "DigitalOcean 4 GB",
"ram_gb": 4,
"monthly_usd": "24.00",
"usd_per_gb_ram": "6.00"
},
{
"provider": "Akamai Nanode 1 GB",
"ram_gb": 1,
"monthly_usd": "5.00",
"usd_per_gb_ram": "5.00"
},
{
"provider": "Vultr NVMe 1 GB",
"ram_gb": 1,
"monthly_usd": "6.00",
"usd_per_gb_ram": "6.00"
},
{
"provider": "Hetzner CX23 4 GB",
"ram_gb": 4,
"monthly_usd": "6.49",
"usd_per_gb_ram": "1.62"
}
]在同一家供應商內,每 GB RAM 的價格幾乎不變。DigitalOcean 的 1 GB 方案每 GB 收取 $6.00,4 GB 方案的單價同樣是 $6.00,月費為 $24.00。在同一家供應商選擇更大的方案並不會取得折扣,因此方案大小不是決策重點,供應商才是。
Akamai 現在銷售原本由 Linode 提供的服務,其 2 GB 與 4 GB 共用方案定價分別為 $12 與 $24,與 DigitalOcean 的價格完全相同。其入門方案則以 $5.00 的價格低於兩者。兩家公司完全一致的定價值得注意:這個級距是依競爭對手定價,而不是依硬體成本定價,之後也會持續跟隨該競爭對手。
自行建置資料中心並以歐元銷售的供應商,價格差距就會出現。Hetzner CX23 提供 4 GB RAM,月費約為 $6.49,每 GB 為 $1.62,接近 DigitalOcean 費率的四分之一。這個美元金額是由歐元牌價換算而來,因此會隨匯率變動。Hetzner 也在 2026 年調高了雲端價格,因此較早的比較文章可能列出目前已不存在的價格。
每 GB RAM 的價格無法反映你取得的 CPU。共用 vCPU 表示 hypervisor 會將你的核心與其他租戶的核心共同排程;可靠的檢查方式,是在你實際租用的主機上執行:
vmstat 1 10查看 st 欄位。這個欄位會計算 vCPU 處於可執行狀態,但 hypervisor 將實體核心交給其他租戶的時間百分比。負載期間出現幾個百分點屬於正常。持續維持兩位數,表示主機超額配置;無論每 GB 的價格多低,都無法彌補你無法使用的核心。請在流量最高的時段執行測試,因為 steal time 是鄰近租戶造成的問題,而鄰近租戶也有自己的使用時段。若要了解加入儲存空間與流量後,一個月的主機代管實際成本,請參閱 VPS 每月的實際成本。
包含的傳輸額度實際成本
The data behind this chart
[
{
"provider": "DigitalOcean 1 GB",
"included_tb": 1,
"overage_usd_per_tb": "10.00"
},
{
"provider": "Akamai Nanode 1 GB",
"included_tb": 1,
"overage_usd_per_tb": "5.00"
},
{
"provider": "Vultr NVMe 1 GB",
"included_tb": 2,
"overage_usd_per_tb": "10.00"
},
{
"provider": "Hetzner CX23 4 GB",
"included_tb": 20,
"overage_usd_per_tb": "1.20"
}
]DigitalOcean 在入門方案中包含 1 TB 的對外傳輸量,超出部分按 GiB 計費,換算後每增加 1 TB 約為 $10.00。Akamai 也包含相同的 TB 額度,但超額費用約為其一半,每 TB 約 $5.00。Vultr 包含 2 TB,超額費率相近。Hetzner 包含 20 TB,超出後每 TB 約收取 $1.20,與其他供應商相差一個數量級。
有 3 個結構性細節比標示的價格更重要。4 家供應商的對內流量都免費,因此只有送出的流量會計入額度。DigitalOcean 和 Vultr 會將額度彙總到帳戶層級,所有伺服器共用。因此,一台繁忙的機器可能消耗另一台機器的額度,而多台小型伺服器則共用同一個大型額度池。伺服器之間透過 private 或 VPC network 傳輸的流量通常完全不計費,因此將資料庫放在 private interface 上,不只是安全性決策,也是計費決策。
如果距離上限還很遠,這些差異就不重要。部落格、回傳 JSON 的 API 或小型 SaaS,通常不會在 1 個月內用完 1 TB。影片、圖片圖庫、遊戲伺服器、套件鏡像站及異地備份目標則可能會。先測量再做假設:
sudo apt update && sudo apt install -y vnstat
sudo systemctl enable --now vnstat
vnstat -mvnstat -m 會按月份列出傳輸量,並分為接收與傳送。只有傳送欄位會計費。資料庫起初是空的,因此安裝後 1 天才會有第一筆有用的讀值,完整的第 1 個月資料則要再等 1 個月。在此之前,供應商自己的頻寬圖表是你唯一可用的紀錄。
還要多問一個價格表不會回答的問題:超過額度後,供應商會向你計費,還是限制連接埠的傳輸速率。計費會增加成本。限速則會影響使用者,而且往往正好發生在使用者最多的時候。你需要知道,流量尖峰究竟會換來哪一種結果。
NVMe 或 SATA,以及如何確認實際取得的儲存裝置
控制面板顯示 NVMe。這只代表主機中的磁碟類型,並不表示你的 virtual machine 一定使用這些磁碟。Local storage 會將 virtual disk 放在同一部實體機器內的磁碟上。Network storage 則會將它放在獨立的 storage cluster,透過 datacentre network 存取。這也是 instant resize、live migration 和 snapshot-in-place 能夠實現的原因。
在 guest 內,兩者看起來完全相同:
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotationalROTA 和 rotational 對於 host 宣告為 non-rotational 的裝置,都會回報 0。因此,以 NVMe 為後端的 network volume,回報結果會與 local NVMe 完全相同。這個值只能表示磁碟不是旋轉式碟片,無法告訴你磁碟實際位於何處。確認 Linux 上的 NVMe 磁碟會說明裝置名稱,以及每個名稱代表的含義。
區分兩者的測試是 queue depth 1 下的 latency,因為單一小型讀取沒有其他請求可以掩蓋延遲。Local NVMe 會在同一個 chassis 內回應。Network volume 則會讓每次讀取都經過 datacentre network 往返一次,因此即使在較深的 queue depth 下,throughput 看起來相近,其 latency floor 仍然較高。
sudo apt update && sudo apt install -y fio
fio --name=lat --filename=/var/tmp/fiotest --size=1G --rw=randread --bs=4k \
--ioengine=libaio --direct=1 --iodepth=1 --runtime=30 --time_based --group_reporting
fio --name=iops --filename=/var/tmp/fiotest --size=1G --rw=randread --bs=4k \
--ioengine=libaio --direct=1 --iodepth=32 --runtime=30 --time_based --group_reporting
rm -f /var/tmp/fiotest第一次執行會輸出 clat 區塊,這是 completion latency。請查看 99th percentile 那一行,不要只看平均值,因為平均值會掩蓋使用者實際感受到的停頓。第二次執行會在摘要行輸出 IOPS=。請在目前使用的 provider,以及考慮中的 provider trial instance 上執行這兩項測試。兩者應在同一天測試,並比較你自己的兩個數值。任一 vendor 發布的數據,都是在你無法查看的機器上測得。也請在不同時段執行 3 次,因為同一個 plan 在閒置 host 和繁忙 host 上會得到不同結果。正確進行 VPS 基準測試說明測試方法,SSD VPS 實際代表的意義則說明這些行銷用語背後的含義。
區域:測量延遲,不要看地圖
區域清單在實際測量前都只是行銷資訊。使用者感受到的是其網路到伺服器的往返時間,而這取決於封包經過的路由,不是地圖上的距離。位於 300 km 外、但連線經過壅塞 transit link 的伺服器,可能不如位於 1,500 km 外、路徑乾淨的伺服器。
ping -c 20 203.0.113.10
mtr -rwc 50 203.0.113.10
curl -o /dev/null -s -w 'dns %{time_namelookup} connect %{time_connect} tls %{time_appconnect} total %{time_total}\n' https://example.commtr 會列出每一個 hop 的封包遺失率與延遲。因此,兩個 hop 之間突然增加 60 ms 時,你可以找出造成問題的 link,而不是把責任歸咎於目的地。請從使用者所處網路中的機器執行。Datacentre 之間的路由通常是 internet 上最好的路由,會讓所有 provider 的表現看起來同樣理想。
有一項結構性因素不受價格變動影響。若 provider 在你所在的大陸只有一個 region,表示你的 disaster recovery plan 實際上是跨大陸遷移計畫,並且必須承受相應的延遲。請計算你實際會切換到的 region 數量,而不是頁面上列出的 region 數量。
快照與備份需另外計費
儲存附加功能是讓低價方案變昂貴的主要原因。DigitalOcean 的快照費用為每 GiB 每月 $0.06;自動備份則依伺服器方案價格的一定比例計費:每週備份為方案價格的 20%,每日備份為 30%,另有依使用量按 GiB 計費的選項。這兩種計費方式各有合理之處,但缺點相反。按比例計費會隨伺服器大小增加,因此儲存少量資料的大型伺服器會支付過高費用。按 GiB 計費則會隨資料量增加,因此連接大型磁碟區的小型伺服器會支付過高費用。
請確認還原的費用與所需時間,因為備份保存費用只是問題中較容易忽略的一半。也請確認刪除伺服器是否會一併刪除其快照。
接著,保留一份由供應商無法控制的副本。供應商快照儲存在供應商的帳戶內,因此登入資料遺失、付款失敗或帳戶遭停權時,伺服器與備份會同時無法使用。將 restic 備份至您擁有的儲存空間只需支付幾美元的物件儲存費用,即可還原至任何供應商,讓遷移可以復原,而不是成為不可逆的決定。
要自行執行多少層堆疊
供應商分布在一條連續光譜上。一端是租用機器並自行執行所有工作。另一端是推送 git branch,完全不需要接觸伺服器。在前一端,依 GB RAM 計算的價格是適當的比較基準;但到了後一端,你購買的是人力而不是記憶體,而人力沒有按 GB 計價。
比較任何方案前,先如實判斷自己位於哪一端。每月 $15.15 的代管資料庫,與 $6 的伺服器相比似乎很昂貴;但若把背後的工時算進去,情況就不同了:複寫、容錯移轉、時間點還原、次要版本升級,以及凌晨 03:00 喚醒某人處理問題的告警。如果這些工作由你負責,自行執行並保留差額。如果你的工作是開發應用程式,花錢把這些工作交給別人處理通常很划算。代管與非代管的區分決定你應該查看價目表中的哪一欄。如果坦白說,你想獨占整台機器及其磁碟,那麼這是VPS 與專用伺服器的問題,而不是供應商選擇問題。同樣的問題也會出現在開發者每月帳單的其他項目中;比較 Claude 與 ChatGPT 方案時,關鍵在於你想交由他人處理多少工作,而不是只看標示價格。
DigitalOcean 適合的情境
如果你購買的是平台,而不只是虛擬機器,DigitalOcean 會是較好的選擇。
- 代管資料庫。 代管 PostgreSQL 和 MySQL 的起價為每月 $15.15,包含 1 GiB RAM 和 10 GiB 儲存空間;額外儲存空間按 GiB 計費,standby node 則按節點計價。自行建置相同的可靠性,代表要使用 Patroni 或 repmgr、共識儲存區、連線 proxy,以及實際演練過的 failover 流程。兩人團隊無法同時維護這套架構並持續交付功能。
- App Platform。 推送一個 branch,即可取得 build、憑證和執行中的服務,而且不必修補作業系統。這項產品的廉價 VPS 版本,就是週六得由你自己處理。
- 由成熟 Terraform provider 支援的 object storage 和 load balancer。 能以程式碼銷毀並重建整個 fleet,其價值高於較低的單位價格。
- 產品背後的公司。 公開的支援層級、具備歷史資料的 status page,以及願意回覆客戶安全性問卷的組織。如果你轉售 hosting,這些價值高於每 GB 少收的幾美元。
DigitalOcean 昂貴的地方,在於大量使用一般虛擬機器,並產生實際的對外流量。這正是替代方案能改善的情境,也是自行代管的開發者最常購買的內容。
遷移至新服務商且不中斷服務
遷移期間的服務中斷只有一個原因:資料已移至新 IP,但流量仍抵達舊 IP。以下每個步驟,都是為了縮短並控制這段時間。
至少在遷移前 48 小時先處理 DNS。解析器會依 A record 的 TTL(存活時間)快取記錄,因此 TTL 為 24 小時的記錄,在你變更後最多仍會將使用者導向舊伺服器 1 天。在切換時才降低 TTL 沒有幫助,因為解析器早已保存舊值及其原本的到期時間。先降低 TTL,等待舊值失效,再進行遷移。
dig +noall +answer example.com A
dig +noall +authority example.com SOA第一個指令會在輸出的第二欄顯示目前 TTL。請在 DNS 服務商處將其設為 300,然後等待超過你剛才取代的數值。
接著依照以下順序操作。
- 先佈建新伺服器並完成強化設定,再部署其他內容。新 VPS 的前 10 分鐘涵蓋了許多人趕時間時會略過的部分。
- 安裝應用程式堆疊,並在舊伺服器維持正常服務時,使用 rsync 先執行一次資料複製。
- 現在就在新主機上申請 TLS 憑證,使用 DNS-01 challenge,因為 HTTP-01 challenge 會針對 DNS 目前指向的 IP 進行驗證,而該 IP 仍是舊伺服器。DNS-01 challenge可完全排除這個順序問題。
- 在變更公開設定前,先透過覆寫自己筆電上的 DNS 測試新主機。將
203.0.113.20 example.com加入/etc/hosts,瀏覽實際網站後再刪除該行。這項測試不會影響任何使用者。 - 處理資料庫大小問題。若資料庫小於數 GB,dump 與 restore 可在寫入凍結期間完成。若超過此大小,請提前數天設定從舊資料庫複寫至新資料庫,並讓其追上進度,使凍結期間只需涵蓋升級切換。
- 凍結寫入。將應用程式置於維護模式或唯讀模式。這是使用者唯一能察覺的部分,應持續數分鐘。
- 執行最後的差異同步:再次執行相同的 rsync,接著進行最後一次資料庫同步。
- 將 A 與 AAAA 記錄變更為新 IP。TTL 為 300 秒時,多數解析器會在約 5 分鐘內跟隨變更。
- 讓舊伺服器持續執行並可連線至少 1 天,因為部分解析器會忽略較短的 TTL。若舊應用程式仍可寫入,晚到的請求會寫入錯誤的資料庫,因此請將舊主機指向新資料庫,或由舊主機回傳維護頁面。
- 監控新伺服器的錯誤率 1 天,將 TTL 調回正常值,並在 1 週後再刪除舊伺服器,不要在當天晚上就刪除。
複製作業本身包含 2 個指令,每個指令都要執行 2 次。檔案同步指令如下:
rsync -aHAX --numeric-ids --delete -e ssh /srv/ deploy@203.0.113.20:/srv/-a會保留擁有者、權限與時間戳記,-H會保留 hard link,-AX會保留 ACL 與 extended attributes,而 --numeric-ids會避免 rsync 將使用者 ID 透過名稱重新映射,因為兩台機器上的名稱可能不同。提前數天執行一次,然後在凍結期間再次執行;第二次只會傳輸已變更的內容。
對於小到足以執行 dump 的 PostgreSQL:
pg_dump --format=custom --no-owner --dbname=appdb --file=appdb.dump
scp appdb.dump deploy@203.0.113.20:/var/tmp/
pg_restore --clean --if-exists --no-owner --dbname=appdb /var/tmp/appdb.dump對於 MySQL 或 MariaDB:
mysqldump --single-transaction --routines --triggers --databases appdb > appdb.sql--single-transaction會在 InnoDB 資料表中以單一交易執行 dump,因此結果具一致性,應用程式也能在執行期間持續寫入。若沒有該 flag,mysqldump 會鎖定資料表,這表示寫入凍結會比原定時間更早開始,而不是由你決定凍結時機。
有兩項因素會在伺服器之外造成問題。新 IP 沒有電子郵件信譽,因此直接從新主機寄出的郵件可能會被視為垃圾郵件而遭到過濾;請透過已有信譽的 relay 傳送。任何將你的對外 IP 加入 allowlist 的合作夥伴,例如付款閘道或客戶端防火牆,也必須在切換前更新,否則流量移轉後,這些呼叫會立即失敗。
承諾前應確認的事項
- 價格是否為促銷價,以及續約時會恢復為多少。首期折扣在續約時加倍,代表的是真實成本,只是延後支付。
- 方案期限是否需要預付。SSD Nodes 採用多年預付方案,以預付費用換取較低的每 GB RAM 價格。代價是下個月無法直接停止使用,因此應依照自身的確定程度選擇期限。
- snapshot 每月的費用,以及還原所需的金額與時間。
- 超額用量會計費,還是會受到限速。
- IPv6 是否正確路由,還是只額外配置一個地址。
- 是否提供 API,以及是否有持續維護的 Terraform provider;如果打算從程式碼重建環境,而不是手動操作,這點尤其重要。
- 如何聯絡支援,以及伺服器停止運作時的公開回應目標,而不是針對銷售問題的回應時間。
請依照最影響自身帳單的評估面向選擇。如果該面向是記憶體,RAM 每 GB 的價格即可決定結果。如果是對外流量,方案包含的傳輸量就是關鍵。如果是自身投入的時間,託管平台的價值最重要;在這裡比較的四家平台中,DigitalOcean 的表現最強。
FAQ
Hetzner 一定比 DigitalOcean 便宜嗎?
若只是使用一般虛擬機器,Hetzner 每 GB RAM 的價格低得多:截至 2026 年 8 月 5 日,入門共用方案約為 $1.62,DigitalOcean 則為 $6.00。納入代管服務後,差異就會改變。Hetzner 提供伺服器與網路服務,因此代管資料庫或推送部署平台必須由你自行提供,或交由第三方提供,而這些工時都有成本。Hetzner 也在 2026 年調高了雲端價格,因此請查閱目前的歐元價格,不要直接採信較舊的文章。
如果需要代管資料庫,應該選哪個 DigitalOcean 替代方案?
Vultr 和 Akamai 都提供代管資料庫。如果你使用 DigitalOcean 的主要原因就是代管資料庫,這兩者是最接近的替代方案。低價的歐洲主機商通常不提供這項服務,因此你必須自行執行 PostgreSQL 或 MySQL,包括複寫與經測試的容錯移轉。這是實際的維運工作。在判斷較便宜的伺服器是否真的節省成本前,應先將其與代管 1 GiB 執行個體每月 $15.15 的價格比較。
如何將運作中的網站移至新供應商而不中斷服務?
至少在搬遷前 48 小時將 DNS TTL 降至 300 秒,因為解析器會依照先前的 TTL,持續提供舊 IP 位址一段時間。在舊主機仍持續處理網路流量時,建置並測試新主機;可在自己的電腦上使用 /etc/hosts 覆寫,讓其他人看不到新主機。接著暫停寫入幾分鐘,執行最後的 rsync 差異同步與最後一次資料庫同步,切換 A 與 AAAA 記錄,並讓舊伺服器繼續運作一週,以防解析器忽略較短的 TTL。
更便宜的 VPS 是否代表磁碟速度較慢?
不一定。關鍵在於虛擬磁碟是位於主機本機,還是位於網路儲存叢集,而控制面板很少說明這點。lsblk -o NAME,ROTA 對兩者都回報 0,因為兩者都不是旋轉式磁碟。應改用實測:搭配 --iodepth=1 --bs=4k --direct=1 執行 fio,並讀取第 99 百分位的完成延遲。網路磁碟區每次讀取都會增加資料中心網路往返,因此即使深度佇列的輸送量相近,其延遲下限仍高於本機 NVMe。
新伺服器寄出的電子郵件仍會正常送達嗎?
一開始通常不會。新的 IP 位址沒有寄件歷史,因此收件端會將來自該位址的郵件視為可疑內容,郵件可能進入垃圾郵件匣,或直接遭到拒收。SPF 與 DKIM 記錄在更新前也會指向舊主機。請透過已有寄件信譽的 relay 或電子郵件服務傳送應用程式郵件,並在切換前更新郵件相關的 DNS 記錄,不要等到切換後才處理。