Synk fra arbeidsrepoet
@@ -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#</head>#<link rel="stylesheet" href="/_vaultnord/brand.css"><link rel="icon" href="/_vaultnord/favicon.png"></head>#' /web-vault/index.html; \
|
||||
sed -i 's#</body>#<div id="vaultnord-footer">Driftet av <a href="https://vaultnord.no">Vaultnord</a> \· <a href="/_vaultnord/kilde.html">kildekode og lisens</a></div></body>#' /web-vault/index.html; \
|
||||
grep -q '_vaultnord/brand.css' /web-vault/index.html
|
||||
@@ -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 `<link>` 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.
|
||||
|
||||
@@ -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 "";
|
||||
"~^(?<slug>[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-<slug>
|
||||
# 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 '</head>'
|
||||
'<link rel="stylesheet" href="/_vaultnord/brand.css"><link rel="icon" href="/_vaultnord/favicon.png"></head>';
|
||||
sub_filter '</body>'
|
||||
'<div id="vaultnord-footer">Driftet av <a href="https://vaultnord.no">Vaultnord</a> · <a href="/_vaultnord/kilde.html">kildekode og lisens</a></div></body>';
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 458 B After Width: | Height: | Size: 458 B |
|
Before Width: | Height: | Size: 760 B After Width: | Height: | Size: 760 B |
@@ -27,14 +27,14 @@
|
||||
<ul>
|
||||
<li>Original: <a href="https://github.com/dani-garcia/vaultwarden">github.com/dani-garcia/vaultwarden</a></li>
|
||||
<li>Vår kopi: <a href="https://git.skui.io/vaultnord.no/vaultwarden">git.skui.io/vaultnord.no/vaultwarden</a></li>
|
||||
<li>Vårt preg på hvelvet: <a href="https://git.skui.io/vaultnord.no/vaultnord-brand">git.skui.io/vaultnord.no/vaultnord-brand</a></li>
|
||||
<li>Vår endrede utgave (Dockerfile og ressurser): <a href="https://git.skui.io/vaultnord.no/vaultnord-brand">git.skui.io/vaultnord.no/vaultnord-brand</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Hva vi har endret</h2>
|
||||
<p>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 <code>vaultnord-brand</code> over,
|
||||
og rører ikke programmet.</p>
|
||||
<p>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
|
||||
<code>vaultnord-brand</code> over.</p>
|
||||
<p>Administrasjonspanelet på <a href="https://vaultnord.no">vaultnord.no</a> er
|
||||
et selvstendig program som snakker med hvelvet over API. Det er ikke en del
|
||||
av Vaultwarden og deles ikke under AGPL.</p>
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |