

Published February 21, 2025 at 05:07 AM
Update (October 2026): A reader hit a few first-run errors with the workflow in this post, so I fixed it. If your build failed, this is why: -
cp: cannot stat '.overrides': the workflow copies an.overridesfolder. Either create one (add a blank.gitkeepfile inside, since git ignores empty folders) or use the updatedcp -r .overrides .site_content/ || true. -No such fileforpreprocess_dataviews.py: put that script in a.scripts/folder in your vault. - Permission error on the last step: in GitHub go to Settings > Actions > General > Workflow permissions and choose "Read and write".The
deploy.yml,mkdocs.yml.basicandpreprocess_dataviews.pyin the repo are all updated.
Anyone who follows this blog knows my obsession for notes - specifically via Obsidian.
As someone who keeps extensive travel notes and other documentation in Obsidian, I wanted a way to share select notes publicly.
Obsidian offers this via Obsidian Publish, however, for $100/year, I thought it could be a bit more flexible.
I explored some alternatives and think I found a nice free solution worth sharing.
My final product if you want to see my public notes is available at dan1229.github.io/obsidian-dans-notes

The way I do this is pretty particular to my workflow, as my obsidian vault is in a GitHub repo. Check this post if you're interested in the details on how to do that.
One of the benefits of this is you can easily use GitHub Actions or any CI process to run code over your vault. While this may not sound too exciting, it enables a ton.
"Obsidian Actions" as I call them in this post can be super useful to really automating your notes and improving your workflow.
Here's how to set up your own self-hosted Obsidian wiki:
#publish-me) to mark which notes should be public.mkdocs.yml configuration file:site_name: Your Site Name
site_url: https://yourusername.github.io/your-repo-name
site_author: Your Name
site_description: A description of your site
Full disclosure, mine is a lot more complex than this to just pretty it up a lot more - here's said file.
.overrides and .scripts folders the workflow expects (see the update at the top)View my full CD file here.
Some tips I found useful:
.overrides directoryindex.mdmkdocs.yml - I am using the Material Themepreprocess_dataviews.py to see what I mean. You'll notice we run this in the CD file before deploying.Overall, I'm pretty happy with this. It's simple, hasn't broken on me yet and I definitely love sending people the links!
Overall some thoughts:
Pros
Cons
As I said, many reading this are probably comparing it to Obsidian Publish.
I won't lie it worked pretty well I was definitely impressed and goes without saying required close to zero fiddling - you don't need to worry about processing Obsidian syntax or adding a #publish-me or anything like that.
That said, as I mentioned, it didn't meet all my needs, specifically:
The astute among you will notice this is a similar list of gripes to my solution. This is true! They're almost identical because the products are pretty close.
Which I guess summarizes my take - Obsidian Publish is great and cool, but almost entirely replicable on your own. Unless you really don't want to mess with self-hosting, I'd definitely recommend at least trying.
Worth noting too this option is much more customizable than Obsidian Publish.

And that's about it! As I said, I think if you're interested in Obsidian Publish I would definitely try this out first and see if you can get away with it for free.
Particularly a great fit if:
Overall I like it, I'll be honest I use it less than I expected but I have found nice niches - travel, recipes, research and some more.
The setup takes a bit more work than Obsidian Publish, but the result is a professional-looking wiki that you can maintain for free and even customize a bit.
Hope you enjoyed this thanks for reading!
Obsidian
Self Hosting
Tips and Tricks