Aller au contenu

Mise en place de la redirection

En l'état, notre instance n'est accessible de l'extérieur que si on utilise le port dédié du conteneur, ce qui n'est pas la meilleure solution pour utiliser Bitwarden au quotidien. On va donc utiliser Nginx pour faire aussi de reverse proxy et gérer les connexions des utilisateurs à notre conteneur bitwarden_rs.

Pour cela, nous allons créer un fichier de configuration qui ressemble alors à celui ci-dessous :

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # Nom de domaine
    server_name passwords.votredomaine.xyz;

    # Options pour le certificat SSL
    ssl_certificate /etc/letsencrypt/live/passwords.votredomaine.xyz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/passwords.votredomaine.xyz/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/passwords.votredomaine.xyz/fullchain.pem;

    ## HTTPS
    ssl_buffer_size 4k; # 16k, for throughput, video applications
    ssl_ciphers TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256: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_ecdh_curve X25519:P-521:P-384:P-256;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1.3 TLSv1.2;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_session_timeout 1h;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 80.67.169.12 80.67.169.40 142.4.204.111 142.4.205.47 valid=300s;
    resolver_timeout 5s;

    ## Entêtes pour la sécurité
    add_header Strict-Transport-Security "max-age=15552000; preload";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Frame-Options sameorigin;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Referrer-Policy no-referrer;
    add_header Content-Security-Policy "script-src 'self'; frame-src 'self'; object-src 'self'; style-src 'self'";

    # Logs
    access_log /var/log/nginx/bitwarden-access.log;
    error_log /var/log/nginx/bitwarden-error.log;

    # Error config
    include /etc/nginx/conf.d/error.conf;

    # Redirections for Bitwarden
    location / {
        proxy_pass       http://127.0.0.1:8080/;
        proxy_set_header Host      $host;
        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 $scheme;

        client_max_body_size 0;
        add_header Referrer-Policy "same-origin";
    }
}

server {
    listen 80;
    listen [::]:80;

    # Nom de domaine
    server_name passwords.votredomaine.xyz;

    ## Redirection vers le HTTPS
    return 301 https://$host$request_uri;
}

Ici, je favorise avant tout les dernières versions du protocole TLS et les meilleurs suites de chiffrement, afin de nous assurer d'avoir une connexion sécurisée entre notre serveur et nos utilisateurs. Vous pouvez bien sûr changer le sous-domaine par celui de votre choix.

Il ne reste plus qu'à générer un certificat SSL avec Let's Encrypt pour avoir une redirection opérationnelle. Avec Certbot, si vous utilisez le module pour Nginx, cela se fait ainsi : sudo certbot certonly --nginx -d passwords.votredomaine.xyz

Une fois le certificat généré, pensez bien à recharger votre configuration avec la commande sudo systemctl reload nginx et allez ensuite sur le sous-domaine correspondant pour créer votre premier utilisateur.

Note importante : Pour une configuration plus complète de Nginx, n'hésitez pas à vous référer à la documentation officielle ou bien aux autres sections consacrés à Nginx dans les parties Serveur mail et Serveur Nextcloud.