Skip to content

Configuration ​

Everything is configured with environment variables, and all of them are optional:

  • Docker: in .env in the repository directory (copied from .env.example); apply with docker compose up -d.
  • Just a compose file: under environment: in your compose.yaml (or a .env next to it plus env_file); apply with docker compose up -d as well.
  • Source install: in ~/.config/iphone-control/env (read by the systemd user service); apply with systemctl --user restart iphone-control.

Common ​

VariableDefaultMeaning
HTTP_PROXY / HTTPS_PROXYdirectProxy for Apple, anisette, Developer Disk Image and notification traffic
IPHONE_UDIDfirst phoneWhich phone to use when several are connected
RESIGN_MIN_DAYS2Re-sign when fewer days than this remain
RESIGN_CHECK_HOURS6How often to check
OFFLINE_ALERT_MIN10Notify after the phone has been offline this many minutes; 0 disables

Notification variables: see Notifications.

Advanced ​

VariableMeaning
ICTL_ANISETTE_URLYour own anisette server (the default is a public third-party one; see Security)
ICTL_DDI_URL / ICTL_DDI_DIRDeveloper Disk Image download URL / local directory (extracted from Xcode)
ICTL_MANAGE_USBMUXDSet to 0 when the host already runs usbmuxd, so the daemon doesn't start its own
SCREEN_W / SCREEN_HScreen size in points for the HID fallback before WDA has ever connected
ICTL_LOGLog filter, e.g. info,ictl_wda::http=debug logs every WDA request with its duration

Docker Compose only ​

These apply to the repository's own compose.yaml; in a compose file you wrote yourself, edit container_name, image and volumes directly.

VariableDefaultMeaning
CONTAINER_NAMEiphone-controlContainer name
IMAGEiphone-control:localImage; set ghcr.io/derrors/iphone-control:<version> for the prebuilt one
DATA_DIR./dataData directory; see Data and Backups

Released under the MIT License · Not affiliated with Apple Inc.