Legg til build.sh, run.sh og .env.example
build.sh bygger imaget med build-dato og git-revisjon, run.sh starter containeren idempotent (podman run --replace) med innstillinger fra .env. compose.yaml leser nå samme .env. Alle variabler har standardverdier; .env.example dokumenterer dem. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JcEy43fNYpwg6K6oTKakWR
This commit is contained in:
parent
d6e5243d25
commit
5f6fc252a7
6 changed files with 89 additions and 15 deletions
30
.env.example
Normal file
30
.env.example
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Kopier til .env og juster. Alle verdier har fornuftige standarder;
|
||||||
|
# du trenger strengt tatt bare SOAPBOX_SITE_URL og hovedbrukeren.
|
||||||
|
# .env leses av run.sh (podman --env-file) og compose.yaml.
|
||||||
|
|
||||||
|
# Absolutt URL til bloggens rot. Brukes bare i feed.xml og for Secure-cookie
|
||||||
|
# (https → Secure). Ta med sub-path hvis du har en.
|
||||||
|
SOAPBOX_SITE_URL=https://blog.domene.no
|
||||||
|
|
||||||
|
# Sub-path bloggen ligger under bak Caddy, f.eks. /blog. Tom = rot.
|
||||||
|
SOAPBOX_BASE_PATH=
|
||||||
|
|
||||||
|
# Tema: mappe under soapbox/themes/
|
||||||
|
SOAPBOX_THEME=green
|
||||||
|
|
||||||
|
# Lengste side på opplastede bilder (px). EXIF fjernes alltid.
|
||||||
|
SOAPBOX_MAX_IMAGE_PX=2000
|
||||||
|
|
||||||
|
# Hovedbruker – opprettes ved første start, ignoreres når en eier finnes.
|
||||||
|
# Bytt passord i admin etterpå og fjern gjerne linjene her.
|
||||||
|
SOAPBOX_OWNER_USER=olemd
|
||||||
|
SOAPBOX_OWNER_PASSWORD=bytt-meg-naa
|
||||||
|
|
||||||
|
# Valgfritt: overstyr cookie-nøkkelen. Standard: autogenerert i /data/secret_key.
|
||||||
|
#SOAPBOX_SECRET_KEY=
|
||||||
|
|
||||||
|
# --- Bare for run.sh / compose (ikke lest av appen) ---
|
||||||
|
# Lokal port Caddy proxyer til. Bindes kun til 127.0.0.1.
|
||||||
|
SOAPBOX_PORT=8080
|
||||||
|
# Podman-volum (navn) eller katalog (absolutt sti) for /data
|
||||||
|
SOAPBOX_VOLUME=soapbox-data
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -7,3 +7,4 @@ data/
|
||||||
dist/
|
dist/
|
||||||
.playwright-mcp/
|
.playwright-mcp/
|
||||||
*.png
|
*.png
|
||||||
|
.env
|
||||||
|
|
|
||||||
15
README.md
15
README.md
|
|
@ -40,6 +40,9 @@ Tester: `uv run pytest`. Lint: `uv run ruff check . && uv run ruff format .`
|
||||||
|
|
||||||
## Konfigurasjon (miljøvariabler)
|
## Konfigurasjon (miljøvariabler)
|
||||||
|
|
||||||
|
Se `.env.example` for en kommentert mal. Alt har standardverdier; kun `SOAPBOX_SITE_URL` og
|
||||||
|
hovedbrukeren bør settes.
|
||||||
|
|
||||||
| Variabel | Standard | Beskrivelse |
|
| Variabel | Standard | Beskrivelse |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `SOAPBOX_DATA_DIR` | `./data` (`/data` i container) | Alt persistent |
|
| `SOAPBOX_DATA_DIR` | `./data` (`/data` i container) | Alt persistent |
|
||||||
|
|
@ -53,13 +56,15 @@ Tester: `uv run pytest`. Lint: `uv run ruff check . && uv run ruff format .`
|
||||||
## Container og Caddy
|
## Container og Caddy
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
BUILDAH_FORMAT=docker podman build \
|
cp .env.example .env # sett SOAPBOX_SITE_URL og hovedbruker
|
||||||
--build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
./build.sh # bygger localhost/soapbox:latest med build-metadata
|
||||||
--build-arg GIT_REVISION="$(git describe --always --dirty)" \
|
./run.sh # podman run --replace med .env, port 127.0.0.1:8080
|
||||||
-t soapbox .
|
# eller: podman compose up -d
|
||||||
podman compose up -d # se compose.yaml
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Ny versjon: `git pull && ./build.sh && ./run.sh`. Data ligger i podman-volumet `soapbox-data`
|
||||||
|
(`podman volume inspect soapbox-data` viser stien).
|
||||||
|
|
||||||
Caddy er ren reverse proxy, se `Caddyfile.example`. Ved sub-path skal Caddy **ikke** strippe
|
Caddy er ren reverse proxy, se `Caddyfile.example`. Ved sub-path skal Caddy **ikke** strippe
|
||||||
prefikset – appen monteres selv under `SOAPBOX_BASE_PATH`.
|
prefikset – appen monteres selv under `SOAPBOX_BASE_PATH`.
|
||||||
|
|
||||||
|
|
|
||||||
14
build.sh
Executable file
14
build.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Bygger container-imaget localhost/soapbox:latest med build-metadata
|
||||||
|
# (tidsstempel og git-revisjon, med -dirty hvis arbeidstreet har endringer).
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
TAG="${1:-localhost/soapbox:latest}"
|
||||||
|
|
||||||
|
BUILDAH_FORMAT=docker podman build \
|
||||||
|
--build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
||||||
|
--build-arg GIT_REVISION="$(git describe --always --dirty 2>/dev/null || echo unknown)" \
|
||||||
|
-t "$TAG" .
|
||||||
|
|
||||||
|
echo "Bygde $TAG"
|
||||||
16
compose.yaml
16
compose.yaml
|
|
@ -1,19 +1,15 @@
|
||||||
# podman-compose up -d (eller: podman compose up -d)
|
# Alternativ til run.sh: podman compose up -d
|
||||||
|
# Leser innstillinger fra .env (kopier .env.example).
|
||||||
services:
|
services:
|
||||||
soapbox:
|
soapbox:
|
||||||
image: localhost/soapbox:latest
|
image: localhost/soapbox:latest
|
||||||
container_name: soapbox
|
container_name: soapbox
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:8080:8080"
|
- "127.0.0.1:${SOAPBOX_PORT:-8080}:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- soapbox-data:/data
|
- ${SOAPBOX_VOLUME:-soapbox-data}:/data:Z
|
||||||
environment:
|
env_file:
|
||||||
SOAPBOX_SITE_URL: https://blog.domene.no
|
- .env
|
||||||
SOAPBOX_BASE_PATH: ""
|
|
||||||
SOAPBOX_THEME: green
|
|
||||||
# Settes kun første gang; ignoreres når en hovedbruker finnes.
|
|
||||||
SOAPBOX_OWNER_USER: olemd
|
|
||||||
SOAPBOX_OWNER_PASSWORD: bytt-meg-nå
|
|
||||||
volumes:
|
volumes:
|
||||||
soapbox-data:
|
soapbox-data:
|
||||||
|
|
|
||||||
28
run.sh
Executable file
28
run.sh
Executable file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Starter (eller erstatter) soapbox-containeren med innstillinger fra .env.
|
||||||
|
# Idempotent: kjør på nytt etter build.sh for å rulle ut nytt image.
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
ENV_FILE="${ENV_FILE:-.env}"
|
||||||
|
if [[ ! -f "$ENV_FILE" ]]; then
|
||||||
|
echo "Fant ikke $ENV_FILE – kopier .env.example til .env og juster." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verdier som bare gjelder for podman-kjøringen (ikke appen)
|
||||||
|
PORT="$(grep -E '^SOAPBOX_PORT=' "$ENV_FILE" | cut -d= -f2- || true)"
|
||||||
|
VOLUME="$(grep -E '^SOAPBOX_VOLUME=' "$ENV_FILE" | cut -d= -f2- || true)"
|
||||||
|
PORT="${PORT:-8080}"
|
||||||
|
VOLUME="${VOLUME:-soapbox-data}"
|
||||||
|
IMAGE="${1:-localhost/soapbox:latest}"
|
||||||
|
|
||||||
|
podman run -d --replace --name soapbox \
|
||||||
|
--restart unless-stopped \
|
||||||
|
-p "127.0.0.1:${PORT}:8080" \
|
||||||
|
-v "${VOLUME}:/data:Z" \
|
||||||
|
--env-file "$ENV_FILE" \
|
||||||
|
"$IMAGE"
|
||||||
|
|
||||||
|
echo "soapbox kjører på http://127.0.0.1:${PORT}/ (data i ${VOLUME})"
|
||||||
|
echo "Logger: podman logs -f soapbox"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue