From 475bb8054ddd12fafbb738b7625410410bd7dbb7 Mon Sep 17 00:00:00 2001 From: Vaultnord Date: Sun, 30 Aug 2026 02:30:47 +0200 Subject: [PATCH] Synk fra arbeidsrepoet --- Dockerfile | 24 +++++ README.md | 49 +++++----- brand-proxy/conf.d/default.conf | 84 ------------------ .../static => brand}/apple-touch-icon.png | Bin {brand-proxy/static => brand}/brand.css | 0 {brand-proxy/static => brand}/favicon-16.png | Bin {brand-proxy/static => brand}/favicon.png | Bin {brand-proxy/static => brand}/kilde.html | 10 +-- {brand-proxy/static => brand}/logo-white.png | Bin {brand-proxy/static => brand}/logo.png | Bin {brand-proxy/static => brand}/ukjent.html | 0 .../static => brand}/utilgjengelig.html | 0 12 files changed, 54 insertions(+), 113 deletions(-) create mode 100644 Dockerfile delete mode 100644 brand-proxy/conf.d/default.conf rename {brand-proxy/static => brand}/apple-touch-icon.png (100%) rename {brand-proxy/static => brand}/brand.css (100%) rename {brand-proxy/static => brand}/favicon-16.png (100%) rename {brand-proxy/static => brand}/favicon.png (100%) rename {brand-proxy/static => brand}/kilde.html (79%) rename {brand-proxy/static => brand}/logo-white.png (100%) rename {brand-proxy/static => brand}/logo.png (100%) rename {brand-proxy/static => brand}/ukjent.html (100%) rename {brand-proxy/static => brand}/utilgjengelig.html (100%) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..98cd4f5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +# Vaultnord sitt hvelv-image: offisiell Vaultwarden med vårt preg lagt inn. +# +# Ingen kildekode er endret. Vi legger til statiske filer i den ferdigbygde +# web-klienten og setter inn to linjer i index.html. Oppgradering er å bytte +# VW_VERSION og bygge på nytt - det tar sekunder, og web-klienten bygges ikke. +# +# Endringene er publisert i git.skui.io/vaultnord.no/vaultnord-brand, som AGPL +# krever når man distribuerer en endret versjon. + +ARG VW_VERSION=alpine +FROM vaultwarden/server:${VW_VERSION} + +# Ressursene ligger i brand/ i det offentlige repoet og i +# brand-proxy/static/ i arbeidsrepoet. Byggekonteksten avgjør hvilken. +ARG BRAND_DIR=brand-proxy/static +COPY ${BRAND_DIR}/ /web-vault/_vaultnord/ + +RUN set -eux; \ + cp /web-vault/_vaultnord/favicon.png /web-vault/images/favicon-32x32.png; \ + cp /web-vault/_vaultnord/favicon-16.png /web-vault/images/favicon-16x16.png; \ + cp /web-vault/_vaultnord/apple-touch-icon.png /web-vault/images/apple-touch-icon.png; \ + sed -i 's###' /web-vault/index.html; \ + sed -i 's###' /web-vault/index.html; \ + grep -q '_vaultnord/brand.css' /web-vault/index.html diff --git a/README.md b/README.md index 73410de..cfcd5c5 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,41 @@ -# Vaultnord — preg på hvelvene +# Vaultnord — hvelv-image Vaultnord drifter passordhvelv basert på [Vaultwarden](https://github.com/dani-garcia/vaultwarden), som er fri programvare -under **AGPL-3.0**. +under **AGPL-3.0**. Vi kjører en lett endret utgave, og AGPL krever at endringene +er tilgjengelige for dem som bruker tjenesten. Her er de. -Dette repoet inneholder alt vi legger *utenpå* hvelvet: en nginx-mellomtjener som -syr inn vår egen CSS, favicon og en bunntekst med kildekodelenke. +## Hva som er endret -## Hvorfor det ligger utenfor programmet +Ingenting i selve serverkoden. Vi bygger fra det offisielle imaget og legger til +statiske filer i den ferdigbygde web-klienten: -Vaultwarden kjører hos oss **uendret**, i offisielle utgivelser. Skulle vi -rebrandet ved å patche web-klienten, måtte den bygges på nytt for hver -oppstrømsversjon — og da blir en sikkerhetsfiks til en byggejobb i stedet for en -tag-endring. Ved å legge preget på i en mellomtjener er oppgradering fortsatt -bare å bytte image. +- vår CSS, som bytter logo, farger og illustrasjonsfarger +- våre ikoner, som erstatter klientens favicon +- en bunntekst som lenker til denne kildekoden +- en side med lisens- og kildekodeinformasjon -Det gir også et ryddigere lisensbilde: vi endrer ikke programmet, og hvelvet du -snakker med er identisk med det oppstrøms utgir. +`index.html` får to ekstra linjer: en `` til CSS-en og bunnteksten. +Web-klienten bygges ikke om, og ingen Angular- eller Rust-kode røres. + +Konsekvensen er at oppgradering er å bytte `VW_VERSION` og bygge på nytt. En +sikkerhetsfiks fra oppstrøms skal ikke være en byggejobb. + +## Bygge selv + + docker build --build-arg VW_VERSION=alpine --build-arg BRAND_DIR=brand -t vaultnord/vault . ## Kildekode | | | |---|---| | Vaultwarden, original | https://github.com/dani-garcia/vaultwarden | -| Vaultwarden, vår kopi | https://git.skui.io/vaultnord.no/vaultwarden | +| Vaultwarden, vårt speil | https://git.skui.io/vaultnord.no/vaultwarden | | Dette repoet | https://git.skui.io/vaultnord.no/vaultnord-brand | -Vaultnord-panelet — der kunder administrerer brukerne sine — er et selvstendig -program som snakker med hvelvet over HTTP-API. Det er ikke avledet av -Vaultwarden, og deles ikke under AGPL. +## Hva som ikke er her -## Innhold - - brand-proxy/nginx.conf mellomtjeneren - brand-proxy/static/brand.css fargene og bunnteksten - brand-proxy/static/kilde.html siden hvelvets bunntekst peker til - -Lisens for innholdet i dette repoet: se `brand-proxy/`. Vaultwarden selv er -AGPL-3.0, og lisensteksten følger med i kildekoderepoene over. +Vaultnord-panelet — nettsiden og styringsflaten der kunder administrerer +brukerne sine — er et selvstendig program som snakker med hvelvet over +HTTP-API. Det er ikke avledet av Vaultwarden, deler ingen kode med det, og +faller derfor ikke inn under AGPL. Det er lukket. diff --git a/brand-proxy/conf.d/default.conf b/brand-proxy/conf.d/default.conf deleted file mode 100644 index 04e1ced..0000000 --- a/brand-proxy/conf.d/default.conf +++ /dev/null @@ -1,84 +0,0 @@ -# Vaultnord brand-proxy -# -# Ligger mellom Traefik og kundenes hvelv, og syr inn vår egen CSS, favicon og -# en bunntekst med kildekodelenker - uten å røre Vaultwarden-imaget. -# -# Poenget er at oppgradering av hvelvene skal være å bytte en image-tag, ikke å -# bygge en patchet web-vault på nytt. Alt vi legger til, legges til her. - -map $http_upgrade $connection_upgrade { - default upgrade; - '' close; -} - -# Første ledd i vertsnavnet er kundens slug: firma.vaultnord.no -> firma -map $host $tenant { - default ""; - "~^(?[a-z0-9-]+)\.vaultnord\.no$" $slug; -} - -server { - listen 80; - server_name _; - - # Vedlegg kan være store. Cloudflare stopper uansett på 100 MB i gratisplanen. - client_max_body_size 128m; - - # Docker sin interne DNS. Uten resolver kan vi ikke slå opp vw- - # dynamisk, og nginx ville nektet å starte om en tenant var nede. - resolver 127.0.0.11 valid=10s ipv6=off; - - # Er hvelvet nede - stoppet, under oppdatering, eller kunden er satt på pause - # - skal brukeren møte noe som forklarer, ikke nginx sin 502-side. - error_page 502 503 504 =503 /_vaultnord/utilgjengelig.html; - # Gjelder bare våre egne 404-er (ukjent vertsnavn). 404 fra hvelvet selv - # slipper gjennom urørt - proxy_intercept_errors er av. - error_page 404 /_vaultnord/ukjent.html; - - location = /_vaultnord/health { - access_log off; - return 200 "ok\n"; - } - - # Klientens egne ikoner byttes ut på filnivå. Da slipper vi å kjempe mot - # manifest og Angular om hva som havner i fanen - de får rett og slett - # aldri Bitwardens filer. - location = /images/favicon-32x32.png { alias /brand/favicon.png; } - location = /images/favicon-16x16.png { alias /brand/favicon-16.png; } - location = /images/apple-touch-icon.png { alias /brand/apple-touch-icon.png; } - - location /_vaultnord/ { - alias /brand/; - expires 1h; - add_header Cache-Control "public"; - } - - location / { - if ($tenant = "") { return 404; } - - proxy_pass http://vw-$tenant$request_uri; - proxy_http_version 1.1; - - proxy_set_header Host $host; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header CF-Connecting-IP $http_cf_connecting_ip; - - # Live-synk mellom klientene går over websocket. - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_read_timeout 3600s; - - # sub_filter kan ikke røre en komprimert kropp. Vi ber om ukomprimert - # fra hvelvet; Cloudflare komprimerer uansett ut mot brukeren. - proxy_set_header Accept-Encoding ""; - - sub_filter_once on; - sub_filter_types text/html; - sub_filter '' - ''; - sub_filter '' - ''; - } -} diff --git a/brand-proxy/static/apple-touch-icon.png b/brand/apple-touch-icon.png similarity index 100% rename from brand-proxy/static/apple-touch-icon.png rename to brand/apple-touch-icon.png diff --git a/brand-proxy/static/brand.css b/brand/brand.css similarity index 100% rename from brand-proxy/static/brand.css rename to brand/brand.css diff --git a/brand-proxy/static/favicon-16.png b/brand/favicon-16.png similarity index 100% rename from brand-proxy/static/favicon-16.png rename to brand/favicon-16.png diff --git a/brand-proxy/static/favicon.png b/brand/favicon.png similarity index 100% rename from brand-proxy/static/favicon.png rename to brand/favicon.png diff --git a/brand-proxy/static/kilde.html b/brand/kilde.html similarity index 79% rename from brand-proxy/static/kilde.html rename to brand/kilde.html index c565c36..173c2ac 100644 --- a/brand-proxy/static/kilde.html +++ b/brand/kilde.html @@ -27,14 +27,14 @@

Hva vi har endret

-

Ingenting i Vaultwarden selv. Vi kjører offisielle utgivelser uendret. - Vaultnord-preget — farger, logo og denne bunnteksten — legges på utenfra av - en egen mellomtjener. Den koden ligger i vaultnord-brand over, - og rører ikke programmet.

+

Ingen endringer i serverkoden. Vi bygger fra det offisielle imaget og legger + til statiske filer i den ferdigbygde web-klienten: vår CSS, våre ikoner og + denne bunnteksten. Dockerfilen og ressursene ligger i + vaultnord-brand over.

Administrasjonspanelet på vaultnord.no er et selvstendig program som snakker med hvelvet over API. Det er ikke en del av Vaultwarden og deles ikke under AGPL.

diff --git a/brand-proxy/static/logo-white.png b/brand/logo-white.png similarity index 100% rename from brand-proxy/static/logo-white.png rename to brand/logo-white.png diff --git a/brand-proxy/static/logo.png b/brand/logo.png similarity index 100% rename from brand-proxy/static/logo.png rename to brand/logo.png diff --git a/brand-proxy/static/ukjent.html b/brand/ukjent.html similarity index 100% rename from brand-proxy/static/ukjent.html rename to brand/ukjent.html diff --git a/brand-proxy/static/utilgjengelig.html b/brand/utilgjengelig.html similarity index 100% rename from brand-proxy/static/utilgjengelig.html rename to brand/utilgjengelig.html