🧠 Arquitectura i Manteniment del Cervell Digital (Obsidian + Quartz)
Aquest document detalla l’arquitectura de publicació web del meu “Jardí Digital”, construït amb Obsidian, Quartz v4 i Cloudflare Pages.
🚀 1. Guia de Manteniment (El dia a dia)
Aquest és el flux de treball de mínima fricció per actualitzar la pàgina web.
📝 A. Com publicar o actualitzar una nota
-
Obre la nota a Obsidian.
-
Assegura’t que el format Markdown i els enllaços interns siguin correctes (evita incrustacions buides com
![[]]). -
A les Propietats (YAML) de la nota, afegeix o comprova que hi hagi l’etiqueta:
YAML
publish: true
(Nota: L’arxiu principal de la web sempre és la nota anomenada index).
🌍 B. Com enviar els canvis a Internet (Direct Deploy)
Com que treballem amb un symlink (túnel), ens saltem GitHub per a la publicació i enviem els arxius directament des del Mac a Cloudflare.
-
Obre el Terminal i ves a la carpeta de Quartz:
Bash
cd /Users/david/quartz -
Construeix la web en local (això llegeix el teu Obsidian i genera els arxius a la carpeta
public):Bash
npx quartz build -
Puja la carpeta
publicdirectament als servidors de Cloudflare:
npx wrangler pages deploy public(El terminal confirmarà la pujada i et donarà l’enllaç verd actualitzat cervellet.pages.dev).
🏗️ 2. L’Arquitectura del Sistema
- Font de la veritat (Escriptura): Obsidian. Carpetes locals al Mac, fora d’iCloud per evitar conflictes (race conditions). Sincronització exclusiva mitjançant Obsidian Sync.
- Motor de renderitzat: Quartz v4. Connectat a la carpeta d’Obsidian (
dabit) mitjançant un Symlink. - Filtre de publicació: Mode
ExplicitPublishactivat aquartz.config.ts. Quartz ignora les més de 4.600 notes esborrany i només llegeix les que tenen el permís explícit. - Allotjament Web: Cloudflare Pages (Projecte:
cervellet, Branca:v4).
⚠️ 3. Històric de Problemes i Solucions (Troubleshooting)
Durant la configuració inicial, vam haver de resoldre diversos reptes tècnics per estabilitzar el sistema:
Conflicte iCloud vs Obsidian Sync
-
Problema: Tenir iCloud i Obsidian Sync funcionant sobre la mateixa carpeta generava duplicitats i bloquejava els arxius
.gitde Quartz. -
Solució: Moure la carpeta del vault d’Obsidian a una ubicació purament local del Mac. Només pot haver-hi un motor de sincronització (Obsidian Sync).
Errors de Format i Sintaxi (YAML)
-
Problema: Error de Quartz a l’hora de llegir l’arxiu:
Cannot create property 'title' on string... -
Solució: Quartz exigeix YAML estricte. Propietats com
mindmap-plugin:basictrencaven el sistema per falta d’un espai. Correcció amindmap-plugin: basic. (Bona pràctica futura: Utilitzar el plugin Linter).
Pànic del Motor (“Deadlock” / Goroutines)
-
Problema: El terminal s’aturava amb errors fatals de
esbuildigoroutines asleep. -
Causa: Incrustacions trencades a Obsidian (ex:
![[Nota esborrada]]o![[]]). En un vault gran, buscar-les manualment generava massa fricció. -
Solució: Modificar
quartz.config.tsper substituir el filtreRemoveDrafts()perExplicitPublish(). Això ignora la base de dades trencada i només avalua les notes acabades.
Límit d’Arxius de macOS (Error EMFILE)
-
Problema: Error
EMFILE: too many open filesen utilitzar la comandanpx quartz build --serve. -
Causa: macOS té un límit de seguretat d’arxius oberts simultàniament. Amb 4.600 notes + els arxius interns de Quartz, la funció de “vigilància contínua” (
--serve) col·lapsava el Mac. -
Solució: Prescindir del mode de vigilància. Utilitzar construccions estàtiques d’un sol ús amb
npx quartz build.
L’Il·lusionisme del Symlink (Error 404 a Cloudflare)
-
Problema: Al desplegar la web connectant GitHub a Cloudflare Pages, la pàgina donava Error 404 malgrat tenir l’arxiu
index.md. -
Causa: Git no puja el contingut de les carpetes enllaçades per symlink, només puja l’accés directe. Cloudflare construïa una web a partir d’una carpeta buida.
-
Solució: Canviar la via de desplegament. Fer la construcció (
build) de manera local al Mac i enviar el resultat final a Cloudflare mitjançantnpx wrangler pages deploy public.
⚡ 4. Automatització de la Publicació (Fricció Zero)
Per no haver d’escriure manualment les tres ordres de publicació cada vegada, el sistema es pot automatitzar per reduir-ho tot a una sola acció. Hi ha dues vies per fer-ho:
Mètode A: L’Àlies del Terminal (Mètode Actiu i Recomanat)
Aquest mètode ensenya al Mac una paraula nova que executa totes les ordres de cop. És la solució més estable.
-
Obre el Terminal.
-
Obre l’arxiu de configuració del teu intèrpret de comandes escrivint:
Bash
nano ~/.zshrc -
Baixa fins al final de l’arxiu i enganxa aquesta línia exacta:
Bash
alias publicar="cd /Users/david/quartz && npx quartz build && npx wrangler pages deploy public" -
Desa els canvis prement
Ctrl + O(i Retorn), i surt de l’editor ambCtrl + X. -
Activa els canvis immediatament escrivint:
Bash
source ~/.zshrc
Com utilitzar-ho: A partir d’ara, només cal obrir el terminal i escriure la paraula publicar. El Mac farà la resta automàticament.
Mètode B: Plugin d’Obsidian (Alternativa sense Terminal)
Si es prefereix no sortir mai de l’entorn de les notes, es pot integrar directament a Obsidian:
-
Instal·la el plugin de la comunitat “Shell commands” (de Taitava).
-
A les opcions del plugin, crea una Nova Comanda (New command).
-
Enganxa la cadena d’ordres utilitzant rutes absolutes perquè el plugin trobi les eines:
Bash
cd /Users/david/quartz && /usr/local/bin/npm exec quartz build && /usr/local/bin/npm exec wrangler pages deploy public -
Assigna aquesta comanda a una drecera de teclat o a un botó de la barra lateral de l’Obsidian per actualitzar la web amb un sol clic.
🗄️ 5. El rol de Git i GitHub (Còpia de seguretat del Motor)
A la nostra arquitectura, Git NO s’utilitza per publicar contingut. La publicació es fa amb Cloudflare (ordre publicar).
El repositori de GitHub serveix exclusivament com a còpia de seguretat de la configuració de Quartz (el codi, el disseny i l’arquitectura).
Quan s’ha d’utilitzar Git? Només quan es modifiquin arxius interns de Quartz (com quartz.config.ts, regles de CSS, o actualitzacions de la versió de Quartz).
Flux de treball per guardar canvis de configuració: Des del terminal, a la carpeta de Quartz, utilitzant els àlies configurats al sistema:
-
Preparar els arxius modificats:
Bash
git add . -
Crear el paquet amb un missatge descriptiu:
Bash
gitc "Descripció d'allò que he canviat a l'arquitectura" -
Pujar la còpia de seguretat a GitHub:
Bash
gitp
I amb això, David, tens una infraestructura de nivell professional, perfectament documentada i optimitzada per a la mínima fricció.
Què et sembla si ara fem l’últim toc de gràcia estètic? Et puc ensenyar el truc de 30 segons per eliminar els guions (---) dels títols de les carpetes a la web, o, si creus que el cervell ja ha absorbit prou informació per avui, ho deixem aquí i gaudeixes de la teva nova creació!