Files
Aether/docker-compose.example.yml
marcandClaude Opus 5 86da975424 config: 0.0.0.0 als Vorgabe für APP_BIND im Betrieb
Auf Marcs Wunsch. Die bisherige Vorgabe 127.0.0.1 passt nur, wenn der
Reverse Proxy auf demselben Rechner läuft – steht er woanders (bei Marc
auf einem VPS), kommt er an loopback gar nicht heran, und die Vorgabe war
schlicht der falsche Wert für den häufigeren Fall.

Der Preis steht jetzt an allen drei Stellen dabei, statt nur gemeint zu
sein: Der Port ist dann auch aus dem eigenen Netz offen, und TLS endet
erst am Proxy. Im README dazu eine Tabelle, welcher Wert zu welchem
Aufbau gehört – eigener Rechner, anderer Rechner, Tunnel, oder Proxy im
selben Docker-Netz (dann braucht es gar kein ports:).

build/docker-compose.yml behält 127.0.0.1: Das ist die
Entwicklungsumgebung auf diesem Rechner, dort ist loopback richtig.

Gegengeprüft: Frische Kopie aus den Beispieldateien veröffentlicht auf
0.0.0.0; APP_BIND=127.0.0.1 in der .env engt wieder auf loopback ein.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 17:06:29 +02:00

74 lines
2.5 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Aether – Betrieb aus dem fertigen Abbild.
#
# Diese Datei und .env.example genügen für eine neue Umgebung. Der Quelltext
# muss dort nicht liegen.
#
# cp docker-compose.example.yml docker-compose.yml
# cp .env.example .env # und ausfüllen
# docker login gitea.honeyy.duckdns.org
# docker compose up -d
#
# Office ist bewusst nicht dabei: Es gibt drei Server zur Auswahl (Collabora,
# OnlyOffice, Euro-Office), und jeder bringt eigene Variablen mit. Den
# passenden Schnipsel zum Anhängen findest du im README.
#
# Der Schnipsel startet mit `docker compose up -d` sofort mit. Zum Abschalten
# `docker compose stop office`.
#
# Hintergrund und Fallstricke: README.md
# Aus dem Quelltext bauen statt ziehen: build/docker-compose.yml
services:
app:
container_name: aether-app
image: gitea.honeyy.duckdns.org/docker/aether:latest
restart: unless-stopped
env_file: .env
# Der Container läuft unter deiner Kennung, damit die Dateien unter
# DATA_PATH dir gehören und nicht einem Container-Nutzer.
user: "${APP_UID:-1000}:${APP_GID:-1000}"
environment:
# ocrmypdf legt Arbeitsdateien unter $HOME ab – das aus dem Image ist
# für einen abweichenden Nutzer nicht beschreibbar.
HOME: /tmp
depends_on:
postgres:
condition: service_healthy
volumes:
# Bind-Mount, kein benanntes Volume: Deine Dateien liegen als echte
# Ordner auf dem Wirt. Nur lesend anfassen – zum Hineinlegen ist WebDAV
# der Weg, sonst kennt die Datenbank die Datei nicht.
- ${DATA_PATH:-./data}:/data
networks: [internal]
ports:
# Vorgabe 0.0.0.0: erreichbar für alles, was den Server im Netz sieht –
# denn der Reverse Proxy steht meist auf einem anderen Rechner, und
# loopback ließe ihn nicht heran. Davor gehört er trotzdem, mit TLS.
# Läuft er auf DIESEM Rechner: APP_BIND=127.0.0.1 in der .env, dann ist
# der Port von außen dicht.
- "${APP_BIND:-0.0.0.0}:${APP_PORT:-8080}:8080"
postgres:
container_name: aether-db
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
networks: [internal]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
interval: 5s
timeout: 5s
retries: 10
volumes:
postgres_data:
networks:
internal:
driver: bridge