# 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: # Standardmäßig nur loopback – davor gehört dein Reverse Proxy mit TLS. # Zum Ausprobieren im LAN: APP_BIND=0.0.0.0 in der .env. Dann liegt die # Anmeldung allerdings unverschlüsselt im Netz. - "${APP_BIND:-127.0.0.1}:${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