手把手教你在 Ubuntu 上部署 Nextcloud 私有云 | Docker 完整教程
Frank_张
2026年05月25日 09:13
收录于文集
共1篇
自动化运维

本文是 我的 B 站视频的配套文章,建议边看视频边对照本文复制命令。

环境要求

操作系统:Ubuntu 22.04 LTS

内核版本:6.x 以上

Docker:24.x +

Docker Compose:plugin 版本

内存:2GB 最低,4GB 推荐

硬盘:20GB 最低

验证环境命令:

代码块
Shell
自动换行
复制代码
uname -a
复制成功
代码块
Shell
自动换行
复制代码
docker --version
复制成功
代码块
Shell
自动换行
复制代码
docker compose version
复制成功

第一步:创建项目目录

代码块
Shell
自动换行
复制代码
mkdir -p ~/nextcloud
复制成功
代码块
Shell
自动换行
复制代码
cd ~/nextcloud
复制成功

第二步:创建 docker-compose.yml

代码块
Shell
自动换行
复制代码
nano docker-compose.yml
复制成功

完整配置文件如下:

代码块
YAML
自动换行
复制代码
services:
  db:
    image: mariadb:10.11
    container_name: nextcloud-db
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - db_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=change_your_root_password
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=change_your_db_password
    networks:
      - nextcloud_net

  redis:
    image: redis:7-alpine
    container_name: nextcloud-redis
    restart: unless-stopped
    networks:
      - nextcloud_net

  nextcloud:
    image: nextcloud:stable
    container_name: nextcloud
    restart: unless-stopped
    ports:
      - "99:80"
    volumes:
      - nextcloud_data:/var/www/html
      - nextcloud_config:/var/www/html/config
      - nextcloud_apps:/var/www/html/custom_apps
      - /home/user/nextcloud/data:/var/www/html/data
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=change_your_db_password
      - NEXTCLOUD_ADMIN_USER=admin
      - NEXTCLOUD_ADMIN_PASSWORD=change_your_admin_password
      - NEXTCLOUD_TRUSTED_DOMAINS=你的服务器IP localhost
      - REDIS_HOST=redis
      - TZ=Asia/Hong_Kong
    depends_on:
      - db
      - redis
    networks:
      - nextcloud_net

volumes:
  db_data:
  nextcloud_data:
  nextcloud_config:
  nextcloud_apps:

networks:
  nextcloud_net:
    driver: bridge
复制成功

需要修改的参数:

代码块
PlainText
自动换行
复制代码
 MYSQL_ROOT_PASSWORD : 数据库 root 密码,改成强密码 
 MYSQL_PASSWORD : 数据库用户密码,两处保持一致 
 NEXTCLOUD_ADMIN_PASSWORD : Nextcloud 管理员密码 
 NEXTCLOUD_TRUSTED_DOMAINS : 改成你的服务器 IP 
 /home/user/nextcloud/data : 改成你的数据存储路径 
复制成功

保存退出:

代码块
PlainText
自动换行
复制代码
Ctrl + X → Y → Enter
复制成功

第三步:执行部署

代码块
Shell
自动换行
复制代码
docker compose up -d
复制成功

检查容器状态:

代码块
Shell
自动换行
复制代码
docker compose ps
复制成功

三个容器都显示 `running` 即为成功。

查看日志:

代码块
Shell
自动换行
复制代码
docker logs nextcloud --tail 30
复制成功

第四步:访问 Nextcloud

浏览器打开:

代码块
PlainText
自动换行
复制代码
http://你的服务器IP:99
复制成功

用管理员账号登录,安装推荐应用,完成初始化。

第五步:接入 OpsHome NOC 监控

部署好 Nextcloud 之后,怎么知道它还在正常运行?

这里我用了自己开发的 iOS App——OpsHome NOC。

从你的 APP中获取你的docker-compose.yml 配置加入 Docker 探针服务:

将配置传输到你的docker主机中,或者而复制其内容、粘贴、保存即可。

创建一个独立文件夹,存放配置文件。

代码块
PlainText
自动换行
复制代码
makdir -p ~/docker-prob
cd  ~/docker-prob
nano docker-compose.yml
复制成功
代码块
Shell
自动换行
复制代码
docker compose up -d
复制成功

OK,完成docker部署后,打开你的 iOS App OpsHome NOC,添加你的nextcloud 的内网IP地址和内网端口号,稍等几分钟,监测数据就会刷新出来,你就可以随时随地,查看你的内网docker容器的运行状态了。

🎬 备用视频链接:手把手教你在Ubuntu部署Nextcloud私有云 | Docker + OpsHome NOC内网监控完整教程​

常见问题

Q1:端口 99 被占用怎么办?

把 `99:80` 改成其他端口,比如 `8089:80`。

Q2:Nextcloud 提示不信任的域名?

在 `NEXTCLOUD_TRUSTED_DOMAINS` 里加上你访问时用的 IP 或域名。

Q3:忘记管理员密码怎么办?

代码块
Shell
自动换行
复制代码
docker exec -u www-data nextcloud \
  php occ user:resetpassword admin
复制成功