Docker-compose安装nextcloud并通过NginxProxyManager进行反向代理
底层系统Ubuntu
1.安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
2.Docker Compose安装
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases
。
运行以下命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
要安装其他版本的 Compose,请替换 v2.2.3
将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
创建软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
docker-compose --version
cker-compose version 1.24.1, build 4667896b
如果出现网络问题,直接用浏览器下载可执行文件放到/usr/local/bin
目录下即可
3.使用Docker-compose配置nextcloud
mkdir docker
cd docker
mkdir nextcloud db
cd nextcloud
touch docker-compose.yml
vim docker-compose.yml
Docker-compose.yml文件配置:
---
version: "2"
services:
db:
image: mysql
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- /home/stone/docker/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_PASSWORD=nextcloud
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
nextcloud:
image: linuxserver/nextcloud
container_name: nextcloud
environment:
- MYSQL_PASSWORD=nextcloud
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
volumes:
- /home/stone/nextcloud:/var/www/html
networks:
- mynet
ports:
- 8080:80
restart: unless-stopped
networks:
mynet:
external:
name: mynet
docker-compose up -d # 运行
4.通过NginxProxyManager进行反向代理
如何安装NginxProxyManager请参考:https://www.shiyunhao.cn/2022/022457995.html
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-wiz-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Proto "https"; #强制开启https
proxy_set_header X-NginX-Proxy true;
#--解决转https代理后wss协议无法连接的问题
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
#proxy_set_header Connection "keep-alive";
proxy_set_header Host $http_host;
proxy_pass http://192.168.3.220:80; #使用docker的内部地址,需要在docker配置工具中查看
proxy_ssl_session_reuse off;
proxy_cache_bypass $http_upgrade;
proxy_redirect off; #重定向off=>改成http:// https://
}
配置nextcloud配置文件config.php
<?php
$CONFIG = array (
'htaccess.RewriteBase' => '/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'apps_paths' =>
array (
0 =>
array (
'path' => '/var/www/html/apps',
'url' => '/apps',
'writable' => false,
),
1 =>
array (
'path' => '/var/www/html/custom_apps',
'url' => '/custom_apps',
'writable' => true,
),
),
'instanceid' => 'oc8a3em8xmzl',
'passwordsalt' => 'qC9I1uGMSFSJ5nAkwWVXeSsNZDB4sl',
'secret' => 'PexdhN7Bj2W1FexIUzmk8QEEPPZWRt7vI3eI9H0e9WHLceWO',
'trusted_domains' =>
array (
0 => '192.168.3.220',
1 => 'nextcloud.specialstone.top:99',
),
'datadirectory' => '/var/www/html/data',
'dbtype' => 'mysql',
'version' => '23.0.2.1',
'overwriteprotocol' => 'https', # 添加这项配置
'overwrite.cli.url' => '192.168.3.220',
'dbname' => 'nextcloud',
'dbhost' => '192.168.3.1:3306',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'oc_stone4',
'dbpassword' => '9jEmmxNWkCzZNxVhLtlPh6ArTYyxsY',
'installed' => true,
);
添加信任域名: 1 => 'nextcloud.specialstone.top:99',
和'overwriteprotocol' => 'https',
评论区