如果免費的 Heroku 開源專案存在

Linux

前言

在我職涯之中,大部分的時間都在寫程式,對於伺服器的設定、管理的知識相對薄弱;也因此在開發個人專案時,我喜愛使用讓我專注在寫程式的解決方案,如:Heroku、GAE 或 Firebase 等服務。

在享有便捷服務時,額外帶來的是昂貴的使用成本;對於一名免費仔來說,這無疑是巨大的打擊;因此我一直在期盼上述服務的開源專案出現,而這次要介紹的是:最接近 Heroku 的替代品,CapRover。

什麼是 CapRover?

CapRover 是被 Docker 包裝起來、提供圖形化介面讓我們可以一鍵設定各種工具的後台,官方以 Scalable PaaS 自述這套系統。它的使用體驗很接近 cPanel 或是標題提到的 Heroku,只要用滑鼠點幾下就可以安裝、管理常用到的系統或程式,如:WordPress、MySQL 或 Redis 等。

順帶一提,CapRover 是基於 Apache 2.0 的開源專案;截至目前為止,已在 GitHub 得到了超過 8k 的星星數。

CapRover · Scalable, Free and Self-hosted PaaS!
Scalable, Free and Self-hosted PaaS!

什麼人適合使用 CapRover?

  1. 不想耗費太多時間安裝、設定或更新伺服器。
  2. 想降低服務費用;你可以租一台跟 Heroku 同等級的機器,但費用是原本的四分之一(甚至更低)。
  3. 像我一樣只想寫程式、不想管伺服器的工程師。
  4. 喜歡一鍵安裝各種服務。
  5. 想要感受 Docker 跟 nginx 的強大、又不想為此鑽研相關設定。
  6. 已具備 Docker 跟 nginx 的相關知識,但想要一個處理完基本設定、又可以另外客製化的平台。

前置作業

  1. 準備一個域名
  2. 準備一台有對外 IP 的主機,建議配置如下:
    • 最少 1G 的記憶體
    • 安裝 Ubuntu 20.04
    • 安裝 Docker 19.03

安裝步驟

安裝 CapRover

sudo docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover

這時會看到螢幕一直執行指令,等安裝完成後就可以開啟它的網頁介面。

瀏覽網址 http://你的IP:3000 就可以登入後台,預設密碼是 captain42

綁定域名

如果你的域名是:domain.com,官方建議用子域名去做綁定,像是:*.cap.domain.com。因為每在 CapRover 安裝一個 app,他就會吃掉一個子域名。

到你的 DNS 服務商加入一筆設定:

  • TYPE: A record
  • HOST: *.cap
  • POINTS TO: 你的 IP

注意:.cap 前面有個星號,你也可以將 cap 換成任何你想要的子網域。

補充

做到上述步驟其實已經安裝好網頁後台了,如果有其他需求會在這邊補充說明。

CLI

如果你喜歡用指令來部署、設定,可以安裝它的 cli:

// 安裝
npm install -g caprover

// 設定
caprover serversetup

// 登入
caprover login

若安裝完,想要嘗試部署到 CapRover 上,可以到這邊下載 app 的 .tar 檔,解壓縮之後,到 app 目錄執行:

caprover deploy

Swap file

如果你的主機記憶體不足 2GB,我建議設定一下 Swap file,免得執行時卡住。又或者安裝失敗時,也可以先加個 swap file,再跑一次安裝流程,有可能設定完就可以安裝成功。

Just a moment...

網頁介面介紹

新增 App,有資料庫或上傳檔案需求的選 has persistent data 就對了。
也有一鍵安裝的 apps,超過兩百個選擇。常見的 nginx、MySQL、WordPress 不說,連 Grafana、Prometheus 也有就厲害了,非常齊全。
Monitor 採用 NetData 監測工具。
Monitor 也提供各種整合,像我就很需要 Slack 通知。
提供 Cluster 功能讓你水平擴充機器。
部署 app 提供三種方法,總有一個你會喜歡。

後記

我是一位 Heroku 的愛用者,那種把程式碼傳上去,什麼都不用做就自動生成執行環境的體驗真的太美好了,體驗過一次就深深著迷。不過這樣的便利是有代價的,Heroku 著實不便宜。過去一直找不到類似的替代方案,前陣子做 side project 時胡亂搜尋了一通,結果還真的找到不錯的開源專案,最後我將後端程式跑在上面,到目前為止都還算滿意。

留言列表

Copied title and URL