From 0c23c3b21face9706db4081a0edcb839fe0406f6 Mon Sep 17 00:00:00 2001 From: David Young Date: Tue, 14 May 2019 22:30:40 +1200 Subject: [PATCH] Add bitwarden and discord button --- manuscript/CHANGELOG.md | 5 +- manuscript/book.txt | 1 + manuscript/images/bitwarden.png | Bin 0 -> 77691 bytes manuscript/recipes/bitwarden.md | 97 +++++++++++++++++++++++++++++++ manuscript/recipes/keycloak.md | 4 +- manuscript/sponsored-projects.md | 3 + mkdocs.yml | 5 +- overrides/main.html | 14 +++++ 8 files changed, 120 insertions(+), 9 deletions(-) create mode 100644 manuscript/images/bitwarden.png create mode 100644 manuscript/recipes/bitwarden.md diff --git a/manuscript/CHANGELOG.md b/manuscript/CHANGELOG.md index 9938f4f..880056e 100644 --- a/manuscript/CHANGELOG.md +++ b/manuscript/CHANGELOG.md @@ -13,13 +13,10 @@ ## Recently added recipes +* Added [Bitwarden](/recipes/bitwarden/), an **awesome** open-source password manager, with great mobile sync support (_14 May 2019_) * Added [Traefik Forward Auth](/ha-docker-swarm/traefik-forward-auth/), replacing function of multiple [oauth_proxies](/reference/oauth_proxy/) with a single, 7MB Go application, which can authenticate against Google, [KeyCloak](/recipes/keycloak/), and other OIDC providers (_10 May 2019_) * Added Kubernetes version of [Miniflux](/recipes/kubernetes/miniflux/) recipe, a minimalistic RSS reader supporting the Fever API (_26 Mar 2019_) * Added Kubernetes version of [Kanboard](/recipes/kubernetes/kanboard/) recipe, a lightweight, well-supported Kanban tool for visualizing your work (_19 Mar 2019_) -* Added [Minio](/recipes/minio/), a high performance distributed object storage server, designed for large-scale private cloud infrastructure, but perfect for simple use cases where emulating AWS S3 is useful. (_27 Jan 2019_) -* Added the beginning of the **Kubernetes** design, including a getting started on using [Digital Ocean,](/kubernetes/digitalocean/) and a WIP recipe for an [MQTT](/recipes/mqtt/) broker (_21 Jan 2019_) -* [ElkarBackup](/recipes/elkarbackup/), a beautiful GUI-based backup solution built on rsync/rsnapshot (_1 Jan 2019_) - ## Recent improvements diff --git a/manuscript/book.txt b/manuscript/book.txt index 8c42f34..1c187ca 100644 --- a/manuscript/book.txt +++ b/manuscript/book.txt @@ -49,6 +49,7 @@ recipes/swarmprom.md recipes/turtle-pool.md sections/menu-docker.md +recipes/bitwarden.md recipes/bookstack.md recipes/cryptominer.md recipes/cryptominer/mining-rig.md diff --git a/manuscript/images/bitwarden.png b/manuscript/images/bitwarden.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1b8bb18e196b3077564aec405811d7e397344e GIT binary patch literal 77691 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 Lt4P&In0)&`a)j>@ literal 0 HcmV?d00001 diff --git a/manuscript/recipes/bitwarden.md b/manuscript/recipes/bitwarden.md new file mode 100644 index 0000000..8dbaaed --- /dev/null +++ b/manuscript/recipes/bitwarden.md @@ -0,0 +1,97 @@ +# Bitwarden + +Heard about the [latest passsword breach](https://www.databreaches.net) (since lunch)? [HaveYouBeenPowned](http://haveibeenpwned.com) lately? [Passwords are broken](https://www.theguardian.com/technology/2008/nov/13/internet-passwords), and as the amount of sites for which you need to store credentials grows exponetially, so does the risk of using a common password. + +"*Duh, use a password manager*", you say. Sure, but be aware that [even password managers have security flaws](https://www.securityevaluators.com/casestudies/password-manager-hacking/). + +**OK, look** - no software is perfect, and there will always be a risk of your credentials being exposed in ways you didn't intend. You can at least **minimize** the impact of such exposure by using a password manager to store unique credentials per-site. While [1Password](http://1password.com) is king of the commercial password manager, [BitWarden](https://bitwarden.com) is king of the open-source, self-hosted password manager. + +Enter Bitwarden.. + +![BitWarden Screenshot](../images/bitwarden.png) + +Bitwarden is a free and open source password management solution for individuals, teams, and business organizations. While Bitwarden does offer a paid / hosted version, the free version comes with the following (*better than any other free password manager!*): + +* Access & install all Bitwarden apps +* Sync all of your devices, no limits! +* Store unlimited items in your vault +* Logins, secure notes, credit cards, & identities +* Two-step authentication (2FA) +* Secure password generator +* Self-host on your own server (optional) + +## Ingredients + +1. [Docker swarm cluster](/ha-docker-swarm/design/) with [persistent shared storage](/ha-docker-swarm/shared-storage-ceph.md) +2. [Traefik](/ha-docker-swarm/traefik_public) configured per design +3. DNS entry for the hostname you intend to use, pointed to your [keepalived](ha-docker-swarm/keepalived/) IP + +## Preparation + +### Setup data locations + +We'll need to create a directory to bind-mount into our container, so create `/var/data/bitwarden`: + +``` +mkdir /var/data/bitwarden +``` + +### Setup Docker Swarm + +Create a docker swarm config file in docker-compose syntax (v3), something like this: + +!!! tip + I share (_with my [patreon patrons](https://www.patreon.com/funkypenguin)_) a private "_premix_" git repository, which includes necessary docker-compose and env files for all published recipes. This means that patrons can launch any recipe with just a ```git pull``` and a ```docker stack deploy``` 👍 + + +``` +version: "3" +services: + bitwarden: + image: mprasil/bitwarden + env_file: /var/data/config/bitwarden/bitwarden.env + volumes: + - /etc/localtime:/etc/localtime:ro + - /var/data/bitwarden:/data/:rw + deploy: + labels: + - traefik.enable=true + - traefik.web.frontend.rule=Host:bitwarden.example.com + - traefik.web.port=80 + - traefik.hub.frontend.rule=Host:bitwarden.example.com;Path:/notifications/hub + - traefik.hub.port=3012 + - traefik.docker.network=traefik_public + networks: + - traefik_public + +networks: + traefik_public: + external: true +``` + +!!! note + Note the clever use of two Traefik frontends to expose the notifications hub on port 3012. Thanks @gkoerk! + + +## Serving + +### Launch Bitwarden stack + +Launch the Bitwarden stack by running ```docker stack deploy bitwarden -c ``` + +Browse to your new instance at https://**YOUR-FQDN**, and create a new user account and master password (*Just click the **Create Account** button without filling in your email address or master password*) + +### Get the apps / extensions + +Once you've created your account, jump over to https://bitwarden.com/#download and download the apps for your mobile and browser, and start adding your logins! + +## Chef's Notes + +1. You'll notice we're not using the *official* container images (*[all 6 of them required](https://help.bitwarden.com/article/install-on-premise/#install-bitwarden)!)*, but rather a [more lightweight version ideal for self-hosting](https://hub.docker.com/r/mprasil/bitwarden). All of the elements are contained within a single container, and SQLite is used for the database backend. +2. The inclusion of Bitwarden was due to the efforts of @gkoerk in our [Discord server](http://chat.funkypenguin.co.nz)- Thanks Gerry! + +### Tip your waiter (donate) 👏 + +Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏 + +### Your comments? 💬 diff --git a/manuscript/recipes/keycloak.md b/manuscript/recipes/keycloak.md index f712be8..5738966 100644 --- a/manuscript/recipes/keycloak.md +++ b/manuscript/recipes/keycloak.md @@ -173,15 +173,13 @@ For each of the following mappers, click the name, and set the "_Read Only_" fla ![KeyCloak Add Realm Screenshot](/images/sso-stack-keycloak-4.png) !!! important - Development of this recipe is sponsored by [The Common Observatory](https://www.observe.global/). Thanks guys! + Development of the original KeyCloak recipe is sponsored by [The Common Observatory](https://www.observe.global/). Thanks guys! [![Common Observatory](../images/common_observatory.png)](https://www.observe.global/) ## Chef's Notes -1. I wanted to be able to add multiple networks to KeyCloak (_i.e., a dedicated overlay network for LDAP authentication_), but the entrypoint used by the container produces an error when more than one network is configured. This could theoretically be corrected in future, with a PR, but the [GitHub repo](https://github.com/jboss-dockerfiles/keycloak) has no issues enabled, so I wasn't sure where to start. - ### Tip your waiter (donate) 👏 Did you receive excellent service? Want to make your waiter happy? (_..and support development of current and future recipes!_) See the [support](/support/) page for (_free or paid)_ ways to say thank you! 👏 diff --git a/manuscript/sponsored-projects.md b/manuscript/sponsored-projects.md index 602f5c2..1fd3dbe 100644 --- a/manuscript/sponsored-projects.md +++ b/manuscript/sponsored-projects.md @@ -16,3 +16,6 @@ I regularly donate to / sponsor the following projects. **Join me** in supportin | [LinuxServer.io](https://www.linuxserver.io) | [PayPal](https://www.linuxserver.io/donate) | [Pi-hole](https://pi-hole.net/) | [Patreon](https://www.patreon.com/pihole/posts) | [Franck Nijhof's Hassio Addons](https://www.frenck.nl/about/franck-nijhof/) | [Patreon](https://www.patreon.com/frenck/overview) +| [WidgetBot's Discord Widget](https://widgetbot.io/) | [Patreon](https://www.patreon.com/widgetbot/overview) + + diff --git a/mkdocs.yml b/mkdocs.yml index f247c1f..9ed94b4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -87,6 +87,7 @@ nav: # - phpIPAM: recipes/kubernetes/phpipam.md # - PrivateBin: recipes/kubernetes/privatebin.md - Menu: + - Bitwarden: recipes/bitwarden.md - Bookstack: recipes/bookstack.md - CryptoMiner: - Start: recipes/cryptominer.md @@ -169,8 +170,8 @@ google_analytics: - 'UA-139253-18' - 'auto' -extra_javascript: -# - 'extras/javascript/piwik.js' +#extra_javascript: +# - 'extras/javascript/discord.js' # Extensions markdown_extensions: diff --git a/overrides/main.html b/overrides/main.html index d2612f8..bd9f7ec 100644 --- a/overrides/main.html +++ b/overrides/main.html @@ -16,3 +16,17 @@ {% endblock %} + + +{% block scripts %} + +{% endblock %} \ No newline at end of file