:::

用Docker建構開箱可用的Nextcloud  / Deploying a Ready-to-Use Nextcloud Instance with Docker

6月 16, 2025 , 0 Comments Edit Copy Download

2025-0121-032627.png

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

2025-0121-022439.png

https://nextcloud.com/ 

Nextcloud 是一款開放原始碼的自架雲端儲存服務軟體,讓使用者可以在自己的伺服器上建立類似 Dropbox、Google Drive 或 iCloud 的功能。它提供檔案同步與分享、線上辦公室套件 (Office Suite)、聯絡人與行事曆管理、以及更多豐富的應用程式 (Apps)。透過 Nextcloud,您可以掌控自己的資料,不用擔心隱私外洩,同時享有高度客製化的彈性,打造專屬的雲端空間。

2025-0121-022514.png

Nextcloud 的介面設計簡潔直覺,容易上手。您可以透過網頁瀏覽器、桌面用戶端 (Desktop Client) 或行動應用程式 (Mobile App) 存取和管理您的檔案。它支援檔案版本控制,萬一誤刪或修改檔案,可以輕鬆還原到先前的版本。此外,Nextcloud 也提供強大的協作功能,讓您可以與團隊成員共享檔案、共同編輯文件,並透過內建的通訊工具進行討論,提升團隊合作效率。

Nextcloud的擴充功能 / Apps in Nextcloud

Nextcloud 除了基本功能外,還支援各式各樣的擴充應用程式,例如:即時通訊、視訊會議、心智圖工具等等。您可以根據自己的需求安裝不同的應用程式,打造更全面的個人或團隊工作平台。

2025-0121-022759.png

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

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

2025-0121-024044.png

然後我們就可以在本機端開啟網頁「http://localhost:8080」....怎麽出現錯誤訊息了?這是因為一開始Nextcloud要花一點時間佈署系統。大概要三分鐘。

2025-0121-024126.png

等一段時間再重新讀取網頁「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」。

2025-0121-025530.png

等待大概5分鐘左右,Nextcloud會佈署好資料庫跟預設要設定的檔案。最後看到apache2啟動的消息,就表示可以連線了。第二次啟動Nextcloud就不需要這麼久的時間,大概5秒鐘就可以使用了。

2025-0121-025926.png

請輸入「http://loclahost:8080」開啟Nextcloud。帳號跟密碼請使用上面docker-compose.yml的設定。

2025-0121-030029.png

2025-0121-030045.png

接下來你就可以自由使用Nextcloud了。

本機檔案 / Local Volume

2025-0121-030142.png

我將Nextcloud擺放資料的資料夾掛載到跟docker-compose.yml同樣目錄底下的「data」資料夾。但它一開始創建的時候會被限制權限,請用「sudo chmod 777 -R data」來開啟它的權限。

2025-0121-030345.png

在「data/admin/files/」底下,便能看到admin帳號的檔案。

但是要注意的是,我們在本機修改Nextcloud的檔案時,它不會直接反應到Nextcloud系統裡面。這必須要執行「occ files:scan」,Nextcloud才會掃描看看檔案有沒有變更,然後才會儲存到Nextcloud系統內。

因此,一般情況下都不建議不透過Nextcloud來修改檔案。


Nextcloud客戶端應用程式 / Nextcloud Client APP

https://nextcloud.com/install

https://nextcloud.com/install 

要使用Nextcloud的話,比較正常的做法是用Nextcloud的客戶端來連線。Nextcloud為各個平臺都開發了對應的客戶端:

2025-0121-031206.png

當然,你也可以直接使用Nextcloud的網頁來上傳、下載與修改檔案。Nextcloud網頁有著各種強大的應用程式,甚至可以讓你在網頁上對PDF檔案寫註解、標亮文字,非常好用呢。


結語 / Conclusion

2025-0121-031307.png

我使用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. 其他:歡迎在下面留言,分享你的看法吧!