By (mildly) popular demand, I will briefly list the self-hosting stuff I use (and don't use) and why. I will not discuss how to set up these things, I think you can find that out elsewhere on the web, but I will rather explain why I use what. I will list my self-hosted services from 1 downward in order of how dependent I am on them, just to give you an idea.
1. A Personal Knowledge Base
A knowledge base is just a place to store stuff that you don't want to remember by heart. It can give your brain space to think without keeping track of silly details, which you can just look up - not inconvenient or a scientist. Basically, you can make a Wikipedia for yourself.
Honestly, when I started out, I made a personal knowledge base just for the sake of it. It started quite meta: the knowledge base mainly contained the instructions how to set up the knowledge base. But as time went on, I started putting more and more of my mind into it. Before I knew it, I was reading about Building a second brain, Zettelkasten and the Johnny Decimal system. It would genuinely be hard to go without it now… I use it to keep stuff ranging from my science to taxes.
Quite a few good choices are available.
- Dokuwiki, which is what I use.
- And quite a lot of others.
I use Dokuwiki, which looks old-fashioned, but has a few key advantages over the competition. I think for me, the most important is that it is simple. Every page is just a simple text file. Even if you completely screw up, you will still be able to read your entries on any computer. On top of that, Dokuwiki has been around for a while, and quite a lot of useful extensions are available. A disadvantage of Dokuwiki is that it is not so suitable for taking notes, that is why I also use Obsidian.
2. Saving and Syncing Files
I think this is one of the most useful things you can self-host. Instead of using the limited space of Google Drive or Dropbox, or pay for more space, you just buy a few harddrives, and you have nearly infinite space to save things on. You will have to make sure everything is properly backed up yourself of course - you don't want to lose all your data in an unfortunate coffee-spilling accident or similar.
The way I order things is that there is a group of important files I want to have available at all devices, phone, laptop, and whatever else. This stuff I sync using Syncthing. It works basically in the same way as Dropbox sync works; all files in a folder are shared between devices. Change something at your phone, and it also changes on your laptop. The difference is that there is no central server needed. Phone and laptop talk directly to each other to keep track of what changes.
To keep files that I don't need acces to at all times (like the BSc thesis which you will never look at again, but too which you are emotionally attached), I put them on your server and use Filebrowser to acces them via a web-interface. This works very well for me.
There are a few solutions that combine these two functions (Nextcloud, Owncloud, Seafile, Pydio, and I am sure there are more), but these tend to be complicated, slow, require more-or-less constant love and attention, and are really not made to be used by 1 or 2 people. Often simpler is better, and it is the case here I think.
3. Photo Storage
I am not a photographer by any stretch of the imagination, nor do I use Instagram or similar other social media. But. I do enjoy looking back through pictures to see what I was doing 1 year ago, or to look back on a specific holiday. You can use a simple file viewer for this, like Filebrowser above, but it is far from ideal. It turns out keeping all your photos in a simple list is not the best way to go about this. Keeping things in folders, so related pics are saved together already works better, but has the problem that you may want pictures to be associated with two or more albums.
Google Photos solves the problem very well: you can make albums, share them with friends, look for objects in the pictures, tag people, etc., etc. You don't have to think about folder structures, you just see the pictures. IDeally, I think a self-hosted solution does the same thing:
- Abstracting away the underlying folder structure storing the images, leaving the user to make albums, or search for objects in the images, etc.
- And display them on a nice webpage.
There are quite a lot of Google photos alternatives available, but I think by far the best is Immich, which can do basically anything Google photos can do, and is still actively being improved all the time. The only disadvantage is that this will be heavy for e.g. a Raspberry Pi. You can look to different solutions in this case, for instance Pigallery 2, which does not do so well in abstracting away the folder structure but is good at just showing the images.
4. Digital Document Management
When I moved to Germany, I suddenly started receiving physical email again, with actual important things in it(!). A very dangerous thing when you are used to mail and letters mostly being spam praising the local supermarket and lotteries. Of course, I would loose important things immediately if I didn't digitize them. But after digitizing, I can still losse them, but in a complex folder structure instead of a bag of paper waste.
This is where a digital document management system comes in: something that you can use to tag scanned letters, so you can find them back later. For this I use Paperless-ngx. When I scan a document my scanner dumps it into a folder on my NAS, which Paperless-ngx keeps an eye on. When Paperless-ngx finds a new document, it saves the data in its database and you can look for it forever. The software also does OCR on the letter (i.e., it tries to convert the scanned image to actual text) and based on that, tries to guess the date, correspondents, etc. It uses a (local) machine learning model it trains on data you already have to apply categories, so it is super easy to find back documents. I found myself also storing important digital documents like payslips and proofs of payment, just so everything is easy to find.
Paperless-ngx is not perfect; sometimes it is a bit slow, and the user interface can be a bit annoying to navigate sometimes, but in general it works very well.
5. Media streaming
It is an almost old-fashioned thought, but If you don't have a subscription to audible or Storytel, but still want to listen to audio-books, you can just buy the files and listen to them. But how do you get the audiofiles conveniently on your phone, laptop and other devices? This problem is also encountered with film, ebooks, and music. The solution is some service that you can use to watch, read or listen your media anywhere.
For audio-books I use Audioookshelf. You just pouint it ad your collection of audiobooks, and you can play them from the web-interface from anywhere. You can also subsicribe to podcasts here. You can then use the app to listen to the audio anywhere, You can even generate a podcast-link, which you can add to your podcast-player, and listen to the book as if it is a podcast. Very nice stuff.
To read ebooks on all devices, things get complicated, since eReaders typically do not allow random apps to be installed, and are typically not very well suited for web-browsers. Nevertheless, I found Kavita to be a pretty good online reader. you get a web interface where you can easily read books, or download them. It is actually intended for Manga, and you notice that sometimes, but all-in-all I have little to complain about. An alternative that always works well is calibre-web, but you need a Calibre database to use it, which feels weird to me.
There is almost no competition; Jellyfin is where it is at. Point Jellyfin to your videos, and Jellyfin can basically turns into your own Netflix-clone. Hard to complain about anything, apart from maybe the encoding/decoding hardware acceleration mess, which is just very difficult anyway.
Something I ran into annoyingly often in my PhD is that I would need to do some image analysis in Python that would take a long time. Not forever, not long enough to spend ours to rewrite the code (after all, I probably only needed to do the analysis a few times), but annoyingly long. Basically, I ran the code overnight on my laptop, so I could do work during the day. This is kinda stupid, clearly. To solve this problem, VSCode-server comes to the rescue.
Using VSCode, you can do coding and running code on a distant PC, so you don't render your laptop unusable for a few hours to a analyse a few thousand frames of microscopy images.