[Linux]基于PVE + Ubuntu 24.04 server 搭建Nextcloud网盘

搭建宿主机

硬件配置

CPU: 至少 4 核心(类别为 Host,以透传指令集加速 PHP 和数据库运算)。

内存: 至少 8GB

系统盘 (Disk 0): 32GB,总线 VirtIO Block 或 SCSI,用于部署 Ubuntu 24.04 OS 和容器镜像库。

数据盘 (Disk 1): 500GB+,总线 VirtIO SCSI。这是物理隔离的数据平面。

网络: vmbr0,模型 VirtIO。

载独立数据盘

# 创建文件系统 (推荐 xfs 处理海量小文件)
sudo mkfs.xfs /dev/sdb

# 创建挂载点
sudo mkdir -p /mnt/ncdata

# 写入 fstab 实现开机自动挂载
echo "UUID=$(sudo blkid -s UUID -o value /dev/sdb) /mnt/ncdata xfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a

Nextcloud

目录结构

# 1. 创建编排工作目录
sudo mkdir -p /opt/nextcloud-native
cd /opt/nextcloud-native

# 2. 预先在数据盘创建服务专属的持久化目录,并赋予基础权限
sudo mkdir -p /mnt/ncdata/{database,redis,app,data}
sudo chmod -R 770 /mnt/ncdata

docker compose

sudo vim docker-compose.yml
写入以下内容

services:
  db:
    image: postgres:15-alpine
    container_name: nextcloud-db
    restart: always
    volumes:
      - /mnt/ncdata/database:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=[YOUR_POSTGRES_PASSWORD]

  redis:
    image: redis:7-alpine
    container_name: nextcloud-redis
    restart: always
    command: redis-server --requirepass [YOUR_REDIS_PASSWORD]
    volumes:
      - /mnt/ncdata/redis:/data

  app:
    image: nextcloud:apache
    container_name: nextcloud-app
    restart: always
    ports:
      - "80:80"
    depends_on:
      - db
      - redis
    volumes:
      - /mnt/ncdata/app:/var/www/html
      - /mnt/ncdata/data:/var/www/html/data
    environment:
      - POSTGRES_HOST=db
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=nextcloud
      - POSTGRES_PASSWORD=[YOUR_POSTGRES_PASSWORD]
      - REDIS_HOST=redis
      - REDIS_HOST_PASSWORD=[YOUR_REDIS_PASSWORD]
      # 预设信任域名,防止 AIO 时期的 Host 头拦截复现
      - NEXTCLOUD_TRUSTED_DOMAINS=192.168.0.11 pan.yourdomain.com

  cron:
    image: nextcloud:apache
    container_name: nextcloud-cron
    restart: always
    volumes:
      # Cron 容器必须与 App 容器共享完全一致的卷挂载,以保证其能扫描到相同的物理文件
      - /mnt/ncdata/app:/var/www/html
      - /mnt/ncdata/data:/var/www/html/data
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis

sudo docker compose up -d
image

初始化

访问http://192.168.99.11:8080 配置管理员用户密码

添加可信站点

后续若修改端口或配置了域名,可手动修改容器可信站点

# 1. 强制覆写索引 0 的白名单为纯 IP
sudo docker exec --user www-data nextcloud-app php occ config:system:set trusted_domains 0 --value="192.168.0.11"

# 2. 强制写入索引 1 的白名单为目标域名
sudo docker exec --user www-data nextcloud-app php occ config:system:set trusted_domains 1 --value="pan.yourdomain.com"

# 3. 验证内存与配置文件的最终一致性
sudo docker exec --user www-data nextcloud-app php occ config:system:get trusted_domains
posted @ 2026-03-05 14:52  夜歌乘年少  阅读(118)  评论(0)    收藏  举报