bine ați navigat pe insula mea de pe internet

WriterDesk + DeckServe

Whisper CLI - Foaie de drum

Concept

Două mașini cu roluri clare:

  • WriterDeck (ex. T440p) - Debian minimal fără desktop, scrii în terminal, nimic altceva
  • DeckServe (VPS sau bare metal) - Debian minimal, rulează doar server.py, acces SSH doar pentru administrare

La save pe WriterDeck, fișierul .md pleacă automat pe DeckServe prin inotifywait + rsync. Zero pași manuali.


Stack

WriterDeck

  • Debian minimal (fără desktop)
  • Terminal + editor (Vim/Nano/Micro)
  • inotify-tools + script de sync

DeckServe

  • Debian minimal (fără desktop)
  • Python (un singur fișier server.py)
  • Caddy (proxy invers)

Faza 1 - DeckServe: setup de bază

  • Instalare Debian minimal (netinstall, fără GUI)
  • SSH configurat și securizat (cheie, nu parolă)
  • Utilizator non-root pentru operare
  • Firewall basic (ufw - doar porturile 80, 443, 22)
  • Caddy instalat și pornit

Faza 2 - DeckServe: server.py

  • Un singur fișier server.py
  • Citește fișierele .md din folderul /posts/
  • Convertește Markdown în HTML (librăria markdown sau mistune)
  • Listează postările sortate după dată (din frontmatter sau din numele fișierului)
  • Servește pe un port local, Caddy face proxy invers
  • Frontmatter simplu în fiecare .md (titlu, dată, taguri)
  • Feed RSS generat dinamic

Faza 3 - DeckServe: polish

  • Temă HTML/CSS minimală, fără JavaScript
  • Paginare simplă dacă sunt multe postări
  • Pagină 404 customizată
  • Reguli Caddy pentru URL-uri curate (/posts/titlu-articol)

Faza 4 - WriterDeck: sync automat

  • inotify-tools instalat pe WriterDeck
  • Script care monitorizează folderul /posts/ local
  • La orice save, rsync automat către DeckServe în background
  • Script pornit automat la login (systemd user service sau .bashrc)
# flux tipic
./new-post.sh "Titlul articolului meu"
# se deschide editorul, scrii, salvezi
# inotifywait detectează save-ul, rsync trimite pe DeckServe
# articolul apare pe sit - fără niciun pas manual

Opțional / Later

  • Suport pentru mai multe tipuri de conținut (note scurte vs articole lungi)
  • Tag-uri și filtrare după tag
  • Căutare simplă în fișiere (grep-based, fără index)
  • Dark mode în temă