本文记录了如何使用 Docker + Apache 反向代理 部署 Nextcloud,并配置 HTTPS 访问。
一、创建目录
首先在服务器上创建一个目录来存放配置文件和数据:
mkdir -p ~/nextcloud-docker
cd ~/nextcloud-docker
二、创建 docker-compose.yml
在 ~/nextcloud-docker/ 下新建一个 docker-compose.yml 文件,内容如下:
version: '3'
services:
db:
image: mariadb:10.6
container_name: nextcloud-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: yZaishandsOme.34
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: yZaishandsOme.34
volumes:
- db_data:/var/lib/mysql
app:
image: nextcloud
container_name: nextcloud-app
restart: always
ports:
- 13243:80
links:
- db
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: yZaishandsOme.34
volumes:
- nextcloud_data:/var/www/html
volumes:
db_data:
nextcloud_data:
⚠️ 注意:请修改 MYSQL_ROOT_PASSWORD 和 MYSQL_PASSWORD,不要直接使用示例中的密码!
三、启动容器
在 docker-compose.yml 文件所在目录执行:
docker compose up -d
四、访问 Nextcloud
浏览器访问:
http://你的服务器IP:13243
首次打开会提示设置管理员账号,数据库信息已在 compose 文件中配置好,直接下一步即可。
五、配置 Apache 反向代理
假设你使用 Apache 作为反向代理,域名为 cloud.example.com,Nextcloud 容器监听 13243 端口。
先安装apache (如果没安装)
sudo apt install apache2 -y
1. 启用代理模块
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod headers
sudo a2enmod ssl
sudo systemctl restart apache2
2. 配置虚拟主机(HTTP 示例)
编辑配置文件:
sudo vim /etc/apache2/sites-available/nextcloud.conf
写入以下内容:
<VirtualHost *:80>
ServerName cloud.example.com
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://127.0.0.1:13243/
ProxyPassReverse / http://127.0.0.1:13243/
<Location />
Require all granted
</Location>
</VirtualHost>
3. 启用站点并重启 Apache
sudo a2ensite nextcloud.conf
sudo systemctl reload apache2
4. 测试访问
现在直接访问:
http://cloud.example.com
就会通过 Apache 反向代理到 Docker 里的 Nextcloud。
六、配置 HTTPS(Let’s Encrypt)
安装 Certbot 和 Apache 插件:
sudo apt install certbot python3-certbot-apache -y
获取证书:
sudo certbot --apache
配置完成后,就可以通过 https://cloud.example.com 访问了。
七、修改 Nextcloud 配置
如果出现 登录转圈圈 或 域名不受信任 的问题,需要修改 Nextcloud 的配置文件。
1. 查看 Docker 卷
sudo docker volume ls
输出示例:
DRIVER VOLUME NAME
local nextcloud_data
local db_data
2. 编辑 config.php
找到配置文件:
sudo vim /var/lib/docker/volumes/nextcloud_data/_data/config/config.php
在配置中加入以下内容(根据实际域名修改):
'trusted_proxies' => ['127.0.0.1', '144.24.55.199'],
'forwarded_for_headers' => ['HTTP_X_FORWARDED_FOR'],
'overwrite.cli.url' => 'https://cloud.zhzxs.xyz',
'overwritehost' => 'cloud.zhzxs.xyz',
'overwriteprotocol' => 'https',
'overwritewebroot' => '/',
同时,把你的域名加入 trusted_domains,防止无法登录。
✅ 至此,Nextcloud 已经通过 Docker + Apache + HTTPS 成功部署并可以正常访问。










