Plug in an iPhone and it backs up on its own. No iCloud, no iTunes, no computer, no account.
The whole appliance runs on a Radxa Zero 3W (an upgraded Raspberry Pi Zero W) with a small e-ink screen and a battery UPS. When you connect a phone, it runs an encrypted idevicebackup2 backup to the microSD card, shows progress and any errors on the display, and keeps a log you can read later. An optional rsync-over-SSH job ships each backup to a remote server, over WireGuard if you want it off your LAN.
Every backup stays on storage you control, and it can be restored anytime with tools from libimobiledevice.
Personal appliance, not an internet service. The web UI password is optional and basic, so keep the device on your LAN or reach it over the VPN. The backup payload is encrypted by iOS with a password that never leaves your iPhone.
Flash Armbian on the Radxa Zero 3W, then from the device as root:
cd /root
git clone https://github.com/giovi321/ios-backup-machine.git
bash ios-backup-machine/install.shThe installer enables the I2C and SPI overlays, installs the packages, builds the Python environment, links the e-Paper driver, installs the systemd services and udev rules, prepares the backup storage, and sets up the PiSugar UPS. When it finishes, open http://<device-ip>:8080 and complete the first-start wizard.
Full flashing steps, the manual install, and updating are in the Installation guide.
- Starts a backup automatically when an iPhone is plugged in, using the iPhone's own encryption
- Shows progress, status, and errors on the e-ink display, with a status icon row for power, VPN, internet, WiFi, and a three-state iPhone icon
- Keeps running on a UPS so a power cut does not corrupt a backup or the filesystem
- Stops a running backup when the backup drive disappears, the drive fills up, or the battery drains, and reports which of the three it was
- Kills a backup that has gone silent, and restarts the daemon if its main loop wedges, so a stuck run does not look like a working one
- Sends one alert when no backup has succeeded for a week, because every other notification only fires when something actually happens
- Ships backups to a remote server over rsync and SSH, with a WireGuard client for off-LAN transfers
- Optionally verifies the sync server's SSH host key against a fingerprint you pin
- Configures everything from a web UI, with a log and journal viewer and a health endpoint for external monitoring
- Encrypts WireGuard, remote sync, and webhook auth credentials at rest with AES-256-GCM
The full documentation is at giovi321.github.io/ios-backup-machine:
- Overview and Hardware
- Installation and First backup
- Guides for backups, remote sync, networking, WireGuard VPN, the web UI, and logs
- Architecture, including device connectivity and security
To browse the backups this device creates, point Apple Juicer at the backup directory. It parses artifacts such as WhatsApp and Messages (with Photos, Notes, Calendar, and Contacts in progress), unlocks encrypted backups with the password, and lets you search everything in a browser. Docs: https://giovi321.github.io/apple-juicer/
Issues and pull requests are welcome. See CONTRIBUTING.md and the development docs. Report security issues privately through Security Advisories.
MIT License. Includes code adapted from Waveshare's e-Paper library.
