前提条件:
安装Debian 11系统
安装Docker
安装Docker Compose
部署NginxWebUI
1.准备工作
NextCloud全家桶Github地址,可以先看看准备工作的说明,再决定是否要部署这个服务,这个服务部署起来比较麻烦,如果没有足够的耐心,可以直接不看。
1.1修改host文件,或者修改路由器的域名映射
注意:如果你有公网IP和域名,请把域名的DNS解析成你的公网IP,那么1.1整个步骤可以直接省略。
没有域名就去购买一个,域名最好是 阿里、腾讯、CloudFlare、Godaddy、华为云DNS 中注册的,
或者上网搜索 “ cloudflare托管域名 ”。

1.1.1Windows系统修改hosts文件
路径:C:\Windows\System32\drivers\etc\hosts
具体修改方法请上网搜索,这里不提供

能够在系统上ping通证明设置已经成功了

1.1.2Debian 11系统修改hosts文件
vim /etc/hosts

能够在系统上ping通证明设置已经成功了

1.1.3路由器上有梯子工具的可以使用Adguard
如果希望局域网内所有的设备都能访问,最好能在路由器上进行设置,上面1.1.1和1.1.2的工作都可以省略。其实1.1.1和1.1.2的工作都只是为了在内网中做保险使用,没有路由器上的设置,后面部署过程会报错

路由器上的设置方法有很多种,需要根据具体情况进行设置,这里就不一一介绍了
1.2在NginxWebUI添加证书
这里以CloudFlare托管的域名为例进行填写,也可以选择手动上传
选择你已经托管或购买的域名

点击“获取您的API令牌”

在“Global API Key”中选择“查看”,输入密码后,复制这个令牌,用于输入NginxWebUI中的CF_Key

进入NginxWebUI的“证书管理”页面,点击“添加证书”,然后输入你的信息,最后点击“提交”

点击“自动续签”的按钮,让其显示为“ON”,然后点击申请

在弹出的对话框中选择“确定”

一个小时只能申请5次,多了会一直失败。如果一直失败最好在Portainer控制台里面用命令删除掉失败的文件,并查看account.conf文件信息是否正确;或者删除整个NginxWebUI容器和数据重新部署,过一小时后继续申请。成功后会弹出“申请成功”的对话框

1.3根据开发者提供的反向代理代码,修改NginxWebUI中的配置文件
Nextcloud全家桶Github反向代理说明地址
点击 click here to expand,复制代码,并粘贴到NginxWebUI,以下是我按照我的服务器需求进行修改的例子,只做参考
注意:修改成功后,如果添加了新的反向代理应用后,这些粘贴的代码在启用配置里会失效,需要重新粘贴,粘贴的位置只要写在http大括号里面最后的位置即可

#NextCloud-AIO Nginx config begin
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80; # comment to disable IPv6
if ($scheme = "http") {
return 301 https://$host$request_uri;
}
listen 443 ssl http2;
listen [::]:443 ssl http2; # comment to disable IPv6
server_name aionextcloud.xmasker.cn;#这里要改成自己的域名
location / {
proxy_pass http://192.168.1.2:11000$request_uri;#这里的IP地址最好写成服务器局域网或者公网IP地址,不要写127.0.0.1
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $host;
client_body_buffer_size 512k;
proxy_read_timeout 86400s;
client_max_body_size 0;
# Websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
ssl_certificate /home/nginxWebUI/.acme.sh/*.xmasker.cn/fullchain.cer; # 这里要改成证书管理申请到的路径
ssl_certificate_key /home/nginxWebUI/.acme.sh/*.xmasker.cn/*.xmasker.cn.key; # 同上
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
}
#NextCloud-AIO Nginx config end
点击“校验文件”,提示校验成功后,依次点击“替换文件”和“重新装载”

2.部署NextCloud全家桶
我这里选择和NginxWebUI写在一起,这样管理起来比较方便,也可以分开一个文件夹进行管理,按个人喜好
vim nginxwebui/docker-compose.yml
version: '3.8'
services:
nginxwebui:
image: cym1102/nginxwebui:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- ./nginxWebUI:/home/nginxWebUI
environment:
- BOOT_OPTIONS="--server.port=8080"
privileged: true
nextcloud:
image: nextcloud/all-in-one:latest
restart: unless-stopped
container_name: nextcloud-aio-mastercontainer
ports:
- "8081:8080"
environment:
- APACHE_PORT=11000
volumes:
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes:
nextcloud_aio_mastercontainer:
name: nextcloud_aio_mastercontainer
保存后开始拉取并建立容器,我这里已经启动了NginxWebUI,所以只需要建立nextcloud容器即可
cd nginxwebui/
docker-compose pull && docker-compose up -d nextcloud

打开浏览器,打开https://你的服务器IP地址:8081网页,会提示面临潜在的安全风险,直接接受风险并继续。注意不要写成http,会返回400的错误。

复制并备份你的后台管理密码,然后点击进入后台管理登陆页面

在弹出的页面输入刚刚的密码,然后登陆,需要等待一会才会跳转


输入域名进行检测,域名检测通过之后就开始部署服务

选择插件

输入时区

开始部署,帖子发布时26版本还不稳定,暂不使用

点击后需要等待很长一段时间,请耐心等待

在Portainer里面看到nextcloud-aio-apache和nextcloud-aio-nextcloud容器启动中,说明就快完成了,等待过程中不要关闭任何网页,一直保留到结束,后面还要在网页里面备份账号密码


在Portainer里面nextcloud-aio-nextcloud的日志如图所示,说明部署已经完成了

回到刚刚的后台管理网页,点击Reload

复制并备份你的Nextcloud账号和密码

新建标签页,在地址栏里输入你的域名,能够正常打开网站。输入刚刚复制的账号和密码登陆。

大 功 告 成
