<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>~&#x2F;magostinelli - cms</title>
      <link>https://www.agostinelli.eu</link>
      <description>La casa delle mie passioni</description>
      <generator>Zola</generator>
      <language>it</language>
      <atom:link href="https://www.agostinelli.eu/tags/cms/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Sat, 20 Jun 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Nuovo sito - Parte 2</title>
          <pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://www.agostinelli.eu/nuovo_sito_2/</link>
          <guid>https://www.agostinelli.eu/nuovo_sito_2/</guid>
          <description xml:base="https://www.agostinelli.eu/nuovo_sito_2/">&lt;h1 id=&quot;nuovo-sito-2026&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#nuovo-sito-2026&quot; aria-label=&quot;Anchor link for: nuovo-sito-2026&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Nuovo sito 2026&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;seconda-parte&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#seconda-parte&quot; aria-label=&quot;Anchor link for: seconda-parte&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Seconda parte&lt;&#x2F;h2&gt;
&lt;p&gt;Con questo articolo proseguiamo la serie relativa al restyling del sito che ho effettuato quest&#x27;anno.&lt;&#x2F;p&gt;
&lt;p&gt;Vi invito a leggere la &lt;a href=&quot;&#x2F;nuovo_sito_1&#x2F;&quot;&gt;prima parte&lt;&#x2F;a&gt; se ancora non lo avete fatto.&lt;&#x2F;p&gt;
&lt;p&gt;Nel frattempo ho continuato a lavorare su altre funzionalità, che vi presenterò adesso.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;zola&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#zola&quot; aria-label=&quot;Anchor link for: zola&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Zola&lt;&#x2F;h2&gt;
&lt;p&gt;Eravamo rimasti su &lt;a href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt; che vi ricordo essere un motore per creare siti statici, dove gli articoli (o pagine) vengono scritti in linguaggio &lt;strong&gt;Markdown&lt;&#x2F;strong&gt; e attraverso un unico &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;getzola&#x2F;zola&#x2F;&quot;&gt;binario eseguibile&lt;&#x2F;a&gt; vengono trasformati in pagine &lt;em&gt;HTML&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Innanzitutto la prima cosa che mi è piaciuta di Zola è che si tratta di un solo eseguibile da installare, e quindi molto semplice da gestire.
La seconda cosa è stato l&#x27;uso di &lt;em&gt;Markdown&lt;&#x2F;em&gt; come linguaggio di scrittura, e la terza il supporto a molti &lt;em&gt;temi&lt;&#x2F;em&gt;, grazie ai quali personalizzare e diversificare il proprio sito.&lt;&#x2F;p&gt;
&lt;p&gt;Dato che il sito generato è statico, è per sua definizione sicuro, dimenticate le vulnerabilità di &lt;em&gt;WordPress&lt;&#x2F;em&gt; e software simili.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;versionamento-e-automatismi&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#versionamento-e-automatismi&quot; aria-label=&quot;Anchor link for: versionamento-e-automatismi&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Versionamento e automatismi&lt;&#x2F;h3&gt;
&lt;p&gt;Torniamo un attimo alle pagine del sito scritte in &lt;em&gt;Markdown&lt;&#x2F;em&gt;. Ho deciso di versionarle con &lt;em&gt;Git&lt;&#x2F;em&gt; sulla mia istanza &lt;em&gt;selfhosted&lt;&#x2F;em&gt; di &lt;strong&gt;Forgejo&lt;&#x2F;strong&gt; e usare le sue actions per compilare ed effettuare il deploy automatico del sito attraverso le &lt;strong&gt;actions&lt;&#x2F;strong&gt;. Ho anche un&#x27;istanza di test del sito, in modo da poter visualizzare e testare prima le nuove modifiche.&lt;&#x2F;p&gt;
&lt;p&gt;La &lt;em&gt;pipeline&lt;&#x2F;em&gt; di build e deploy ha superato le 200 righe! Succede quando mi faccio prendere la mano dalle novità e voglio sempre introdurre nuove funzionalità alla ricerca della perfezione (che non arriverà mai, c&#x27;è sempre qualcosa da migliorare).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;limiti&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#limiti&quot; aria-label=&quot;Anchor link for: limiti&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Limiti&lt;&#x2F;h3&gt;
&lt;p&gt;Dopo aver elogiato i vantaggi di Zola, arriviamo ai suoi limiti, che sono intrinsechi a tutti i generatori di pagine statiche. Scegliendo questa soluzione, dovremmo teoricamente rinunciare a commenti e statistiche sul sito. Ma ecco come ho girato intorno al problema: ho aggiunto queste funzionalità tramite JavaScript eseguito lato client.&lt;&#x2F;p&gt;
&lt;p&gt;Entrambi i software che seguono sono stati configurati per rispondere solo in locale (127.0.0.1) perché ho configurato il mio webserver in modo da agire come &lt;em&gt;reverse proxy&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;commenti&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#commenti&quot; aria-label=&quot;Anchor link for: commenti&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Commenti&lt;&#x2F;h4&gt;
&lt;p&gt;Ho usato il software &lt;a href=&quot;https:&#x2F;&#x2F;isso-comments.de&#x2F;&quot;&gt;Isso&lt;&#x2F;a&gt;, che ho installato con &lt;code&gt;docker-compose&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;yaml&quot; class=&quot;language-yaml z-code&quot;&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;root@tex:&#x2F;opt&#x2F;isso# cat docker-compose.yml&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;services&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;  &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;isso&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;    &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;image&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;ghcr.io&#x2F;isso-comments&#x2F;isso:release&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;    &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;ports&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-yaml&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-yaml&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;127.0.0.1:8085:8080&lt;span class=&quot;z-punctuation z-definition z-string z-end z-yaml&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;    &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;volumes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;.&#x2F;data&#x2F;config:&#x2F;config&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;.&#x2F;data&#x2F;db:&#x2F;db&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ho scelto Isso perché non ha pubblicità, non traccia gli utenti ed è leggero.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;statistiche&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#statistiche&quot; aria-label=&quot;Anchor link for: statistiche&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Statistiche&lt;&#x2F;h4&gt;
&lt;p&gt;Ho usato un software molto semplice, di nome &lt;a href=&quot;https:&#x2F;&#x2F;www.goatcounter.com&#x2F;&quot;&gt;GoatCounter&lt;&#x2F;a&gt;. L&#x27;interfaccia è molto spartana, ma per quelle che sono le mie esigenze va più che bene! Alla fine a me interessa vedere quali sono gli argomenti più seguiti o le pagine più lette, non ho bisogno di funzionalità avanzate, ma soprattutto perché &lt;em&gt;GoatCounter&lt;&#x2F;em&gt; rispetta la privacy, non richiede banner dei cookie invasivi ed è infinitamente più leggero di Matomo.&lt;&#x2F;p&gt;
&lt;p&gt;Installato con docker-compose, semplicemente così:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;yaml&quot; class=&quot;language-yaml z-code&quot;&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;services&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;  &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;goatcounter&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;    &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;image&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;arp242&#x2F;goatcounter&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;    &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;ports&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-yaml&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-yaml&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;127.0.0.1:8086:8080&lt;span class=&quot;z-punctuation z-definition z-string z-end z-yaml&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;    &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;volumes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;.&#x2F;data:&#x2F;home&#x2F;goatcounter&#x2F;goatcounter-data&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;    &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;environment&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;GOATCOUNTER_TLS=http&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;GOATCOUNTER_SMTP=smtps:&#x2F;&#x2F;${SMTP_USER}:${SMTP_PASS}@${SMTP_HOST}&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;GOATCOUNTER_EMAIL-FROM=${GC_EMAIL_FROM}&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;GOATCOUNTER_ERRORS=mailto:${GC_ERRORS}&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;      &lt;span class=&quot;z-punctuation z-definition z-block z-sequence z-item z-yaml&quot;&gt;-&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;GOATCOUNTER_DB=sqlite+.&#x2F;goatcounter-data&#x2F;db.sqlite3&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;E un banale file &lt;code&gt;.env&lt;&#x2F;code&gt; come questo:&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;# Credenziali SMTP
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;SMTP_USER=me@email.com
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;SMTP_PASS=VerySecure
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;SMTP_HOST=smtp.mysite.com:465
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;# Configurazione GoatCounter
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;GC_EMAIL_FROM=me@email.com
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;GC_ERRORS=me@email.com
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ho configurato &lt;em&gt;SMTP&lt;&#x2F;em&gt; perché ricevo una notifica per ogni nuovo commento, quindi se avete letto fino a qui, adesso dovete per forza lasciarmene uno sotto questo articolo!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;anticipazioni&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#anticipazioni&quot; aria-label=&quot;Anchor link for: anticipazioni&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Anticipazioni&lt;&#x2F;h2&gt;
&lt;p&gt;Nella terza (e ultima) parte di questa serie approfondirò:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Galleria Immagini&lt;&#x2F;strong&gt;: come ho implementato le immagini che trovate sul sito? (le immagini vengono pescate da &lt;em&gt;Nextcloud&lt;&#x2F;em&gt;!)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Form della pagina contatti&lt;&#x2F;strong&gt;: sì, un form in un sito statico&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Immagine Docker custom&lt;&#x2F;strong&gt;: la mia immagine Docker personalizzata che uso per compilare il sito nella &lt;em&gt;CI&#x2F;CD&lt;&#x2F;em&gt; di &lt;em&gt;Forgejo&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Nuovo sito - Parte 1</title>
          <pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://www.agostinelli.eu/nuovo_sito_1/</link>
          <guid>https://www.agostinelli.eu/nuovo_sito_1/</guid>
          <description xml:base="https://www.agostinelli.eu/nuovo_sito_1/">&lt;h1 id=&quot;nuovo-sito-2026&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#nuovo-sito-2026&quot; aria-label=&quot;Anchor link for: nuovo-sito-2026&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Nuovo sito 2026&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;prima-parte&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#prima-parte&quot; aria-label=&quot;Anchor link for: prima-parte&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Prima parte&lt;&#x2F;h2&gt;
&lt;p&gt;Benvenuti nel primo articolo della serie.
Non appena mi sono messo a scrivere due righe sul nuovo sito, mi sono accorto che non ne sarebbe bastato uno solo.
Un&#x27;attività di per se banale, un piccolo sito personale con blog e galleria immagini, in realtà si è rivelata una piccola sfida.&lt;&#x2F;p&gt;
&lt;p&gt;Ma partiamo con ordine:
prima di questo &lt;em&gt;&quot;restyling&quot;&lt;&#x2F;em&gt; avevo due siti, uno statico (con galleria immagini) e un blog con &lt;a href=&quot;&#x2F;tag&#x2F;writefreely&quot;&gt;writefreely&lt;&#x2F;a&gt;.
Da qui sono partito e mi sono detto, facciamo un sito unico, almeno ne ho uno solo da manutenere!&lt;&#x2F;p&gt;
&lt;p&gt;Cosi inizia la prima sfida: &lt;strong&gt;quale software&lt;&#x2F;strong&gt; usare?
&lt;em&gt;Writefreely&lt;&#x2F;em&gt; ormai sembra abbandonato, peccato perchè, se pur semplice, integrava nativamente activity pub.
Per le fotografie volevo trovare qualcosa che le potesse suddividere in cartelle, ma allo stesso tempo che la visualizzazione delle immagini fosse fruibile da tutti i dispositivi.&lt;&#x2F;p&gt;
&lt;p&gt;Infine come prerequisiti volevo anche:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;feed rss&lt;&#x2F;li&gt;
&lt;li&gt;sito snello (non pesante da caricare)&lt;&#x2F;li&gt;
&lt;li&gt;grafica responsive (banale, ma non sempre è cosi)&lt;&#x2F;li&gt;
&lt;li&gt;scrittura delle pagine in linguaggio MarkDown&lt;&#x2F;li&gt;
&lt;li&gt;tenere traccia delle modifiche effettuate&lt;&#x2F;li&gt;
&lt;li&gt;usare più automatismi possibili&lt;&#x2F;li&gt;
&lt;li&gt;statistiche sulle pagine più lette&lt;&#x2F;li&gt;
&lt;li&gt;multilingua (integrare inglese in futuro)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Insomma senza tenervi sulle spiena, alla fine ho scelto &lt;a href=&quot;&#x2F;tag&#x2F;zola&quot;&gt;Zola&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;perche-zola&quot;&gt;&lt;a class=&quot;header-anchor no-hover-padding&quot; href=&quot;#perche-zola&quot; aria-label=&quot;Anchor link for: perche-zola&quot;&gt;&lt;span class=&quot;link-icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
Perchè Zola&lt;&#x2F;h2&gt;
&lt;p&gt;Di recente ho avuto un&#x27;eperienza con Hugo (altro generatore di siti statici), perchè abbiamo rimesso in piedi il sito del &lt;a href=&quot;https:&#x2F;&#x2F;prato.linux.it&quot;&gt;PLUG&lt;&#x2F;a&gt; e per alcune cose mi ha incuriosito, sono rimasto &quot;affascinato&quot; anche dalla CI di gitlab, che abbiamo usato per quel progetto.
Infine, in questo ultimo periodo mi sono &quot;innamorato&quot; di &lt;a href=&quot;&#x2F;tag&#x2F;forgejo&quot;&gt;Forgejo&lt;&#x2F;a&gt;.
Quindi ho messo insieme queste cose, ho fatto una navigata sul web, e ho scoperto &lt;a href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt;.
Ho trovato anche un tema (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;welpo&#x2F;tabi&quot;&gt;tabi&lt;&#x2F;a&gt;) che mi è piaciuto subito, e quindi la decisione era già presa!&lt;&#x2F;p&gt;
&lt;p&gt;Nelle prossime puntate della serie ci addentreremo nelle singole problematiche che ho trovato e vedremo quali soluzioni (=software) ho deciso di implementare e perché.&lt;&#x2F;p&gt;
&lt;p&gt;Vi aspetto nelle prossime puntate!&lt;&#x2F;p&gt;
</description>
      </item>
    </channel>
</rss>
