<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.smsoft.it</link>
	<description>consigli settimanali su MacOS, GNU/Linux ed Open Source</description>
	<lastBuildDate>Wed, 24 Jun 2026 11:03:22 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=77077</generator>
	<item>
		<title>mysqltuner su Debian 13 con MariaDB</title>
		<link>https://blog.smsoft.it/2026/04/14/mysqltuner-su-debian-13-con-mariadb/</link>
					<comments>https://blog.smsoft.it/2026/04/14/mysqltuner-su-debian-13-con-mariadb/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 14 Apr 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[mysqltuner]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=7004</guid>

					<description><![CDATA[La versione di mysqltuner disponibile su Debian 13 non è completamente compatibile con MariaDB e restituisce una serie di errori. Consiglio quindi di non installare la versione di mysqltuner presente nel repository ufficiale, ma piuttosto: enjoy!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">La versione di mysqltuner disponibile su Debian 13 non è completamente compatibile con MariaDB e restituisce una serie di errori.</p>



<p class="wp-block-paragraph">Consiglio quindi di non installare la versione di mysqltuner presente nel repository ufficiale, ma piuttosto:</p>



<pre class="wp-block-code"><code>wget -O /usr/local/bin/mysqltuner https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
chmod +x /usr/local/bin/mysqltuner</code></pre>



<p class="wp-block-paragraph">enjoy!</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/04/14/mysqltuner-su-debian-13-con-mariadb/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>rclone: un valido aiuto per storage S3</title>
		<link>https://blog.smsoft.it/2026/04/07/rclone-un-valido-aiuto-per-storage-s3/</link>
					<comments>https://blog.smsoft.it/2026/04/07/rclone-un-valido-aiuto-per-storage-s3/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 07 Apr 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[rclone]]></category>
		<category><![CDATA[S3]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6996</guid>

					<description><![CDATA[Rclone (&#8220;rsync for cloud storage&#8221;) è un programma CLI per sincronizzare file e cartelle da/verso provider cloud storage. L&#8217;installazione è molto semplice: Oppure in modo specifico per MacOS: alla prima esecuzione bisogna configurare i dati di connessione: Questi gli step durante la configurazione (che poi viene scritta nel file ~/.config/rclone/rclone.conf): Dopo aver configurato la connessione, ... <a title="rclone: un valido aiuto per storage S3" class="read-more" href="https://blog.smsoft.it/2026/04/07/rclone-un-valido-aiuto-per-storage-s3/" aria-label="Per saperne di più su rclone: un valido aiuto per storage S3">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Rclone <em>(&#8220;rsync for cloud storage&#8221;)</em> è un programma CLI per sincronizzare file e cartelle da/verso provider cloud storage.</p>



<p class="wp-block-paragraph">L&#8217;installazione è molto semplice:</p>



<pre class="wp-block-code"><code>sudo -v ; curl https://rclone.org/install.sh | sudo bash</code></pre>



<p class="wp-block-paragraph">Oppure in modo specifico per MacOS:</p>



<pre class="wp-block-code"><code>brew install rclone</code></pre>



<p class="wp-block-paragraph">alla prima esecuzione bisogna configurare i dati di connessione:</p>



<pre class="wp-block-code"><code>rclone config</code></pre>



<p class="wp-block-paragraph">Questi gli step durante la configurazione (che poi viene scritta nel file <strong>~/.config/rclone/rclone.conf</strong>):</p>



<ul class="wp-block-list">
<li>Premi n per n) New remote.</li>



<li>Inserisci un nome, es eu2.</li>



<li>Inserisci 5 per Amazon S3 Compatibile oppure 4 per Ceph Object Storage.</li>



<li>Inserisci 1 per impostare le credenziali AWS o compatibili nel successivo step.</li>



<li>Inserisci access_key per access_key_id.</li>



<li>Inserisci secret_key, per secret_access_key.</li>



<li>Premi invio per saltare la regione</li>



<li>Inserisci l&#8217;endpoint url S3, es https://eu2.storage.ext.</li>



<li>Premi invio per saltare la location_constraint.</li>



<li>Premi invio per saltare le acl.</li>



<li>Premi invio per saltare server_side_encryption.</li>



<li>Premi invio per saltare  sse_kms_key_id.</li>



<li>Inserisci n per Modificare la configurazione avanzata.</li>



<li>Inserisci y per confermare.</li>



<li>Premi q per uscire dalla configurazione.</li>
</ul>



<p class="wp-block-paragraph">Dopo aver configurato la connessione, vediamo i principali comandi. Ipotizziamo che il nostro server si chiami <strong>eu2</strong>.</p>



<h5 class="wp-block-heading">elenco file nel bucket test su server eu2:</h5>



<pre class="wp-block-code"><code>rclone ls eu2:test/</code></pre>



<h5 class="wp-block-heading">elenco file, con dettagli, nel bucket test su server eu2:</h5>



<pre class="wp-block-code"><code>rclone lsl eu2:test/</code></pre>



<h5 class="wp-block-heading">copio ker.txt dal bucket test dal server eu2 sul disco locale:</h5>



<pre class="wp-block-code"><code>rclone copy eu2:test/ker.txt .</code></pre>



<h5 class="wp-block-heading">sync da /backup/ (source) verso server eu2 sul bucket cpanel(dest):</h5>



<pre class="wp-block-code"><code>rclone sync -P /backup/ eu2:cpanel/ --s3-no-head</code></pre>



<h5 class="wp-block-heading">creo la cartella pluto:</h5>



<pre class="wp-block-code"><code>rclone mkdir eu2:test/pluto</code></pre>



<h5 class="wp-block-heading">sposto pippo.txt nella cartella pluto:</h5>



<pre class="wp-block-code"><code>rclone move eu2:test/pippo.txt ue2:test/pluto/</code></pre>



<h5 class="wp-block-heading">cancello la cartella pluto ed il realtivo contenuto, tipo rm -fr:</h5>



<pre class="wp-block-code"><code>rclone purge eu2:test/pluto</code></pre>



<h5 class="wp-block-heading">cancello il file pippo.txt:</h5>



<pre class="wp-block-code"><code>rclone delete eu2:test/pluto/pippo.txt</code></pre>



<h5 class="wp-block-heading">montare la cartella remota pluto in locale:</h5>



<pre class="wp-block-preformatted">rclone mount eu2:pluto /mnt --vfs-cache-mode full --vfs-fast-fingerprint --no-modtime</pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/04/07/rclone-un-valido-aiuto-per-storage-s3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>cpanel: personalizzare regole nginx  per cliente</title>
		<link>https://blog.smsoft.it/2026/03/31/cpanel-personalizzare-regole-nginx-per-cliente/</link>
					<comments>https://blog.smsoft.it/2026/03/31/cpanel-personalizzare-regole-nginx-per-cliente/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 31 Mar 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6991</guid>

					<description><![CDATA[Ho riscontrato oggi un&#8217;importante scansione verso un sito attivo su WHM/cPanel, nei log di nginx vedevo qualcosa tipo: Si tratta sicuramente di uno scanner/bot che prova URL generati automaticamente e che non esistono nel sito. Come anticipato, il sito è attivo su WHM/cPanel ed ha nginx come reverse proxy (EA4 + nginx). La soluzione più ... <a title="cpanel: personalizzare regole nginx  per cliente" class="read-more" href="https://blog.smsoft.it/2026/03/31/cpanel-personalizzare-regole-nginx-per-cliente/" aria-label="Per saperne di più su cpanel: personalizzare regole nginx  per cliente">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ho riscontrato oggi un&#8217;importante scansione verso un sito attivo su WHM/cPanel, nei log di nginx vedevo qualcosa tipo:</p>



<pre class="wp-block-code"><code>102.219.170.XXX - - &#91;30/Mar/2026:19:45:13 +0200] "GET /16/page/15/?lang=ko HTTP/1.1" 404 154085 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
103.189.194.XXX- - &#91;30/Mar/2026:19:45:13 +0200] "GET /35/page/42/?lang=ko HTTP/1.1" 404 154085 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
200.8.173.XXX - - &#91;30/Mar/2026:19:45:14 +0200] "GET /21/page/23/?lang=ko HTTP/1.1" 404 154085 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
</code></pre>



<p class="wp-block-paragraph">Si tratta sicuramente di uno scanner/bot che prova URL generati automaticamente e che non esistono nel sito. Come anticipato, il sito è attivo su WHM/cPanel ed ha <strong>nginx</strong> come <strong>reverse proxy</strong> (<strong>EA4 + nginx</strong>). </p>



<p class="wp-block-paragraph">La soluzione più efficace in questo caso è creare una regola di <strong>nginx</strong> che blocchi le richieste prima ancora di essere passate ad apache. </p>



<p class="wp-block-paragraph">Il file con le regole di nginx va posizionato in <strong>/etc/nginx/conf.d/users/[USERNAME]/</strong> e chiamato con un suffisso <strong>.conf</strong>. In questo caso specifico possiamo scrivere nel file:</p>



<pre class="wp-block-code"><code>location ~ ^/&#91;0-9]+/page/ {<br>access_log off;<br>return 444;<br>}</code></pre>



<p class="wp-block-paragraph">e poi riavviare nginx. Questo fa si che le richieste vengano direttamente chiuse senza risposta, senza scrivere log e senza avviare PHP.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/03/31/cpanel-personalizzare-regole-nginx-per-cliente/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian 13: installare composer per PHP</title>
		<link>https://blog.smsoft.it/2026/03/24/debian-13-installare-composer-per-php/</link>
					<comments>https://blog.smsoft.it/2026/03/24/debian-13-installare-composer-per-php/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 24 Mar 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[composer]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6987</guid>

					<description><![CDATA[Compositor è il gestore di dipendenze alla base di molti framework e librerie PHP, ma è altrettanto utile per piccoli script e strumenti interni. I progetti PHP possono diventare rapidamente caotici quando ogni macchina scarica un set di dipendenze diverso. Composer aiuta a mantenere ordinate le librerie per i progetti PHP. Su Debian è possibile ... <a title="Debian 13: installare composer per PHP" class="read-more" href="https://blog.smsoft.it/2026/03/24/debian-13-installare-composer-per-php/" aria-label="Per saperne di più su Debian 13: installare composer per PHP">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Compositor è il gestore di dipendenze alla base di molti framework e librerie PHP, ma è altrettanto utile per piccoli script e strumenti interni.</p>



<p class="wp-block-paragraph">I progetti PHP possono diventare rapidamente caotici quando ogni macchina scarica un set di dipendenze diverso. Composer aiuta a mantenere ordinate le librerie per i progetti PHP. Su Debian è possibile installarlo dai repository predefiniti o tramite il programma di installazione ufficiale.</p>



<p class="wp-block-paragraph">Debian 13, 12 e 11 includono una versione meno recente di Composer nei repository predefiniti, mentre il programma di installazione ufficiale offre la versione più recente.</p>



<p class="wp-block-paragraph">Attualmente sulla versione Debian 13 troviamo composer 2.8.x, sulla versione Debian 12 troviamo composer 2.5.x e sulla versione Debian 11 troviamo composer 2.0.x. Nel repository ufficiale la versione disponibile al momento è la 2.9.x.</p>



<h4 class="wp-block-heading">Installare composer dal repository debian ufficiale</h4>



<p class="wp-block-paragraph">Questa è la modalità migliore se non si necessita dell&#8217;ultima versione di composer, perché l&#8217;aggiornamento dei pacchetti viene gestito automaticamente con il resto del S.O.</p>



<p class="wp-block-paragraph">Possiamo installare composer con i seguenti comandi:</p>



<pre class="wp-block-code"><code>apt update
apt install php-cli php-curl ca-certificates unzip curl git -y
apt install composer -y</code></pre>



<p class="wp-block-paragraph"></p>



<h4 class="wp-block-heading">Installare composer dal sito ufficiale</h4>



<p class="wp-block-paragraph">Se invece si ha bisogno dell&#8217;ultima versione rilasciata, allora possiamo procedere come segue:</p>



<pre class="wp-block-code"><code>curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/03/24/debian-13-installare-composer-per-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Linux: modifica fusorario &#8211; timezone</title>
		<link>https://blog.smsoft.it/2026/03/17/linux-modifica-fusorario-timezone/</link>
					<comments>https://blog.smsoft.it/2026/03/17/linux-modifica-fusorario-timezone/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 17 Mar 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[timezone]]></category>
		<category><![CDATA[tzdata]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6985</guid>

					<description><![CDATA[Su un nuovo VPS appena attivato potreste trovarvi con un timezone non agganciato a quello dell&#8217;Italia e quindi vedere un&#8217;orario differente. Lascio per scontato che l&#8217;orario sia automaticamente sincronizzato e che il problema sia solo nel fusorario. In questo caso basterà digitare: e cambiare il fusorario da utilizzare. enjoy!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Su un nuovo VPS appena attivato potreste trovarvi con un timezone non agganciato a quello dell&#8217;Italia e quindi vedere un&#8217;orario differente. Lascio per scontato che l&#8217;orario sia automaticamente sincronizzato e che il problema sia solo nel fusorario.</p>



<p class="wp-block-paragraph">In questo caso basterà digitare:</p>



<pre class="wp-block-code"><code><code>dpkg-reconfigure tzdata</code></code></pre>



<p class="wp-block-paragraph">e cambiare il fusorario da utilizzare.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/03/17/linux-modifica-fusorario-timezone/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Linux: Quale servizio occupa una porta?</title>
		<link>https://blog.smsoft.it/2026/03/10/linux-quale-processo-occupa-una-porta/</link>
					<comments>https://blog.smsoft.it/2026/03/10/linux-quale-processo-occupa-una-porta/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 10 Mar 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[lsof]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[processo]]></category>
		<category><![CDATA[ss]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6981</guid>

					<description><![CDATA[Può capitare a volte di non ricordare quale servizio sta rispondendo su una porta. Ci sono un paio di comandi che possiamo usare e che ci possono aiutare. 1 &#8211; ss 2 &#8211; lsof enjoy!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Può capitare a volte di non ricordare quale servizio sta rispondendo su una porta. Ci sono un paio di comandi che possiamo usare e che ci possono aiutare.</p>



<h4 class="wp-block-heading">1 &#8211; ss</h4>



<pre class="wp-block-code"><code><code>ss -tulnp | grep :PORTA</code></code></pre>



<h4 class="wp-block-heading">2 &#8211; lsof</h4>



<pre class="wp-block-code"><code><code>lsof -i :PORTA</code></code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/03/10/linux-quale-processo-occupa-una-porta/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian 13: come configurare al meglio Let’s Encrypt per avere un certificato HTTPS</title>
		<link>https://blog.smsoft.it/2026/03/03/debian-13-come-configurare-al-meglio-lets-encrypt/</link>
					<comments>https://blog.smsoft.it/2026/03/03/debian-13-come-configurare-al-meglio-lets-encrypt/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 03 Mar 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[certbot]]></category>
		<category><![CDATA[Let’s Encrypt]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6974</guid>

					<description><![CDATA[Let&#8217;s Encrypt permette di generare un certificato HTTPS valido per rimuovere gli avvisi di sito &#8220;Non sicuro&#8221; del browser. Su debian viene utilizzato certbot insieme al plugin Apache python3-certbot-apache; Certbot modifica l&#8217;host virtuale di Apache, installa il certificato e configura il rinnovo automatico del certificato. Vediamo come procedere. Innanzitutto ci assicuriamo che il sistema sia ... <a title="Debian 13: come configurare al meglio Let’s Encrypt per avere un certificato HTTPS" class="read-more" href="https://blog.smsoft.it/2026/03/03/debian-13-come-configurare-al-meglio-lets-encrypt/" aria-label="Per saperne di più su Debian 13: come configurare al meglio Let’s Encrypt per avere un certificato HTTPS">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Let&#8217;s Encrypt</strong> permette di generare un certificato <strong>HTTPS</strong> valido per rimuovere gli avvisi di sito &#8220;Non sicuro&#8221; del browser. Su debian viene utilizzato <strong>certbot</strong> insieme al plugin Apache <strong>python3-certbot-apache;</strong> Certbot modifica l&#8217;host virtuale di Apache, installa il certificato e configura il rinnovo automatico del certificato. </p>



<p class="wp-block-paragraph">Vediamo come procedere. Innanzitutto ci assicuriamo che il sistema sia aggiornato:</p>



<pre class="wp-block-code"><code>apt update &amp;&amp; apt upgrade</code></pre>



<p class="wp-block-paragraph">Passiamo poi all&#8217;installazione dei pacchetti che servono:</p>



<pre class="wp-block-code"><code>apt install certbot python3-certbot-apache</code></pre>



<p class="wp-block-paragraph">Procediamo ora con l&#8217;emissione di un certificato. Innanzitutto bisogna assicurarsi che il sito sia raggiungibile sulla porta 80 e che anche la porta 443 sia aperta sul firewall, poi eseguiamo:</p>



<pre class="wp-block-code"><code>certbot --apache --agree-tos --non-interactive --no-eff-email --redirect --key-type ecdsa --email admin@example.com -d example.com</code></pre>



<p class="wp-block-paragraph">dove <strong>admin@example.com</strong> ed <strong>example.com </strong>saranno una email di riferimento ed il sito per cui generare il certificato.</p>



<p class="wp-block-paragraph">I vari flag significano:</p>



<pre class="wp-block-code"><code>--apache: Utilizza il plugin di installazione di Apache per modificare l'host virtuale corrispondente.
--agree-tos: Accetta il contratto di abbonamento di Let's Encrypt per questo account.
--non-interactive: Impedisce al comando di interrompersi in caso di richieste relative all'account o al programma di installazione.
--no-eff-email: Rifiuta la condivisione facoltativa dell'email con l'Electronic Frontier Foundation.
--redirect: Aggiunge un reindirizzamento permanente da HTTP a HTTPS nella configurazione di Apache.
--key-type ecdsa: Richiede una chiave di certificato ECDSA in modo che Debian 11, 12 e 13 utilizzino lo stesso tipo di chiave.
--email: Imposta l'indirizzo email dell'account Let's Encrypt per il rinnovo e le notifiche di sicurezza.</code></pre>



<p class="wp-block-paragraph">Se tutto è andato a buon fine possiamo procedere con la verifica del certificato:</p>



<pre class="wp-block-code"><code>certbot certificates</code></pre>



<p class="wp-block-paragraph">Se abbiamo più nomi a dominio su cui abilitare il certificato HTTPS, possiamo digitare:</p>



<pre class="wp-block-code"><code>certbot --apache --agree-tos --non-interactive --no-eff-email --redirect --key-type ecdsa --email admin@example.com -d example.com -d www.example.com -d blog.example.com</code></pre>



<p class="wp-block-paragraph">Se invece non abbiamo un elenco o vogliamo farci chiedere come gestire l&#8217;emissione del certificato, possiamo digitare semplicemente:</p>



<pre class="wp-block-code"><code>certbot --apache</code></pre>



<p class="wp-block-paragraph">a cui seguiranno una serie di domande, a partire dalla scelta dei domini per cui emettere i certificati.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">A questo punto resta solo da gestire il <strong>rinnovo automatico dei certificati</strong>. Possiamo digitare:</p>



<pre class="wp-block-code"><code>systemctl is-enabled certbot.timer<br>systemctl is-active certbot.timer</code></pre>



<p class="wp-block-paragraph">e se vogliamo fare un test di rinnovo senza effettivamente farlo, digitiamo:</p>



<pre class="wp-block-code"><code>certbot renew --dry-run</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Se vogliamo verificare che il certificato sia stato correttamente emesso e sia configurato correttamente, possiamo usare il servizio, es:</p>



<p class="wp-block-paragraph"><a href="https://www.ssllabs.com/ssltest/analyze.html?d=example.com" target="_blank" rel="noopener">https://www.ssllabs.com/ssltest/analyze.html?d=example.com</a></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Qualora sia necessario <strong>aggiungere un nuovo dominio al certificato</strong>, possiamo digitare:</p>



<pre class="wp-block-code"><code>certbot --apache</code></pre>



<p class="wp-block-paragraph">scegliere i nomi a dominio per cui generare il certificato e poi espandere (premendo il pulsante <strong>E</strong>) il certificato corrente.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/03/03/debian-13-come-configurare-al-meglio-lets-encrypt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Migrare un ambiente Python venv su una nuova macchina</title>
		<link>https://blog.smsoft.it/2026/02/24/migrare-un-ambiente-python-venv-su-una-nuova-macchina/</link>
					<comments>https://blog.smsoft.it/2026/02/24/migrare-un-ambiente-python-venv-su-una-nuova-macchina/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[pip]]></category>
		<category><![CDATA[requirements.txt]]></category>
		<category><![CDATA[venv]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6966</guid>

					<description><![CDATA[Python Venv è un modulo python che permette di attivare un ambiente python separato rispetto a quello di sistema. In questo modo possiamo installare una serie di librerie o fare delle configurazione ad-hoc che restano relative solo ad un progetto. Utile per fare dei test senza &#8220;sporcare&#8221; l&#8217;ambiente python di sistema oppure per gestire differenti ... <a title="Migrare un ambiente Python venv su una nuova macchina" class="read-more" href="https://blog.smsoft.it/2026/02/24/migrare-un-ambiente-python-venv-su-una-nuova-macchina/" aria-label="Per saperne di più su Migrare un ambiente Python venv su una nuova macchina">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Python Venv è un modulo python che permette di attivare un ambiente python separato rispetto a quello di sistema. In questo modo possiamo installare una serie di librerie o fare delle configurazione ad-hoc che restano relative solo ad un progetto. Utile per fare dei test senza &#8220;sporcare&#8221; l&#8217;ambiente python di sistema oppure per gestire differenti progetti con differenti librerie. Ci sono anche altri sistemi similari, ma venv è sicuramente tra i più diffusi.</p>



<p class="wp-block-paragraph">Partiamo intanto vedendo come si crea un ambiente venv:</p>



<pre class="wp-block-code"><code>python3 -m venv ambiente_venv</code></pre>



<p class="wp-block-paragraph">questo crea nella cartella chiamata <strong>ambiente_venv</strong> il nostro ambiente di sviluppo. All&#8217;interno di questa cartella vengono create una serie di altre cartelle (es bin, lib) con quello che ci occorre. Una volta creato l&#8217;ambiente bisogna attivarlo e questo si fa scrivendo:</p>



<pre class="wp-block-code"><code>cd ambiente_venv
source bin/activate</code></pre>



<p class="wp-block-paragraph">mentre per uscire basterà digitare:</p>



<pre class="wp-block-code"><code>deactivate</code></pre>



<p class="wp-block-paragraph">Nota: Ovviamente possiamo anche eseguire gli script python direttamente scrivendo <strong>bin/python3</strong> in modo da avviare automaticamente l&#8217;ambiene per lo script richiamato.</p>



<p class="wp-block-paragraph">A questo punto ipotizziamo di aver installato una serie di librerie e che sia necessario replicare questo ambiene su una seconda macchina. Sulla prima macchina scriviamo:</p>



<pre class="wp-block-code"><code>pip freeze > requirements.txt</code></pre>



<p class="wp-block-paragraph">se abbiamo prima attivato l&#8217;ambiente, oppure direttamente:</p>



<pre class="wp-block-code"><code>bin/pip freeze > requirements.txt</code></pre>



<p class="wp-block-paragraph">e questo creerà il classico file <strong>requirements.txt</strong> con l&#8217;elenco delle librerie installate. Ora creiamo l&#8217;ambiene venv nella seconda macchina con:</p>



<pre class="wp-block-code"><code>python3 -m venv ambiente_venv</code></pre>



<p class="wp-block-paragraph">poi copiamo il file <strong>requirements.txt</strong>  dalla prima alla seconda macchina, attiviamo l&#8217;ambiente venv:</p>



<pre class="wp-block-code"><code>cd ambiente_venv
source bin/activate</code></pre>



<p class="wp-block-paragraph">ed infine reinstalliamo tutte le librerie necessarie:</p>



<pre class="wp-block-code"><code>pip install -r requirements.txt</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/02/24/migrare-un-ambiente-python-venv-su-una-nuova-macchina/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MySQL: abilitare/disabilitare slow query senza riavviare</title>
		<link>https://blog.smsoft.it/2026/02/17/mysql-abilitare-disabilitare-slow-query-senza-riavviare/</link>
					<comments>https://blog.smsoft.it/2026/02/17/mysql-abilitare-disabilitare-slow-query-senza-riavviare/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 17 Feb 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6959</guid>

					<description><![CDATA[MySQL consente di variare una serie di parametri tramite query SQL, senza dover riavviare il servizio. Questo.è molto comodo perché evita periodi di downtime su ambienti che non possono permetterlo. Ad esempio, per abilitare le slow query e le query senza indice, possiamo accedere all&#8217;interfaccia CLI di MySQL e poi digitare: Al contrario, per disattivare: ... <a title="MySQL: abilitare/disabilitare slow query senza riavviare" class="read-more" href="https://blog.smsoft.it/2026/02/17/mysql-abilitare-disabilitare-slow-query-senza-riavviare/" aria-label="Per saperne di più su MySQL: abilitare/disabilitare slow query senza riavviare">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">MySQL consente di variare una serie di parametri tramite query SQL, senza dover riavviare il servizio. Questo.è molto comodo perché evita periodi di downtime su ambienti che non possono permetterlo.</p>



<p class="wp-block-paragraph">Ad esempio, per abilitare le slow query e le query senza indice, possiamo accedere all&#8217;interfaccia CLI di MySQL e poi digitare:</p>



<pre class="wp-block-code"><code>mysql> set global slow_query_log = 'ON';
mysql> set global log_queries_not_using_indexes = 'ON';</code></pre>



<p class="wp-block-paragraph">Al contrario, per disattivare:</p>



<pre class="wp-block-code"><code>mysql> set global slow_query_log = 'ON';
mysql> set global log_queries_not_using_indexes = 'ON';</code></pre>



<p class="wp-block-paragraph">Per controllare lo stato delle variabili, possiamo invece eseguire:</p>



<pre class="wp-block-code"><code>mysql> show variables like '%slow%';
mysql> show variables like 'long%';</code></pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/02/17/mysql-abilitare-disabilitare-slow-query-senza-riavviare/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian: la chiave gitlab su bookwork è scaduta</title>
		<link>https://blog.smsoft.it/2026/02/10/debian-la-chiave-gitlab-su-bookwork-e-scaduta/</link>
					<comments>https://blog.smsoft.it/2026/02/10/debian-la-chiave-gitlab-su-bookwork-e-scaduta/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 10 Feb 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6848</guid>

					<description><![CDATA[Se durante l&#8217;aggioramento (apt update &#38;&#38; apt upgrade) di debian 12 bookworm viene mostrato il seguente avviso: significa che la chiave GPG del repository GitLab è scaduta (EXPKEYSIG 3F01618A51312F3F) e va aggiornata/sostituita nel keyring usato da APT. Se hai configurato GitLab seguendo le istruzioni recenti (con file in /usr/share/keyrings/), per GitLab CE di solito il ... <a title="Debian: la chiave gitlab su bookwork è scaduta" class="read-more" href="https://blog.smsoft.it/2026/02/10/debian-la-chiave-gitlab-su-bookwork-e-scaduta/" aria-label="Per saperne di più su Debian: la chiave gitlab su bookwork è scaduta">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se durante l&#8217;aggioramento (<strong>apt update &amp;&amp; apt upgrade</strong>) di debian 12 bookworm viene  mostrato il seguente avviso:</p>



<pre class="wp-block-code"><code>Si è verificato un errore nel verificare la firma. Il repository non è aggiornato e verranno usati i file indice precedenti. Errore GPG: https://packages.gitlab.com/gitlab/gitlab-ce/debian bookworm InRelease: Le seguenti firme non erano valide: EXPKEYSIG 3F01618A51312F3F GitLab B.V. (package repository signing key) <a href="mailto:packages@gitlab.com">packages@gitlab.com</a></code></pre>



<p class="wp-block-paragraph">significa che la chiave GPG del repository GitLab è scaduta (EXPKEYSIG 3F01618A51312F3F) e va aggiornata/sostituita nel keyring usato da APT.</p>



<p class="wp-block-paragraph">Se hai configurato <strong>GitLab</strong> seguendo le istruzioni recenti (con file in <code><strong>/usr/share/keyrings/</strong></code>), per GitLab CE di solito il keyring è <code><strong>/usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg</strong></code></p>



<p class="wp-block-paragraph">Puoi aggiornare così la chiave:</p>



<pre class="wp-block-code"><code>wget -qO- https://packages.gitlab.com/gpg.key | \
gpg --no-default-keyring \
           --keyring /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg \
           --import</code></pre>



<p class="wp-block-paragraph">e questo mostrerà un avviso di conferma tipo questo:</p>



<pre class="wp-block-code"><code>gpg: Key 3F01618A51312F3F: "GitLab B.V. (package repository signing key) &lt;packages@gitlab.com&gt;" 2 new signatures
gpg: Total number of edited keys: 1
gpg: new signatures: 2</code></pre>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/02/10/debian-la-chiave-gitlab-su-bookwork-e-scaduta/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
