• 使用 docker 部署 nextcloud


    已经有很多现成的 docker-compose 文件可以直接部署使用

    这里主要记录下如果需要分开部署的配置,可根据需要进行选择

    不一定都要配置使用或都为 nextcloud 创建新的容器,可以选择性利用现有容器共享,不过毕竟可能还是一个更隔离的环境问题更少一些

    首先不要去 nextcloud 官网找 all in one 的镜像,貌似网上没有什么是基于这个镜像做的

    请认准:https://hub.docker.com/_/nextcloud

    对应 GitHub 项目:https://github.com/nextcloud/docker

    1、使用 Redis 做为缓存

    部署 Redis

    docker run -d -p 6379:6379 \
    --restart=always \
    --name nextcloud-redis redis

    然后需要在 config/config.php 配置文件中增加或修改配置:

    <?php
    $CONFIG = array (
      //'memcache.local' => '\\OC\\Memcache\\APCu',
      'memcache.local' => '\\OC\\Memcache\\Redis',
      'memcache.distributed' => '\\OC\\Memcache\\Redis',
      'memcache.locking' => '\\OC\\Memcache\\Redis',
      'redis' => array(
        'host' => 'redis',
        'port' => 6379
      ),
      'filelocking.enabled' => 'true',
    );

    2、使用 MySQL 做为数据库

    部署 MySQL

    docker run -d -p 3306:3306 \
    --restart=always \
    -v /home/nextcloud/my.cnf:/etc/mysql/my.cnf \
    -v /home/nextcloud/mysql:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=pwdofnextcloudmysql \
    -e MYSQL_DATABASE=nextcloud \
    --name nextcloud-mysql mysql

    按此配置初始化后,在部署后需要填写的相关信息如下:

    账号:root

    密码:pwdofnextcloudmysql(请自行按需更改)

    数据库名:nextcloud

    主机名:mysql

     3、在 docker 中部署 nextcloud 容器

    将 /var/www/html 映射到宿主机,以便持久化数据

    然后链接 MySQL 和 Redis 到 nextcloud 容器以便使用 mysql 与 redis 作为别名访问(非必须,仍可通过 ip 地址访问)

    # 部署 nextcloud
    docker run -d -p 8080:80 \
    --restart=always \
    -v /home/nextcloud/html:/var/www/html \
    --link nextcloud-mysql:mysql \
    --link nextcloud-redis:redis \
    --name nextcloud nextcloud:latest

    部署后第一次初始化数据库请谨慎选择,后期不能轻易更换,官方有迁移指导,未尝试过

    1、为了消除“您的安装没有设置默认的电话区域。”的警告,需要在 config/config.php 配置文件中增加或修改配置:

    <?php
    $CONFIG = array (
      'default_phone_region' => 'CN',
    );

    2、为了消除“此实例中的 php-imagick 模块不支持 SVG。” ,可使用以下命令进入容器内安装:

    docker exec -it nextcloud /bin/bash
    apt-get update
    apt install libmagickcore-6.q16-6-extra

    如果默认的 Debian 源获取速度太慢,可以考虑找一个镜像站替换其源

    3、如果遇到网络问题,无法在 nextcloud 系统内直接下载插件,可前往:

    https://apps.nextcloud.com/

    下载离线安装包(压缩包,注意对应好版本)

    解压至 apps 或 custom_apps 目录中即可

    4、配置 nginx 做为 nextcloud 的反向代理,并使用 https 协议

    参考自:https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/reverse_proxy_configuration.html

    如果不需要 https,请自行进行相应修改吧。。

    示例配置如下:

    http {
    
        # 私有云盘 nextcloud - 测试
        server {
            listen       80;
            
            server_name  nextcloud.yourdomain.com;
    
            return 301 https://$server_name$request_uri;
        }
        server {
            listen            443 ssl;    #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
            
            server_name  nextcloud.yourdomain.com;
            
            ssl_certificate            /ssl_certs/nextcloud.yourdomain.com.pem;  # 指定证书的位置,绝对路径
            ssl_certificate_key        /ssl_certs/nextcloud.yourdomain.com.key;  # 绝对路径,同上
            ssl_session_timeout        5m;
            ssl_protocols              TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers                ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
            ssl_prefer_server_ciphers on;
    # 处理 nextcloud 要求:"Strict-Transport-Security" HTTP 头未设为至少 "15552000" 秒。 add_header Strict
    -Transport-Security "max-age=15552000; includeSubDomains"; location / { proxy_pass http://10.0.0.2:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; }
    # 处理 nextcloud 要求:处理 CardDav、CalDav 兼容性问题 location
    /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; } location /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; } } }

    然后需要在 config/config.php 配置文件中增加或修改配置:

    <?php
    $CONFIG = array (
      'overwritehost'     => 'nextcloud.yourdomain.com',
      'overwriteprotocol' => 'https',
    'overwrite.cli.url' => 'https://nextcloud.yourdomain.com',
    );

    the end...

    参考:https://blog.weiyigeek.top/2020/5-22-100.html

    https://blognas.hwb0307.com/linux/docker/234

    https://hexo.chensmallx.top/2021/04/08/nextcloud-on-docker/#Nginx%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6

  • 相关阅读:
    ETCD集群部署 和flanne网络插件通信原理介绍
    prometheus02 nodeexporter部署及使用
    docker容器的存储资源(volume)
    ActionScript 3.0 事件机制小结
    ActionScript 3.0 装饰器模式实例
    固定头和底,中间部分自适应布局
    ActionScript 3.0 MVC模式小实例
    A*算法的Actionscript3.0实例
    [Database]sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
    在phpstorm中svn的使用
  • 原文地址:https://www.cnblogs.com/xwgli/p/16512462.html
Copyright © 2020-2023  润新知