Today I’m going to show you how I transformed the act of daily note-taking into a system that:
helps me consolidate what I do during the day
maps out arguments by showing their evolutions and ramifications
automatically creates value not just for you, but for others too
The result is a personal, link-rich wiki to show off!
Here is what I actually do:
I take notes with screenshots on my work latop, using OneNote
At the end of the day I finalize them by converting them in Markdown, using Obsidian.
I push them to my VPS using a Python script
As soon as they arrive, a static site is automatically generated using Quartz, and everything is pushed to GitHub for backup, using Git for versioning.
This guide walks you through this entire pipeline.
Architecture
The Obsidian vault lives on your PC, here is where you finalize the notes.
A sync-wiki.sh script pushes them to the VPS via rsync, where deploy.sh turns them into static HTML using Quartz, and commits everything to GitHub. Nginx publishes the site via HTTPS.
Follow the Obsidian setup to install Obsidian, create a vault, and learn the essentials (mainly wikilinks and tags, but also callouts and embeds).
The vault is just a normal folder on disk, so just pick a path you’ll remember, for example:
~/Documents/ObsidianVault on Linux
C:\Users\you\Documents\ObsidianVault on Windows (/mnt/c/Users/you/Documents/ObsidianVault from WSL).
2. Set up your VPS
Since my goal is to avoid vendor lock-in and keep everything fully open source, I use a Linux machine with a public IPv4 address.
I host Nginx as my web server to publish my entire website on the domain farnetiandrea.it, which points directly to that IP address.
If you want to use the same setup, I recommend:
A VPS with Ubuntu 22.04+ (or any recent Debian-like distro)
A non-root user with sudo privileges (the correct way to handle privileges in Linux)
A public IPv4 address (e.g. 123.456.0.100)
A domain and its DNS pointed to the VPS (e.g. wiki.yourdomain.com⇒123.456.0.100)
Nginx + Certbot for publishing the domain via HTTPS
3. Install Quartz on the VPS
Quartz is what converts your Markdown notes into a real site.
TL;DR: you need to clone the Quartz repository in the directory that you want to use as the “container” for your site.
I host this Wiki in the ~/wiki directory of my VPS, so i’ll use that as a reference throughout the guide:
git clone https://github.com/jackyzha0/quartz.git wikicd wikirm -rf .git # remove the connection with the official Quartz upstreamgit init # create a new Git reponpm installnpx quartz build # it creates public/, the actual HMTL page of your website
Quartz will create the content/ folder, and here’s where we have to sync our markdown notes!
You can later also customize quartz.config.ts (title, colors, locale) and quartz.layout.ts (header, sidebar order) to make the webpage yours.
4. Git & GitHub setup
Now, create a new empty repository on GitHub called wiki (no README, no license, leave it completely empty).
So in our case server_name ... will be something like server_name wiki.<YOUR_SITE.COM>;
and root /var/www/example; will be like root /home/<YOUR_USER>/wiki/public;
6. Certbot Installation
Certbot is the software that issues a certificate for your domain, so that it can run in HTTPS.
You can see the Certbot setup guide to install Certbot and activate it for you website.
TL;DR: it will issue a certificate and add the following lines to your Nginx configuration:
Now I’ll show you a couple scripts to automate the pipeline process, so that you just need to worry about writing the notes and then sync, publish and back them up on GitHub with a click!
EXTRA. Automating the process
For automating the entire pipeline, we are going to need two scripts:
deploy.sh: lives inside my “wiki” folder on the VPS. Deploys everything on GitHub and generates the site
sync-wiki.sh: lives inside my work laptop. Syncs every note on the VPS and calls deploy.sh