Docker部署Nextcloud
安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
配置docker国内源
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后左侧菜单选中镜像加速器就可以看到你的专属地址了
vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://n5gqv0vl.mirror.aliyuncs.com"]}
完成后重新启动服务:
systemctl daemon-reload
systemctl restart docker
查看源是否配置成功
docker info
部署nextcloud
# docker创建一个名为nextcloud网络
docker create network nextcloud
# 本地创建持久卷
mkdir -p /volume1/docker/nextcloud-php-data
mkdir -p /volume1/docker/nextcloud-mysql-data
# 在 Docker 环境下为 Nextcloud 配置数据目录权限时,33:33(UID:GID)是 Nextcloud 容器内 www-data 用户的默认身份(Apache/PHP 进程运行的用户)。
# Nextcloud 官方推荐数据目录权限为 750
sudo chown -R 33:33 /volume1/docker/nextcloud-php-data
sudo chmod -R 750 /volume1/docker/nextcloud-php-data
# 运行nextcloud容器
docker run -d \
--name nextcloud-web \
--network nextcloud \
--restart=always \
-v /volume1/docker/nextcloud-php-data:/var/www/html \
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nextcloud:32.0.2-apache
# mysql容器访问目录需要的权限
sudo chown -R 999:999 /volume1/docker/nextcloud-mysql-data
sudo chmod -R 750 /volume1/docker/nextcloud-mysql-data
# 运行mysql容器
docker run -d \
--name nextcloud-mysql \
--network nextcloud \
--restart=always \
-v /volume1/docker/nextcloud-mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="Aa87654321." \
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0-debian
# 查看mysql容器logs是否正常运行
docker logs -f nextcloud-mysql
# 进入mysql容器,创建一个名为nextcloud的数据库
docker exec -it nextcloud-mysql bash
root@a6dc89b32c3c:/# mysql -u root -p
mysql> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.30 sec)
# 最后,进入web页面,数据库连接地址填"nextcloud-mysql",账号"root",密码"Aa87654321.",数据库名字"nextcloud",安装。
如果要使用https
本地安装nginx 反向代理到80端口即可,配置文件如下:
server {
listen 8062 ssl;
server_name home.itho.cn 127.0.0.1 localhost 172.16.10.10;
if ($http_host !~* ^(172\.16\.10\.10|home\.itho\.cn)(:[0-9]+)?$) {
return 444;
}
ssl_certificate /etc/nginx/conf.d/ssl/itho.cn/fullchain.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/itho.cn/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
proxy_pass http://172.16.10.221;
proxy_set_header Host 172.16.10.221;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
error_page 400 https://$host:8062$request_uri;
error_page 497 https://$host:8062$request_uri;
config/config.php需要修改一下:
'overwriteprotocol' => 'https',
'overwritehost' => 'h.itho.cn:8062',
'overwrite.cli.url' => 'https://h.itho.cn:8062',