自架服務(self-hosting, self-hosted),又稱「自託管」、「自搭建」,是一個電腦科學術語,代表在私人伺服器跑網路服務,取代大公司提供的網路服務。
參照維基百科對Self-hosting的定義:
Self-hosting is the practice of running and maintaining a website or service using a private web server, instead of using a service outside of someone’s own control. Self-hosting allows users to have more control over their data, privacy, and computing infrastructure, as well as potentially saving costs and improving skills.
比方說,購置一台伺服器放在家裡,安裝Nextcloud,取代Google Drive,資料全部掌控在自己手上,這就是一種自架。
自架服務(self-hosting)指的不僅僅是架設網站、檔案伺服器而已,而是架設私人用的一連串網站服務。所有你想得到的商業網路服務,幾乎都有人做出可以自架的替代品。
本文討論自架的理由,以及具體作法。
自架的理由#
目前網際網路的時代,人們會找一間提供特定網路服務的公司,使用並依賴他們的服務,將個人資料放在上面。
常見的網路服務有:相簿、日曆、雲端硬碟、部落格、內容管理系統、電子書、影音串流、密碼本、筆記軟體、遊戲串流服務、搜尋引擎、VPN…等等。
可是許多公司以免費為號召,為求盈利,常常出賣的便是使用者的隱私,例如蒐集使用者資料以投放廣告,算是一種等價交換吧。並且為了商業競爭,還會使用各種方法留住用戶,讓使用者將自身的重要資料雙手奉上的同時,提高 下賊船的代價,永遠離不開他們。
在上述前提成立的情況下,如果把個人資料視為一個人的心血結晶,那就是最珍貴的資產。而這個資產是不應該被綁住的。若使用者心有餘力並且在乎自己資料的自主權、隱私權,不想犧牲個人權益讓資料被大公司牢牢控制,唯一的方法就是自架服務。
自架服務不僅僅是架設網站而已,而是架設私人用的一連串網站服務。
擁有自己的伺服器,並在上面跑自己想要的網路服務,隨時隨地的存取,資料完全掌握在你手上,而不會被任何企業控制。
如果還是要使用商業雲端硬碟,那就把他們當冷儲存備份的地方就好了!將檔案加密上鎖丟上去。
硬體系統部分,自架服務通常會跑在Linux系統上,這是開源免費、使用者自主可控的自由系統。
至於要跑的網站服務,網路上有非常多針對同級商業服務的替代品,很多都是開源軟體,使用者可以輕鬆的找到自架的替代方案,並跑在自己的伺服器上。有問題的話只要熟稔使用網路論壇便可以快速得到解答,甚至可以幫忙貢獻功能。
也不是什麼都要自架#
我也不是說你什麼都得自架,現代人很難離開特定公司的網路服務,尤其很多人每天都要用手機的情況下,有時候自架會帶來麻煩。
例如自架Email的成本非常高,在不寄生大型機構網路的情況下自己架設一個Email server是很耗時,除了要考慮uptime問題外,還要防範釣魚郵件,這就沒有必要。如果想要高隱私的Email,換成Protonmail、Tutanota就行了。
又如多人使用的服務,如果你逼迫同學/同事要配合你使用自架的雲端硬碟,甚至開會系統,搞得過程很麻煩乃至於拖累效率的話,那就得不償失了。
在考慮搞自架的同時,也要在便利與個人權利之間做出取捨。我認為處理的資料牽涉到個人隱私檔案的時候,才值得考慮自架服務。
下面論自架服務的方法,這之中又可以分為租伺服器,以及建設Homelab的做法。
1. 租伺服器#
租伺服器跟架網站一樣,就是購買主機使用權,例如AWS、GCP、Azure,通常是以用量計價。我知道一個比較特殊的主機商是 PikaPods,他們只賣Docker服務,所以價格很便宜。
但上面不是說不要依賴大公司的商業服務嗎?這裡我們買的是伺服器使用權,而不是僅僅使用商業公司的產品,自主性較大。由於買的是伺服器使用權,如果只做私人用途的話基本上主機商不會管你拿伺服器去做什麼,他也沒那個閒工夫追蹤你。
購買完整伺服器存取權,這樣你就有本錢可以架設自己想跑的服務。
主機商通常會提供能固定存取的IP,若是配合自己購買的網域,則可以隨時隨地SSH連線。
只要錢給的夠多,大型公司提供的主機就不會有斷線問題。
有些主機商還會提供備份與SSL服務,就不用怕本機硬體毀損。
所以你花錢租了伺服器,減少維護成本,同時提供隨時隨地的可用性。
就算買最便宜的方案,用來架個跳板(VPN)也是不錯的用途,可以承接下面homelab的做法。
2. 建設Homelab#
另外一個方法是買設備建立homelab,在本機建立自己的伺服器環境,放置伺服器的場所可以是自己家、倉庫、或是地下室,只要能連網就行。1990年代,人們就是這樣架設自己的網站的。
長期來看付電費和網路費,可能比租伺服器省錢,日後添購升級也比較容易。
可是維護有點不方便就是,因為我個人認為買現成的NAS產品會變成另一種lockdown,所以我傾向自組伺服器,再安裝Linux/BSD上去。可這又會提升維護成本,包括備份和硬體毀損的問題,還要設定防火牆規則。當你把這些都搞懂,你都成為半個系統維護工程師了。
但自己準備硬體好處很多,那就是進入的成本低,有時候不用特別添購新硬體,拿舊電腦裝Linux/BSD就可以開始亂搞實驗了,畢竟伺服器很多都是headless服務,只吃CPU效能。
還有,很多軟體是考量到讓樹苺派也能跑的,樹莓派能跑你的老舊CPU怎麼就不能跑?
搭配Unraid做備份,再購置UPS確保不會因停電而毀損伺服器。
3. 折衷方法:住商混合社區#
拿目前你正在使用的主力電腦跑自架服務,作入門練習之用。你說這怎麼可能,就是有可能。現在很多自架服務用 Docker就可以跑起來了,不需要配複雜的環境。就算你主力不是用Linux,Windows仍有虛擬機或 WSL可以用,並且虛擬機東西跟主系統隔離,更方便做實驗了。
只要不在意電費,可以保持電腦不關機(台灣應該沒有常常跳電吧,民主聖地ㄋㄟ),要做自架服務實驗就不難了。
論從外部網路存取家中電腦的方法有很多種,根本不用遠端桌面,也不用架設VPN跳板,只要透過 內網穿透軟體,就可以輕鬆從公開網路連線到私人網路,並且傳輸全程加密。
再把服務架起來,就可以用SSH+網頁面板遠端管理服務了。