# Thingport for Unraid # # Unraid has no Compose support of its own: install the "Compose Manager" (or "Compose # Manager Plus") plugin from Community Applications first, then: # 1. Docker tab -> Compose -> Add New Stack -> name it "thingport" # 2. Paste this file as the stack's docker-compose.yml # 3. Copy .env.example (next to this file) to the stack's .env and fill in the # required values (AUTH_SECRET, POSTGRES_PASSWORD) # 4. Compose Up # # See docs/install/unraid/README.md in the Thingport repo for the full walkthrough. # # This mirrors the project's root docker-compose.yml, adapted for Unraid conventions: # appdata paths under /mnt/user/appdata, and net.unraid.docker.* labels so the frontend # and backend containers get Thingport's icon and a WebUI button in the Docker tab. 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: - /mnt/user/appdata/thingport/postgres:/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 # Container must stay named "backend" -- the frontend's nginx.conf proxies /api/* to # http://backend:8000 by container/service name, not by an env var. backend: image: ghcr.io/tautvydasderzinskas/thingport-backend:latest container_name: backend restart: unless-stopped environment: # Unraid's conventional "nobody:users" ids -- change if your appdata share uses different ownership - PUID=${PUID:-99} - PGID=${PGID:-100} - 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: - /mnt/user/appdata/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. # - /mnt/user/appdata/thingport/consume:/app/consume networks: - app-net labels: - net.unraid.docker.icon=https://raw.githubusercontent.com/TautvydasDerzinskas/Thingport/main/docs/install/unraid/icon.png frontend: image: ghcr.io/tautvydasderzinskas/thingport-frontend:latest restart: unless-stopped ports: - "${WEB_PORT:-80}:80" depends_on: - backend networks: - app-net labels: - net.unraid.docker.icon=https://raw.githubusercontent.com/TautvydasDerzinskas/Thingport/main/docs/install/unraid/icon.png - net.unraid.docker.webui=http://[IP]:[PORT:80]/ networks: app-net: driver: bridge