services: db: image: postgres:16-alpine restart: unless-stopped environment: - POSTGRES_USER=${POSTGRES_USER:-thingport} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-thingport} - POSTGRES_DB=${POSTGRES_DB:-thingport} volumes: - thingport_db:/var/lib/postgresql/data networks: - app-net healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-thingport}"] interval: 5s timeout: 5s retries: 10 flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest restart: unless-stopped environment: - LOG_LEVEL=${FLARESOLVERR_LOG_LEVEL:-info} - TZ=${TZ:-UTC} networks: - app-net backend: # Pin to a release instead of :latest, e.g. :1.2.0, or :1 for every 1.x (or a build, :sha-a8fef7d): # BACKEND_IMAGE=ghcr.io/tautvydasderzinskas/thingport-backend:1.2.0 image: ${BACKEND_IMAGE:-ghcr.io/tautvydasderzinskas/thingport-backend:latest} restart: unless-stopped environment: - PUID=${PUID:-1000} - PGID=${PGID:-1000} - AUTH_SECRET=${AUTH_SECRET:-changeme-secret} - AUTH_TOKEN_TTL=${AUTH_TOKEN_TTL:-43200} - PUBLIC_URL=${PUBLIC_URL:-} - SMTP_HOST=${SMTP_HOST:-} - SMTP_PORT=${SMTP_PORT:-587} - SMTP_SECURE=${SMTP_SECURE:-false} - SMTP_USER=${SMTP_USER:-} - SMTP_PASS=${SMTP_PASS:-} - SMTP_FROM=${SMTP_FROM:-Thingport } - FILE_STORAGE=/app/storage - DATABASE_URL=postgresql://${POSTGRES_USER:-thingport}:${POSTGRES_PASSWORD:-thingport}@db:5432/${POSTGRES_DB:-thingport}?schema=public - CORS_ORIGINS=${CORS_ORIGINS:-} - FLARESOLVERR_URL=${FLARESOLVERR_URL:-http://flaresolverr:8191/v1} depends_on: db: condition: service_healthy flaresolverr: condition: service_started volumes: - thingport_storage:/app/storage # Optional consume folder: files and folders dropped in it are imported automatically # (Administration -> Storage -> Consume Folder). Uncomment and point it at a host folder. # - /path/to/consume:/app/consume networks: - app-net # Frontend: nginx serving the app and proxying /api/* to the backend (see frontend/nginx.conf). frontend: # Pin to a release instead of :latest, e.g. :1.2.0, or :1 for every 1.x (or a build, :sha-a8fef7d): # FRONTEND_IMAGE=ghcr.io/tautvydasderzinskas/thingport-frontend:1.2.0 image: ${FRONTEND_IMAGE:-ghcr.io/tautvydasderzinskas/thingport-frontend:latest} restart: unless-stopped ports: - "${WEB_PORT:-80}:80" depends_on: - backend networks: - app-net volumes: thingport_storage: thingport_db: networks: app-net: driver: bridge