public

My public Zettelkasten notes from My Zettelkasten are hosted as static website on GitHub and in my homelab (see My homelab)

Public (GitHub)

Deployment: https://pascalweiss.github.io/digital-garden-page/ Repo (public):https://github.com/pascalweiss/digital-garden-page

Private (Homelab)

Deployment: http://digital-garden.homelab.lan Repo: http://git.pwlab.dev/homelab/digital-garden

Features

This setup fulfills the following requirements:

  • I can write all my notes in Obsisian without any restrictions
  • My work is synced over multiple devices (iOS, Linux, MacOS)
  • Everything is automatically version controlled via git
  • individual notes can be declared as either public or private
  • every commit is tested in a CI/CD pipe
  • the pipe builds a static quartz app. The static page is then deployed twice:
    • Github Pages: public access
    • k8s (private): as docker image to my private Nexus, then via flux (See FluxCD) in my k8s homelab (My homelab).
graph TD
A[device A] -->|write| B[iCloud sync]
B -->|read| A
B -->|read| C[device B]
C -->|write| B
B -->|read| D["cron job (k8s)"]
D -->|commit| E[git repo]
E -->|trigger| F["ci/cd: build (docker, helm)"]
F -->|push| G[Nexus]
F -->|push| I[GitHub Pages]
H[flux] -->|pull| G
H -->|deploy| J[k8s deployment]
A -->|browser| J
A --> | browser | I

Content creation

The content is the set of markdown files, that I write with Obsidian in form of a Zettelkasten.

Cloud Sync for Obsidian

I use Obsidian on multiple devices with different operating systems: iOS, Linux and MacOS. These devices need to be in sync. Obsidian supports sync via iCloud and Obsidian cloud. I read that Obsidian cloud is annoyingly slow. So I chose iCloud as my backend. To also support Obsidian on my Linux machine I use rclone, which is integrated with iCloud (since v1.69.0) and allows bidirectional sync.

Version control

The content is automatically versioned with git. For details see digital garden iCloud sync to git. There is a main repo, that comprises all of my notes repo - zettelkasten private, and a submodule repo, that comprises the public notes repo - zettelkasten public. This way I have all my notes - the public and the private ones - in a single Obsidian vault.

Static website generation

To publish my public notes, I use quartz (see quartz - static websites with markdown). Therefore I forked the original quartz repo to repo - digital garden. The repo uses the public notes as submodule.

Docker image build

The docker image is built in the ci pipeline.