用Docker建構開箱可用的Nextcloud / Deploying a Ready-to-Use Nextcloud Instance with Docker
Nextcloud是一個相當受歡迎的自架雲端硬碟應用程式。過往我都是用LXC的容器形式架設,這次我們要用Docker技術架設Nextcloud。要架設一個開箱可以用的Nextcloud其實還是有點複雜,我把相關參數整理成docker-compose.yml,希望對有需要的人有所幫助。
Nextcloud is a popular self-hosted cloud storage application. Previously, I used LXC containers for setup, but this time we'll use Docker. Setting up a ready-to-use Nextcloud instance can be somewhat complex. I've organized the relevant parameters into a docker-compose.yml file, hoping it will be helpful for those in need.
Nextcloud
Nextcloud 是一款開放原始碼的自架雲端儲存服務軟體,讓使用者可以在自己的伺服器上建立類似 Dropbox、Google Drive 或 iCloud 的功能。它提供檔案同步與分享、線上辦公室套件 (Office Suite)、聯絡人與行事曆管理、以及更多豐富的應用程式 (Apps)。透過 Nextcloud,您可以掌控自己的資料,不用擔心隱私外洩,同時享有高度客製化的彈性,打造專屬的雲端空間。
Nextcloud 的介面設計簡潔直覺,容易上手。您可以透過網頁瀏覽器、桌面用戶端 (Desktop Client) 或行動應用程式 (Mobile App) 存取和管理您的檔案。它支援檔案版本控制,萬一誤刪或修改檔案,可以輕鬆還原到先前的版本。此外,Nextcloud 也提供強大的協作功能,讓您可以與團隊成員共享檔案、共同編輯文件,並透過內建的通訊工具進行討論,提升團隊合作效率。
Nextcloud的擴充功能 / Apps in Nextcloud
Nextcloud 除了基本功能外,還支援各式各樣的擴充應用程式,例如:即時通訊、視訊會議、心智圖工具等等。您可以根據自己的需求安裝不同的應用程式,打造更全面的個人或團隊工作平台。
https://www.youtube.com/watch?v=6_BPOZzvzZQ&t=138s
值得注意的是,最近Nextcloud也引入了本地端大型語言模型的應用,可以讓大型語言模型讀取存放在Nextcloud的檔案,並且據此進行文字生成、問答與輔助寫作等功能。可惜目前本地端的應用並沒有支持中文。
儘管如此,Nextcloud能夠讓人自行架設雲端平臺,而且還有電腦、手機等APP可供同步使用,其實已經是非常強大且受歡迎的應用程式了。
用Docker架設Nextcloud / Setting up Nextcloud with Docker
https://hub.docker.com/_/nextcloud
Nextcloud是以PHP建構的應用程式。以往我都是用Turnkey Linux Nextcloud架設,但Turnkey Linux的應用是LXC容器,比較不容易佈署。於是我就打算使用Docker來架設Nextcloud。
Nextcloud也有提供Docker映像檔,而且是Docker官方認證的應用程式。我們可以用最基本的指令來架設Nextcloud:
docker run -d -p 8080:80 nextcloud
然後我們就可以在本機端開啟網頁「http://localhost:8080」....怎麽出現錯誤訊息了?這是因為一開始Nextcloud要花一點時間佈署系統。大概要三分鐘。
等一段時間再重新讀取網頁「http://localhost:8080」,此時就能看到Nextcloud的初始設定畫面。這樣就可以開始探索Nextcloud了。
不過這個最簡單的設定,實際使用的時候效率不太好。Nextcloud比較推薦的形式是搭配資料庫一起使用,而我也希望能夠略過開啟建立帳號等確認環節,讓我一打開就能用Nextcloud。因此,我們需要用docker-compose.yml加入更多設定。
用docker-compose.yml佈署Nextcloud / Deploying Nextcloud with docker-compose.yml
你可以用以下的docker-compose.yml來建立Nextcloud:
version: "3.8"
services:
nextcloud:
image: nextcloud
container_name: nextcloud
depends_on:
- nextclouddb
- redis
ports:
- 8080:80
volumes:
- ./data:/var/www/html/data
- nextcloud:/var/www/html/
environment:
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=dbpassword
- MYSQL_HOST=nextclouddb
- REDIS_HOST=redis
- NEXTCLOUD_ADMIN_USER=admin
- NEXTCLOUD_ADMIN_PASSWORD=password
nextclouddb:
image: mariadb:11.6-ubi
container_name: nextcloud-db
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=true
- MYSQL_PASSWORD=dbpassword
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
redis:
image: redis:7.2.7-alpine3.21
container_name: redis
volumes:
nextcloud:
db:
值得注意的是標示紅字的「admin」跟「password」是預設管理者的帳號跟密碼,您可以根據自己的需要進行修改。
然後在擺放docker-compose.yml的資料夾下,執行「docker compose up」。
等待大概5分鐘左右,Nextcloud會佈署好資料庫跟預設要設定的檔案。最後看到apache2啟動的消息,就表示可以連線了。第二次啟動Nextcloud就不需要這麼久的時間,大概5秒鐘就可以使用了。
請輸入「http://loclahost:8080」開啟Nextcloud。帳號跟密碼請使用上面docker-compose.yml的設定。
接下來你就可以自由使用Nextcloud了。
本機檔案 / Local Volume
我將Nextcloud擺放資料的資料夾掛載到跟docker-compose.yml同樣目錄底下的「data」資料夾。但它一開始創建的時候會被限制權限,請用「sudo chmod 777 -R data」來開啟它的權限。
在「data/admin/files/」底下,便能看到admin帳號的檔案。
但是要注意的是,我們在本機修改Nextcloud的檔案時,它不會直接反應到Nextcloud系統裡面。這必須要執行「occ files:scan」,Nextcloud才會掃描看看檔案有沒有變更,然後才會儲存到Nextcloud系統內。
因此,一般情況下都不建議不透過Nextcloud來修改檔案。
Nextcloud客戶端應用程式 / Nextcloud Client APP
要使用Nextcloud的話,比較正常的做法是用Nextcloud的客戶端來連線。Nextcloud為各個平臺都開發了對應的客戶端:
- 桌面環境:Windows 10以上 (64bit)、macOS 12以上、Linux Appimage (我現在就用這個)
- 行動裝置:Android、iOS
當然,你也可以直接使用Nextcloud的網頁來上傳、下載與修改檔案。Nextcloud網頁有著各種強大的應用程式,甚至可以讓你在網頁上對PDF檔案寫註解、標亮文字,非常好用呢。
結語 / Conclusion
我使用Nextcloud已經有好幾年的時間。之前使用Nextcloud的目的是同步Google Drive,克服rclone在網路不穩定時拖累系統的問題。但如果要跟Google Drive同步,那我們需要對系統有更多的調整,也需要定期執行檔案掃描,它才能正常運作。相關的細節我在「Nextcloud的安裝」跟「手動打造Google Drive同步工具:ownCloud與rclone的組合」都有記錄。
不過這次我的目標就不是架設長期使用的伺服器,而是要架設一個容易佈署、能夠跟其他系統整合的檔案管理工具。有陣子我使用的是「File Browser」,它架設很容易,但老實說它很難用,甚至要瀏覽照片都很不方便。結果,到頭來我還是回來研究Nextcloud了。
就讓我們看看Nextcloud可以作什麼調整吧。
那這篇關於用Docker自架Nextcloud的介紹就到此為止了。文章的最後要來問大家的是,你會想要自架雲端硬碟嗎?
- 1. 自己的資料自己管,好像不錯喔。
- 2. 太複雜了,我花錢買iCloud或Google One就好了吧。
- 3. 可以動手修改的雲端硬碟,聽起來很有發展潛力。
- 4. 有需要雲端硬碟嗎?我都把「小沈 1500」記在隨身碟裡面。
- 5. 其他:歡迎在下面留言,分享你的看法吧!