77 lines
4.0 KiB
Docker
77 lines
4.0 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 python3
|
|
COPY --from=kilde /web-vault/locales /locales
|
|
ARG LOCALE_DIR=vault-image/locale
|
|
COPY ${LOCALE_DIR}/nb.json /over.json
|
|
COPY ${LOCALE_DIR}/sprak.py /sprak.py
|
|
# Navnet byttes i verdiene, ikke i nøklene. En sed over hele fila døpte om
|
|
# atten oppslagsord, og da fant klienten dem ikke lenger - hele onboardingen
|
|
# forsvant i stillhet. Kontrollene i sprak.py stopper bygget hvis det gjentar seg.
|
|
RUN set -eux; \
|
|
for f in /locales/*/messages.json; do \
|
|
case "$f" in \
|
|
*/nb/messages.json) python3 /sprak.py "$f" Vaultnord /over.json ;; \
|
|
*) python3 /sprak.py "$f" Vaultnord ;; \
|
|
esac; \
|
|
done; \
|
|
python3 /sprak.py --sjekk /locales/nb/messages.json
|
|
|
|
# E-postmalene bygges av maler.py, ett sett per språk. Serveren peker på ett av
|
|
# settene per kunde, så en engelsktalende bedrift kan få engelske e-poster uten
|
|
# at noen tekst skrives to steder.
|
|
FROM alpine:3.21@sha256:48b0309ca019d89d40f670aa1bc06e426dc0931948452e8491e3d65087abc07d AS maler
|
|
RUN apk add --no-cache python3
|
|
COPY --from=kilde /vaultwarden /vaultwarden
|
|
ARG MAIL_DIR=vault-image/mail
|
|
COPY ${MAIL_DIR}/maler.py /maler.py
|
|
# Første kall sammenligner med malene serveren faktisk kan sende: kommer det en
|
|
# ny i en oppgradering, stopper bygget her i stedet for at den går ut på engelsk.
|
|
RUN python3 /maler.py --mot /vaultwarden && python3 /maler.py /maler
|
|
|
|
FROM vaultwarden/server:${VW_VERSION}@${VW_DIGEST}
|
|
COPY --from=sprak /locales /web-vault/locales
|
|
|
|
# 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.
|
|
COPY --from=maler /maler/ /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> \· <a href="/_vaultnord/kilde.html">kildekode og lisens</a></div></body>#' /web-vault/index.html; \
|
|
grep -q '_vaultnord/brand.css' /web-vault/index.html; \
|
|
\
|
|
# 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
|