From a0b48bc39ab3ea5e7f7bbfbdc79a97d7cf79033f Mon Sep 17 00:00:00 2001 From: Ole-Morten Duesund Date: Wed, 26 Aug 2026 15:09:39 +0200 Subject: [PATCH] =?UTF-8?q?SOAPBOX=5FBIND:=20velg=20adresse=20containeren?= =?UTF-8?q?=20eksponeres=20p=C3=A5=20(Caddy=20p=C3=A5=20annen=20maskin)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Standard 127.0.0.1 (Caddy lokalt). Kjører Caddy på en annen maskin over Tailscale, settes SOAPBOX_BIND til denne maskinens Tailscale-IP så appen bare lytter på tailnettet. Brukes av run.sh og compose.yaml; nytt Caddyfile-eksempel for oppsettet. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01JcEy43fNYpwg6K6oTKakWR --- .env.example | 8 +++++++- Caddyfile.example | 8 ++++++++ README.md | 5 +++-- compose.yaml | 2 +- run.sh | 5 +++-- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index 80a481b..25b72d4 100644 --- a/.env.example +++ b/.env.example @@ -32,7 +32,13 @@ SOAPBOX_OWNER_PASSWORD=bytt-meg-naa #SOAPBOX_SECRET_KEY= # --- Bare for run.sh / compose (ikke lest av appen) --- -# Lokal port Caddy proxyer til. Bindes kun til 127.0.0.1. +# Adresse og port containeren eksponeres på; Caddy proxyer hit. +# Caddy på samme maskin: SOAPBOX_BIND=127.0.0.1 +# Caddy på en annen maskin via SOAPBOX_BIND=100.x.y.z (denne maskinens +# Tailscale: Tailscale-IP, se `tailscale ip -4`) +# Appen har ingen egen TLS eller IP-filtrering, så bind aldri til 0.0.0.0 på +# en maskin med offentlig IP – bruk en adresse bare Caddy når. +SOAPBOX_BIND=127.0.0.1 SOAPBOX_PORT=8080 # Podman-volum (navn) eller katalog (absolutt sti) for /data SOAPBOX_VOLUME=soapbox-data diff --git a/Caddyfile.example b/Caddyfile.example index 40b783b..be976d1 100644 --- a/Caddyfile.example +++ b/Caddyfile.example @@ -4,6 +4,14 @@ blog.domene.no { reverse_proxy localhost:8080 } +# Eksempel 3: Caddy på en annen maskin, appen nås over Tailscale. +# På app-maskinen: SOAPBOX_BIND=. Her brukes MagicDNS-navnet, +# men Tailscale-IP-en (100.x.y.z) fungerer like godt. +blogg.domene.no { + encode zstd gzip + reverse_proxy app-maskin.tailnet-navn.ts.net:8080 +} + # Eksempel 2: bloggen under en sub-path (SOAPBOX_SITE_URL=https://annet-domene.com/blog). # Appen forventer å få hele stien inkl. /blog, så ingen strip_prefix her. annet-domene.com { diff --git a/README.md b/README.md index 6fc2d3d..55c9f31 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ hovedbrukeren bør settes. ```sh 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 +./run.sh # podman run --replace med .env, lytter på SOAPBOX_BIND:SOAPBOX_PORT # eller: podman compose up -d ``` @@ -70,7 +70,8 @@ Ny versjon: `git pull && ./build.sh && ./run.sh`. Data ligger i podman-volumet ` (standard `./backups/soapbox-data-.tar.gz`) og beholder de `SOAPBOX_BACKUP_KEEP` nyeste (standard 5). Gjenopprett med `podman volume import soapbox-data `. -Caddy er ren reverse proxy, se `Caddyfile.example`. Ved sub-path skal Caddy **ikke** strippe +Caddy er ren reverse proxy, se `Caddyfile.example`. Kjører Caddy på en annen maskin (f.eks. over +Tailscale), sett `SOAPBOX_BIND` til denne maskinens Tailscale-IP så appen bare lytter på tailnettet. Ved sub-path skal Caddy **ikke** strippe prefikset – appen monteres selv under stien fra `SOAPBOX_SITE_URL`. ## Flytte bloggen (nytt domene og/eller sub-path) diff --git a/compose.yaml b/compose.yaml index 1660571..3477eb6 100644 --- a/compose.yaml +++ b/compose.yaml @@ -6,7 +6,7 @@ services: container_name: soapbox restart: always ports: - - "127.0.0.1:${SOAPBOX_PORT:-8080}:8080" + - "${SOAPBOX_BIND:-127.0.0.1}:${SOAPBOX_PORT:-8080}:8080" volumes: - ${SOAPBOX_VOLUME:-soapbox-data}:/data:Z env_file: diff --git a/run.sh b/run.sh index 0b3c6c5..54eeeb2 100755 --- a/run.sh +++ b/run.sh @@ -16,6 +16,7 @@ fi # Verdier som bare gjelder for podman-kjøringen (ikke appen) envval() { grep -E "^$1=" "$ENV_FILE" | head -n1 | cut -d= -f2- || true; } +BIND="$(envval SOAPBOX_BIND)"; BIND="${BIND:-127.0.0.1}" PORT="$(envval SOAPBOX_PORT)"; PORT="${PORT:-8080}" VOLUME="$(envval SOAPBOX_VOLUME)"; VOLUME="${VOLUME:-soapbox-data}" MEMORY="$(envval SOAPBOX_MEMORY)"; MEMORY="${MEMORY:-512m}" @@ -59,10 +60,10 @@ podman run -d --replace --name soapbox \ --restart=always \ --cap-drop=all --security-opt=no-new-privileges \ --memory "$MEMORY" \ - -p "127.0.0.1:${PORT}:8080" \ + -p "${BIND}:${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 "soapbox kjører på http://${BIND}:${PORT}/ (data i ${VOLUME})" echo "Logger: podman logs -f soapbox"