Skip Navigation

Seeking advice for selfhosting critical data

Hello everybody,

my plan is to switch from Android to GrapheneOS. In this process, I want to get rid of my reliance on my google account as much as possible.

To this end, I'd like to selfhost some "critical" data, e.g.

  • contacts
  • calendar
  • online drive for files (e.g. google drive alternative)
  • some basic note-taking app (like google keep)

and so on.

I do some selfhosting already, though it is not that kind of "cannot lose this" data. So I'd like to share my thoughts and ask for your opinions and experience for the process.

More details for what I want

contacts

  • have to be syncable to the phone
  • if possible, some webinterface to edit / browse

calendar

  • has to be syncable to the phone
  • webinterface + sync to desktop / phone
  • if possible, send invite-links to events to others

drive

  • files of my choosing must be offline-available
  • ever other file should not use storage on the phone
  • if possible, able to share links to download files
  • if possible, able to share links to view with online editor (see below)

document editor

  • think google sheets / google docs
  • if possible, able to share links to view documents online

smartphone photos

  • auto-backup camera folder

There may be some things I'm not thinking about right now, but this seems to pretty much be it.

If possible, all of this should be accessible only via vpn.

What I already have

I have a pfSense physical appliance that's already managing my home network, got an OpenVPN already setup, dynamic DNS working properly for the lack of a static IP, etc.

I own 2 mini-PCs (some Intel NUC, some passive-cooled zotac with an intel with 4c/8t). One of them (zotac) is currently running as my Proxmox Virtual Environment Hypervisor, managing 3 VMs.

I also have a second PC which misses some critical parts, so it is not currently in working condition. I think there's an AM4 mainboard and 16 or 32GB of DDR4 RAM in there. I could make a NAS or a new hypervisor out of this, but the case (Fractal Design Define 7) is quite big and a full PC is probably worse for energy-efficiency than my 2 mini-PCs and is going to be more expensive.

Not much in terms of storage sadly

  • 1x 6TB external USB HDD (used for backups)
  • 1x 2TB external USB HDD (used for data)

What I plan to do

The kind of data I'm going to be hosting myself now is very import, so it cannot be lost or corrupted.

But the feature list doesn't seem to be overly complicated. This seems like something nextcloud could do.

This means, I will probably need to buy

  • 2x 4 TB HDD for storage for data RAID
  • 2x 8-10 TB HDD for backups
  • 2x external RAID case

Then I could connect the data RAID to the already running zotac pc and spin up new VMs for nextcloud and whatever else I might need and start serving my data from home.

The Intel NUC will be used as a Proxmox Backup Server, connected to the backup RAID. Keeping some daily, weekly and monthly backups.

On the phone-side, I'd have the vpn always active. Whenever active, sync of contacts, calendar entries, photos etc. should be possible.

Questions

Is there anything I missed? Did any of you already try something like that? Does anybody here see a potential problem with any of the above?

Can anyone recommend a RAID-1 external enclosure without a fan and some quiet and energy-efficient HDDs?

75 comments
  • I've done this.

    For contacts, calendar, and files, I use OwnCloud, although NextCloud is as good/better. I couldn't figure out Self-Signing certificates, which is supposed to be pretty easy, but I am kind of a dummy. NextCloud requires it. On my phone, I use DAVx5, and I replaced the GrapheneOS stock apps with Fossify apps as needed - although that is up to personal preference.

    For photos, I use Immich, which is hands-down the best option.

    NextCloud also has options for document editing, photo backup, and notes, but I can't testify to those.

    Syncthing is an ideal way to seamlessly sync files and folders between devices, but you will end up with the files on both devices. I use it sparingly, and they are phasing out android support. It's still very useful to migrate large file libraries and act as a stopgap for other services.

    There are tons of notes apps, and it largely comes down to preference. I settled on NotallyX, which can import your Keep notes directly (using Google Takeout iirc). It also has the option to store files externally, which means they can be synced for backup. There are also self-hosted web-apps, like Memos, or the slightly more adventurous Blinko.

    I got a lot of great input from this community not too long ago.

    The one Google feature I am not able to reproduce is Google Messages. If you use texting to any degree, there are some FOSS apps with pretty nice basic features (I'm using Fossify which is nice). However, there are none that have solid group-messaging features, reactions, and other RCS capabilities. It seems to be a technical/logistical/legal hurdle that is presently insurmountable. Lots of people don't use texting anyway, so it may not be a concern for you.

    Edit: And of course, you need a way to tie everything together. I use Tailscale, which is ridiculously easy to self-host.

    • Thank you for sharing your experience of the process!

      On my phone, I use DAVx5

      I'm a little confused after looking at the website. What exactly does DAVx5 do? The regular re-sync of contacts, calendar and files itself? Shouldn't that be done by the contacts app / calendar app on regular intervalls?

      with Fossify apps

      I just downloaded fossify calendar on my android a few days ago to test it and got to see the other fossify apps :)

      syncthing phasing out android support

      Oh man, I already use syncthing for ~5 GB of files and I use it on my android too. Seems I'll be trying syncthing-android-fdroid in the future then.

      There are tons of notes apps

      There really are a lot! NotallyX looks nice and simple, but memos also looks very interesting. And thank you for the link, I'll go dive into that tomorrow.

      The one Google feature I am not able to reproduce is Google Messages

      I do not need RCS-compatible messengers. What I send via SMS is nothing more than pure text, also no group chats. I use signal and element for my "fancy" messaging needs :)

      I use Tailscale

      I'll look into it some more over the next days, but on a quick glance, this seems like it is an online service where you need an account? If that's the case, I'd prefer using my already running OpenVPN server to do the job.

      • DAVx5 basically acts as the connector between your server and your calendar/contacts/files apps. I would imagine that this could be built into an app, but there are a lot of ways that such apps can sync or operate locally. I'm guessing that it is just a little more specialized than most developers want to get.

        Thanks for the Syncthing-Fork tip! For now the official version is working for me, but I'll have to migrate myself soon.

        From my understanding, OpenVPN provides the same secure remote access as Tailscale, by a slightly different method. You should be fine to use what you've already set up.

  • I assume you basically want protection against disasters, but not high uptime.

    (E.g. you likely can live with a week of unavailability if after a week you can recover the data.)

    The key is about proper backups. For example, my Nextcloud server is running in a datacenter. Every night I replicate the data to a computer running at home. Every week I run a backup to a USB drive that I keep in a third location. Every month I run a backup to a USB drive on the computer I mentioned at home.

    So I could lose two locations and still have my data.

    There is much written about backup strategies, for example https://en.wikipedia.org/wiki/3-2-1_backup_rule ... Just start with your configuration, think what can go wrong and what would happen, and add redundancy until you are OK with the risks.

    • I assume you basically want protection against disasters, but not high uptime. (E.g. you likely can live with a week of unavailability if after a week you can recover the data.)

      Exactly. These are not business-data, but my personal data. No money or absolutely necessary thing is lost if I lose all of that.

      The key is about proper backups.

      Thanks to other commenters I realized, I can just export contacts, calendar events and photos every night to some on-disk location and back them up somewhere offsite. This would probably be a few GB only. The other ~1.5 TB of data is stuff like movies, music, old games that I'd probably never get anywhere else etc. My data is not life-threatening. It's just "critical" to me.

      Via google I found that you can export your calendars via a URL, so I my current backup plan is this:

      • daily backup from onsite-hypervisor to onsite-backup server (all VMs and all data)
      • daily export of calendar and contacts
      • backup calendar, contacts and photos to offsite-location

      This way, I'd still be compliant to the 3-2-1 rule (just not for all my data), while saving quite some money on the offsite data storage.

      As you are already using nextcloud, could you verify if exporting calendars and contacts work with these 2 URLs?

       bash
          
      # calendar export
      https://${NEXTCLOUD_URL}/remote.php/dav/calendars/${NEXTCLOUD_USER}/${CALENDAR_NAME}/?export
      
      # contacts
      https://${NEXTCLOUD_URL}/remote.php/dav/addressbooks/users/${NEXTCLOUD_USER}/contacts/?export
      
        

      This is the command used in this tutorial. The website is in german, scroll down for bash, python, nodeJS and windows powershell examples.

       bash
          
      curl -L -J -O -u "$username:$password" "$downloadLink" --create-dirs -o "./$(basename "$url")"
      
        

      my Nextcloud server is running in a datacenter. Every week I run a backup to a USB drive that I keep in a third location.

      If you don't mind me asking, how much are you paying for your datacenter server and the third location?

75 comments