Owning my digital life
Over the years, I have come to the conclusion that it is dangerous to depend on adtech corporations for your digital life, as they seem hell-bent on taking away ownership of my data and my life in general. I like owning things, and I will not let them get their way. Below, I detail what I've done to own my digital life while preserving most modern conveniences. But note that this is not an especially security- or privacy-focused guide. For self-hosted services, consult other resources to secure your network and system.
Goals / Principles
In order of priority
- Self-sovereignty: No outside party should be able to do something unilaterally that will negatively impact my life by much. I should never be put in a position to beg a platform to lift a ban. No one should be able to take away access any of the data I have.
- Privacy/Security: No outside party should be able to read any data from me without me explicitly providing it to them.
- Resisting influence: Avoid exposure to non-consensual ads, low-quality content, AI slop, and other annoyances.
- Metadata privacy: Minimize traceable metadata if possible (it often is not).
This seems like an extreme position, but I recognize that some compromises can be strategic if it frees up time/resources/money to pursue the other goals.
- For example, self-hosting Matrix provides a little more self-sovereignty than using Signal, but it inherently leaks more metadata due to it being used by a single person/group, and has security drawbacks with a less audited implementation and setup.
- Being Richard Stallman is admirable, but for most people it just limits your ability to exert an influence on the world, and cedes power to those with other ideals. I prefer to pick my battles and fight where it matters the most.
In terms of service providers, I have decided on the following rule:
- I can use it if I don't have to.
"I don't have to" means one of these things
- It is a commodity product I can switch out easily to a different vendor
- I can self-host it (without an unreasonable amount of work)
- I can do without it with just a slight inconvenience
Tools
It's probably what you're here for
Local/self-hosted tools
| Purpose | Tool | Alternatives to consider |
|---|---|---|
| Laptop operating system | Arch Linux | Any other distro |
| Phone | GrapheneOS with custom signature | CalyxOS |
| Password manager | KeepassXC | Bitwarden (self-hosted) |
| Browser | Firefox with aggressive adblock, RFP | Brave |
| Backups | Restic, zfs snapshots for local | Borg |
| Email client | Thunderbird | Evolution, webmail |
| Sync files | Syncthing | Nextcloud, rclone |
| Sync clipboard, SMS | KDEConnect | none |
| Sync photos | Immich | Photoprism |
| Smart home | Home Assistant | None |
Arch Linux
It runs updates quickly, and has very fresh packages, reducing the need to enable custom repositories. But you might prefer another distro, and that's totally fine.
No mainstream Linux distro enforces the level of anti-user behavior present in Windows or Mac OS. It appears that people are finally starting to get tired of Microsoft's behavior, which is welcoming news. On free systems,ou are never treated as a guest on your own computer, and are allowed to do whatever you want only limited by your capabilities. It never tries to dark-pattern or annoy you into doing something you'd rather not, which is all that matters to me.
GrapheneOS
GrapheneOS, despite its controversies, is still the most secure and up-to-date Android OS. However, I am uncomfortable with the idea of not owning my device. Secure boot is a great tool to enhance security, but not having the keys to run whatever I want to crosses a line.
These issues can be mitigated to a great extent by either building it yourself from source, or use avbroot to resign the official release. You can use this to, e.g. root or bundle system apps to record calls. Do however note the security impacts of rooting. Most Android root apps are very poorly implemented and result in big security holes, so I only intend to use it as a potential data transfer method in the future. The phone has never actually been rooted.
If you have a locked bootloader and no root, most banking apps will not complain. Do note that there are issues caused by security mitigations like memory hardening, rather than the anti-user "integrity" APIs. Try turning it off if you are encountering issues. Also note some apps refuse to work under work profile or secondary users for unclear reasons, even though it is normally a security benefit.
The only real drawback to not having root is the lackluster backup support. Not all data is backed up due to the way Android enforces anti-user restrictions and allows apps to hide their data from the user. For this reason, I try not to store any important information on the phone.
KeepassXC
This is a local password manager that stores the secrets in an encrypted database file. It is easily combined with Syncthing to make your passwords available on multiple devices. You are not beholden to any third party for your secrets and there is no server to manage.
It also has TOTP support and auto-fill in browsers. I refuse to take out my phone just because a website wants me to. OTP 2FA is largely a mitigation for people using insecure passwords or reusing them across sites, and is not a significant security benefit if you use unique non-guessable passwords. Your keepassxc database already serves as two factors (having the database and knowing the password to it). But setting up 2FA tends to reduce the chances of getting locked out by Google, Github etc., so I set it up when possible.
It also has passkey support, which you should probably use for sites that support it. Although the WebAuthn people seem to have shady anti-user intentions, for now it is basically self-sovereign, and it does not appear that their anti-user efforts are progressing very much, thankfully.
Firefox
I used to think there are ethical ads, but the industry as a whole has soured on me completely. Now I do not want to see any ads at all (except for some first-party promotion), so I use uBlock origin and turn it up to the max level of blocking. I am fine with it breaking some sites. I keep a separate Chromium profile I can use to deal with them, with less aggressive blocking (only uBO lite). If you need to view YouTube, you can use Sponsorblock to further get rid of annoying sponsorships, although I have mostly stopped watching it.
I also clear my cookies on closing the browser except for select sites I want to stay logged in to. This helps slightly with privacy if you stay logged out of, e.g. Google, but mostly it serves to stop sites from implementing anti-features such as tracking how many articles I've read this month, or serving me targeted content.
I use Firefox Sync with a strong password. The E2EE implementation appears to be sound, and there does not seem to be much downsides.
DNS is managed by the system with dnscrypt-proxy. If you do not wish to set it up, you can use Cloudflare. While Cloudflare is not an especially benevolent company, encrypted DNS over HTTPS is a legitimate innovation for getting some privacy from the entities more interested in monitoring or controlling you (your ISP, national DNS poisoning) and/or circumvent blocking. Cloudflare already has much of your browsing logs anyway with their MITM CDN/anti-DDoS offerings, so this does not give up that much additional information.
P.S.: uBlock Origin works well on Android Firefox too.
Backups: Restic & ZFS
I follow the 3-2-1 backup rule for all important data. They are backed up once to a local drive, and again to a Hetzner storage box with restic. For critical data (like the keepassxc database) I also store extra copies on cold media, especially since it is needed to access the offsite backup. If you do this, make sure to flush out a recovery plan that is free of any dependency loops ("I backed up my Keepass database in my restic repository, but its key is in the Keepass database..").
I want my backups to be end-to-end encrypted and work with the cheapest storage available. Restic fulfills this need with its rclone integration. It is an encrypted, deduplicating backup tool, meaning only the changed data take up space, and you can point multiple machines toward the same repository securely (it still has some stale lock issues, but it does not break security), unlike Borg which suffers from potential attacks if you do this.
For local backups, I use ZFS snapshots (btrfs is an alternative if you do not need parity RAID). They are created instantly, take very litle space, and can be restored almost instantly. They are also atomic, so it will never corrupt your databases. It won't help me if my computer is stolen or my house floods, but it is enough to protect me from the consequences of a bad rm -rf command. If you have a non-trusted remote node, you can also use zfs's raw send feature to send these snapshots without decrypting them, making them unreadable by the service provider (note it is not true full-disk encryption, and leaks a lot of metadata).
Thunderbird
It is a local mail user agent, which seems to be losing ground to Web mail with most people. It allows you to only display plaintext, which saves you from seeing annoying images from people or companies sending you low value emails. There is also Exchange Web Services support if your organization does not want to let you use IMAP. The interface is slightly clunky, but it performs reasonably well. There is also an Android version (rebranded from K-9), which is also what I use for reading email on my phone.
Syncthing
Syncthing allows you to synchronize folders across the network via NAT traversal. It is end-to-end encrypted and safe to use over untrusted networks. Most of my work data is synced this way.
It is not required, but for it to work reliably, it is best to have a device which is almost always online, like a NAS or a desktop computer. Otherwise, you may get many conflicts to resolve since it is content-agnostic and cannot merge things.
KDEConnect
Despite its name, it does not need KDE to function at all (it even works on Windows!).
It allows you to sync clipboard, send files, and sync notifications between your computers and phones. If you use an internal VPN (like Tailscale), you can use it even if the devices are on different networks, and it works very reliably in that case. I use it to receive SMS verification codes for websites that insist on that, so that they can't get their way with making me take out my phone.
NOTE: Android does not really want you to be able to do this. It will hide SMS one-time codes as sensitive content. Enable USB debugging and use the following command to fix this:
Then, reboot the phone.
(Source: https://www.androidauthority.com/android-15-two-factor-authentication-codes-3492585/)
Service providers
Rule: I can use them, if I don't have to.
| Purpose | Vendor | Reason | Alternative |
|---|---|---|---|
| Domain | Namecheap | Commodity; UI | Cloudflare |
| Migadu | Cost | Fastmail | |
| Cloud storage | Hetzner | Cost | Backblaze B2, rsync.net, offsite NAS |
| Internal VPN | Tailscale | Uptime | Self-host headscale, netbird, wireguard |
| Search | Kagi | Convenience | Brave, SearxNG |
Domain and email
I keep a domain for my own email. Unlike Big Tech, domain companies mostly operate like real businesses with some level of customer service. Moreover, domains can be transferred as per ICANN rules, so they do not have as much abusive power as, e.g. Gmail. But do note that this commits you to owning the domain quasi-permanently. I recommend topping it up with a few years worth of balance to avoid mishaps.
The email service is hosted by Migadu, which provides a nice personal plan for $19/year. It also supports wildcard recipients so you can put down per-site email addresses like "github@DOMAIN", and know who sold your email/block them selectively. The rate limit is not very high, however, so you may want to reconsider if you receive many emails from mailing lists. Self-hosting email is too much of a pain to be worth it. In principle, it would increase privacy to self-host your email or use an encrypted solution like Proton, but almost all emails you are likely to receive come from someone using an adtech email provider anyway.
Cloud storage
Hetzner storage box is my choice for offsite backups. They offer 5TB and 10TB storage boxes hosted in Europe for very low prices, around $2/TB-month. They can be accessed by rsync/sftp. But beware that rsync/sftp is rather slow; if you need faster transfers, you can use rclone to open multiple connections. In my tests, it can saturate a 1Gbps downlink that way, and they do not charge for egress. It is only used to store encrypted backups from restic and Android.
If you have a large amount of data (>10TB), it may be more economical to put together a dedicated offsite NAS instead and place it in a friend or relative's house.
Internal VPN
The most secure way to access self-hosted services over the internet is a VPN. There are many tools for this, with different drawbacks for each. I originally had a hub-type Wireguard network hosted on a local router. However, it is a single point of failure for the entire network, and required falling back to other interfaces when using the internal network to not be capped at around 200 Mbps. Moreover, it is decrypted by the router, so in principle it would be able to eavesdrop on the connection if it were compromised.
Tailscale is almost a magic bullet for this problem: it always tries direct connections and does not stress out any intermediate servers. It also improves security by always being end-to-end encrypted, even if relays are used. Over local networks, it is able to saturate very fast links (2.5GbE, unfortunately I do not have 10GbE equipment).
If you enable tailnet lock, it should be very close to zero-trust as you can manage the signing keys to join the network. In theory, they can backdoor the client, but if you use channels that do not allow targeted delivery like your distro package, this is difficult to pull off, and would tank their (pretty good) reputation overnight.
Note: Tailscale requires you to sign up with SSO. To avoid using adtech SSO, you can use an OIDC SSO by hosting something like PocketID for self-sovereignty. After signing up, you can invite an additional user to sign up via passkey, use the new account, and not worry about the original account or the identity server. I'm unsure why they wouldn't just allow passkey signup in the first place.
Search
Kagi is a service you can pay for which delivers a pretty good search experience. It never asks for captchas like Google does, and it is customizable. The ranking method seems to filter out many slop websites.
Working with other people
Unfortunately, we still live in a society, and that means people will often require you to use services that prevent you from owning the data. In these cases, I accept it, and apply mitigations to maximally preserve ownership.
Once, while studying in university a few years ago, I was dismayed that I could no longer access a shared assignment as the other collaborator had deleted it. This is obviously my fault; I should have backed it up if I cared about it.
While I cannot prevent losing access to the accounts, the data ownership risks can be mitigated by backing things up. In general, cloud storage should be viewed as volatile storage: while the underlying storage is extremely reliable, your access to it is not, so you should always keep a local copy.
| Vendor | Mitigation |
|---|---|
| Google drive | Rclone, Google takeout on a schedule |
| Dropbox | Rclone |
| Github | Keeping a clone of all personal repositories |
Not listed here are communication tools. They are subject to network effects, and even if you can self-host them, there is no good way to get everyone else to use it. I still try to back up the messages, though, so no one can take it away.
General advice on preserving ownership
- Never buy what you will not own: iPhones, Kindles, "smart" devices needing internet/apps, or digital media accessed via "platforms". They should be viewed as temporary licenses; only pay for them if you are fine with them being taken away a moment's notice and without recourse. Louis Rossmann has much more to say about this on YouTube.
- Stick to open platforms: Being open source does not magically improve security or privacy, but it allows you to retain control of your data and provides an escape hatch in the form of forking.
- Do not rely on subsidized services, like "unlimited storage". There is almost always some tradeoff. Open source projects with a significant server-side component offered for free should also be viewed with caution.
Appendix: Misc. recommendations
I have no need for these things now, but in case people might benefit from it:
When I was in university, they used Canvas to provide access to course materials. It is spyware, but it does at least provide a functional API to let you backup the data. I used CanvasSync on a cron job to auto-download the course materials, so that I still have access to now that I've graduated. As a bonus you can avoid opening the site, which allows the instructors to track your viewing habits. I don't recall universities taking away your homework submissions or lecture materials after you graduate in the 90s, so let's keep it that way.
The university also did not allow me to use IMAP to access my emails. Evolution was the only client that supported EWS then, but I had no solution for the phone. Davmail can be used for that: it acts as a protocol translator to allow you to use IMAP clients to access the mailbox. The setup process is somewhat convoluted, however.