Obsidian & Syncthing
Friday, March 3 2023, 05:25 UTC
Like my previous blog post said, I was looking for a solution to have a self hosted solution for taking notes. Well I can confidently say I found what I was looking for!
So Obsidian, a friend had told me about it, but never got around to try it. After the last post I just randomly remembered about it, so I said why not, might as well give it a chance since I'm looking for something to take notes. Well TL:DR is I've been using it for a week and I absolutely love it.
Obsidian at it's core is an open-source Markdown text editor, what makes it so great is the large amount of community made plugins. Some of best ones I found are: Advanced Tables, Dataview, Calendar and Copy button for code blocks as a little QOL. I'm not gonna stay here and explain each one as it would take an entire blog post for each, so I strongly suggest you try them out for yourself, there is also a lot of youtube videos about them, I don't wanna be redundant. Also not that important functionality wise, but it has a really nice and complete, integrated theme list, which is amazing for a solarized obsessed person like me :^).
Until now I've just talked about how great Obsidian is, and don't get me wrong it is. Like I said, I wanted a self-hosted alternative mostly so I could have my notes synced across devices and because I want to be the one in possession of my files. The devs do provide a way to do that, but it's through a paid sub and on their own servers. While browsing the plugins though, I found one called "Self-hosted LiveSync", it sounded like the perfect fit for what I was trying to do, but after a couple hours trying to fiddle with the docker hosted version, I just gave up. The documentation and the plugin itself was really confusing, and thought to myself "there must be a better way to do this".
There is! another service I'm absolutely loving called Syncthing. What this program allows you to do is have a continuous file synchronization between 2 or more devices. To set it up with Obsidian it's really simple: Add the devices on their respective client (it has an client for basically all OSes), select a folder on each device to sync to, make sure the folder syncs and on one of the devices create a vault in Obsidian, then go other devices and in obsidian "Open folder as vault" and select the synced vault you just created. And there you go, your essentially decentralized notes/knowledge database!
Just for the extra convenience, since I have my own server running 24/7, I run Syncthing as a container in docker. Here is my docker-compose if you wanna steal it.
version: "2.1" services: syncthing: image: lscr.io/linuxserver/syncthing:latest container_name: syncthing environment: - PUID=1000 - PGID=1000 - TZ=Continent/City volumes: - ./config:/config - ./data:/data ports: - 8384:8384 - 22000:22000/tcp - 22000:22000/udp - 21027:21027/udp restart: unless-stopped