Docker+Nextcloud+Redis+Onlyoffice部署私有网盘
使用docker命令清除数据:使用命令 docker system prune 清理没有使用的数据,包括镜像数据,已经停止的容器等。更进一步,使用-a选项可以做深度清理。使用命令 docker system prune -a使用下述命令重启docker,如果不重启可能还是会报错。systemctl restart docker重新创建容器
经过上述处理后,我们就可以正常使用docker了。
1.创建运行目录
version: '3' volumes: nextcloud: db: redis: onlyoffice: networks: nextcloud_network: external: false services: db: # container_name: mariadb image: mariadb restart: always ports: - 3306:3306 command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed volumes: - ./db:/var/lib/mysql environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=/samj76MIuculQ== - MYSQL_PASSWORD=CbK2LXFr1KjwUQ== - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud networks: - nextcloud_network redis: image: redis:latest container_name: redis restart: always #command: redis-server --requirepass OOhYCOxKh64UaA== command: redis-server /etc/redis/redis.conf --appendonly yes volumes: - ./redis/redis.conf:/etc/redis/redis.conf:rw - ./redis/data:/data:rw networks: - nextcloud_network onlyoffice: image: onlyoffice/documentserver container_name: onlyoffice ports: - 9001:80 - 9002:443 volumes: - ./onlyoffice/logs:/var/log/onlyoffice - ./onlyoffice/data:/var/www/onlyoffice/Data - ./onlyoffice/lib:/var/lib/onlyoffice - ./onlyoffice/db:/var/lib/postgresql restart: always #是否使用终端标准输入 stdin_open: true #是否存在终端 tty: true networks: - nextcloud_network app: container_name: nextcloud image: nextcloud restart: always ports: - 8080:80 - 4443:443 links: - db - redis - onlyoffice volumes: - ./nextcloud:/var/www/html environment: - MYSQL_PASSWORD=CbK2LXFr1KjwUQ== - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_HOST=db - REDIS_HOST_PASSWORD=OOhYCOxKh64UaA== depends_on: - db - redis - onlyoffice networks: - nextcloud_network
2.在目录下创建redis目录,放入redis.conf配置文件
[root@nextcloud nextcloud]# tree -L 1 . ├── db ├── docker-compose.yml ├── nextcloud ├── onlyoffice └── redis
redis.conf配置文件内容如下:
daemonize no appendonly yes bind 0.0.0.0 timeout 0 requirepass OOhYCOxKh64UaA== protected-mode no pidfile /var/run/redis.pid port 6379 tcp-backlog 511 tcp-keepalive 0 loglevel notice logfile "" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir ./ slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes
3.使用docker-compose命令启动
docker-compose up -d
4.如果号码没有国家代码,请添加“默认电话区域”,并加上希望使用的区域对应的ISO 3166-1代码。
#在倒数第二行添加 'default_phone_region' => 'CN',
5.为了消除“此实例中的 php-imagick 模块不支持 SVG。” ,可使用以下命令进入容器内安装
docker exec -it nextcloud /bin/bash apt-get update apt install libmagickcore-6.q16-6-extra
6.添加redis缓存
'memcache.local' => '\\OC\\Memcache\\Redis', 'memcache.distributed' => '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array( 'host' => 'redis', 'port' => 6379, 'password' => 'OOhYCOxKh64UaA==', ), 'filelocking.enabled' => 'true',
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' => 'ockq5ex7xds1', 'passwordsalt' => '14vHKnesBIjUzm81y6Rfygk7JRDg3e', 'secret' => '1C2DRiF0zx75tGJCX4fqMBA/qJBB9Cx2RweGtIyuznyy5ev7', 'trusted_domains' => array ( 0 => '192.168.200.53:8080', ), 'datadirectory' => '/var/www/html/data', 'dbtype' => 'mysql', 'version' => '23.0.0.10', 'overwrite.cli.url' => 'http://192.168.200.53:8080', 'dbname' => 'nextcloud', 'dbhost' => 'db', 'dbport' => '', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'nextcloud', 'dbpassword' => 'CbK2LXFr1KjwUQ==', 'installed' => true, 'default_phone_region' => 'CN', 'memcache.local' => '\\OC\\Memcache\\Redis', 'memcache.distributed' => '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array( 'host' => 'redis', 'port' => 6379, 'password' => 'OOhYCOxKh64UaA==', ), 'filelocking.enabled' => 'true', );
7.onlyoffice插件安装
nextcloud应用商店如果加载不出来,使用APP商店国内镜像
nextcloud应用商店国内源:
(1)镜像地址:https://www.orcy.net/ncapps/v1/
(2)github链接加速代理的镜像:https://www.orcy.net/ncapps/v2/
说明:
v1镜像仅提供目录列表的镜像,实际的下载地址还是官方的github地址。
v2镜像使用加速代理了官方的github地址。
'appstoreenabled' => true, 'appstoreurl' => 'https://www.orcy.net/ncapps/v1/',
如果插件下载不下来:
下载插件地址:
国内的环境下载速度也可以。
onlyoffice:https://apps.nextcloud.com/apps/onlyoffice
Community Document Server:https://apps.nextcloud.com/apps/documentserver_community
上传插件
进入工作目录:
work=~/docker/nextcloud && cd $work/app/apps/
上传好压缩文件,然后用这些命令解压
sudo tar zvfx onlyoffice.tar.gz sudo tar zvfx documentserver_community.tar.gz
然后改为www-data所有:
#www-data:root, www-data:www-data这些应该都行。反正要www-data这个用户 sudo chown -R 33:33 ./onlyoffice/ sudo chown -R 33:33 ./documentserver_community/
最后重启Nextcloud
打开网址:https://apps.nextcloud.com/apps/onlyoffice
进入目录解压缩改权限:
[root@localhost apps]# pwd /root/nextcloud/nextcloud/apps [root@localhost apps]# tar xf onlyoffice.tar.gz [root@localhost apps]# rm -rf onlyoffice.tar.gz [root@localhost apps]# chown -R 33:root onlyoffice/
备注:
docker-compose.yml文件里面把数据库换成mysql:
mysql: container_name: mysql image: mysql:8.0 command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW networks: cloudnetwork: ports: - 33307:3306 volumes: - "./db:/var/lib/mysql" #./db是数据库持久化目录,可以修改 environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: 1qaz@WSX3edc MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: 1qaz@WSX3edc command: --default-authentication-plugin=mysql_native_password deploy: #resources: # limits: # cpus: '1' # memory: 0.5G # reservations: # cpus: '0.01' # memory: 2M restart: always