<?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>Debian &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/category/linux/debian/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=90021</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>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>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>
		<item>
		<title>Linux: more mostra lo schermo nero dopo la fine del file</title>
		<link>https://blog.smsoft.it/2026/01/27/linux-more-mostra-lo-schermo-nero-dopo-la-fine-del-file/</link>
					<comments>https://blog.smsoft.it/2026/01/27/linux-more-mostra-lo-schermo-nero-dopo-la-fine-del-file/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 27 Jan 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[black]]></category>
		<category><![CDATA[more]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6945</guid>

					<description><![CDATA[Su alcune distribuzioni Linux, ad esempio Debian 12, usando il comando more per vedere il contenuto di un file, c&#8217;è la fastidiosa anomalia che more non si chiude al termine del file ma continua a mostrare il terminale vuoto. Questo accade sicuramente sul pacchetto util-linux 2.38 ed è stato risolto nella versione util-linux 2.39, solo ... <a title="Linux: more mostra lo schermo nero dopo la fine del file" class="read-more" href="https://blog.smsoft.it/2026/01/27/linux-more-mostra-lo-schermo-nero-dopo-la-fine-del-file/" aria-label="Per saperne di più su Linux: more mostra lo schermo nero dopo la fine del file">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Su alcune distribuzioni Linux, ad esempio <strong>Debian 12</strong>, usando il comando <strong>more</strong> per vedere il contenuto di un file, c&#8217;è la fastidiosa anomalia che more non si chiude al termine del file ma continua a mostrare il terminale vuoto.</p>



<p class="wp-block-paragraph">Questo accade sicuramente sul pacchetto <strong>util-linux 2.38</strong> ed è stato risolto nella versione <strong>util-linux 2.39</strong>, solo che non tutte le distribuzioni aggiornano il pacchetto. Prima della versione <strong>2.38</strong>, l&#8217;uscita alla fine del file (EOF) era abilitata a meno che <code>more</code> non venisse eseguito in un terminale; nella versione <strong>2.38</strong>, l&#8217;uscita alla fine del file è stata disabilitata per impostazione predefinita per rendere <code><strong>more</strong></code> conforme alle specifiche POSIX. Come anticipato questa modifica è stata ripristinata nella versione <strong>2.39</strong> (ovvero l&#8217;uscita alla fine del file è ora abilitata a meno che non sia impostata la variabile d&#8217;ambiente POSIXLY_CORRECT).</p>



<p class="wp-block-paragraph">Fortunatamente esiste un&#8217;opzione che abilita l&#8217;uscita alla fine del file: <code>-e</code>. Quindi è possibile creare un alias per <code>more -e</code> per ripristinare il vecchio comportamento oppure definire una variabile d&#8217;ambiente <code>MORE</code> come segue:</p>



<pre class="wp-block-code"><code>export MORE=-e</code></pre>



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



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/01/27/linux-more-mostra-lo-schermo-nero-dopo-la-fine-del-file/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>fail2ban: bloccare i tentativi di accesso al wp-admin</title>
		<link>https://blog.smsoft.it/2026/01/20/fail2ban-bloccare-i-tentativi-di-accesso-al-wp-admin/</link>
					<comments>https://blog.smsoft.it/2026/01/20/fail2ban-bloccare-i-tentativi-di-accesso-al-wp-admin/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 20 Jan 2026 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Sicurezza]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[wp-admin]]></category>
		<category><![CDATA[wp-login.php]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6927</guid>

					<description><![CDATA[Oggi vediamo una semplice regola per fail2ban per bloccare i tentativi multipli di accesso a wordpress. Creiamo un nuovo file chiamato /etc/fail2ban/filter.d/wordpress.conf in cui scriviamo: Ora inseriamo nel file /etc/fail2ban/jail.d/defaults-debian.conf queste righe: (in questo esempio controllo se ci sono almeno 5 tentativi in 1800 secondi (30 minuti), blocco quindi per 3600 secondi (1 ora) riavviamo ... <a title="fail2ban: bloccare i tentativi di accesso al wp-admin" class="read-more" href="https://blog.smsoft.it/2026/01/20/fail2ban-bloccare-i-tentativi-di-accesso-al-wp-admin/" aria-label="Per saperne di più su fail2ban: bloccare i tentativi di accesso al wp-admin">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Oggi vediamo una semplice regola per <strong>fail2ban</strong> per bloccare i tentativi multipli di accesso a wordpress.</p>



<p class="wp-block-paragraph">Creiamo un nuovo file chiamato <code><strong>/etc/fail2ban/filter.d/wordpress.conf</strong></code> in cui scriviamo:</p>



<pre class="wp-block-code"><code>&#91;Definition]
failregex = ^&lt;HOST&gt; -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =</code></pre>



<p class="wp-block-paragraph">Ora inseriamo nel file <strong>/etc/fail2ban/jail.d/defaults-debian.conf</strong> queste righe:</p>



<pre class="wp-block-code"><code>&#91;wordpress]
enabled = true
port = http,https
logpath = %(apache_access_log)s
filter = wordpress
maxretry = 5
findtime = 1800
bantime = 3600</code></pre>



<p class="wp-block-paragraph">(in questo esempio controllo se ci sono almeno 5 tentativi in 1800 secondi (30 minuti), blocco quindi per 3600 secondi (1 ora) riavviamo fail2ban:</p>



<pre class="wp-block-code"><code>systemctl restart fail2ban.service</code></pre>



<p class="wp-block-paragraph">e dopo qualche minuto vediamo come la regola sta funzionando:</p>



<pre class="wp-block-code"><code>fail2ban-client status wordpress</code></pre>



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



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/01/20/fail2ban-bloccare-i-tentativi-di-accesso-al-wp-admin/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
