Self-hosted Umami
Your own privacy-first cookieless analytics using Umami. This series shows how to run Umami yourself, from self-hosting the backend to adding your apps through a small open source Swift package and reporting errors without collecting anything personal. It is the setup I use for all my websites and apps, and everything ends up in one dashboard.
Self-hosting Umami with Cloudflare, Fly, and Supabase
A practical guide to running your own cookieless, privacy-friendly web analytics with Umami on Cloudflare, Fly, and Supabase for a few dollars a month.
Using self-hosted Umami for iOS app analytics
How my native apps share the self-hosted Umami backend my websites already use, through a small open source Swift package called umami-swift.
Reporting app errors with self-hosted Umami
How my iOS apps report handled errors as plain Umami events through umami-swift, with static names and error codes.
Answering Apple's App Privacy questionnaire for umami-swift
Exactly what to select in App Store Connect's App Privacy questionnaire when your app uses umami-swift 1.6, and the facts behind each choice.
When your app name looks like a bot
Umami's bot filter dropped every BookScanner analytics event because the app name contains "scan". I found the cause and fixed it in umami-swift 1.7.0.