Docker Compose 快速安裝 Nextcloud 環境

2024/07/19 51 0 伺服器 , 資料庫 ,

Nextcloud 是一款用於建立網路硬碟的客戶端-伺服器軟體,其功能類似於 Dropbox,但不同的是,Nextcloud 是自由及開放原始碼軟體,使得任何人都可以在自己的私人伺服器上安裝並運行,享有完全掌控自己的資料的優勢。Nextcloud 的誕生源自於 ownCloud 的分支,由弗蘭克·卡利切創建。卡利切和他的一部分團隊成員離開了 ownCloud,轉而積極地開發 Nextcloud。這使得 Nextcloud 保持了開放架構的特性,使用者可以透過應用程式在伺服器上添加額外功能,進一步提升系統的靈活性和擴展性。在檔案管理方面,Nextcloud 允許使用者將檔案存放在一般的目錄結構中,並透過 WebDAV 進行存取。所有傳輸中的檔案都會被加密,確保數據的安全性。Nextcloud 還支援多種操作系統的客戶端,包含 Windows(XP、Vista、7、8、10、11 等)、macOS(10.6 或更新版本)及多種 Linux 發行版,實現多平台的檔案同步。除了基本的檔案存取功能,Nextcloud 還提供了豐富的應用程式支援,例如行事曆管理(CalDAV)、聯絡人管理(CardDAV)、計劃任務及媒體串流(Ampache)。此外,使用者還可以生成公開的 URL 來分享檔案,並設置檔案存取規則以限制特定檔案的存取。Nextcloud 的使用者界面友好,允許透過瀏覽器進行多種操作,包含使用內建的文字編輯器、書籤服務、縮網址服務、相簿、RSS 閱讀器及檔案檢視器。由於其良好的擴充性,Nextcloud 可以安裝各種應用程式來強化其功能,並能連接至 Dropbox、Google 雲端硬碟、微軟 OneDrive 及 Amazon S3 等外部雲端服務。技術上,Nextcloud 伺服器是使用 PHP 與 JavaScript 編寫的,並採用 SabreDAV 作為遠端存取的 WebDAV 伺服器。Nextcloud 支援多種資料庫管理系統,包括 SQLite、MariaDB、MySQL、Oracle 資料庫及 PostgreSQL,這使得它可以在各種基礎設施上運行,滿足不同使用者的需求。這邊我將選擇 MariaDB 作為資料庫,使用 Docker Compose 快速安裝好 Nextcloud 環境,直到成功登入 Nextcloud 網頁端入口,希望這篇教學對你有幫助!

🔗 GitHub 儲存庫:https://github.com/qwe987299/nextcloud.docker

📝 docker-compose.yml

services:

  nextcloud:
    image: nextcloud
    container_name: nextcloud_web
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./nextcloud:/var/www/html
    links:
      - db
      - redis

  db:
    image: mariadb
    container_name: nextcloud_mariadb
    restart: always
    ports:
      - 3306:3306
    volumes:
      - ./mysql:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-allowed-packet=10G
    environment:
      TZ: Asia/Taipei
      MYSQL_ROOT_PASSWORD: password1234
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: password1234
      
  phpmyadmin:
    image: phpmyadmin
    container_name: nextcloud_phpmyadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      - PMA_HOST=db
      - UPLOAD_LIMIT=10G

  redis:
    image: redis:alpine
    container_name: nextcloud_redis
    restart: always
    environment:
        - TZ=Asia/Taipei
    volumes:
        - ./redis:/data
    command: /bin/sh -c "redis-server --requirepass $$REDIS_HOST_PASSWORD"
    env_file:
        - redis.env

這段 `docker-compose.yml` 文件定義了四個服務,它們分別是 `nextcloud`、`db`、`phpmyadmin` 和 `redis`,並提供了它們的設定和相互之間的關聯。

(一) `nextcloud` 服務使用官方的 Nextcloud 映像檔,容器名稱為 `nextcloud_web`。這個服務設定了自動重啟,並將本機的 80 和 443 通訊埠映射到容器的同樣通訊埠,確保網站可以透過 HTTP 和 HTTPS 訪問。儲存路徑被設定為本地的 `./nextcloud` 對應到容器內的 `/var/www/html`。此外,`nextcloud` 服務透過 `links` 參數與 `db` 和 `redis` 服務相連。
(二) `db` 服務使用 MariaDB 映像檔,容器名稱為 `nextcloud_mariadb`。這個服務同樣設定了自動重啟,並將本機的 3306 通訊埠映射到容器的 3306 通訊埠。資料儲存路徑設定為本地的 `./mysql` 對應到容器內的 `/var/lib/mysql`。該服務啟動時執行特定命令來設定 MySQL 的身份驗證、字符集和最大允許包大小。環境變數設定了時區、MySQL 的 root 密碼、資料庫名稱、用戶名及其密碼。
(三) `phpmyadmin` 服務使用 phpMyAdmin 映像檔,容器名稱為 `nextcloud_phpmyadmin`。這個服務也設定了自動重啟,並將本機的 8080 通訊埠映射到容器的 80 通訊埠。環境變數設定了 `PMA_HOST` 為 `db`,以便 phpMyAdmin 連接到 MariaDB,並設定了上傳限制。
(四) `redis` 服務使用 Redis 的 Alpine 版本映像檔,容器名稱為 `nextcloud_redis`。這個服務同樣設定了自動重啟。環境變數設定了時區,並且透過本地的 `./redis` 資料夾對應到容器內的 `/data` 來儲存資料。啟動命令設定了 Redis 服務並要求密碼,這個密碼從 `redis.env` 文件中讀取。

📝 redis.env

REDIS_HOST_PASSWORD=password1234

`redis.env` 文件中包含了一個環境變數 `REDIS_HOST_PASSWORD`,其值設定為 `password1234`。這個環境變數用於 Redis 容器的密碼設定。具體解釋如下:當 Redis 容器啟動時,會執行 `docker-compose.yml` 文件中指定的命令:`redis-server --requirepass $$REDIS_HOST_PASSWORD`。這個命令告訴 Redis 服務器在啟動時需要設置訪問密碼,而 `$$REDIS_HOST_PASSWORD` 會從 `redis.env` 文件中讀取變數 `REDIS_HOST_PASSWORD` 的值,即 `password1234`。當您嘗試連接到 Redis 服務時,必須提供這個密碼才能成功連接,從而增加了 Redis 服務的安全性,防止未經授權的訪問。


▲ 為了方便快速建立環境,可以將本文提供的 Git 儲存庫 clone 到自訂的路徑,接著 cd nextcloud.docker,最後執行 docker compose up -d

▲ 透過 localhost 進入 Nextcloud 網頁介面,輸入首個管理員的帳號及密碼,接著點「儲存空間和資料庫」。

▲ 依照 docker-compose.yml 的環境資訊選擇 MariaDB 資料庫,接著填入資料庫帳號、資料庫密碼、資料庫名稱、資料庫主機,如果你沒有更改我提供的 docker-compose.yml,那照著輸入絕對不會有錯的喔!完成後點「安裝」。

▲ 安裝好後會推薦你安裝一些應用程式,可以選擇「跳過」。

▲ 這邊是導覽介紹,可以點右上「×」關閉。

▲ 成功進入 Nextcloud 主畫面!來去看看「管理設定」。

▲ 點選左側管理區「概覽」,可以在這邊查看 Nextcloud 版本,正常來說依照本教學安裝都會是最新版本,因為一開始就是採用最新的官方 Nextcloud 映像檔。

贊助廣告 ‧ Sponsor advertisements

留言區 / Comments

萌芽論壇