威联通的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里面选择创建,然后点击右边的加号,添加应用程序
Y4BNP6_A5X1B2{K[FY2IDLP.png
粘贴完之后可以点击一下验证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',
Last modification:April 17th, 2024 at 11:12 am
如果觉得我的文章对你有用,请随意赞赏