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

 

posted @ 2023-11-03 16:15  春风雨露  阅读(719)  评论(0编辑  收藏  举报