Nextcloud,一款開源的自架雲端硬碟解決方案。可讓您於自己的電腦與伺服器架設類似Google Drive的雲端硬碟,擁有上傳、共享文件的能力,還可以安裝行事曆、筆記本、LibreOffice等擴充功能,提昇Nextcloud的生產力。
如果要將Nextcloud架在自己的電腦,那麼使用Docker可以說是最簡單的方式,Nextcloud容器將資料庫、Apache等依賴服務都包在一塊,使用者只要用幾行指令便能讓Nextcloud上線。Nextcloud服務架起來之後,其他維護管理的工作都可以用網頁圖形界面完成,外部網路再透過ZeroTier存取。
1. Nextcloud特色功能#
- 自由開源的雲端硬碟,透過網頁、電腦、手機客戶端存取檔案
- 撰寫markdown筆記
- 上傳相片,建立相簿
- 天氣、行事曆、電子郵件、線上聊天
- 網頁共同編輯Office文件
- 建立多個帳號並限制使用額度
- 分享檔案並設定存取權限
- 可視需求啟用檔案加密
本文採用的方案為NextCloud官方提供的基本款 Dcoker映像檔。
為什麼不採用功能更多的 Nextcloud All-in-One呢?因為本文用的是ZeroTier的解決方案,不需要用到加密憑證和域名,且Nextcloud AIO需要擁有域名才可以架設。
2. 以Docker架設Nextcloud#
首先,在您的電腦安裝 Docker
參考 Nextcloud官方說明,建立docker-compose。
vim docker-compose.yaml
- 填入以下內容,務必事先填入密碼。伺服器使用Apache,資料庫後端使用MariaDB,再另外跑一個Collabora Office服務。
version: '2'
# 將Nextcloud的資料庫和設定檔放到docker volume (/var/lib/docker/volumes/ )
volumes:
nextcloud:
db:
services:
# 使用MariaDB當資料庫
db:
image: mariadb:10.6
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
# 冒號左邊的是資料庫路徑,這裡使用Docker volumes
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=請於此處設定密碼
- MYSQL_PASSWORD=請於此處設定密碼
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
# 使用最新版Nextcloud + Apache映像檔
app:
image: nextcloud
restart: always
# 預設通訊埠是8080
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=請於此處設定密碼
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
# 額外跑Collabora Office線上文件編輯服務
collabora:
image: collabora/code
restart: always
ports:
- 9980:9980
environment:
- extra_params=--o:ssl.enable=false
cap_add:
- SYS_ADMIN
- 啟動容器:
sudo docker compose up -d
- 用瀏覽器開啟
http://localhost:8080
,開始設定NextCloud。
此方案的資料庫和設定檔放到docker volume,系統路徑為/var/lib/docker/volumes
。
若要關閉容器,於docker-compose所在目錄執行:
sudo docker compose down
2. 初始化Nextcloud#
首先您要建立一個管理員帳號。
點選安裝全部應用程式
完成,你可以開始使用Nextcloud了。點選左上角「檔案」進入雲端硬碟。
在這裡可以上傳檔案、寫markdown筆記、使用日曆、收發Email。
點選右上角大頭貼→ 使用者,新增其他一般權限的帳號,並個別設定容量限制。
您可以點選右上角大頭貼 → 管理設定 → 個人資訊,設定電子郵件。再到「通知」,設定雲端硬碟檔案一有變更就發電子郵件通知自己。
3. 設定Nextcloud Office#
Nextcloud提供多種線上Office方案。ZeroTier IP分配請看下一節。
3.1. 使用Collabora Office網頁編輯#
登出Nextcloud。改用ZeroTier分配的虛擬區域IP開啟Nextcloud,例如
http://172.30.212.199:8080
,不要用http://localhost:8080
點選管理設定 → 個人資訊 → Nextcloud Office,設定「使用自己的Collabora Office伺服器」,IP填入
ZeroTier虛擬區域IP:9980
這樣就可以在Nextcloud的網頁界面編輯Office文件了。
3.2. 使用本機LibreOffice編輯#
請先 安裝LibreOffice至您的電腦。
點選右上角大頭貼 → 應用程式,安裝
Edit files with LibreOffice
這樣文件的選單即會有用本機LibreOffice編輯的選項。
開啟後輸入Nextcloud密碼,便可用LibreOffice應用程式編輯文件,然後自動存檔回Nextcloud。
4. 用內網穿透軟體從外網存取Nextcloud#
Nextcloud的界面可以用網頁存取,Nextcloud官方也有推出手機APP和桌面同步 客戶端。
於手機和電腦安裝 內網穿透軟體,例如ZeroTier,將裝置加入ZeroTier網路
Nextcloud預設封鎖其他域名存取,因此要將電腦所分配到的ZeroTier虛擬IP加入至Nextcloud的白名單。Docker compose請直接修改位於Docker volume的
config.php
:
su
vim /var/lib/docker/volumes/nextcloud_nextcloud/_data/config/config.php
- 找到
trusted_domains
這一行,將ZeroTier的虛擬區域IP加到陣列,例如172.30.252.204。您也可以用wildcard來允許IP開頭一樣的IP連線:
'trusted_domains' =>
array (
0 => 'localhost:8080',
1 => '172.30.252.204',
2 => '172.30.*'
),
- 開啟以下防火牆通訊埠。注意Nextcloud的資料庫後台界面可能會因為Docker暴露到外網,UFW擋不住,您可能需要啟用 ufw-docker方案。
# Nextcloud
sudo ufw allow 8080/tcp
# Nextcloud Talk
sudo ufw allow 3478/tcp
sudo ufw allow 3478/tcp
sudo ufw reload
- 重新啟動Docker
sudo systemctl restart docker
- 現在您可以用手機瀏覽器輸入:
http://電腦的ZeroTier IP:8080
連線至Nextcloud雲端了。