本文分享Ivon個人跑自架服務(self-hosting)的環境,供讀者參考。
這篇文章會敘述Linux伺服器的硬體和軟體設定,以及分享從外面的網路連線到自家內網的伺服器。
1. 自架有何好處#
參見論為何應該自架服務一文,許多線上服務都有自架替代品。
至於說自架都跑什麼服務呢?從簡單的擋廣告服務,到BT下載、相簿、影音串流、音樂串流、遠端書庫、雲端硬碟、搜尋引擎、Youtube鏡像站、自架ChatGPT、AI繪圖、雲手機、串流遊戲的服務都有。更多請見本站自架雲端服務的分類。
我不會讓太多服務同時上線,視乎硬體資源會關掉部份服務。
2. 跑自架服務需要的硬體#
端看服務需求。
輕量服務只要一塊「Raspberry Pi」或一台「Intel NUC迷你電腦」就行了。
對作業系統不熟的,購買一台「NAS」吧,現成的硬體對新手來說比較好上手,組RAID會比較方便。
而我是選擇較為自由的自組派,把手弄髒(get hands dirty)學得更快。目前用舊x86電腦改裝成Linux伺服器,不計電費消耗,也沒有組RAID。
詳細規格:
- 主機板:ASUS K31CD-K,可插兩條RAM,還有6個硬碟。
- CPU:Intel i5-7400,伺服器四核心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是最簡單的方案,幾乎不用設定,個人使用的話夠用了,推薦先從這個開始嘗試。
- Tailscale:內網穿透與VPN,安裝簡單,適合單人使用。
- ZeroTier:內網穿透與VPN,可以設定很複雜的規則,適合大型組織使用。
- Cloudflare Tunnel:加密隧道,將本機伺服器的服務公開到公共網路,不用VPN就能從外網存取內網的服務。支援自訂網域。
- Port Forwarding + No-IP DDNS:通訊埠轉發與動態DNS