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/
|
||||
.playwright-mcp/
|
||||
*.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)
|
||||
|
||||
Se `.env.example` for en kommentert mal. Alt har standardverdier; kun `SOAPBOX_SITE_URL` og
|
||||
hovedbrukeren bør settes.
|
||||
|
||||
| Variabel | Standard | Beskrivelse |
|
||||
|---|---|---|
|
||||
| `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
|
||||
|
||||
```sh
|
||||
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)" \
|
||||
-t soapbox .
|
||||
podman compose up -d # se compose.yaml
|
||||
cp .env.example .env # sett SOAPBOX_SITE_URL og hovedbruker
|
||||
./build.sh # bygger localhost/soapbox:latest med build-metadata
|
||||
./run.sh # podman run --replace med .env, port 127.0.0.1:8080
|
||||
# eller: podman compose up -d
|
||||
```
|
||||
|
||||
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
|
||||
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:
|
||||
soapbox:
|
||||
image: localhost/soapbox:latest
|
||||
container_name: soapbox
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:8080:8080"
|
||||
- "127.0.0.1:${SOAPBOX_PORT:-8080}:8080"
|
||||
volumes:
|
||||
- soapbox-data:/data
|
||||
environment:
|
||||
SOAPBOX_SITE_URL: https://blog.domene.no
|
||||
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å
|
||||
- ${SOAPBOX_VOLUME:-soapbox-data}:/data:Z
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
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