Skip to content

Proxy

By default, ICPS connects directly to the iCloud backend and ignores the proxy environment variables HTTP_PROXY, HTTPS_PROXY and NO_PROXY.

To route all outgoing requests (iCloud authentication and metadata, asset downloads, health checks, crash reports and Web UI push notifications) through a proxy, enable it with the --use-system-proxy flag or the USE_SYSTEM_PROXY environment variable and provide the proxy configuration through the common environment variables:

Variable Description
HTTPS_PROXY Proxy used for https:// requests, e.g. http://proxy.local:3128
HTTP_PROXY Proxy used for http:// requests
NO_PROXY Comma separated list of hosts that should be reached directly

Lower case variants (https_proxy, http_proxy, no_proxy) are supported as well. ICPS fails on startup, if the configured proxy URL is invalid. Credentials embedded in the proxy URL (e.g. http://user:password@proxy.local:3128) are masked in crash reports.

services:
  photos-sync:
    image: steilerdev/icloud-photos-sync:latest
    environment:
      USE_SYSTEM_PROXY: true
      HTTPS_PROXY: "http://proxy.local:3128"
      ...
docker run -e USE_SYSTEM_PROXY=true -e HTTPS_PROXY="http://proxy.local:3128" ... steilerdev/icloud-photos-sync:latest
HTTPS_PROXY="http://proxy.local:3128" icloud-photos-sync daemon --use-system-proxy

Migrating from earlier versions

Earlier versions applied HTTP_PROXY, HTTPS_PROXY and NO_PROXY implicitly. If you rely on a proxy, set USE_SYSTEM_PROXY=true when upgrading. Alternatively, Node.js' own NODE_USE_ENV_PROXY=1 environment variable enables the same behaviour.