docker配置安装nextcloud
进入root用户进行操作
docker安装配置
centos7系统,先安装docker
1
yum install docker -y
开启docker、开机自启
1
systemctl start docker && systemctl enable docker
修改docker路径
尽量把docker放置在其他目录,这样就不用修改nextcloud的目录了,这里使用软连接 如果你开启了docker,停止它
1
systemctl stop docker
如果你准备把docker放在/home/data
将默认路径的文件移动到这里
1
mv /var/lib/docker/ /home/data
然后创建软链接
1
ln -s /home/data/docker /var/lib/docker
开启
1
systemctl start docker
查看
1
docker info
docker初步使用
查看docker安装了那些软件
1
docker ps -a
全部配置完成以后大概这样
1
2
3
4CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
62f9f2f1d55a nextcloud "/entrypoint.sh ap..." 3 weeks ago Up 2 weeks 0.0.0.0:80->80/tcp nextcloud
ec43a5255a01 mysql "docker-entrypoint..." 3 weeks ago Up 3 weeks 33060/tcp, 0.0.0.0:33306->3306/tcp nextcloud_db
f65c0ab8e2ba portainer/portainer "/portainer" 3 weeks ago Up 3 weeks 0.0.0.0:9000->9000/tcp prtainer强制删除某个coker软件(即使它在运行)
1
docker rm -f 这里是CONTAINER ID 或者 NAMES
开始某个coker软件
1
docker start 这里是CONTAINER ID 或者 NAMES
停止某个docker软件
1
docker stop 这里是CONTAINER ID 或者 NAMES
可视化
其实都可以用 portainer
完成以上操作
目前数据 /data
连接到 /home/data/docker_apps/portainer
1 | docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /home/data/docker_apps/portainer:/data portainer/portainer-ce |
更新
1 | docker stop portainer && docker rm portainer && docker pull portainer/portainer-ce |
然后运行上面的,重新创建
浏览器打开 localhost:9000
依赖
需要 mysql
redis
docker安装mysql
mysql密码12345678,端口3306,这个只是在服务器上或者端口转发时可以访问,不要对外公开,外部文件夹
/home/data/docker_apps/mysql
,防止重新创建时数据丢失
1 | docker run -d --name mysql --restart always --security-opt seccomp=unconfined -p 33306:3306 -v /home/data/docker_apps/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=12345678 mysql |
redis
可以加速
1 | docker run -d --restart always --privileged=true -p 6379:6379 -v /home/data/docker_apps/redis/redis.conf:/etc/redis/redis.conf -v /home/data/docker_apps/redis/data:/data --name redis redis:latest redis-server /etc/redis/redis.conf --appendonly yes --requirepass '12345678' |
docker安装nextcloud
- docker外部端口为81,主机为db,外部文件夹为
/home/data/docker_apps/nextcloud
,方便以后转移或者备份文件
1 | docker run -d --name=nextcloud --link mysql:mysql --link redis:redis -p 81:80 --restart always -v /home/data/docker_apps/nextcloud:/var/www/html docker.io/nextcloud:latest |
直接连接到 redis
和 mysql
了,不需要单独配置数据库
初始化
此时如果使用vscode的ssh插件远程到服务器上,在vscode的远程插件左下角端口转发80,点击会跳转浏览器,即在电脑浏览器打开了 http://localhost:81/ ,此时可以初始化,数据库选择mysql
注意!
最后一项主机名填写 db,密码12345678
配置
进入docker命令行
1
docker exec -it nextcloud /bin/bash
编辑nextcloud配置文件
如果没有vim,请安装
1
apt update && apt upgrade -y && apt install vim
1
vim config/config.php
找到
trusted_domains
这一行,下面应该有一行0 => 'ip地址'
,在它下面添加域名即可1
1 => '域名'
配置网址二级目录
因为主页一般都有用,所以设置二级目录即域名/nc
完整配置
注意把 你的域名
改为 真实域名,大部分都是自动生成的,把里面所有中文,都按照自己的改一下,有些自动生成的不用管
主要需要改的
- trusted_domains: 信任的域名
- overwrite.cli.url: 完整网址
- overwritehost: 域名
- overwritewebroot: 二级目录
- mail_*:邮箱相关,发通知或普通用户找回密码
- memcache* redis:加速
1 | <?php |
ssl
可以在docker外的nginx配置如下,实现ssl,注意填写自己的文件夹
/etc/letsencrypt/live/域名/
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
52server {
listen 315 ssl;
server_name 你的域名;
ssl_certificate /etc/letsencrypt/live/一般是你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/一般是你的域名/privkey.pem;
location / {
add_header Strict-Transport-Security "max-age=15768000;preload;";
#一级目录这里是你其他的主页
#proxy_pass http://localhost:81;
}
# 按照二级目录配置的nextcloud
location = /.well-known/carddav {
return 301 https://$server_name/nc/remote.php/dav;
}
location = /.well-known/caldav {
return 301 https://$server_name/nc/remote.php/dav;
}
location = /.well-known/host-meta {
return 301 https://$server_name/nc/public.php?service=host-meta;
}
location = /.well-known/host-meta.json {
return 301 https://$server_name/nc/public.php?service=host-meta-json;
}
location = /.well-known/webfinger {
return 301 https://$server_name/nc/index.php/.well-known/webfinger;
}
location = /.well-known/nodeinfo {
return 301 https://$server_name/nc/index.php/.well-known/nodeinfo;
}
location /nc/ {
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload;" always;
proxy_pass http://localhost:81/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
其他
定期刷新
1 | crontab -e |
1 | # docker中nextcloud后台任务刷新 |
ssl
其中letsencrypt可以使用 certbot
3个月有效期,定时任务自动刷新 /home/data/www
是你的主页文件根目录
1 | certbot certonly --webroot -w /home/data/www -d icpcs.lzu.edu.cn |
1 | crontab -e |
1 | # https自动更新证书 |
本文作者:yuhldr
本文地址: https://yuhldr.github.io/posts/26277.html
版权声明:转载请注明出处!