威联通的container station可以直接用docker-compose进行安装
运行以下指令把nextclud,mariadb,redis一起安装
nextcloud:
image: linuxserver/nextcloud
container_name: nextcloud
environment:
- UID=1000
- GID=1000
- TZ=Asia/Shanghai
volumes:
- /share/xxxx/nextcloud/config:/config
- /share/xxxx/nextcloud/data:/data
expose:
- 3054
- 3058
ports:
- 3054:443/tcp
- 3058:22/tcp
restart: always
networks:
- nextcloud_network
redis:
image: redis:alpine
container_name: redis
restart: always
expose:
- 3056
ports:
- 3056:6379
restart: always
networks:
- nextcloud_network
nextcloud-db:
image: mariadb
restart: always
expose:
- 3057
ports:
- 3057:3306
volumes:
- /share/xxxx/nextcloud/mariadb:/var/lib/mysql
- /share/xxxx/nextcloud/mariadbconfig:/etc/mysql
environment:
- MYSQL_DATABASE=xxxx
- MYSQL_ROOT_PASSWORD=xxxxx
- MYSQL_USER=xxxxx
- MYSQL_PASSWORD=xxxxx
networks:
- nextcloud_network
networks:
nextcloud_network:
分别讲解三个容器的配置:
Nextcloud
nextcloud:
image: linuxserver/nextcloud #容器使用的镜像
container_name: nextcloud #容器名称,可以随意
environment:
- UID=1000 #SSH登录进去输入id,显示出来的UID
- GID=1000 #SSH登录进去输入id,显示出来的GID
- TZ=Aisa/Shanghai
volumes:
- /share/xxxx/nextcloud/config:/config #映射的路径,前面是NAS的路径,后面是容器的路径
- /share/xxxx/nextcloud/data:/data #映射的路径,前面是NAS的路径,后面是容器的路径
expose:
- 3054 #映射的端口
- 3058 #映射的端口
ports:
- 3054:443/tcp
- 3058:22/tcp
restart: always
networks:
- nextcloud_network
这里有一个坑,我是用了linuxserver/nextcloud这个镜像,一开始我是用官方的镜像,但是可能因为我水平有问题,一直折腾https反代都有问题,用这个镜像把进去容器把证书替换掉就成功了,折腾了一晚上,然后几分钟就解决了!如何替换证书我下面会说到
Mariadb
nextcloud-db:
image: mariadb
restart: always
expose:
- 3057
ports:
- 3057:3306
volumes:
- /share/xxx/nextcloud/mariadb:/var/lib/mysql
- /share/xxx/nextcloud/mariadbconfig:/etc/mysql
environment:
- MYSQL_DATABASE=nextcloud #创建的数据库的名称,这里需要创建一个nextcloud的数据库
- MYSQL_ROOT_PASSWORD=xxxxx #数据库的密码
- MYSQL_USER=xxxxx #mysql的账户
- MYSQL_PASSWORD=xxxxx #mysql账户的密码
networks:
- nextcloud_network
Redis
redis:
image: redis:alpine
container_name: redis
restart: always
expose:
- 3056
ports:
- 3056:6379
restart: always
networks:
- nextcloud_network
开始安装
进去NAS的container station里面选择创建,然后点击右边的加号,添加应用程序
粘贴完之后可以点击一下验证YAML测试一下语法是否有错误,如果通过了就可以点击应用了
然后稍等一两分钟就创建好了,这个看网络,因为会同时拉去镜像,等安装完之后如果不需要https的话就可以直接用ip:端口号访问进行配置了,如果需要https的话继续往下看
Nextcloud配置SSL
在映射的目录里面找到证书文件
/config/keys
#找到里面cert.crt和cert.key两个文件替换成自己的内容
cert.crt
cert.key
然后重启nextcloud容器
docker restart nextlcoud
然后反代一下就可以使用https了!然后直接登录进去进行配置就可以使用了
不反代也可以,证书替换之后直接把映射的443端口在路由器转发也可以.
安装踩坑
如果进入界面安装的时候nginx提示time out,编辑映射出来的/config/nginx/site-confs/default
# set max upload size
client_max_body_size 1024M;
fastcgi_buffers 64 4K;
fastcgi_connect_timeout 1200;
fastcgi_send_timeout 1200;
fastcgi_read_timeout 1200;
找到这个位置添加
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout
这三个参数
都设置成20分钟,这样就不会因为超时没有时间让他写入数据而失败了!
启用redis缓存
编辑映射出来的/config/www/nextcloud/config/config.php
'dbtype' => 'mysql',
'version' => '27.1.1.0',
'overwrite.cli.url' => 'XXX.XXX.XXX.XXX',#访问地址,带端口号
'dbname' => 'nextcloud',
'dbhost' => 'XXXXX:XXX',#数据库的IP地址带端口号
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextcloud',#数据库用户名
'dbpassword' => 'XXXXX',#数据库密码
'installed' => true,
'memcache.local' => '\\OC\\Memcache\\APCu',
'filelocking.enabled' => 'true',
'memcache.locking' => '\\OC\\Memcache\\APCu',
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array (
'host' => 'XXX.XXX.XXX.XXX',#redis地址
'port' => 3056,#redis端口号
安装之后出现跳转不带端口号
进入上一级路由的nginx配置文件
修改为一下:
server {
listen XXXX ssl;
server_name XXXXX.XXX;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_redirect off;
proxy_set_header Host $host:3054;#这里加上端口号
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_pass https://192.168.2.2:3054;
}
}
然后修改nextcloud的配置文件config.php
/nextcloud/config/www/nextcloud/config/config.php
#找到这一条,在域名后面加上端口号
'overwrite.cli.url' => 'https://XXX.XXX:3054',
16 comments
感谢博主~按照你的compose已经安装运行成功~
提醒更新:现在(2023.12.17)指定SSL证书路径,是要在config/nginx/ssl.conf里面改,而不是文章中的nginx/site-confs/default.conf了,可能是版本更新之后变了~
另外提问:nextcloud正常运行状态下,我的nextcloud_nextcloud-db_1这个docker(就是mariadb),在记录里面无限重复提示:
[Warning] Aborted connection 308 to db: 'unconnected' user: 'unauthenticated' host: 'xxx' (This connection closed normally without authentication)
然后redis那个docker也在无限重复提示:
Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection from 172.29.8.1:46058 aborted
请问下这是正常情况吗?
最新发现,这两个提示其实不是无限重复,而是每次容器重启之后,大概重复两天时间就停止了
每两次提示之间约相隔一分半钟。
1:M 22 Feb 2024 04:29:53.948 # Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection from 172.29.8.1:60934 aborted.
1:M 22 Feb 2024 04:31:19.043 # Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection from 172.29.8.1:33414 aborted.
啊哈,nextcloud容器里面也在重复提示:
PHP Warning: PHP Startup: Invalid date.timezone value 'Aisa/Shanghai', using 'UTC' instead in Unknown on line 0
而且三个容器都是正好重复了100次整!然后就清净了!上一条说的不对不是持续两天,大概就是持续几个小时而已
三个容器应该是因为同一个原因重复提示了100次。
看nextcloud容器的提示,是时区错误,然后把时区修改成了UTC,但不知为什么要修改100次。。
哈哈破案了~博主你的 - TZ=Aisa/Shanghai 写错了…… 应该是 - TZ=Asia/Shanghai 瑕不掩瑜哈
生命的意义在于折腾~哈哈,谢谢指正
大佬,即使解决了时区问题,也只是nextcloud容器里没有错误提示了。上面说的nextcloud_nextcloud-db_1以及redis两个容器的错误提示还是存在,而且似乎不会停止。有可能的话麻烦看看你的有没有错误提示。看起来,是mariadb认为自己遭到了攻击。基本上不影响使用,平时同步的速度也是很快的,但用了半年之后,nextcloud崩溃了一次,重启容器恢复正常了。不知道和这个问题有无关系。
我把数据库和redis的都贴上来吧,你对应一下看看,我的没有报错,不过我号几个月没更新版本了~不知道新版本有没有改动
我修改了config文件的代码,你对应一下看看,因为之前更新的时候我有改,当时忘记同步上来了~我的redis没有报错
sl_certificate /config/keys/XXXXX.crt; #你的证书文件路径
ssl_certificate_key /config/keys/XXXXX.key; #你的证书文件路径
关于修改ssl证书,我在阿里云上下载apache版本的证书里面有3个问题,有2个crt文件,需要用哪一个呢?
这两句指定证书的代码默认是没有的,是需要加上去的,是吧? 那2个crt文件我不晓得需要加哪个了
你可以两个都试一下..因为我不是用的阿里云的~我是用的其他的便宜的年费证书~就是直接把内容发给我~然后我写到文本里面再把文件名改成crt这种方式的~是不是有一个是crt一个是csr?csr的话是证书注册时候的验证文件~
你好,按照这个方式执行后,我的数据库一直启动不起来,总是报错。redis也启动不了
报错是报什么错呢?
请问:
networks:
- nextcloud_network
这个应该是你在container station中做了网络设置吧?具体是怎么设置的呢?
没有另外做网络设置~这个的意思就是上面全部应用都集合到这一个程序里面跑,你创建之后打开container station也是全部集合在一起运行的。里面的应用都跑在同一个内网这个意思。
请问,我使用内网穿透,用nps,如何设置?我有点蒙。
这个要看你使用的是哪一个web服务。因为我用的是nginx,所以都是nginx的教程.内网穿透的话一般都要设置端口映射,如果路由器设置没用的话还是要配置文件设置反代才行..威联通也有内置的反代设置,但是我还没折腾过这个..