# Minimal getting-started setup: run "docker compose up -d", then open # localhost:3001 (or http://:3001 from any device on your network). # Hardened variants (log rotation, healthchecks, Traefik reverse proxy # with HTTPS) live in docker/compose/ - see docker/compose/README.md. services: imgcompress: image: karimz1/imgcompress:latest container_name: imgcompress restart: always ports: - "3001:5000" environment: # Set to true to remove the mascot and enable a minimal, mascot-free UI - DISABLE_LOGO=false # Optional: largest upload per file in MB, also for editor pictures. Default 40960 (40 GB) for big PSD/PDF files; remove the line to keep it. # For a public instance, use a smaller limit like 1 GB (1024). - MAX_UPLOAD_SIZE_MB=40960 # Optional: number of web workers. Default "auto" = one per CPU core. Lower it on small machines to save RAM. # - WEB_WORKERS=2 # Set to true to disable the storage management features (e.g., for your users to not see all the files) - DISABLE_STORAGE_MANAGEMENT=false # Set to true to turn off the update check: the browser then stops asking GitHub (api.github.com) for the latest release, and no update banner is shown - DISABLE_UPDATE_CHECK=false # Optional: "Notify me when done" (opt-in per job). Apprise URL the container # sends a short message to when a job finishes: image count and device/browser, # never file names or images. Default: not set = feature off, switch hidden. # Example for the optional ntfy service below: # - NOTIFY_URL=ntfy://ntfy/imgcompress # Optional: the address users open ImgCompress at. The message then links # to the result (a secret for that one job), so it downloads on any device; # keep the ntfy topic private. ImgCompress never guesses it from a request # (the Host header can be faked), so set it yourself. Must be http(s), # without user/password; an invalid value is ignored with a warning. # Default: not set = no link in the message. Example: # - PUBLIC_BASE_URL=http://192.168.1.10:3001 # Optional: container clock for "Link expires …" in notify messages (no app-specific time setting). # - TZ=Europe/Berlin healthcheck: test: ["CMD", "python", "/container/healthcheck.py"] interval: 30s timeout: 10s retries: 3 start_period: 10s # Optional: ntfy, self-hosted push notifications (https://ntfy.sh). # Why: long jobs such as AI upscaling can take minutes. With ntfy you can close # the tab and get a message on your phone or desktop when the job is done. # How: uncomment this service and NOTIFY_URL above, then subscribe to the # topic "imgcompress" in the ntfy app (iOS, Android, web). # iPhone: NTFY_UPSTREAM_BASE_URL lets ntfy.sh wake the iOS app; the message # itself is fetched from this server, so away from home you need a VPN # (e.g. WireGuard, Tailscale). Full guide: docker/compose/homelab-traefik-ntfy/ # ntfy: # image: binwiederhier/ntfy:latest # container_name: ntfy # restart: always # command: serve # ports: # - "8080:80" # environment: # # Address your phone uses to reach this ntfy server. # - NTFY_BASE_URL=http://192.168.1.10:8080 # - NTFY_UPSTREAM_BASE_URL=https://ntfy.sh