The phone apps connect to a PhotoBlad server that you host, so they came after self-hosting, which is done: Caddy and Tailscale give a server the HTTPS address the apps need. The apps themselves are in progress and not released, so there is nothing to install yet. Until they are, open PhotoBlad in a web browser, which fits phone screens too, and back up from there with its Upload button.
The server side is ready: Phase 6 built the backup API the apps will use, and the web app already backs up through it.
What the first release is designed to do
These are plans, not features. None of it is released, and the design can still change.
- Browse the whole library with a photo grid and a date scrubber that jumps to a year or a month.
- View photos and videos, Live Photos included, with each photo’s details.
- Back up the camera roll automatically, in the background and over Wi-Fi by default. Originals are uploaded as they are, so HEIC stays HEIC. The app is designed to show clearly whether backup is running, waiting or stopped, and why. If backup stops for about a day, it sends a notice. The notice comes from the phone itself, with no push service in between.
- Sign in with a password or a passkey. Passkeys go through the phone’s own browser.
- iPhone with iOS 17 or later, and Android 11 or later, are the versions the first release is aimed at.
- HTTPS only. iOS and Android both expect a server to use HTTPS, so the apps are designed to connect only to one that does. The Caddy and Tailscale options in Self-hosting give you that.
On iPhone, iOS decides when background work runs, so the first backup is fastest with the app open. Editing and the owner’s tools (storage, import and members) stay in the web app for the first release.
What’s ready for them
- Hash-first backup. An app asks which of its files the server still needs, by their SHA-256 hashes, up to 1,000 at a time, and uploads only those, one file per request, byte for byte. Nothing you’ve already backed up is sent again, and an upload that fails can simply be sent again.
- Live Photos in one piece. An app sends a Live Photo’s motion clip with the hash of its photo, and PhotoBlad shows the two as one.
- The same rules as the web app. Backups are written once into a storage location, filed as
{yyyy}/{MM}/{Person}/, and private unless you share them. When a file doesn’t record when it was taken, the time the phone gives is used. - A sign-in for each phone. The app signs in with your username and password and gets a token of its own, which the server keeps only as a hash. The phone appears in Settings → Devices with what it has backed up, and signing it out there stops it at once. Otherwise it stays signed in until it goes a year unused.
- HTTPS addresses. The Caddy and Tailscale options in Self-hosting give a server an address a phone can use. They were tested on a computer, not yet with a phone.
What you’ll need
- A PhotoBlad server your phone can reach over HTTPS: on your own domain through Caddy, or through Tailscale with the Tailscale app on the phone. With Tailscale the phone has to be connected whenever it should reach PhotoBlad, and a background backup can only reach it while the tunnel is up. That hasn’t been tried yet.
- A public domain or Tailscale, in preference to Caddy’s own certificate authority on a home network. An iPhone can be set to trust that certificate, but most Android apps refuse a certificate you installed yourself, so assume the Android app will too.
- An iPhone with iOS 17 or later, or an Android phone with Android 11 or later. These are the minimum versions the first release is aimed at, and they can still change.
Steps
[TBD: where to get the apps and how to connect them, once App Store and Google Play releases start in Phase 9]