# compose.netcup.yaml — overlay for the netcup VPS. # # Use: # docker compose -f compose.yaml -f compose.netcup.yaml pull # docker compose -f compose.yaml -f compose.netcup.yaml up -d # # Differences from base compose.yaml: # - Pulls a published image (no build context on the host) # - No host port binding (caddy edge handles ingress) # - Joins external `edge` network so caddy reaches it as `librenotes:8080` # - Pulls config from .env (LIBRENOTES_BASE_URL, JWT_SECRET, SMTP_*, IMAGE) # - Uses bind-mounted /data + /var/lib/librenotes so backups can rsync host paths # # Inputs (env or .env file on netcup): # LIBRENOTES_IMAGE e.g. git.librete.ch/public/librenotes:main # or pinned tag git.librete.ch/public/librenotes:v0.1.0 # LIBRENOTES_BASE_URL https://ln.cloud.librete.ch # LIBRENOTES_JWT_SECRET `openssl rand -base64 48` # LIBRENOTES_SMTP_HOST SMTP relay host # LIBRENOTES_SMTP_PORT submission port (587 default) # LIBRENOTES_SMTP_USER SMTP user # LIBRENOTES_SMTP_PASS SMTP password # LIBRENOTES_SMTP_FROM no-reply@librete.ch (envelope sender) # # Rollback: edit LIBRENOTES_IMAGE in /srv/librenotes/.env to a prior # tag, then `docker compose ... pull && docker compose ... up -d`. services: librenotes: build: !reset null image: ${LIBRENOTES_IMAGE} pull_policy: always restart: always ports: !reset [] environment: LIBRENOTES_BASE_URL: ${LIBRENOTES_BASE_URL} LIBRENOTES_JWT_SECRET: ${LIBRENOTES_JWT_SECRET} LIBRENOTES_SMTP_HOST: ${LIBRENOTES_SMTP_HOST} LIBRENOTES_SMTP_PORT: ${LIBRENOTES_SMTP_PORT:-587} LIBRENOTES_SMTP_USER: ${LIBRENOTES_SMTP_USER} LIBRENOTES_SMTP_PASS: ${LIBRENOTES_SMTP_PASS} LIBRENOTES_SMTP_FROM: ${LIBRENOTES_SMTP_FROM} volumes: !override - ./data:/data - ./state:/var/lib/librenotes networks: - edge networks: edge: external: true