diff --git a/apps/hydra/vaultwarden/kustomization.yaml b/apps/hydra/vaultwarden/kustomization.yaml new file mode 100644 index 0000000..4676104 --- /dev/null +++ b/apps/hydra/vaultwarden/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +metadata: + name: vaultwarden + namespace: vaultwarden +resources: +- namespace.yaml +- service.yaml diff --git a/apps/hydra/vaultwarden/namespace.yaml b/apps/hydra/vaultwarden/namespace.yaml new file mode 100644 index 0000000..6be2537 --- /dev/null +++ b/apps/hydra/vaultwarden/namespace.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: vaultwarden +spec: {} +status: {} diff --git a/apps/hydra/vaultwarden/service.yaml b/apps/hydra/vaultwarden/service.yaml new file mode 100644 index 0000000..3d29dbe --- /dev/null +++ b/apps/hydra/vaultwarden/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: vaultwarden + name: vaultwarden + namespace: vaultwarden +spec: + ports: + - nodePort: 300012 + port: 80 + targetPort: 0 + selector: + app: vaultwarden + type: NodePort +status: + loadBalancer: {} diff --git a/cmd/apps/main.go b/cmd/apps/main.go index f313c76..9cc6ae8 100644 --- a/cmd/apps/main.go +++ b/cmd/apps/main.go @@ -15,6 +15,7 @@ import ( "danicos.dev/daniel/homelab/pkg/postgres" "danicos.dev/daniel/homelab/pkg/root" "danicos.dev/daniel/homelab/pkg/truenas" + "danicos.dev/daniel/homelab/pkg/vaultwarden" /* apps "k8s.io/api/apps/v1" core "k8s.io/api/core/v1" @@ -40,9 +41,10 @@ func main() { } hydra_apps := map[string]stack.Stack{ - "linkding": linkding.Stack(), - "immich": immich.Stack(), - "glance": glance.Stack(), + "linkding": linkding.Stack(), + "immich": immich.Stack(), + "glance": glance.Stack(), + "vaultwarden": vaultwarden.Stack(), } for name, s := range hydra_apps { fmt.Printf("STACK: %s\n", name) diff --git a/pkg/root/services.go b/pkg/root/services.go index ea799e6..dfd5f12 100644 --- a/pkg/root/services.go +++ b/pkg/root/services.go @@ -53,6 +53,16 @@ var Glance = Service{ }, } +var Vaultwarden = Service{ + Name: "vaultwarden", + Image: "quay.io/vaultwarden/server:1.36.0", + Port: 80, // Server Port + Public: &Public{ + URL: "https://vault.danicos.me", + NodePort: 300012, + }, +} + var ( Longhorn = "longhorn" Monitoring = "monitoring" diff --git a/pkg/vaultwarden/vaultwarden.go b/pkg/vaultwarden/vaultwarden.go new file mode 100644 index 0000000..7cbc687 --- /dev/null +++ b/pkg/vaultwarden/vaultwarden.go @@ -0,0 +1,47 @@ +package vaultwarden + +import ( + "danicos.dev/daniel/go-kube/pkg/kube" + "danicos.dev/daniel/go-kube/pkg/stack" + "danicos.dev/daniel/homelab/pkg/root" + core "k8s.io/api/core/v1" +) + +var Namespace = kube.Namespace(root.Vaultwarden.Name) +var meta kube.Metadata +var srv core.Service + +func init() { + meta = kube.NewMetadata(root.Vaultwarden.Name, Namespace) + srv = meta.Service(root.Vaultwarden.Port) + srv.Spec.Type = core.ServiceTypeNodePort + srv.Spec.Ports[0].NodePort = int32(root.Vaultwarden.Public.NodePort) +} + +func Stack() stack.Stack { + kz := kube.NewKuztomizedStack( + meta, + map[string]any{ + "namespace": Namespace, + "service": srv, + // "deployment": Deployment(), + }, + ) + return kz.Stack("vaultwarden") +} + +/* +services: + vaultwarden: + image: vaultwarden/server:latest + container_name: vaultwarden + restart: always + environment: + # DOMAIN: "https://vaultwarden.example.com" # required when using a reverse proxy; your domain; vaultwarden needs to know it's https to work properly with attachments + SIGNUPS_ALLOWED: "true" # Deactivate this with "false" after you have created your account so that no strangers can register + volumes: + - ./vw-data:/data # the path before the : can be changed + ports: + - 11001:80 # you can replace the 11001 with your preferred port + +*/