GenDash: Obsidian to Hugo Automated Publishing Guide
This guide outlines the infrastructure and configuration required to sync an Obsidian vault across multiple devices and automate the publishing process to a Hugo website via Cloudflare Pages.
1. Multi-Device Sync (The Writing Layer)#
To ensure notes are mirrored across Mac Studio, MacBook Air, and iPad without using Git for the writing layer.
- Backend: Self-hosted CouchDB (
10.1.2.230) atobsidian-sync.mmmo.app. - Plugin: Self-hosted LiveSync.
- Strategy: Only pages are live synced.
- Transfer settings and plugins: Copy the .obisidan folder
Warning: Obsidian should not be running on source and destination
rsync -avzhI --delete --progress /Users/marc/Obsidian/GenDash/.obsidian/ marc@10.1.2.5:/Users/marc/Obsidian/GenDash/.obsidianCopy the full vault
Warning: Obsidian should not be running on source and destination
rsync -avzh --progress /Users/marc/Obsidian/GenDash/ marc@10.1.2.5:/Users/marc/Obsidian/GenDash/2. The Content Bridge (Mac to Linux)#
1. Mac OS Script#
This script “beams” your notes from your Mac Studio to the Proxmox Hugo VM.
Location: /Users/marc/Scripts/sync-obsidian-gendash-hugo.sh
note: A copy of the script is also at
/Volumes/Software/Software/Scripts/MacOS/
#run manually vian the command push or:
bash /Users/marc/Scripts/sync-obsidian-gendash-hugo.sh
cat /Users/marc/Scripts/sync-obsidian-gendash-hugo.log# Create a push alias
echo "alias pushgen='bash /Users/marc/Scripts/sync-obsidian-gendash-hugo.sh'" >> ~/.zshrc
source ~/.**zshrc**Mac Studio Schedule#
# Mac Studio Schedule
crontab -e10 12 * * * bash /Volumes/Software/Software/Scripts/MacOS/sync-obsidian-gendash-hugo.sh > /dev/null 2>&1
10 20 * * * bash /Volumes/Software/Software/Scripts/MacOS/sync-obsidian-gendash-hugo.sh > /dev/null 2>&13. The Git Publisher (Linux to Web)#
HP1Docker hosts the files, a script pushes the received notes from the VM to GitHub to trigger Cloudflare.
Location: /mnt/Software/Software/Scripts/Linux/
# Run script manually from 10.1.2.202 (HP1Proxmox)
bash /mnt/Software/Software/Scripts/Linux/publish-hugo-gendash.sh
tail -f /home/marc/hugo/homelab/logs/publish-hugo-gendash.log# Create a push alias
echo "alias push='bash /mnt/Software/Software/Scripts/Linux/publish-hugo-homelab.sh && tail -f /home/marc/hugo/homelab/logs/publish-hugo-homelab.log'" >> ~/.bashrcProxmox VM Schedule#
# HP1Docker cron job
crontab -e15 12 * * * bash /mnt/Software/Software/Scripts/Linux/publish-hugo-gendash.sh
15 20 * * * bash /mnt/Software/Software/Scripts/Linux/publish-hugo-gendash.shWarning: You need to close the terminal session and reopen a new one for the alias to take effect