May 5, 2020 · opinion selfhost software ·

Self-Hosting Part 5: Finale

Just yesterday, I turned off iCloud on all my Apple devices. I then took a moment to savour my liberation from Apple's walled garden.

It has been over two years since I first dabbled in hosting my own blog server to finally disabling my iCloud account. There is a good reason as to why it took so long. Apple has cultivated a beautiful hardware+software ecosystem over the years, resulting in an ecosystem filled with magical features such as Apple Pay, Home Sharing, Handoff, and Instant Hotspot. An iCloud account is apparently a requirement for all of those features, which is a shame. I didn't find out until after I logged out and lost those features, but maybe it was for the better. Anyway, here's the proof:
Screen-Shot-2020-05-05-at-3.38.39-PM
Now this may sound odd, but I feel that the fallbacks and replacements to iCloud features are sometimes easier to understand and give more of a feeling of groundedness, albeit at the cost of convenience. For example, I no longer debate about whether to use Apple Pay or not, and I feel grounded knowing that the physical card is all I need to protect, and that my credit card won't run out of battery. I now plug in a cable to backup my iPhone, and I hear the hard disks on my server grinding away as the files are transferred. I'm confident that something, if anything, is happening. By physically self-hosting emails in the house, I feel secure that a company can't tell me that my account has vanished, a concept that is becoming increasingly common.

As we switched from using physical devices such as floppy disks, CDs, and servers to storing data and logic online, we lost a sense of physicality and tangibility, replaced by an abstract notion of the cloud. Most programmers realize that the cloud is not a magical place and are comfortable with the notion, but I've noticed that the cloud instills fear, uncertainty, and doubt in others.

Given that I've been to hell and back setting up a self-hosted cloud (even my programmer friends stare at me quizzically), I sound crazy to mention that this has made things "easier". I'm definitely not saying that self-hosting is easier than using iCloud, but it has made me aware of what we are missing. In any interactive system, the true complexity must hide somewhere, and in this case, Apple is offering to manage it for you. In an attempt for trust, security, and ease of use, these services create a greater disconnect between you and your "interactee". To give an example, take transactions between you and a merchant. First there was bartering. Then there was cash. These are both easy to understand, and almost nobody has trouble understanding the end-to-end concepts. However, take Apple Pay. Here's a high-level example of what it actually does:

NFC Coil in POS Terminal energizes iPhone antenna ⟶ sends data to NFC Chip ⟶ activates iPhone CPU ⟶ requests Face ID unlock ⟶ beams tiny Infrared dots at your face ⟶ Infrared Camera constructs 3D model using Machine Learning model ⟶ decrypts credit card details in Secure Enclave ⟶ creates credit card token ⟶ sends back to iPhone NFC chip ⟶ transmits to POS Terminal ⟶ encrypts with TLS ⟶ sends through internet to the credit card network ⟶ network replies back

To reiterate, this is a high-level overview. So yeah, try feeling grounded with that. It's a miracle that it even works.

Conclusion

Overall, my self-hosting series has reduced the FUD surrounding these services for me (and hopefully at least another reader), since I now understand how the software works. I feel it is an accomplishment to be disconnected from Apple, knowing that I'm free to switch hardware whenever I please. Although increased privacy was one of the main reasons I started this series, I haven't really noticed anything different day-to-day. This series has been a very interesting journey, and it will be something that I will continue to explore with future blog posts. As somebody who is now examining iCloud from an outsider perspective for the first time, it is mind-boggling the amount of complexity that Apple manages and exerts power over, such as their COVID-19 Contact Tracing technology. I wonder what the future holds for Apple, and how its values will change over time.

Alternatives to iCloud:

Note: E2EE software with easily exportable data is acceptable, e.g. Firefox Sync

Rationale

iCloud Mail, Notes

iCloud Contacts, Calendar, Reminders

iCloud Safari

iCloud Backup

iCloud Drive

iCloud Photos

iCloud Keychain

iCloud Home
HomeKit requires iCloud Keychain to sync with multiple iOS devices. You can instead add HomeKit devices to Home Assistant, and then rebroadcast them to each device.

Further Resources