I didn’t necessarily set out to self-host my productivity stack; I initially didn’t know much about running apps on my own server, plus I don’t have a home lab or additional hardware beyond my primary PC. But I wanted to learn how to self-host because I was getting uncomfortable with how much of my personal notes and projects were in the cloud. All of it was also tied to services that could change, lock their features, disappear, or even access my data in some cases.
One of the first tools I started self-hosting was actually a graphics software, namely Penpot, with the help of NotebookLM. It was easier than I’d expected it to be, and I started moving my productivity tools over to Docker as well. The benefits started to outweigh the inconvenience, and so I eventually moved my productivity system to a self-hosted setup. Beyond knowing exactly where my data is now, updates also stopped being a background surprise, and I like supporting self-hosted projects overall.
Note-taking tools
Keeping my thoughts and ideas private
Note-taking was one of the first parts of my productivity stack that I moved to a self-hosted setup. Notes tend to accumulate over time and become long-term data rather than disposable text, and once they do, they’re hard to move elsewhere without friction. Basically the more notes you have, the more dependent you become on whatever platform they live on. Between my meeting notes, design ideas, article outlines, novel drafts, and personal notes, I realized how much of it was living in the cloud or servers unknown to me. So starting to self-host my note apps solved a couple of things at once…
For starters, everything is local and I now know exactly where my notes are stored. Also, nothing is being indexed or processed without me opting into it. And because most self-hosted note apps support open formats, my notes aren’t proprietary anymore and therefore future-proof. There are some downsides to self-hosting your notes apps, though. Mobile support can be hit or miss depending on the tool, and notes don’t sync across devices unless you set that up yourself. But that’s why I use self-hosted tools like Pairdrop and Syncthing to get my files across devices.
There are lots of options for self-hosted note-taking. My top choice is Joplin because I really like the notebook structure for organization, and it supports plain text and Markdown by default. Memos is another great option for simple note-taking. Recently, I’ve also been using Unforget as an alternative to Google Keep - it’s a very minimalist app for quick lists and notes.
PKM tools
Owning my knowledge base
Another segment of my productivity stack that I now run in Docker is my knowledge base - or rather, my PKM tool of choice, which is AFFiNE. Once my notes were self-hosted, PKM tools were just the obvious next step. While you don’t need one, it’s like a catch-all for managing your resources, reference materials, links, task lists, and notes. And just like with note-taking tools, putting all of that data in a cloud tool started to feel more risky.
Most self-hosted PKM tools are built around simple, transparent storage - Markdown files and plain text databases are common, which makes them easier to back up and move. AFFiNE stores data in PostgreSQL and Redis, both open and standard databases too. There are a couple of other options beyond AFFiNE. Docmost is a hybrid between a notes app, wiki, and PKM app. Logseq is another PKM-style tool you can self-host as a web app. And Joplin can also step up as a knowledge management tool depending on how you use it.
The trade-offs are similar to self-hosting your notes, just a little more pronounced. PKM tools tend to benefit from sync, search, and cross-device access, which you have to manage yourself if you want it. Again, a tool like Syncthing is perfect for getting your databases across devices, especially if they’re in open formats.
AI tools
An LLM under my control
Even though I still use NotebookLM (and ChatGPT on occasion), it’s not ideal that so much of my personal data is tied to a Google-based product. I wanted an LLM that I could experiment with freely without worrying about my data being sent to external servers. With cloud-based models, there are also other issues that arise, such as limits on usage in free tiers.
My local LLM runner of choice is LM Studio because, admittedly, it was the easiest to set up thanks to its graphical interface. It handles all the heavy lifting for running models locally without sacrificing capability - you get the full LLM experience without having to deal with complex setups. I also recommend turning on the Limit Model Offload toggle so it doesn’t gobble up system RAM, which was a mistake I made that almost had me ditch the tool.
You can also run Open Notebook, the self-hosted NotebookLM alternative, through your model of choice in LM Studio, since it supports LM Studio as an OpenAI-compatible API provider. Ollama, Jan, and AnythingLLM are also great options for no-code experiences for running local LLMs.
The payoff of self-hosting
There are trade-offs that come with self-hosting, and it’s one of the reasons I’ve waited so long to learn how to do it - updating and syncing is all manual now. But the benefits of privacy and transparency outweigh the hassle. Running my tools locally or in Docker containers has made my work process more secure and stable, and experimentation freer.
