zoukankan      html  css  js  c++  java
  • 使用Docker搭建Nextcloud SSL站点

    1.启动mariadb

    docker run -d 
    --name mysql   
    -e MYSQL_ROOT_PASSWORD=<你的mysql密码> 
    -p 13306:3306 
    -v /docker/volumns/mysql/data:/var/lib/mysql  
    --restart unless-stopped 
    mariadb:10.4.7-bionic
    
    

    2.启动nextcloud-fpm

    docker run -d 
    --name nextcloud 
    -v /mnt/hdd2/nextcloud/html:/var/www/html 
    -v /mnt/hdd2/nextcloud/custom_apps:/var/www/html/custom_apps 
    -v /mnt/hdd2/nextcloud/config:/var/www/html/config 
    -v /mnt/hdd2/nextcloud/data:/var/www/html/data 
    --link mysql:mysql 
    --restart unless-stopped 
    nextcloud:16.0.4-fpm
    

    3.启动nginx

    1.nginx配置

    1.将ssl证书放入宿主机/docker/volumns/nginx/ssl_certs 目录下
    2.将下方配置文件放入宿主机/docker/volumns/nginx/conf.d目录下,并以.conf为后缀

    upstream php-handler {
        server nextcloud:9000;
    
    }
    
    server {
        listen 80;
        listen [::]:80;
        server_name  <你的站点地址>;
        # enforce https
        return 301 https://$server_name:443$request_uri;
    }
    
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name <你的站点地址>;
    
        # Use Mozilla's guidelines for SSL/TLS settings
        # https://mozilla.github.io/server-side-tls/ssl-config-generator/
        # NOTE: some settings below might be redundant
        ssl_certificate /etc/nginx/ssl_certs/<你的SSL证书>.pem;
        ssl_certificate_key /etc/nginx/ssl_certs/<你的SSL证书>.key;
    
        # Add headers to serve security related headers
        # Before enabling Strict-Transport-Security headers please read into this
        # topic first.
        #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
        #
        # WARNING: Only add the preload option once you read about
        # the consequences in https://hstspreload.org/. This option
        # will add the domain to a hardcoded list that is shipped
        # in all major browsers and getting removed from this list
        # could take several months.
        add_header X-Content-Type-Options nosniff;
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        add_header Referrer-Policy no-referrer;
        add_header Strict-Transport-Security  15552000;
       # add_header X-Frame-Options SAMEORIGIN;
    
    
        # Remove X-Powered-By, which is an information leak
        fastcgi_hide_header X-Powered-By;
    
        # Path to the root of your installation
        root /var/www/html;
    
    
    
        # The following 2 rules are only needed for the user_webfinger app.
        # Uncomment it if you're planning to use this app.
        #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
        #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
    
        # The following rule is only needed for the Social app.
        # Uncomment it if you're planning to use this app.
        #rewrite ^/.well-known/webfinger /public.php?service=webfinger last;
    
        location = /.well-known/carddav {
          return 301 $scheme://$host:$server_port/remote.php/dav;
        }
        location = /.well-known/caldav {
          return 301 $scheme://$host:$server_port/remote.php/dav;
        }
    
        # set max upload size
        client_max_body_size 512M;
        fastcgi_buffers 64 4K;
    
        # Enable gzip but do not remove ETag headers
        gzip on;
        gzip_vary on;
        gzip_comp_level 4;
        gzip_min_length 256;
        gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
        gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
    
        # Uncomment if your server is build with the ngx_pagespeed module
        # This module is currently not supported.
        #pagespeed off;
    
        location / {
            rewrite ^ /index.php$request_uri;
        }
    
        location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
            deny all;
        }
        location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
            deny all;
        }
    
        location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[ms]-provider/.+).php(?:$|/) {
            fastcgi_split_path_info ^(.+?.php)(/.*|)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on;
            # Avoid sending the security headers twice
            fastcgi_param modHeadersAvailable true;
            # Enable pretty urls
            fastcgi_param front_controller_active true;
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }
    
        location ~ ^/(?:updater|oc[ms]-provider)(?:$|/) {
            try_files $uri/ =404;
            index index.php;
        }
    
        # Adding the cache control header for js, css and map files
        # Make sure it is BELOW the PHP block
        location ~ .(?:css|js|woff2?|svg|gif|map)$ {
            try_files $uri /index.php$request_uri;
            add_header Cache-Control "public, max-age=15778463";
            # Add headers to serve security related headers (It is intended to
            # have those duplicated to the ones above)
            # Before enabling Strict-Transport-Security headers please read into
            # this topic first.
            #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
            #
            # WARNING: Only add the preload option once you read about
            # the consequences in https://hstspreload.org/. This option
            # will add the domain to a hardcoded list that is shipped
            # in all major browsers and getting removed from this list
            # could take several months.
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1; mode=block";
            add_header X-Robots-Tag none;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
            add_header Referrer-Policy no-referrer;
    
            # Optional: Don't log access to assets
            access_log off;
        }
    
        location ~ .(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
            try_files $uri /index.php$request_uri;
            # Optional: Don't log access to other assets
            access_log off;
        }
    }
    
    
    

    2.启动nginx

    docker run -d   
    --name nginx 
    -p 80:80  -p 443:443 
    -v /mnt/hdd2/nextcloud/html:/var/www/html 
    -v /docker/volumns/nginx/conf.d:/etc/nginx/conf.d  
    -v /docker/volumns/nginx/ssl_certs:/etc/nginx/ssl_certs 
    --link mysql:mysql  
    --link nextcloud:nextcloud 
    --restart unless-stopped 
    nginx
    

    4.Nextcloud安装

    打开浏览器输入https://<你的站点地址>/index.php

    根据 --link mysql:mysql ,数据库主机地址中填写“mysql”

    5.Nextcloud更新

    1.删除容器和程序

    docker stop nginx nextcloud
    docker rm nginx nextcloud
    rm -rvf /mnt/hdd2/nextcloud/html
    

    2.启动服务

    docker run -d 
    --name nextcloud 
    -v /mnt/hdd2/nextcloud/html:/var/www/html 
    -v /mnt/hdd2/nextcloud/custom_apps:/var/www/html/custom_apps 
    -v /mnt/hdd2/nextcloud/config:/var/www/html/config 
    -v /mnt/hdd2/nextcloud/data:/var/www/html/data 
    --link mysql:mysql 
    --restart unless-stopped 
    nextcloud:17.0.0beta2-fpm
    
    docker run -d   
    --name nginx 
    -p 80:80  -p 443:443 
    -v /mnt/hdd2/nextcloud/html:/var/www/html 
    -v /docker/volumns/nginx/conf.d:/etc/nginx/conf.d  
    -v /docker/volumns/nginx/ssl_certs:/etc/nginx/ssl_certs 
    --link mysql:mysql  
    --link nextcloud:nextcloud 
    --restart unless-stopped 
    nginx
    

    使用nextcloud:17.0.0beta2-fpm,需要在nginx配置中注释掉的 X-Frame-Options 启用

    add_header X-Frame-Options SAMEORIGIN;

    Have Fun!

  • 相关阅读:
    Struts2+Spring3+Mybatis3开发环境搭建
    spring+struts2+mybatis
    【LeetCode】Populating Next Right Pointers in Each Node
    【LeetCode】Remove Duplicates from Sorted Array
    【LeetCode】Remove Duplicates from Sorted Array II
    【LeetCode】Binary Tree Inorder Traversal
    【LeetCode】Merge Two Sorted Lists
    【LeetCode】Reverse Integer
    【LeetCode】Same Tree
    【LeetCode】Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/backtracker/p/11421955.html
Copyright © 2011-2022 走看看