Giter Site home page Giter Site logo

guerzon / vaultwarden Goto Github PK

View Code? Open in Web Editor NEW
105.0 4.0 54.0 110 KB

Helm chart for Vaultwarden, the (unofficial) Bitwarden-compatible server written in Rust, formerly known as bitwarden_rs

License: MIT License

Smarty 93.86% Shell 4.40% Makefile 1.73%
helm helm-charts vaultwarden kubernetes bitwarden docker

vaultwarden's Introduction

Helm chart for Vaultwarden

MIT Licensed Artifact Hub

Vaultwarden, formerly known as Bitwarden_RS, is an "alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients, perfect for self-hosted deployment where running the official resource-heavy service might not be ideal."

Description

This Helm chart is used to deploy vaultwarden with a stable configuration to Kubernetes clusters.

The vaultwarden project can be found here. To learn more about Vaultwarden, please visit the wiki.

Change of Resource Type in Versions >= 0.18.0

Starting from version 0.18.0, when a stateless configuration is detected that utilizes an external database and persistent storage, a Deployment is automatically used in favor of the current StatefulSet. This enables running multiple pods simultaneously, thereby enhancing the processes of updates, rollbacks, and scalability for load balancing. This automatic detection can be overridden by manually specifying a resourceType.

Prerequisites

  • Kubernetes >= 1.12
  • Helm >= 3.1.0
  • docker and make for generating the chart documentation

Usage

Add the repository:

helm repo add vaultwarden https://guerzon.github.io/vaultwarden

Refer to the detailed documentation here.

Disclaimer

Please do your due-diligence before using this chart for a production deployment.

Nevertheless, if you find any issues while using this chart, or have any suggestions, I would appreciate it if you would submit an issue. Alternatively, PRs are appreciated!

License

See LICENSE.

Author

This Helm chart was created and maintained by Lester Guerzon.

Credits

  • The vaultwarden project can be found here
  • Further information about Bitwarden and 8bit Solutions LLC can be found here

References

vaultwarden's People

Contributors

0xsanti avatar achauve avatar dolohow avatar groundhog2k avatar guerzon avatar jessebot avatar johanvanderkuijl avatar klauserber avatar lefes avatar luca-heitmann avatar michelwilson avatar philipsens avatar pkizzle avatar pree avatar pseudoresonance avatar santiagon610 avatar teslamancer avatar vasilykraev avatar vetal-ca avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

vaultwarden's Issues

helm chart `index.yaml` not found, so you can't install without cloning the repo

Thanks for maintaining this helm chart! It's super useful!

Currently getting:

helm repo add vaultwarden https://guerzon.github.io/vaultwarden
Error: 
looks like "https://guerzon.github.io/vaultwarden" is not a valid chart repository or cannot be reached: 
failed to fetch https://guerzon.github.io/vaultwarden/index.yaml :
404 Not Found

I am using the same releaser as you are, and I think it's not working because you need to enable write permissions for the github action workflow. You can set those in the workflow file itself using these docs.

The easiest way though, is to select "Read and Write Permissions" under Settings > Actions > General > Workflow permissions:
Screenshot 2023-08-07 at 15 39 00

You can check if it's working by checking the gh-pages branch for a repo root level "index.yaml", which should look something like this.

This would make it so no one has to clone your repo to install the chart.

Feature request: add other variables to configmap

First of all thank you for this chart and keeping it up to date.

There are some other variables that can be added to the configmap to support extra features:

  • ORG_CREATION_USERS: list of users that can create and manage organizations;
  • SENDS_ALLOWED: enable/disable the use of sends;
  • EMERGENCY_ACCESS_ALLOWED: if it is possible to enable emergency access;
  • TZ: the timezone, if we need it to be different than the one in the host

To get a full list, you can check how Gissi does it on his chart (that is abandoned apparently) at https://github.com/gissilabs/charts/tree/master/vaultwarden

Helm recommended labels

Hey, i noticed that u removed the standard templates used by helm, usually defined at _helpers.tpl file. Is there any reason for it?
This way helm won't be able to track its own manifests within k8s cluster.
You should at least include the recommended labels into the generated helm manifests, such as app.kubernetes.io/name. helm.sh/chart, app.kubernetes.io/managed-by and app.kubernetes.io/instance

{{/*
Common labels
*/}}
{{- define "test.labels" -}}
helm.sh/chart: {{ include "test.chart" . }}
{{ include "test.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Selector labels
*/}}
{{- define "test.selectorLabels" -}}
app.kubernetes.io/name: {{ include "test.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

Just a suggestion.

Websocket notification path/ingress

Hey, i noticed that you are using ImplementationSpecific as default pathTypeWs at WS ingress part.
As shown here:

  path: "/"
  ## @param ingress.pathWs Path for the websocket ingress
  ##
  pathWs: "/notifications/hub"
  ## @param ingress.pathType Path type for the ingress
  ## Ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
  ##
  pathType: "ImplementationSpecific"
  ## @param ingress.pathTypeWs Path type for the ingress
  ## Ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
  ##
  pathTypeWs: "ImplementationSpecific"

And this is how you set the ingress template:

  rules:
    - host: {{ .Values.ingress.hostname | quote }}
      http:
        paths:
        - path: {{ .Values.ingress.path }}
          pathType: {{ .Values.ingress.pathType }}
          backend:
            service:
              name: {{ include "vaultwarden.fullname" . }}
              port:
                name: "http"
        {{- if .Values.websocket.enabled }}
        - path: {{ .Values.ingress.pathWs }}
          pathType: {{ .Values.ingress.pathTypeWs }}
          backend:
            service:
              name: {{ include "vaultwarden.fullname" . }}
              port:
                name: "websocket"
        {{- end }}

But according to the official documentation:

To enable WebSockets notifications, an external reverse proxy is necessary, and it must be configured to do the following:
Route the /notifications/hub endpoint to the WebSocket server, by default at port 3012, making sure to pass the Connection and Upgrade headers. (Note the port can be changed with WEBSOCKET_PORT variable)
Route everything else, including /notifications/hub/negotiate, to the standard Rocket server, by default at port 80.

So, if i understand correctly, only /notifications/hub should reach to WS port. Thus, pathTypeWs should be Exact instead of ImplementationSpecific for nginx-ingress-controller, right?

Migrate vaultwarden docker compose to kubernetes

Hi team,

I actualy have an up to date vaultwarden installed with docker compose.

I have sevreal users, and a liscence for an organisation.

Is their any easy solution to migrate this installation to this helm chart version ?

Thank you for your help.

Latest update to chart V0.17.0 breaks upgrade process

When trying to upgrade an existing vaultwarden deployment based on chart version 0.16.1 to chart 0.17.0 the helm deployment fails with:

Error: UPGRADE FAILED: cannot patch "vault-vaultwarden" with kind StatefulSet: StatefulSet.apps "vault-vaultwarden" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'ordinals', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden

I guess this is related to changes made in the volumeMounts: section.

Some vars can't be set to allow Non-SSL auth mehanism for SMTP

According to this dani-garcia/vaultwarden#3477 I think it should be possibility to left this variables empty.

Possible solution:

in the configmap add:

  {{- if .Values.smtp.authMechanism }}
  SMTP_AUTH_MECHANISM: {{ .Values.smtp.authMechanism | quote }}
  {{- end }}

in the statefulset add:

 {{- if .Values.smtp.username }}
            - name: SMTP_USERNAME
              valueFrom:
                secretKeyRef:
                  name: {{ include "vaultwarden.fullname" . }}
                  key: SMTP_USERNAME
            {{- end }}
            {{- if .Values.smtp.password }}
            - name: SMTP_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: {{ include "vaultwarden.fullname" . }}
                  key: SMTP_PASSWORD
            {{- end }}

I can prepare a pull request with these changes.

Question: what is the purpose of rbac role in this chart?

Hello!

I tried to realise what is the purpose of rbac role in this chart? We need these permissions if Bitwarden pod needs to modify some Kubernetes resources, but I am unsure that Bitwarden pod does this. I didn't find any related information in README.md.

From my perspective these permissions listed in RBAC role are unnecessary.

rules:
  - apiGroups: ["extensions", "apps"]
    resources: ["deployments"]
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get","list","watch"]
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get"]

Could somebody clarify this?

Add https

Hello
do you think to add https on rocket service to manage end to end encryption ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.