mirror of https://github.com/xwiki-labs/cryptpad
86 lines
3.8 KiB
Plaintext
86 lines
3.8 KiB
Plaintext
# SPDX-FileCopyrightText: 2023 XWiki CryptPad Team <contact@cryptpad.org> and contributors
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# This file is included strictly as an example of how Nginx can be configured
|
|
# to work with CryptPad. This example WILL NOT WORK AS IS. For best results,
|
|
# compare the sections of this configuration file against a working CryptPad
|
|
# installation (http server by the Nodejs process). If you are using CryptPad
|
|
# in production and require professional support please contact sales@cryptpad.fr
|
|
|
|
server {
|
|
listen 443 ssl;
|
|
listen [::]:443 ssl;
|
|
http2 on;
|
|
|
|
# Let's Encrypt webroot
|
|
include letsencrypt-webroot;
|
|
|
|
# CryptPad serves static assets over these two domains.
|
|
# `your-main-domain` is what users will enter in their address bar.
|
|
# Privileged computation such as key management is handled in this scope
|
|
# UI content is loaded via the `your-sandbox-domain`.
|
|
# "Content Security Policy" headers prevent content loaded via the sandbox
|
|
# from accessing privileged information.
|
|
# This setup allows to take advantage of CryptPad's sandboxing techniques.
|
|
# In the event of an XSS vulnerability in CryptPad's front-end code
|
|
# this will limit the amount of information accessible to attackers.
|
|
server_name your-main-domain.com your-sandbox-domain.com;
|
|
|
|
# You'll need to Set the path to your certificates and keys here
|
|
# IMPORTANT: this config is intended to serve assets for at least two domains
|
|
# (your main domain and your sandbox domain). As such, you'll need to generate a single SSL certificate
|
|
# that includes both domains in order for things to work as expected.
|
|
ssl_certificate /etc/ssl/lets-encrypt/your-main-domain.com/cert;
|
|
ssl_certificate_key /etc/ssl/lets-encrypt/your-main-domain.com/key;
|
|
|
|
# diffie-hellman parameters are used to negotiate keys for your session
|
|
# generate strong parameters using the following command
|
|
ssl_dhparam /etc/nginx/dhparam.pem; # openssl dhparam -out /etc/nginx/dhparam.pem 4096
|
|
|
|
# Speeds things up a little bit when resuming a session
|
|
ssl_session_timeout 1d;
|
|
ssl_session_cache shared:MozSSL:10m;
|
|
ssl_session_tickets off;
|
|
|
|
ssl_protocols TLSv1.2 TLSv1.3;
|
|
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
|
|
ssl_prefer_server_ciphers off;
|
|
|
|
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
|
|
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
|
|
|
|
# OCSP stapling
|
|
ssl_stapling on;
|
|
ssl_stapling_verify on;
|
|
|
|
# verify chain of trust of OCSP response using Root CA and Intermediate certs
|
|
ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;
|
|
|
|
# replace with the IP address of your resolver
|
|
resolver 8.8.8.8 8.8.4.4 1.1.1.1 1.0.0.1 9.9.9.9 149.112.112.112 208.67.222.222 208.67.220.220;
|
|
|
|
location / {
|
|
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;
|
|
client_max_body_size 150m;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection upgrade;
|
|
}
|
|
|
|
location ^~ /cryptpad_websocket {
|
|
proxy_pass http://localhost:3003;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection upgrade;
|
|
}
|
|
}
|