Vaultwarden using Docker Compose with existing Certificates
Hello Friends,
I have a small ubuntu Server and I finally also want to transfer my Vaultwarden Instance to it. On this Server I have several services running (homeassistant, ...) and Certbot via Dehydrated (right now I get a certificate for my duckdns address).
In some directory I have the privkey and fullchain files.
Now my Problem is that when I start vaultwarden it wont load as https.
I believe, my Problem is telling Vaultwarden, where my certificate files are located so it can use them accordingly.
Seconding a reverse proxy. Once you have it set up, it's trivial to add a subdomain, forward it to your internal port that your container is exposing, then use certbot or whatever to get a new certificate for that subdomain.
I just use apache because I heavily use it for work, so I already know it well. But lots of people swear by nginx as well. There are lots of other options as well.
Thirding a reverse proxy. Probably Nginx Proxy Manager (NPM) is the easiest reverse proxy to get started with, if you don't want to deal with plain nginx config files
You can configure services with labels attached to the container and (almost) never expose ports directly. It also lets you host an arbitrary number of services listening on 80/443.
If you want it beginner friendly, I can recommend nginx proxy Manager, which is basically a web ui frontend for nginx. This has its own drawbacks, but makes setup very uncomplicated.
I use Nginx Proxy Manager to reverse proxy all my services including Vaultwarden -
Setup in NPM -
Open Nginx Proxy Manager Admin Portal
Click Proxy Hosts
Click Add Proxy Host
Fill in the details
Details tab
Domain Names - vault.your.domain
Scheme - http
Forward Hostname/IP - vaultwarden (this should be the name of your vw container)
Forward Port - 80
Tick Block Common Exploits
Tick Websockets Support
Access List - Publicly Accessible
Custom locations tab
Add the following locations
location 1
location - /notifications/hub
Scheme - http
Forward Hostname/IP - vaultwarden
Forward Port - 3012
Click the cog symbol and add the following to the textbox that appears
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
location 2
location - /notifications/hub/negotiate
Scheme - http
Forward Hostname/IP - vaultwarden
Forward Port - 80
Click the cog symbol and add the following to the textbox that appears
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;
location 3
location - /
Scheme - http
Forward Hostname/IP - vaultwarden
Forward Port - 80
Click the cog symbol and add the following to the textbox that appears
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;
SSL tab
SSL Certificate - Request a new SSL Certificate
tick Use a DNS Challenge (or just expose port 80 if you accept the risk)
DNS Provider - Dynu (this is my dyndns provider)
Credentials File Content - replace YOUR_DYNU_AUTH_TOKEN with the API key from https://www.dynu.com/en-US/ControlPanel/APICredentials
Email Address for Let's Encrypt - your email
Tick I Agree to the Let's Encrypt Terms of Service
Click Save
Vaultwarden should now be accessible via https://vault.your.domain