嗯...想搞一個自己的雲端,又不想花錢。這件事,可行。
Google Drive, Dropbox 都很好用,但空間要大就要付費,而且資料都放在別人手上,總覺得...不太踏實。所以,很多人開始想自己架。目標很簡單:弄一個跟 Dropbox 一樣,但完全由自己控制、而且幾乎零成本的私人雲端。
答案,指向 Oracle Cloud 的免費方案,再搭上 Nextcloud 這個開源軟體。聽起來很複雜,但其實...嗯,一步步來,也還好。
先說結論,為什麼是 Oracle Cloud?
老實說,市面上一堆「免費」的雲端主機,但很多都只是試用期,或給的規格小到跑不動什麼東西。AWS、GCP 的免費額度規則又複雜,一不小心就收到帳單。
Oracle 的「Always Free」方案就直接很多。他們給的規格,剛好踩在一個「能用」的甜蜜點上。雖然不是讓你跑什麼大事業,但架個 Nextcloud 來同步手機照片、備份文件,夠了。真的夠了。
我整理了一下幾個常見的免費方案,你看完就有個底。
| 項目 | Oracle Cloud (Always Free) | AWS (Free Tier) | Google Cloud (Free Tier) |
|---|---|---|---|
| CPU / RAM | 給到 4 OCPU (ARM架構) 跟 24GB RAM 的總額度,可以開到 4台 1vCPU/6GB RAM 的機器。…這規格真的太扯了。 | 12個月免費,給 t2.micro 或 t3.micro。嗯,就是很入門的規格,時間到就沒了。 | 一台 e2-micro,也是很基礎,而且只在特定區域。流量費用要小心算。 |
| 儲存空間 | 總共 200GB。這對個人雲來說,超級夠用。45GB 只是舊的資料,現在給的更多。 | 30GB 的 EBS 儲存。算夠用,但也是 12 個月限定。 | 30GB 的永久免費空間。這點還不錯,但主機規格就那樣。 |
| 最大優點 | 規格大方,而且是「永久」免費。只要用量在額度內,就不用擔心帳單。 | 生態系最完整,如果以後想玩更多 AWS 服務,從這裡開始很順。 | GCP 的網路品質普遍不錯,而且跟 Google 其他服務整合方便。 |
| 嗯...缺點是? | 註冊要信用卡驗證,有時會刷不過。ARM 架構主機 (Ampere A1) 有些軟體相容性要處理,不過這篇教學沒這問題。 | 就是個試用包。12個月後,你得決定要不要付錢,不然東西就得搬家。 | 規則有點小複雜,很容易不小心就超額。主機性能...就真的只是讓你體驗一下。 |
結論很明顯了。如果你想長期、穩定地放著一個小服務,Oracle 的方案幾乎是唯一的選擇。
怎麼做:一步一步來
好,理論講完。開始動手。整個過程就像在組裝電腦,只是零件都是虛擬的。
第一站:Oracle Cloud 開帳號、建主機
這一步沒什麼技術,但有點繁瑣。
- 註冊 Oracle Cloud 帳號:去官網找「Always Free」方案。對,需要一張信用卡,他們會刷一筆小錢然後退給你,只是為了驗證你不是機器人。
- 建立 VM 執行處理:登入後台,找到「建立 VM 執行處理」(Create a VM instance)。
- 映像和資源配置:這步是關鍵。
- 映像:點「編輯」,選 Canonical Ubuntu,版本選 22.04。Minimal 版更好,系統乾淨,資源吃得少。
- 資源配置:重點來了,要選「Ampere」ARM 架構的處理器。免費額度主要是在這裡。你可以拉滿到 4 OCPU 和 24 GB 記憶體,但我們架 Nextcloud,其實 1 OCPU 跟 1GB 或 2GB 記憶體就夠跑了。省點資源,以後可能還能架別的東西。
- 網路:先用預設的就好。記下它分配給你的「公用 IP 位址」。
- 新增 SSH 金鑰:這裡要選「產生金鑰組」。它會讓你下載一個私密金鑰檔案 (.key)。這個檔案超級重要,立刻存好,丟了就連不進主機了。
- 建立:點下去,等它跑完。大概幾分鐘,你的雲端主機就在世界的某個角落開機了。
對了,選機房的時候,可以考慮一下。如果你在台灣,選日本(東京/大阪)或韓國(春川)的機房,物理距離近一點,理論上連線延遲會低一些。這是 Oracle 全球文件上不會特別跟你說的,但對我們來說,很有差。
第二站:連線進主機,做點準備
現在你有一個遠端電腦的 IP 和一把鑰匙 (SSH 金鑰)。我們要用這把鑰匙打開門。
用你的電腦打開終端機 (Windows 可以用 PowerShell 或 WSL)。指令大概長這樣:
# 把 'path_to_your_private_key' 換成你金鑰檔案的路徑
# 把 'your_ip_address' 換成你主機的公用 IP
ssh -i /path/to/your/private_key.key ubuntu@your_ip_address
看到歡迎訊息,就代表你進去了。像駭客任務一樣,但...沒那麼酷。
進去之後,先做幾件例行公事,跟搬進新家要先打掃一樣。
# 更新軟體包列表
sudo apt update
# 升級已安裝的軟體包
sudo apt upgrade -y
# 裝個 tmux,這東西很好用,等等會解釋
sudo apt install tmux
tmux
那個 `tmux` 是個好東西。它能讓你就算斷線,遠端主機上的任務還會繼續跑。對於這種要跑很久的安裝過程,先下 `tmux` 指令,就等於加了個保險。
第三站:蓋資料庫 (MariaDB)
Nextcloud 需要一個地方存檔案清單、使用者資料這些東西。所以要裝個資料庫。
# 安裝 MariaDB 伺服器
sudo apt install mariadb-server
# 跑一下安全設定腳本
sudo mysql_secure_installation
跑 `mysql_secure_installation` 的時候,它會問你一堆問題。基本上...設定 root 密碼,然後後面一路按 Y (Yes) 就好。移除匿名使用者、禁止 root 遠端登入...都是些好的安全習慣。
然後,我們要幫 Nextcloud 建立專用的資料庫跟使用者。
# 登入 MariaDB
sudo mariadb
# 底下是在 MariaDB 裡的指令
CREATE DATABASE nextcloud;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY 'a_very_strong_password';
FLUSH PRIVILEGES;
EXIT;
記得,`nextclouduser` 可以換成你喜歡的名字,`a_very_strong_password` 一定要換成一個超強的密碼。記下來,等下會用到。
第四站:裝網頁伺服器 (Apache) 跟 PHP
有了主機、有了資料庫,現在需要一個「門面」,讓瀏覽器可以連進來。這就是 Apache 的工作。PHP 則是讓 Nextcloud 這個程式能跑起來的語言環境。
# 一次安裝 Apache 跟所有需要的 PHP 延伸套件
sudo apt install apache2 php php-apcu php-bcmath php-cli php-common php-curl php-gd php-gmp php-imagick php-intl php-mbstring php-mysql php-zip php-xml -y
# 啟用一些推薦的模組
sudo a2enmod dir env headers mime rewrite ssl
# 重啟 Apache 讓設定生效
sudo systemctl restart apache2
指令很長,但就是複製貼上。它會把 Apache 網頁伺服器跟 Nextcloud 需要的各種 PHP 工具包一次裝好。
第五站:主角 Nextcloud 登場
現在,把 Nextcloud 主程式下載回來,放到網頁伺服器看得到的地方。
這裡有個重點。原文作者提到他測試過,發現新版的 Nextcloud 在這種低規格的免費主機上跑得不太順。所以他推薦一個稍微舊一點但穩定的版本,例如 26.x。這點我同意,追新不一定是好事,穩定才重要。我們就跟著這個思路走。
# 下載 Nextcloud (版本號可以自己去官網查,但先用這個穩定的)
wget https://download.nextcloud.com/server/releases/latest.zip
# 需要 unzip 來解壓縮
sudo apt install unzip -y
# 解壓縮
unzip latest.zip
# 把解出來的 nextcloud 資料夾整個搬到網頁根目錄
sudo mv nextcloud /var/www/
# 變更擁有者,讓 Apache 有權限讀寫
sudo chown -R www-data:www-data /var/www/nextcloud/
第六站:最後的設定...有點煩,但很重要
快好了,剩下一些設定檔要修改。這部分最容易出錯,得細心點。
1. 設定 Apache:
我們要告訴 Apache,有請求進來時,要去 `nextcloud` 這個資料夾找東西。所以要建一個設定檔。
# 用 nano 編輯器建立新設定檔
sudo nano /etc/apache2/sites-available/nextcloud.conf
然後把下面這些內容貼進去:
<VirtualHost *:80>
DocumentRoot "/var/www/nextcloud"
ServerName your_ip_address
<Directory "/var/www/nextcloud/">
Options MultiViews FollowSymlinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
TransferLog /var/log/apache2/nextcloud_access.log
ErrorLog /var/log/apache2/nextcloud_error.log
</VirtualHost>
記得把 `your_ip_address` 換成你的主機 IP。存檔離開。然後啟用這個新網站設定:
# 啟用 nextcloud 設定
sudo a2ensite nextcloud.conf
# 停用預設的頁面
sudo a2dissite 000-default.conf
# 再次重啟 Apache
sudo systemctl restart apache2
2. 設定防火牆:
Oracle Cloud 的主機預設防火牆很嚴格,只開了 SSH (22) 的門。我們得手動把網頁服務的門 (80 for HTTP, 443 for HTTPS)打開。
# 開啟 80 port
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
# 開啟 443 port
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
# 儲存防火牆規則
sudo netfilter-persistent save
做完這一步,從外面才能連進你的網站。
第七站:瀏覽器裡的最終安裝
所有後台工作都做完了。打開你電腦的瀏覽器,在網址列輸入 `http://your_ip_address` (換成你的IP)。
如果一切順利...你會看到 Nextcloud 的安裝畫面。嗯,這時可以稍微喘口氣了。
- 建立管理員帳號:輸入你想設定的帳號名稱和密碼。
- 設定資料庫:底下有個資料庫設定。
- 資料庫使用者:填 `nextclouduser` (或你剛才自訂的)。
- 資料庫密碼:填 `a_very_strong_password` (你剛才設定的那個超強密碼)。
- 資料庫名稱:填 `nextcloud`。
- 主機:填 `localhost`。
- 完成安裝:點下去。它會跑一下下,然後可能會問你要不要安裝推薦的 App,可以裝。
然後...你就看到登入頁面了。恭喜,你的私人雲端,正式上線。
那...可以用自己的網域名稱嗎?
當然可以。一直用 IP 位址又難記又不安全 (HTTP)。如果你有自己的網域,可以把它指向這台主機,並加上免費的 SSL 憑證 (HTTPS)。
過程大概是:
- 買網域:去 Porkbun 或 Cloudflare Registrar 這種地方買一個便宜的網域。
- 設定 DNS:在你的網域管理後台,新增一筆 A 紀錄,指向你 Oracle 主機的 IP 位址。
- 安裝 Certbot:回到你的主機終端機,用 Certbot 這個工具來自動申請 Let's Encrypt 的免費 SSL 憑證。
Certbot 會引導你完成設定,幫你把 HTTP 自動轉到 HTTPS,很方便。sudo apt install certbot python3-certbot-apache -y sudo certbot --apache
搞定之後,你就可以用 `https://your-domain.com` 來連線了。感覺專業多了。
現實檢查:VPS 效能限制與常見錯誤
免費的,很香。但還是要面對現實。這台主機的規格,就是拿來做「輕量級」應用的。
- 效能期望:同步檔案、備份手機照片、線上編輯個 office 文件...都沒問題。但如果你想把它當成 Plex 伺服器,串流 4K 影片...嗯,它會罷工。請對 1-2GB RAM 的主機溫柔一點。
- 記憶體不足:如果 Nextcloud 跑起來卡卡的,或是在安裝過程中出錯,八成是記憶體不夠。可以試著建立一個 SWAP 交換檔,拿硬碟空間來暫時充當記憶體,能稍微緩解問題。
- 版本問題:就像前面說的,不要硬追最新版的 Nextcloud。在這種資源有限的環境下,找一個社群公認最穩定的版本,比新功能重要。
- 防火牆擋路:如果瀏覽器一直轉圈圈連不上,90% 是防火牆沒設定對。回去檢查 Oracle Cloud 後台的「安全清單」(Security List) 跟主機裡的 `iptables` 規則,確定 Port 80 跟 443 都是開放的。
總之,它是一個很棒的玩具,一個實用的工具,但不是一個無限資源的商業級產品。有這個認知,你就會用得很開心。
輪到你了
如果你架了這套系統,你第一個會想拿來做什麼?是終於可以把手機裡那幾萬張照片備份出來,還是用來同步工作文件?在下面留言分享你的主要用途吧。
