Initial commit
This commit is contained in:
		
							
								
								
									
										9
									
								
								README.copy-userdata-to-new-installation
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								README.copy-userdata-to-new-installation
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | # ================= | ||||||
|  | # Copy existing user data to new pad | ||||||
|  | # ================= | ||||||
|  |  | ||||||
|  |  | ||||||
|  | backup_date="2019-11-03-0036" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | cp -a  /var/www/cryptpad.BAK.${backup_date}/{blob,blobstage,block,datastore} /var/www/cryptpad/ | ||||||
							
								
								
									
										363
									
								
								README.install
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										363
									
								
								README.install
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,363 @@ | |||||||
|  | # ================= | ||||||
|  | # - Install Cryptad on Debian 9 (stretch) | ||||||
|  | # ================= | ||||||
|  |  | ||||||
|  | # - See:  | ||||||
|  | # -    https://blog.cavebeat.org/2017/07/cryptpad-installation-on-debian-stretch/ | ||||||
|  | # - | ||||||
|  | # - See also: | ||||||
|  | # -    git repository:     https://github.com/xwiki-labs/cryptpad | ||||||
|  | # -    installation guide: https://github.com/xwiki-labs/cryptpad/wiki/Installation-guide | ||||||
|  | # -  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # ---------- | ||||||
|  | # - Pre-requisites | ||||||
|  | # ---------- | ||||||
|  |  | ||||||
|  | # - Install curl, git | ||||||
|  | # - | ||||||
|  | apt-get install curl git-core | ||||||
|  |  | ||||||
|  | # - Install Python | ||||||
|  | # - | ||||||
|  | apt-get install python-minimal python | ||||||
|  |  | ||||||
|  | # - Install compiler stuff | ||||||
|  | # - | ||||||
|  | # -    apt-get install -y g++ g++-multilib gcc gcc-multilib cpp \ | ||||||
|  | # -       make automake autoconf libtool flex bison \ | ||||||
|  | # -       gettext pkg-config gnu-standards \ | ||||||
|  | # -       libssl-dev libreadline-dev libncurses-dev | ||||||
|  | # - | ||||||
|  | apt-get install gcc g++ make | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # --- | ||||||
|  | # - Install Nginx webservice | ||||||
|  | # --- | ||||||
|  |  | ||||||
|  | apt-get install nginx | ||||||
|  |  | ||||||
|  | # - Generate Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits | ||||||
|  | # - | ||||||
|  | mkdir /etc/nginx/ssl | ||||||
|  | openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 | ||||||
|  |  | ||||||
|  | # - Create nginx configuration for CryptPad | ||||||
|  | # - | ||||||
|  | cryptpad_url=cpad-01.oopen.de | ||||||
|  |  | ||||||
|  | cat <<EOF > cpad-01.oopen.de.conf | ||||||
|  | # -- $cryptpad_url | ||||||
|  |  | ||||||
|  | server { | ||||||
|  |    listen 80; | ||||||
|  |    listen [::]:80; | ||||||
|  |    server_name $cryptpad_url; | ||||||
|  |    return 301 https://\$server_name\$request_uri; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | server { | ||||||
|  |  | ||||||
|  |    listen 443 ssl http2; | ||||||
|  |    listen [::]:443 ssl http2; | ||||||
|  |  | ||||||
|  |    server_name $cryptpad_url; | ||||||
|  |  | ||||||
|  |    ssl_certificate /var/lib/dehydrated/certs/$cryptpad_url/fullchain.pem; | ||||||
|  |    ssl_certificate_key /var/lib/dehydrated/certs/$cryptpad_url/privkey.pem; | ||||||
|  |    #ssl_trusted_certificate /var/lib/dehydrated/certs/$cryptpad_url/fullchain.pem; | ||||||
|  |  | ||||||
|  |    # - Needed for (automated) updating certificate | ||||||
|  |    # - | ||||||
|  |    include snippets/letsencrypt-acme-challenge.conf; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits | ||||||
|  |    # | ||||||
|  |    # To generate a dhparam.pem file, run in a terminal | ||||||
|  |    #    openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 | ||||||
|  |    # | ||||||
|  |    ssl_dhparam /etc/nginx/ssl/dhparam.pem; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    # Eable session resumption to improve https performance | ||||||
|  |    ssl_session_cache shared:SSL:50m; | ||||||
|  |    ssl_session_timeout 10m; | ||||||
|  |    ssl_session_tickets off; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE | ||||||
|  |  | ||||||
|  |    # ECDHE better than DHE (faster)  ECDHE & DHE GCM better than CBC (attacks on AES) | ||||||
|  |    # Everything better than SHA1 (deprecated) | ||||||
|  |    # | ||||||
|  |    ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA'; | ||||||
|  |    ssl_prefer_server_ciphers on; | ||||||
|  |  | ||||||
|  |    add_header Strict-Transport-Security "max-age=31536000" always; | ||||||
|  |    add_header X-XSS-Protection "1; mode=block"; | ||||||
|  |    add_header X-Content-Type-Options nosniff; | ||||||
|  |    #add_header X-Frame-Options "SAMEORIGIN"; | ||||||
|  |  | ||||||
|  |    root /var/www/cryptpad; | ||||||
|  |    index index.html; | ||||||
|  |    error_page 404 /customize.dist/404.html; | ||||||
|  |  | ||||||
|  | 	if (\$args ~ ver=) { | ||||||
|  | 		set \$cacheControl max-age=31536000; | ||||||
|  | 	} | ||||||
|  | 	# Will not set any header if it is emptystring | ||||||
|  |    # | ||||||
|  | 	add_header Cache-Control \$cacheControl; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    # - Does not work with CKEditor and OnlyOffice | ||||||
|  |    # - | ||||||
|  |    #set \$styleSrc    "'unsafe-inline' 'self' $cryptpad_url"; | ||||||
|  |    #set \$scriptSrc   "'self' $cryptpad_url"; | ||||||
|  |    #set \$connectSrc  "'self' https://$cryptpad_url wss://$cryptpad_url $cryptpad_url https://api.$cryptpad_url blob: $cryptpad_url"; | ||||||
|  |    #set \$fontSrc     "'self' data: $cryptpad_url"; | ||||||
|  |    #set \$imgSrc      "'self' data: * blob: $cryptpad_url"; | ||||||
|  |    #set \$frameSrc    "'self' $cryptpad_url blob: $cryptpad_url"; | ||||||
|  |    #set \$mediaSrc    "'self' data: * blob: $cryptpad_url"; | ||||||
|  |    #set \$childSrc    "https://$cryptpad_url"; | ||||||
|  |    #set \$workerSrc   "https://$cryptpad_url"; | ||||||
|  |    # | ||||||
|  |    #set \$unsafe 0; | ||||||
|  |    #if (\$uri = "/pad/inner.html") { set \$unsafe 1; } | ||||||
|  |    #if (\$uri = "/sheet/inner.html") { set \$unsafe 1; } | ||||||
|  |    #if (\$uri = "/common/onlyoffice/web-apps/apps/spreadsheeteditor/main/index.html") { set \$unsafe 1; } | ||||||
|  |    #if (\$host != sandbox.cryptpad.info) { set \$unsafe 0; } | ||||||
|  |    #if (\$unsafe) { | ||||||
|  |    #   set \$scriptSrc "'self' 'unsafe-eval' 'unsafe-inline' $cryptpad_url"; | ||||||
|  |    #} | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    # - Make CKEditor and OnlyOffice working | ||||||
|  |    # - | ||||||
|  |    # - See /var/www/cryptpad/config.js (contentSecurity,padContentSecurity, ooContentSecurity) | ||||||
|  |    # - | ||||||
|  |    set \$styleSrc    "'unsafe-inline' 'self' $cryptpad_url"; | ||||||
|  |    set \$scriptSrc   "'self' 'unsafe-eval' 'unsafe-inline' $cryptpad_url"; | ||||||
|  |    set \$connectSrc  "'self' ws: wss: $cryptpad_url"; | ||||||
|  |    set \$fontSrc     "'self' data: $cryptpad_url"; | ||||||
|  |    set \$imgSrc      " * blob:"; | ||||||
|  |    set \$frameSrc    "*"; | ||||||
|  |    set \$mediaSrc    "'self' data: * blob: $cryptpad_url"; | ||||||
|  |    set \$childSrc    *; | ||||||
|  |    set \$workerSrc   "https://$cryptpad_url"; | ||||||
|  |  | ||||||
|  |    add_header Content-Security-Policy "default-src 'none'; child-src \$childSrc; worker-src \$workerSrc; media-src \$mediaSrc; style-src \$styleSrc; script-src \$scriptSrc; connect-src \$connectSrc; font-src \$fontSrc; img-src \$imgSrc; frame-src \$frameSrc;"; | ||||||
|  |  | ||||||
|  |    location ^~ /cryptpad_websocket { | ||||||
|  |       proxy_pass http://localhost:3000; | ||||||
|  |       proxy_set_header X-Real-IP \$remote_addr; | ||||||
|  |       proxy_set_header Host \$host; | ||||||
|  |       proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; | ||||||
|  |  | ||||||
|  |       # WebSocket support (nginx 1.4) | ||||||
|  |       proxy_http_version 1.1; | ||||||
|  |       proxy_set_header Upgrade \$http_upgrade; | ||||||
|  |       proxy_set_header Connection upgrade; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ^~ /customize.dist/ { | ||||||
|  |       # This is needed in order to prevent infinite recursion between /customize/ and the root | ||||||
|  |    } | ||||||
|  |    location ^~ /customize/ { | ||||||
|  |       rewrite ^/customize/(.*)\$ \$1 break; | ||||||
|  |       try_files /customize/\$uri /customize.dist/\$uri; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location = /api/config { | ||||||
|  |       proxy_pass http://localhost:3000; | ||||||
|  |       proxy_set_header X-Real-IP \$remote_addr; | ||||||
|  |       proxy_set_header Host \$host; | ||||||
|  |       proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ^~ /blob/ { | ||||||
|  |       add_header Cache-Control max-age=31536000; | ||||||
|  |       try_files \$uri =404; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ^~ /block/ { | ||||||
|  |       add_header Cache-Control max-age=0; | ||||||
|  |       try_files \$uri =404; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ^~ /datastore/ { | ||||||
|  |       add_header Cache-Control max-age=0; | ||||||
|  |       try_files \$uri =404; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ~ ^/(register|login|settings|user|pad|drive|poll|slide|code|whiteboard|file|media|profile|contacts|todo|filepicker|debug|kanban|sheet)\$ { | ||||||
|  |       rewrite ^(.*)\$ \$1/ redirect; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    try_files /www/\$uri /www/\$uri/index.html /customize/\$uri; | ||||||
|  |  | ||||||
|  | } | ||||||
|  | EOF | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # --- | ||||||
|  | # - Install NodeJS v6.x on Debian 9 Stretch | ||||||
|  | # --- | ||||||
|  |  | ||||||
|  | # - Creates the apt sources list file '/etc/apt/sources.list.d/nodesource.list' for  | ||||||
|  | # - the NodeSource Node.js v6.x and also adds the NodeSource signing key to your keyring | ||||||
|  | # - | ||||||
|  | curl -sL https://deb.nodesource.com/setup_6.x | bash - | ||||||
|  | apt-get update | ||||||
|  |  | ||||||
|  | # - Install nodejs version 6.x from repository 'deb.nodesource.com' | ||||||
|  | # - | ||||||
|  |  | ||||||
|  | # - Tell the apt system to install nodejs from repository deb.nodesource.com | ||||||
|  | # - | ||||||
|  | # - You should pin the external source using the origin option to assign a high  | ||||||
|  | # - priority to "the external source" instead of using the release name. | ||||||
|  | # - | ||||||
|  | # - e,g: Add the following lines to your /etc/apt/preferences.d/preferences: | ||||||
|  | # - | ||||||
|  | # -    Package: * | ||||||
|  | # -    Pin: origin deb.nodesource.com | ||||||
|  | # -    Pin-Priority: 1001 | ||||||
|  | # - | ||||||
|  | if ! $(grep -E -q "^\s*Pin:\s+origin\s+deb.nodesource.com" /etc/apt/preferences.d/preferences) ; then | ||||||
|  |    cat <<EOF >> /etc/apt/preferences.d/preferences | ||||||
|  | Package: * | ||||||
|  | Pin: origin deb.nodesource.com | ||||||
|  | Pin-Priority: 1001 | ||||||
|  | EOF | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # - Install nodejs.. | ||||||
|  | # - | ||||||
|  | apt-get install nodejs | ||||||
|  |  | ||||||
|  | # - An alternative possibility: | ||||||
|  | # - | ||||||
|  | # - 1. Show versions for nodejs | ||||||
|  | # - | ||||||
|  | # -    # aptitude versions nodejs | ||||||
|  | # - | ||||||
|  | # -    output may looks like: | ||||||
|  | # - | ||||||
|  | # -       i   6.14.4-1nodesource1                                     <NULL>                              500 | ||||||
|  | # -       p   10.15.2~dfsg-2                                          stable                              500 | ||||||
|  | # - | ||||||
|  | # - 2. install nodejs 6.14.4-1nodesource1 | ||||||
|  | # - | ||||||
|  | # -    apt-get install nodejs=6.14.4-1nodesource1 | ||||||
|  | # -                    ^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||||
|  | # - | ||||||
|  |  | ||||||
|  | # - Test if installation was successfully | ||||||
|  | # - | ||||||
|  | node -v | ||||||
|  | npm -v | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # --- | ||||||
|  | # - Install bower | ||||||
|  | # --- | ||||||
|  |  | ||||||
|  | # - Install bower (global) | ||||||
|  | # - | ||||||
|  | npm install -g bower | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # --- | ||||||
|  | # - Install cryptpad | ||||||
|  | # --- | ||||||
|  |  | ||||||
|  | cd /var/www | ||||||
|  |  | ||||||
|  | # - Create needed folders | ||||||
|  | # - | ||||||
|  | mkdir /var/www/{.cache,.config,.local,.node-gyp,.npm} | ||||||
|  | chown www-data:www-data /var/www/{.cache,.config,.local,.node-gyp,.npm} | ||||||
|  |  | ||||||
|  | # - Get cryptpad | ||||||
|  | # - | ||||||
|  | git clone https://github.com/xwiki-labs/cryptpad | ||||||
|  | chown -R www-data:www-data cryptpad | ||||||
|  | cd cryptpad | ||||||
|  |  | ||||||
|  | # - Complete Installation of cryptpad | ||||||
|  | # - | ||||||
|  | su www-data -s /bin/bash -c "npm install" | ||||||
|  |  | ||||||
|  | su www-data -s /bin/bash -c "bower install" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # --- | ||||||
|  | # - Configure CryptPad | ||||||
|  | # --- | ||||||
|  |  | ||||||
|  | # - Create configuration file 'config.js'. (Copy the example file) | ||||||
|  | # - | ||||||
|  | # - The defaults should be good enough for most cases, but you may want to edit | ||||||
|  | # - them. We recommend you read over the example file and change the values to | ||||||
|  | # - fit your needs. | ||||||
|  | cp -a config/config.example.js config/config.js | ||||||
|  |  | ||||||
|  | # - Some base configuration | ||||||
|  | # - | ||||||
|  | # -    adminEmail: 'admin.de', | ||||||
|  | # -    ... | ||||||
|  | # -    myDomain: oopen.de, | ||||||
|  | # - | ||||||
|  | perl -i -n -p -e"s#(\s*)(adminEmail:.*)#\1// \2\n\1adminEmail: 'admin@oopen.de',#" /var/www/cryptpad/config/config.js | ||||||
|  | perl -i -n -p -e"s#(\s*)(myDomain:.*)#\1// \2\n\1myDomain: oopen.de,#" /var/www/cryptpad/config/config.js | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # - Customizing CryptPad | ||||||
|  | # - | ||||||
|  | # - In order allow a variety of features to be changed and to allow site-specific | ||||||
|  | # - changes to CryptPad apps while still keeping the git repository pristine, this | ||||||
|  | # - directory exists to allow a set of hooks to be run. | ||||||
|  | # - | ||||||
|  | # - The server is configured to load files from the '/customize/' path | ||||||
|  | # - preferentially from 'cryptpad/customize/', and to fall back to  | ||||||
|  | # - 'cryptpad/customize.dist/' if they are not found. | ||||||
|  | # - | ||||||
|  | # - If you wish to customize cryptpad, please **copy** | ||||||
|  | # - '/customize.dist/' to '/customize' and then edit it there, this way you will | ||||||
|  | # - still be able to pull from (and make pull requests to (!) the git repository. | ||||||
|  | # - | ||||||
|  | cp -a /var/www/cryptpad/customize.dist /var/www/cryptpad/customize | ||||||
|  |  | ||||||
|  | # - Copy 'favicon.ico' to '/var/www/cryptpad/customize/main-favicon.png' | ||||||
|  | # - | ||||||
|  | cp ~chris/favicon.ico /var/www/cryptpad/customize/main-favicon.png | ||||||
|  |  | ||||||
|  | # - Run as daemon using systemd | ||||||
|  | # - | ||||||
|  | cat << EOF > /etc/systemd/system/cryptpad.service | ||||||
|  | [Unit] | ||||||
|  | Description=CryptPad service | ||||||
|  |  | ||||||
|  | [Service] | ||||||
|  | User=www-data | ||||||
|  | Group=www-data | ||||||
|  |  | ||||||
|  | ExecStart=/usr/bin/node /var/www/cryptpad/server.js | ||||||
|  | WorkingDirectory=/var/www/cryptpad | ||||||
|  | Restart=always | ||||||
|  |  | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
|  | EOF | ||||||
|  |  | ||||||
|  | systemctl daemon-reload | ||||||
|  | systemctl enable cryptpad | ||||||
|  |  | ||||||
|  | # - Start cryptpad | ||||||
|  | # - | ||||||
|  | systemctl start cryptpad | ||||||
|  |  | ||||||
							
								
								
									
										49
									
								
								README.upgrade
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								README.upgrade
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  |  | ||||||
|  | # ==================== | ||||||
|  | # - Upgrading CryptPad | ||||||
|  | # ==================== | ||||||
|  |  | ||||||
|  | # - Note! | ||||||
|  | # - | ||||||
|  | # - Always read the release notes before upgrading, as there may be changes | ||||||
|  | # - that require special consideration. | ||||||
|  |  | ||||||
|  | # - Stop cryptpad | ||||||
|  | # - | ||||||
|  | systemctl stop cryptpadsystemctl stop cryptpad | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # - Backup existing installation | ||||||
|  | # - | ||||||
|  | cp -a /var/www/cryptpad /var/www/cryptpad.BAK.$(date +%Y-%m-%d-%H%M) | ||||||
|  |  | ||||||
|  | # - Change into installation directory | ||||||
|  | # - | ||||||
|  | cd /var/www/cryptpad | ||||||
|  |  | ||||||
|  | # - Update Git repository | ||||||
|  | # - | ||||||
|  | su www-data -s /bin/bash -c "git pull" | ||||||
|  |  | ||||||
|  | # - Update 'npm' | ||||||
|  | # - | ||||||
|  | su www-data -s /bin/bash -c "npm update" | ||||||
|  |  | ||||||
|  | # - Update 'bower' | ||||||
|  | # - | ||||||
|  | su www-data -s /bin/bash -c "bower update" | ||||||
|  |  | ||||||
|  | # - Maybe more updates | ||||||
|  | # - | ||||||
|  |    ╭─────────────────────────────────────╮ | ||||||
|  |    │                                     │ | ||||||
|  |    │   Update available 1.8.4 → 1.8.8    │ | ||||||
|  |    │   Run npm i -g bower to update      │ | ||||||
|  |    │                                     │ | ||||||
|  |    ╰─────────────────────────────────────╯ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | # - Start cryptpad | ||||||
|  | # - | ||||||
|  | systemctl start cryptpad | ||||||
|  |  | ||||||
							
								
								
									
										149
									
								
								nginx_cryptpad.conf.tmpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								nginx_cryptpad.conf.tmpl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,149 @@ | |||||||
|  | server { | ||||||
|  |    listen 80; | ||||||
|  |    listen [::]:80; | ||||||
|  |    server_name @cryptpad-url@; | ||||||
|  |    return 301 https://$server_name$request_uri; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | server { | ||||||
|  |  | ||||||
|  |    listen 443 ssl http2; | ||||||
|  |    listen [::]:443 ssl http2; | ||||||
|  |  | ||||||
|  |    server_name @cryptpad-url@; | ||||||
|  |  | ||||||
|  |    ssl_certificate /var/lib/dehydrated/certs/@cryptpad-url@/fullchain.pem; | ||||||
|  |    ssl_certificate_key /var/lib/dehydrated/certs/@cryptpad-url@/privkey.pem; | ||||||
|  |    #ssl_trusted_certificate /var/lib/dehydrated/certs/@cryptpad-url@/fullchain.pem; | ||||||
|  |  | ||||||
|  |    # - Needed for (automated) updating certificate | ||||||
|  |    # - | ||||||
|  |    include snippets/letsencrypt-acme-challenge.conf; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits | ||||||
|  |    # | ||||||
|  |    # To generate a dhparam.pem file, run in a terminal | ||||||
|  |    #    openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 | ||||||
|  |    # | ||||||
|  |    ssl_dhparam /etc/nginx/ssl/dhparam.pem; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    # Eable session resumption to improve https performance | ||||||
|  |    ssl_session_cache shared:SSL:50m; | ||||||
|  |    ssl_session_timeout 10m; | ||||||
|  |    ssl_session_tickets off; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # omit SSLv3 because of POODLE | ||||||
|  |  | ||||||
|  |    # ECDHE better than DHE (faster)  ECDHE & DHE GCM better than CBC (attacks on AES) | ||||||
|  |    # Everything better than SHA1 (deprecated) | ||||||
|  |    # | ||||||
|  |    ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA'; | ||||||
|  |    ssl_prefer_server_ciphers on; | ||||||
|  |  | ||||||
|  |    add_header Strict-Transport-Security "max-age=31536000" always; | ||||||
|  |    add_header X-XSS-Protection "1; mode=block"; | ||||||
|  |    add_header X-Content-Type-Options nosniff; | ||||||
|  |    #add_header X-Frame-Options "SAMEORIGIN"; | ||||||
|  |  | ||||||
|  |    root /var/www/cryptpad; | ||||||
|  |    index index.html; | ||||||
|  |    error_page 404 /customize.dist/404.html; | ||||||
|  |  | ||||||
|  |    if ($args ~ ver=) { | ||||||
|  |       set $cacheControl max-age=31536000; | ||||||
|  |    } | ||||||
|  |    # Will not set any header if it is emptystring | ||||||
|  |    # | ||||||
|  |    add_header Cache-Control $cacheControl; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    # - Does not work with CKEditor and OnlyOffice | ||||||
|  |    # - | ||||||
|  |    #set $styleSrc    "'unsafe-inline' 'self'"; | ||||||
|  |    #set $scriptSrc   "'self' @cryptpad-url@"; | ||||||
|  |    #set $connectSrc  "'self' https://@cryptpad-url@ wss://@cryptpad-url@ @cryptpad-url@ https://api.@cryptpad-url@ blob: @cryptpad-url@"; | ||||||
|  |    #set $fontSrc     "'self' data: @cryptpad-url@"; | ||||||
|  |    #set $imgSrc      "'self' data: * blob: @cryptpad-url@"; | ||||||
|  |    #set $frameSrc    "'self' @cryptpad-url@ blob: @cryptpad-url@"; | ||||||
|  |    #set $mediaSrc    "'self' data: * blob: @cryptpad-url@"; | ||||||
|  |    #set $childSrc    "https://@cryptpad-url@"; | ||||||
|  |    #set $workerSrc   "https://@cryptpad-url@"; | ||||||
|  |    # | ||||||
|  |    #set $unsafe 0; | ||||||
|  |    #if ($uri = "/pad/inner.html") { set $unsafe 1; } | ||||||
|  |    #if ($uri = "/sheet/inner.html") { set $unsafe 1; } | ||||||
|  |    #if ($uri = "/common/onlyoffice/web-apps/apps/spreadsheeteditor/main/index.html") { set $unsafe 1; } | ||||||
|  |    #if ($host != sandbox.cryptpad.info) { set $unsafe 0; } | ||||||
|  |    #if ($unsafe) { | ||||||
|  |    #   set $scriptSrc "'self' 'unsafe-eval' 'unsafe-inline' @cryptpad-url@"; | ||||||
|  |    #} | ||||||
|  |  | ||||||
|  |  | ||||||
|  |    # - Make CKEditor and OnlyOffice working | ||||||
|  |    # - | ||||||
|  |    # - See /var/www/cryptpad/config.js (contentSecurity,padContentSecurity, ooContentSecurity) | ||||||
|  |    # - | ||||||
|  |    set $styleSrc    "'unsafe-inline' 'self' @cryptpad-url@"; | ||||||
|  |    set $scriptSrc   "'self' 'unsafe-eval' 'unsafe-inline' @cryptpad-url@"; | ||||||
|  |    set $connectSrc  "'self' ws: wss: @cryptpad-url@"; | ||||||
|  |    set $fontSrc     "'self' data: @cryptpad-url@"; | ||||||
|  |    set $imgSrc      " * blob:"; | ||||||
|  |    set $frameSrc    "*"; | ||||||
|  |    set $mediaSrc    "'self' data: * blob: @cryptpad-url@"; | ||||||
|  |    set $childSrc    *; | ||||||
|  |    set $workerSrc   "https://@cryptpad-url@"; | ||||||
|  |  | ||||||
|  |    add_header Content-Security-Policy "default-src 'none'; child-src $childSrc; worker-src $workerSrc; media-src $mediaSrc; style-src $styleSrc; script-src $scriptSrc; connect-src $connectSrc; font-src $fontSrc; img-src $imgSrc; frame-src $frameSrc;"; | ||||||
|  |  | ||||||
|  |    location ^~ /cryptpad_websocket { | ||||||
|  |       proxy_pass http://localhost:3000; | ||||||
|  |       proxy_set_header X-Real-IP $remote_addr; | ||||||
|  |       proxy_set_header Host $host; | ||||||
|  |       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||||
|  |  | ||||||
|  |       # WebSocket support (nginx 1.4) | ||||||
|  |       proxy_http_version 1.1; | ||||||
|  |       proxy_set_header Upgrade $http_upgrade; | ||||||
|  |       proxy_set_header Connection upgrade; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ^~ /customize.dist/ { | ||||||
|  |       # This is needed in order to prevent infinite recursion between /customize/ and the root | ||||||
|  |    } | ||||||
|  |    location ^~ /customize/ { | ||||||
|  |       rewrite ^/customize/(.*)$ $1 break; | ||||||
|  |       try_files /customize/$uri /customize.dist/$uri; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location = /api/config { | ||||||
|  |       proxy_pass http://localhost:3000; | ||||||
|  |       proxy_set_header X-Real-IP $remote_addr; | ||||||
|  |       proxy_set_header Host $host; | ||||||
|  |       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ^~ /blob/ { | ||||||
|  |       add_header Cache-Control max-age=31536000; | ||||||
|  |       try_files $uri =404; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ^~ /block/ { | ||||||
|  |       add_header Cache-Control max-age=0; | ||||||
|  |       try_files $uri =404; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ^~ /datastore/ { | ||||||
|  |       add_header Cache-Control max-age=0; | ||||||
|  |       try_files $uri =404; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    location ~ ^/(register|login|settings|user|pad|drive|poll|slide|code|whiteboard|file|media|profile|contacts|todo|filepicker|debug|kanban|sheet)$ { | ||||||
|  |       rewrite ^(.*)$ $1/ redirect; | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |    try_files /www/$uri /www/$uri/index.html /customize/$uri; | ||||||
|  |  | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user