NextCloud搭建及优化
一、安装
-
编写docker-compose.yml
version: "3" services: nextcloud: image: nextcloud container_name: nextcloud # 取个名字,后面需要 restart: unless-stopped ports: - 6092:80 # 端口 volumes: - /data:/var/www/html # 挂载路径,一定要空目录,我的数据全被覆盖了,欲哭无泪。 environment: - MYSQL_PASSWORD=123456 - MYSQL_DATABASE=nextcloud - MYSQL_USER=root - MYSQL_HOST=mariadb # 数据库,存在于 下面的dbnet中 networks: default: external: true name: dbnet
-
输入IP+端口6092,发现报错。修改以前数据库yml文件。然后重新运行(记得备份)。
version: '3' services: adminer: image: adminer restart: unless-stopped command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed # 加入的行 volumes: - ${PWD}/db:/var/lib/mysql # 加入的行 ports: - 6061:8080 #6061改成自己喜欢的 mariadb: #记住这个名字,以后要用,你可以就写个db,简单 image: mariadb #mysql分支,好用就完了 restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=123456 #root密码,想要新建其他用户的,下面加参数即可,具体加什么,请移步度娘。 ports: - 3306:3306 networks: default: external: name: dbnet #前面创建的网络名称
-
现在去到登录页面应该可以进去了。
二、优化
- 进入后台任务,选择Cron
-
进入docker容器,执行定时命令
crontab -e # 命令 # 附加以下内容 */5 * * * * docker exec --user www-data nextcloud php -f cron.php
-
配置redis缓存及文件锁,可以使用以前搭建好的filebrowser,定位到挂载目录下的config中,编辑config.php,添加一下内容。
'memcache.local' => '\OC\Memcache\APCu', # 这一行 默认有 放在这让你知道往哪里加 'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => [ 'host' => 'redis', # 以前搭建好的redis,看不懂直接用i 'port' => 6379, 'dbindex' => 1, 'password' => '123456', 数据库密码 'timeout' => 1.5, ],
-
解除上传速度限制,没有达到预期的100M每秒,不过快了一倍,足以。
# 以www-data用户进入容器 docker exec -it --user www-data nextcloud bash # 直接运行下列代码 php occ config:app:set files max_chunk_size --value 0
-
还有几个优化点,比如开启https,http2等,以后再搭配caddy来开启。
三、总结
看好的私有云存储,Filerun,IfileSpace,Cloudreve,pydio。
最不看好NextCloud,老觉得臃肿,但是FileRun与pydio,官方docker镜像不支持arm64,无赖只能搭建了NextCloud(大厂,该有的都有,不想用的也有)。
Cloudreve与IfileSpace都是基于GO语言,区别在于IfileSpace有手机端,还处在发展阶段。
赖着自己树莓派8G内存,全给搭建好了,也就多占用个端口的事情,还是先放着好了。