本文分享Ivon個人跑自架服務(self-hosting)的環境,供讀者參考。
這篇文章會敘述Linux伺服器的硬體和軟體設定,以及分享如何從外面的網路連線到自家內網的伺服器。
1. 自架有何好處#
參見論為何應該自架服務一文,許多線上服務都有自架替代品。
至於說自架都跑什麼服務呢?從簡單的擋廣告服務,到BT下載、相簿、影音串流、音樂串流、遠端書庫、雲端硬碟、搜尋引擎、Youtube鏡像站、離線版ChatGPT、AI繪圖、雲手機、串流遊戲的服務都有。更多資訊請見本站自架雲端服務的分類。
我不會讓太多服務同時上線,視乎硬體資源會關掉部份服務。
2. 跑自架服務需要的軟硬體#
端看服務需求。
軟體部份,作業系統建議使用Linux系統。Windows系統雖然也可以跑自架服務,但是不比Linux要來得自由。
至於硬體部份,輕量服務只要一塊「Raspberry Pi」或一台「Intel NUC迷你電腦」就行了。
對Linux作業系統不熟的,購買一台「NAS」吧,現成的硬體對新手來說比較好上手,組RAID會比較方便。
而我是選擇較為自由的自組派,把手弄髒(get hands dirty)學得更快。目前用舊x86電腦改裝成Linux伺服器,不計電費消耗,也沒有組RAID。
詳細規格:
- 主機板:ASUS,可插兩條RAM,還有6個硬碟。
- CPU:x86架構,伺服器四核心CPU就夠用了。
- RAM:16GB DDR4,有點太高級了,低標4GB RAM即可。
- GPU:Nvidia GTX1050Ti。GPU其實不是伺服器必備的,但近年來生成式AI讓顯示卡價值大增,所以添購顯示卡不會虧的。
- 儲存空間:1TB SSD + 1 TB HDD。我在Linux有啟用LVM,所以未來可以動態擴增硬碟。
- 作業系統:當然是GNU/Linux。選一個比較多人用且穩定發表的發行版吧,個人推薦Ubuntu,或者Debian、Rocky Linux、openSUSE Leap、Proxmox這類穩定發表的發行版,不要用滾動發行版。Linux要不要裝圖形界面看個人選擇,我至少還是有留桌面環境方便除錯。
3. 常用系統軟體#
為了系統穩定度考量,我很少讓Linux伺服器的服務直接跑在裸機上,大部份會將其容器化,或者關在虛擬機裡面跑。
- OpenSSH:遠端登入。
- Auditd:檢查系統操作紀錄。
- UFW:防火牆,你要用Firewalld也行。
- Libvirt + QEMU/KVM:虛擬機,看情況啟用GPU直通。跑較為重型的服務,例如雲端遊戲串流,或是沒辦法容器化,需要動到系統套件部署的服務。
- Docker:容器技術,比虛擬機輕量的解決方案,大部份自架服務都用這個跑。跟Podman比起來,Docker目前還是主流的容器化方案。
- LXC:容器方案,Docker生態系優勢太大,只有特殊場合會用到。
- Kubernetes:進階用途。除非你擁有好幾台電腦組成叢集,否則用這東西是牛刀殺雞。
- Portainer:網頁管理Docker容器的界面。
- Cockpit:網頁管理QEMU/KVM虛擬機的界面。
4. 外網連內網的軟體#
讓自架服務能從外網連線到內網的工具軟體,選擇其中一個就好,也可以同時使用多個當作備案。
- Tailscale:內網穿透VPN,基於WireGuard研發,安裝簡單,適合單人使用。
- ZeroTier:內網穿透VPN,基於自有協定研發的專有軟體,可以設定很複雜的連線規則,適合多人組織使用。
- Cloudflare Tunnel:加密隧道,將本機伺服器的服務公開到公共網路,不用VPN就能從外網存取內網的服務。支援自訂網域與HTTPS。
- Port Forwarding + No-IP DDNS:通訊埠轉發與動態DNS服務。