Qnap Vaultwarden image docker activer le https

xillibit

Nouveau membre
3 Octobre 2018
20
1
3
Annecy
Bonjour,

J’ai un QNAP TS-673A (QuTS hero h5.1.1.2488), j’ai importé l’image docker vaultwarden/server:latest cela fonctionne en http mais je n’arrive pas à activer le https. je n'ai jamais utilisé docker avant

ça les variables existantes :​

vaultwarden_image_docker.png

De ce que j'ai compris il faudrait que je rajoute cette variable d'environnement dans les paramètres de l'image :

ROCKET_TLS: '{certs = "/ssl/certificate.pem", key = "/ssl/private.pem"}'

Il est censé être ou ce dossier ssl ? Je peux rajouter cette variable d'environnement sans re-créer l'image docker ?

Merci d’avance​
 
Si tu utilise des images docker , pour les passer en https , il faudrait passer par un reverse proxy
Le SSL est attribuer à un nom de domaine . Quelle URL utilise-tu pour te connecter à vaultwarden ?
 
Bonjour,

J'avais voulu installer un certificat via let's encrypt en suivant cela : https://github.com/Yannik/qnap-letsencrypt , je bloque à ou cela demande de lancer renew_certificate.sh :

Code:
[/share/homes/monutilisateur/letsencrypt/qnap-letsencrypt] # ./renew_certificate.sh
Checking whether to renew certificate on Mon, 25 Sep 2023 09:34:40 +0200
Renewing certificate...
qnap-letsencrypt version: f08d947
Using python path: python3
Stopping Qthttpd hogging port 80..
Shutting down Qthttpd services:/etc/config/php.d/php_ext.ini not found
 OK.
Started python HTTP server with pid 22718
Parsing account key...
Parsing CSR...
Found domains: pass.mondomaine.com
Getting directory...
Directory found!
Registering account...
Already registered! Account ID: https://acme-v02.api.letsencrypt.org/acme/acct/xxx1136256
Creating new order...
Order created!
Verifying pass.mondomaine.com...
Traceback (most recent call last):
  File "/share/ZFS1_DATA/homes/monutilisateur/letsencrypt/qnap-letsencrypt/acme-tiny/acme_tiny.py", line 145, in get_crt
    assert (disable_check or _do_request(wellknown_url)[0] == keyauthorization)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/share/ZFS1_DATA/homes/monutilisateur/letsencrypt/qnap-letsencrypt/acme-tiny/acme_tiny.py", line 46, in _do_request
    raise ValueError("{0}:\nUrl: {1}\nData: {2}\nResponse Code: {3}\nResponse: {4}".format(err_msg, url, data, code, resp_data))
ValueError: Error:
Url: http://pass.mondomaine.com/.well-known/acme-challenge/xadzJUGsn8eYjoNDOq5oRHZkTz5ee_3GeXrcKeVuFD8
Data: None
Response Code: None
Response: <urlopen error [Errno 110] Connection timed out>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/share/ZFS1_DATA/homes/monutilsiateur/letsencrypt/qnap-letsencrypt/acme-tiny/acme_tiny.py", line 199, in <module>
    main(sys.argv[1:])
  File "/share/ZFS1_DATA/homes/monutilsiateur/letsencrypt/qnap-letsencrypt/acme-tiny/acme_tiny.py", line 195, in main
    signed_crt = get_crt(args.account_key, args.csr, args.acme_dir, log=LOGGER, CA=args.ca, disable_check=args.disable_check, directory_url=args.directory_url, contact=args.contact, check_port=args.check_port)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/share/ZFS1_DATA/homes/monutilsiateur/letsencrypt/qnap-letsencrypt/acme-tiny/acme_tiny.py", line 147, in get_crt
    raise ValueError("Wrote file to {0}, but couldn't download {1}: {2}".format(wellknown_path, wellknown_url, e))
ValueError: Wrote file to tmp-webroot/.well-known/acme-challenge/xadzJUGsn8eYjoNDOq5oRHZkTz5ee_3GeXrcKeVuFD8, but couldn't download http://pass.mondomaine.com/.well-known/acme-challenge/xadzJUGsn8eYjoNDOq5oRHZkTz5ee_3GeXrcKeVuFD8: Error:
Url: http://pass.mondomaine.com/.well-known/acme-challenge/xadzJUGsn8eYjoNDOq5oRHZkTz5ee_3GeXrcKeVuFD8
Data: None
Response Code: None
Response: <urlopen error [Errno 110] Connection timed out>
An error occured. Restoring system state.
Start apache proxy: OK
Starting Qthttpd services:[/share/homes/monutilisateur/letsencrypt/qnap-letsencrypt] #
 
Tjrs un peu délicat de mettre en place ce que tu veux faire sur un Qnap :( C'est le gros point noir des Qnap
Une chose est sur : il va te falloir deux sous-domaine différent: un pour vautlwarden et un pour Nextcloud avec chacun un certificat valide.
Pour Nextcloud il te faudra certainement modifier à la main le fichier nexcloud / config/ config.php afin que nextcloud autorise la connexion avec le sous-domaine choisi .
 
Pour les sous-domaines différents ça je le ferai dans un second temps pour le moment c'était pour tester le fonctionnement

Pour Nextcloud j'ai déjà mis le sous-domaine dans la config dans les trusted_domains, je changerai cela quand je créerai un autre sous-domaine

Je viens de trouver ce tuto en italien, ils créaient une image docker avec Caddy : https://indomus.it/guide/installare-e-configurare-caddy-con-docker-su-qnap-via-containerstation/

Ils disent de paramétrer de la façon suivante les ports :

QNAP-FileStation-Caddy-Docker-3.jpg

Sur mon NAS il me met une erreur dans ce cas, j'ai vérifier le webserver dans les paramètres du NAS est désactivé et les autres conteneurs n'ont pas le port 80 dans ce paramètre :

Capture d'écran 2023-09-27 161435.png

Qu'est ce qui n'est pas bon dans ce cas-là ?
 
Qu'est ce qui n'est pas bon dans ce cas-là
Qnap utilise par défaut le port 443 pour QTS . Tu peux modifier le port dans : Panneau de configuration / Parametres généraux / administration du système.
Pour le port 80 il est bien configurer pour le serveur web par défaut , mais là aussi tu peux personnalisé le port : Panneau de configuration / Applications / serveur web.
P.S : si tu arrive à tes fin , fais-nous un petit retour ; je vais regarder le tuto Italien :rolleyes:
 
J'ai modifié le port 443 de QTS par défaut et comme dit précédemment le serveur web de QTS est désactivé, tous les autres conteneurs dockers n'ont plus le port 80 par défaut :

Capture d'écran 2023-09-28 110051.png

P.S. : si je ne met rien rien dans le champ qui en rouge il m'autorise à cliquer sur suivant

P.S. (suite) : l'instance démarre mais dans la console il y a pas mal de choses qui s'affichent, il me reste à faire la suite du tuto ou il parle du certificat let's encrypt
2023/09/28 09:10:35.272 INFO using provided configuration {"config_file": "/etc/caddy/Caddyfile", "config_adapter": "caddyfile"} 2023/09/28 09:10:35.277 WARN Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies {"adapter": "caddyfile", "file": "/etc/caddy/Caddyfile", "line": 3} 2023/09/28 09:10:35.305 INFO admin admin endpoint started {"address": "localhost:2019", "enforce_origin": false, "origins": ["//localhost:2019", "//[::1]:2019", "//127.0.0.1:2019"]} 2023/09/28 09:10:35.306 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0xc0000b7e00"} 2023/09/28 09:10:35.306 INFO http.auto_https server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS {"server_name": "srv0", "https_port": 443} 2023/09/28 09:10:35.306 INFO http.auto_https enabling automatic HTTP->HTTPS redirects {"server_name": "srv0"} 2023/09/28 09:10:35.307 INFO http enabling HTTP/3 listener {"addr": ":443"} 2023/09/28 09:10:35.307 INFO http.log server running {"name": "srv0", "protocols": ["h1", "h2", "h3"]} 2023/09/28 09:10:35.308 INFO http.log server running {"name": "remaining_auto_https_redirects", "protocols": ["h1", "h2", "h3"]} 2023/09/28 09:10:35.308 INFO http enabling automatic TLS certificate management {"domains": ["pass.mondomaine.com"]} 2023/09/28 09:10:35.310 INFO tls cleaning storage unit {"description": "FileStorage:/data/caddy"} 2023/09/28 09:10:35.310 INFO autosaved config (load with --resume flag) {"file": "/config/caddy/autosave.json"} 2023/09/28 09:10:35.310 INFO serving initial configuration 2023/09/28 09:10:35.310 INFO tls finished cleaning storage units 2023/09/28 09:10:35.311 INFO tls.obtain acquiring lock {"identifier": "pass.mondomaine.com"} 2023/09/28 09:10:35.326 INFO tls.obtain lock acquired {"identifier": "pass.mondomaine.com"} 2023/09/28 09:10:35.326 INFO tls.obtain obtaining certificate {"identifier": "pass.mondomaine.com"} 2023/09/28 09:10:36.342 INFO tls.issuance.acme waiting on internal rate limiter {"identifiers": ["pass.mondomaine.com"], "ca": "https://acme-staging-v02.api.letsencrypt.org/directory", "account": ""} 2023/09/28 09:10:36.342 INFO tls.issuance.acme done waiting on internal rate limiter {"identifiers": ["pass.mondomaine.com"], "ca": "https://acme-staging-v02.api.letsencrypt.org/directory", "account": ""} 2023/09/28 09:10:36.715 INFO tls.issuance.acme.acme_client trying to solve challenge {"identifier": "pass.mondomaine.com", "challenge_type": "http-01", "ca": "https://acme-staging-v02.api.letsencrypt.org/directory"} 2023/09/28 09:10:47.705 ERROR tls.issuance.acme.acme_client challenge failed {"identifier": "pass.mondomaine.com", "challenge_type": "http-01", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "185.195.251.5: Fetching http://pass.mondomaine.com/.well-known/acme-challenge/NEvBkBtuiHL4hDVWwPniqNL43b97PNgbr2hYwLp9Tzk: Timeout during connect (likely firewall problem)", "instance": "", "subproblems": []}} 2023/09/28 09:10:47.705 ERROR tls.issuance.acme.acme_client validating authorization {"identifier": "pass.mondomaine.com", "problem": {"type": "urn:ietf:params:acme:error:connection", "title": "", "detail": "185.195.251.5: Fetching http://pass.mondomaine.com/.well-known/acme-challenge/NEvBkBtuiHL4hDVWwPniqNL43b97PNgbr2hYwLp9Tzk: Timeout during connect (likely firewall problem)", "instance": "", "subproblems": []}, "order": "https://acme-staging-v02.api.letsencrypt.org/acme/order/120025264/11228795314", "attempt": 1, "max_attempts": 3} 2023/09/28 09:10:49.072 INFO tls.issuance.acme.acme_client trying to solve challenge {"identifier": "pass.mondomaine.com", "challenge_type": "tls-alpn-01", "ca": "https://acme-staging-v02.api.letsencrypt.org/directory"}
 
Dernière édition:
Je galère toujours pour configurer caddy, je voulais le configurer en utilisant le challenge DNS pour ça il faut un module en plus dans caddy qui n'est pas par défaut dans l'image docker officielle (j'ai fait un caddy list-modules en ouvrant le bash du docker de caddy pour vérifier). Il en existe pour Infomaniak, OVH, Gandi, Scaleway; j'ai un domaine chez gandi cela nécessite de recompiler caddy avec le module en plus
 
Du coup j'ai utilisé cette image : https://github.com/rajaseg/caddy qui contient notamment le module pour gandi; j'ai généré une clé API sur mon espace client chez gandi

Ma config de caddy, avec la ligne reverse_proxy http://192.168.0.228:443 il ne veut pas se lancer
https://pass.mondomaine.fr:16896 { tls { dns gandi MA-CLE-API-DE-GANDI-CLOUDFLARE } respond “Hello world” reverse_proxy http://192.168.0.228:443 }

j'ai ça dans la console :

Error: adapting config using caddyfile: parsing caddyfile tokens for 'reverse_proxy': /etc/caddy/Caddyfile:6 - Error during parsing: upstream address has conflicting scheme (http://) and port (:443, the HTTPS port), import chain: [''] 2023/09/29 09:42:13.736 INFO using provided configuration {"config_file": "/etc/caddy/Caddyfile", "config_adapter": "caddyfile"}
 
Je suis passé à Nginx Proxy Manager en suivant ce tuto : https://forum.qnap.com/viewtopic.php?t=155970#p759223, pour la création du certificat let's encrypt en DNS challenge se connecte directement au cpanel de l’hébergeur

Cela fonctionne pour mon instance nextcloud avec le certificat let's encrypt par contre pour mon instance vaultwarden même avec l'IP locale en https il m'indique page introuvable
 
vaultwarden même avec l'IP locale en https
Vaultwarden en docker n'a pas besoin de https en local et cela ne fonctionnera pas avec une IP_locale en https.
Pour moi c'est un pb de réglage du Reverse Proxy . Tu part avec du https pour ton sous-domaine sur le port 443 et transfert du http pour l'instance docker
 
Dernière édition:
J'avais 5 disques sur le QNAP TS-673A dans le RAID5 comme je manquais d'espace, j'ai rajouté un sixième disque. A la fin de la reconstruction du RAID ça m'a perdu tous les conteneurs dockers. Je vais devoir refaire les 3 instances que j'avais