Tag: bitwarden

Topics related to Bitwarden and its ecosystem, including self-hosted alternatives like Vaultwarden and best practices for password management.

  • Installing Vaultwarden on your VPS

    Installing Vaultwarden on your VPS

    It’s pretty simple. Seriously.

    Alright. You have finally chosen to self-host. And you realize that you’ll never have pay for a secure password manager again now that you’ve discovered Vaultwarden. All you need now is an easy-breezy install guide.

    Well lucky you! Here it is. Let’s get started installing Vaultwarden on your VPS. You’ll be living the self-hoster’s dream in no time. A quick explanation from Vaultwarden’s README:

    Vaultwarden—An alternative server implementation of the Bitwarden Client API, written in Rust and compatible with official Bitwarden clients [disclaimer], perfect for self-hosted deployment where running the official resource-heavy service might not be ideal.


    So there you have it. When this install is done, you’ll have your own self-hosted install, and you’ll be able to point to it via the Bitwarden mobile app. Double win.

    Ok, so first, log into your VPS. If you’re logging in as root, remove the sudo part from the commands. Install the following dependency:

    Argon2 is a rock-solid password hashing algorithm. We want it for the install. Give it a moment to install. See the next steps just below.

    Just fyi, if you want to do the install elsewhere on your server, feel free. I’m just doing it from $HOME since it’s convenient and easy to follow.

    Configuring our docker-compose.yml

    Now that we’re in our install directory, let’s vim into a docker-compose.yml with the following command:

    Paste the following:

    You might be asking “why on earth is SIGNUPS_ALLOWED set to false?” Well, the reason lies in the ADMIN_TOKEN value. That token will allow you admin access at /admin, and inside you can invite users to create an account. This is the way to go to keep weirdos from flat-out creating accounts.

    Let’s create that token, shall we?

    Copy the hashed value that shows. Now let’s create the .env file so our docker-compose.yml knows where to find the ADMIN_TOKEN.

    Then add the following into the .env (and yes, the quotes are needed!):

    With that, Docker runtime configurations are complete. Let’s move along.

    If you remember in the docker-compose.yml above, we’re serving container port 80 to host port 9273 with the - "9273:80" configuration. In Nginx, we now need to set up a reverse proxy that will serve host port 9273 to our url. We also need to tell Nginx where to find ssl certificates for the site, so that you can serve it over https correctly. Let’s go.


    For now, paste the following:

    Heads-up: you’ll notice above that I’m pointing to the snakeoil temporary ssl certificates. This is strictly to pass the nginx -t config test later. You’ll need to change this out later with your actual certs. Otherwise, if you’re using Certbot, the cert paths will be overwritten automatically. I talk about how to set up certifications via Certbot in this post.

    Next, we need to create our symbolic link between sites-available and sites-enabled in Nginx.

    The nginx -t command should return a successful result. If it doesn’t, go back and fix your shit bro. Otherwise, let’s reload Nginx:

    You should still be in your working directory that contains your .env and docker-compose.yml file. Confirm with a quick pwd and/or ls -lart. At this point, we can turn on Vaultwarden, finally!

    In a browser, head to https://vault.yourdomain.here/admin. Enter the ADMIN_TOKEN value (not the hash value damnit!), and log in.

    All Systems Go! …Right?

    After logging into /admin, click on “Diagnostics”. You should see all-green indicators like the ones in the image below.

    An image from the diagnostics tab of the admin panel that shows the results of a successful install.
    Diagnostic results of a successful install

    After confirming, you can head to the “Users” section, where you can invite users (including yourself duh) to create an account via email.

    Conclusion

    We’ve been through a lot together, I know. And in the end, installing Vaultwarden on your VPS really is simple. Now go forth, and never pay for a password manager again!

  • Leaving NordPass for Vaultwarden

    Leaving NordPass for Vaultwarden

    From Auto-Renew to Autonomy

    Nord’s Nefarious, Gregarious, Price Creep

    I didn’t cancel my Nord subscriptions out of anger. Honestly, I forgot I was paying for them most of the time. They worked fine — no complaints there. It was the gradual, consistent upward price creep. Slowly at first, then sudden and drastic.

    I signed up for NordVPN in late 2018 on a 3-year plan at $2.99/month — $107 total. Perfectly reasonable. In 2022, I renewed for two more years at $83.70, or $3.49/month. 17% isn’t nothing, but that 17% is fifty cents — no big deal.

    Then came NordPass: $11.32 for a full year. That was an easy yes.

    But in 2024, NordVPN auto-renewed at $105.45 — for just one year. That’s $8.79/month. I barely noticed. Then NordPass jumped to $38.03/year, quietly tripling in cost. And this past May, NordVPN hit me again — this time for $158.87. One year. $13.24/month.

    In five and a half years, the monthly cost of NordVPN ballooned 4.4x. That’s when I logged in and shut off auto-renew. For both.

    Why Vaultwarden Made Sense

    By the time I started looking for alternatives, I already knew how to stand up a VPS. I’d set up servers before, configured Nginx, poked around with Docker — enough to know that I didn’t need a subscription to store a bunch of encrypted blobs. I just needed the right open-source tool. And to not be a lazy-ass.

    That’s where Vaultwarden came in: a lightweight, self-hosted implementation of Bitwarden (though not associated with the company, one of the active maintainers is a Bitwarden employee, as very clearly stated on its GitHub README). It offers a clean UI, mobile support via the official Bitwarden app, and browser integration through the Bitwarden extension.

    And most importantly: no oopsy-I-forgot-I-even-had-this billing cycle. No upsell. No renewal notifications. Just a container running quietly on my VPS.

    After a 20-30 minute setup process, I was up and running, with all my credentials imported cleanly from NordPass.

    Took Me Long Enough

    I didn’t ditch NordPass because it was bad software. I ditched it because I realized I was paying a lot of money to outsource something I could run myself for zero money. Vaultwarden gave me the same core functionality — without the overhead, the billing, or the blind trust (looking at you Nord 2018 breach). And once it was up and running, I wondered why I hadn’t done it sooner. Probably had to do with the whole “lazy-ass” thing from before.