通过docker安装nextcloud,使用caddy反代并开启https简易教程

说明:亚马逊云服务器,内存1G,硬盘30G,系统刚重置其他都没装,域名为“aa.542136.xyz”且托管到cloudflare(不要开小黄云,开了申请不了证书),A记录指向服务器ip且能ping通。教程通过docker搭建nextcloud服务器,并且通过caddy申请ssl证书开启https访问,设置密码默认为“mypasswd”,用户名为ubuntu(主目录/home/ubuntu)(以下教程替换掉域名和密码即可逐行执行使用,其他都不用改,注意关闭防火墙和安全组,本教程在亚马逊服务器三次复现)。

##第一步:更新系统并安装 Docker 和 Docker Compose
sudo apt update
sudo apt install docker.io docker-compose -y
#检查是否安装成功:
docker –version
docker compose –version

##第二步:配置服务器防火墙和亚马逊云安全组
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload # 如果ufw是活动的
#亚马逊云安全组 (AWS Security Group),找到EC2 实例,然后在“安全组”设置中,添加入站规则,放开80和443端口

##第三步:创建 Nextcloud 项目文件夹和 Docker Compose 文件
#创建一个目录来存放 Nextcloud 的配置和数据,并进入该目录
mkdir nextcloud
cd nextcloud
#在该目录创建一个名为 docker-compose.yml
touch docker-compose.yml
micro docker-compose.yml
###///编辑内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
version: '3'

services:
db:
image: mariadb:10.5 # 使用 MariaDB 数据库
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db_data:/var/lib/mysql # 数据库数据持久化
environment:
MYSQL_ROOT_PASSWORD: mypasswd # 数据库root用户密码,使用你提供的默认密码
MYSQL_DATABASE: nextcloud # 数据库名
MYSQL_USER: nextcloud # 数据库用户
MYSQL_PASSWORD: mypasswd # 数据库用户密码,使用你提供的默认密码

nextcloud:
image: nextcloud:latest # 使用最新版 Nextcloud
restart: always
volumes:
- nextcloud_data:/var/www/html # Nextcloud 数据和配置持久化
- nextcloud_config:/var/www/html/config # Nextcloud config目录持久化
- nextcloud_apps:/var/www/html/custom_apps # Nextcloud 自定义应用持久化
- nextcloud_themes:/var/www/html/themes # Nextcloud 主题持久化
environment:
MYSQL_HOST: db # 数据库服务名 (docker-compose 网络内的服务名)
MYSQL_DATABASE: nextcloud # 数据库名
MYSQL_USER: nextcloud # 数据库用户
MYSQL_PASSWORD: mypasswd # 数据库用户密码
# NEXTCLOUD_TRUSTED_DOMAINS 设置为你实际的域名
NEXTCLOUD_TRUSTED_DOMAINS: aa.542136.xyz
depends_on:
- db # 确保数据库先启动

caddy:
image: caddy:latest # 使用最新版 Caddy 作为反向代理和 SSL
restart: always
ports:
- "80:80" # 映射 HTTP 端口
- "443:443" # 映射 HTTPS 端口
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile # 挂载 Caddy 配置文件
- caddy_data:/data # Caddy 存储 SSL 证书等数据
depends_on:
- nextcloud # 确保 Nextcloud 先启动

volumes:
db_data:
nextcloud_data:
nextcloud_config:
nextcloud_apps:
nextcloud_themes:
caddy_data:

##第四步:创建 Caddy 配置文件
#同一个 nextcloud 目录下,创建一个名为Caddyfile (注意首字母大写)的文件
touch Caddyfile
micro Caddyfile
###///这里不用配置ssl,让caddy自动配置

1
2
3
4
5
6
7
8
9
aa.542136.xyz {
# 将所有请求反向代理到 nextcloud 服务 (Docker Compose 网络内的服务名和端口)
reverse_proxy nextcloud:80 {
# 启用 WebSocket 支持,Nextcloud 需要
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
header_up Host {host}
}
}

###第五步:启动 Docker 容器,确保在 nextcloud 目录下
sudo docker-compose up -d #如果安装新版:sudo docker-compose up -d
sudo docker-compose ps #如果安装新版:sudo docker compose ps
#看到 db, nextcloud, 和 caddy 这三个服务都处于 up状态。如果某个容器启动失败,可以使用 docker compose logs (例如 docker compose logs nextcloud)查看日志,以便排查问题
#此时即可访问https://aa.542136.xyz主页,进入nextcloud配置,主界面的管理员账号密码随意输入,可以与上面不同。进入后安装推荐的应用,如果内存小直接跳过就好,然后就可以上传文件了

###其他事项,容器停止和重启,在配置目录下执行
sudo docker-compose down # 停止并移除旧的容器 (数据卷不会被删除)
sudo docker-compose up -d # 根据新的配置文件重新创建并启动容器
#按照上述配置文件,如果系统重启将自动重启容器,如果没有重启,在配置文件目录输入sudo docker-compose up -d重启即可


通过docker安装nextcloud,使用caddy反代并开启https简易教程
http://example.com/2025/04/20/ubuntu服务器通过docker安装nextcloud,使用caddy反代并开启https简易教程/
Author
John Doe
Posted on
April 20, 2025
Licensed under