Python MIT

ios-backup-machine

Offline, portable and automatic iPhone backup system

G

giovi321

Dernière activité 23 sept. 2026
giovi321/ios-backup-machine

510

étoiles

26

forks

0

issues ouvertes

Ce README est souvent en anglais.

iOS Backup Machine

iOS Backup Machine

CI Docs License: MIT Version 4.11.1 Python 3.13

Radxa Zero 3W Waveshare 2.13 inch ePaper PiSugar 3

Read the documentation

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.

Normal operation

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.

Quick start

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.sh

The 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.

What it does

  • 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

Documentation

The full documentation is at giovi321.github.io/ios-backup-machine:

Inspect your backups with Apple Juicer

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/

Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md and the development docs. Report security issues privately through Security Advisories.

License

MIT License. Includes code adapted from Waveshare's e-Paper library.

Projets similaires

Automated iOS Backup Robot

Swift
LLakr233
2,6 k étoiles184

Extract files from Apple devices on Windows, Linux and MacOS. Mostly a wrapper for pymobiledevice3. Creates iTunes-style backups and "advanced logical backups"

Python
Pprosch88
554 étoiles52

Backup & restore iOS devices with advanced settings.

Swift
LLakr233
451 étoiles30