Files
vaultnord-brand/Dockerfile
T
2026-08-30 13:15:53 +00:00

63 lines
3.4 KiB
Docker

# 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
# Digesten til akkurat den versjonen, se UPSTREAM_DIGEST.
ARG VW_DIGEST=
# Egne norske tekster legges oppå klientens språkfil. Bitwardens nb-oversettelse
# er ufullstendig, og klienten faller tilbake til engelsk der den mangler - det
# gir et halvt norsk grensesnitt. Vi retter de skjermene kundene faktisk møter.
FROM vaultwarden/server:${VW_VERSION}@${VW_DIGEST} AS kilde
FROM alpine:3.21@sha256:48b0309ca019d89d40f670aa1bc06e426dc0931948452e8491e3d65087abc07d AS sprak
RUN apk add --no-cache jq
COPY --from=kilde /web-vault/locales/nb/messages.json /nb.json
ARG LOCALE_DIR=vault-image/locale
COPY ${LOCALE_DIR}/nb.json /over.json
RUN jq -s '.[0] * .[1]' /nb.json /over.json > /merged.json \
&& jq -e '.vaultWelcomeDialogTitle.message | test("Velkommen")' /merged.json >/dev/null
FROM vaultwarden/server:${VW_VERSION}@${VW_DIGEST}
COPY --from=sprak /merged.json /web-vault/locales/nb/messages.json
# Ressursene ligger i brand/ i det offentlige repoet og i
# vault-image/brand/ i arbeidsrepoet. Byggekonteksten avgjør hvilken.
ARG BRAND_DIR=vault-image/brand
COPY ${BRAND_DIR}/ /web-vault/_vaultnord/
# Egne e-postmaler. Uten disse går invitasjonene ut med Vaultwardens navn og
# utseende - det er kundens første inntrykk av tjenesten, og det skal være vårt.
ARG MAIL_DIR=vault-image/mail
COPY ${MAIL_DIR}/ /vaultnord/templates/
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> \&middot; <a href="/_vaultnord/kilde.html">kildekode og lisens</a></div></body>#' /web-vault/index.html; \
grep -q '_vaultnord/brand.css' /web-vault/index.html; \
\
# Web-klienten sier "Bitwarden" i grensesnittet - i velkomstskjermen, i
# hjelpetekster og i knappene. Vi bytter navnet i språkfilene. URL-er går
# klar: de skriver bitwarden.com med liten forbokstav.
find /web-vault/locales -name messages.json -exec \
sed -i 's/Bitwarden/Vaultnord/g' {} +; \
grep -q 'Vaultnord' /web-vault/locales/nb/messages.json; \
\
# Brandingen henger på navn i web-klienten. Finnes de ikke lenger, har
# oppstrøms endret noe, og pynten ville blitt stille borte. Da skal bygget
# stoppe her i stedet - se lista øverst i brand.css.
for marker in new-logo-themed bit-nav-logo bit-landing-footer \
--color-brand-600 --color-illustration-bg-primary tw-min-h-screen; do \
grep -rqs -- "$marker" /web-vault/ \
|| { echo "FANT IKKE '$marker' i web-klienten - brandingen må oppdateres" >&2; exit 1; }; \
done