<?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>Linux &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/category/linux/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>Tue, 04 Aug 2026 16:34:18 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=76674</generator>
	<item>
		<title>Firefox: quale scheda sta usando più RAM?</title>
		<link>https://blog.smsoft.it/2026/06/02/firefox-quale-scheda-sta-usando-piu-ram/</link>
					<comments>https://blog.smsoft.it/2026/06/02/firefox-quale-scheda-sta-usando-piu-ram/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 02 Jun 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[ram]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=7062</guid>

					<description><![CDATA[Ho l&#8217;abitudine di tenere aperte molte schede su firefox, però a lungo andare possono arrivare ad utilizzare una grande quantità di RAM. Ho visto infatti da &#8220;Monitoraggio attività&#8221; di MacOS che c&#8217;erano delle schede che richiedevano oltre 3GB di RAM, ma quali sono? Basta aprire una nuova scheda di Firefox e digitare nella barra degli ... <a title="Firefox: quale scheda sta usando più RAM?" class="read-more" href="https://blog.smsoft.it/2026/06/02/firefox-quale-scheda-sta-usando-piu-ram/" aria-label="Per saperne di più su Firefox: quale scheda sta usando più RAM?">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ho l&#8217;abitudine di tenere aperte molte schede su firefox, però a lungo andare possono arrivare ad utilizzare una grande quantità di RAM. Ho visto infatti da &#8220;Monitoraggio attività&#8221; di MacOS che c&#8217;erano delle schede che richiedevano oltre 3GB di RAM, ma quali sono?</p>



<p class="wp-block-paragraph">Basta aprire una nuova scheda di Firefox e digitare nella barra degli indirizzi:</p>



<pre class="wp-block-code"><code>about:processes</code></pre>



<p class="wp-block-paragraph">Questo mostrerà un elenco di tutte le finestre con il titolo e la RAM usata e, oltretutto, la possibilità di scaricare direttamente la scheda per liberare RAM.</p>



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



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/06/02/firefox-quale-scheda-sta-usando-piu-ram/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installare una differente versione di python con UV: il gestore di pacchetti che sta conquistando gli sviluppatori</title>
		<link>https://blog.smsoft.it/2026/05/26/uv-installare-una-differente-versione-di-python/</link>
					<comments>https://blog.smsoft.it/2026/05/26/uv-installare-una-differente-versione-di-python/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 26 May 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[uv]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=7056</guid>

					<description><![CDATA[Negli ultimi mesi UV è diventato uno degli strumenti più interessanti dell&#8217;ecosistema Python. Sviluppato in Rust, nasce con l&#8217;obiettivo di sostituire gran parte degli strumenti tradizionali come pip, virtualenv e pip-tools, offrendo prestazioni decisamente superiori e un&#8217;esperienza d&#8217;uso più semplice. Uno dei principali punti di forza di UV è la velocità: l&#8217;installazione delle dipendenze e ... <a title="Installare una differente versione di python con UV: il gestore di pacchetti che sta conquistando gli sviluppatori" class="read-more" href="https://blog.smsoft.it/2026/05/26/uv-installare-una-differente-versione-di-python/" aria-label="Per saperne di più su Installare una differente versione di python con UV: il gestore di pacchetti che sta conquistando gli sviluppatori">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Negli ultimi mesi <strong>UV</strong> è diventato uno degli strumenti più interessanti dell&#8217;ecosistema Python. Sviluppato in Rust, nasce con l&#8217;obiettivo di sostituire gran parte degli strumenti tradizionali come <code>pip</code>, <code>virtualenv</code> e <code>pip-tools</code>, offrendo prestazioni decisamente superiori e un&#8217;esperienza d&#8217;uso più semplice.</p>



<p class="wp-block-paragraph">Uno dei principali punti di forza di UV è la <strong>velocità</strong>: l&#8217;installazione delle dipendenze e la creazione degli ambienti virtuali richiedono spesso solo pochi secondi, anche per progetti di grandi dimensioni. Questo è possibile grazie all&#8217;implementazione in Rust e a un sistema di caching molto efficiente.</p>



<p class="wp-block-paragraph">Oltre alla rapidità, UV mette a disposizione un unico comando per gestire l&#8217;intero ciclo di vita di un progetto Python: creazione dell&#8217;ambiente virtuale, installazione delle librerie, sincronizzazione delle dipendenze e gestione del file di lock. Il risultato è un workflow più ordinato e facilmente riproducibile sia in sviluppo sia in produzione.</p>



<p class="wp-block-paragraph">L&#8217;adozione di UV è in costante crescita anche grazie alla sua compatibilità con gli standard moderni dell&#8217;ecosistema Python, come il file <code>pyproject.toml</code>. Questo permette di integrarlo facilmente in progetti esistenti senza dover modificare radicalmente la struttura del codice.</p>



<p class="wp-block-paragraph">Per chi sviluppa applicazioni Python, prova nuove librerie o gestisce pipeline di Continuous Integration, UV rappresenta oggi una valida alternativa agli strumenti tradizionali, capace di ridurre i tempi di lavoro e semplificare la gestione delle dipendenze.</p>



<p class="wp-block-paragraph">Per installare UV possiamo digitare:</p>



<pre class="wp-block-code"><code>curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env</code></pre>



<p class="wp-block-paragraph">Per installare l&#8217;ultima versione di python digitiamo:</p>



<pre class="wp-block-code"><code>uv python install</code></pre>



<p class="wp-block-paragraph">una versione specifica di python, ad esempio la 3.13, digitiamo:</p>



<pre class="wp-block-code"><code>uv venv --python 3.13</code></pre>



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



<p class="wp-block-paragraph">A questo punto, per integrarlo in un progetto esistente possiamo digitare:</p>



<pre class="wp-block-code"><code>uv init
uv add -r requirements.txt
uv run main.py</code></pre>



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



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/05/26/uv-installare-una-differente-versione-di-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Docker compose: come passare il proxy nel Dockerfile</title>
		<link>https://blog.smsoft.it/2026/05/19/docker-compose-come-passare-il-proxy-nel-dockerfile/</link>
					<comments>https://blog.smsoft.it/2026/05/19/docker-compose-come-passare-il-proxy-nel-dockerfile/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 19 May 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[docker compose]]></category>
		<category><![CDATA[Dockerfile]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=7042</guid>

					<description><![CDATA[Per per utilizzare un proxy all&#8217;interno della procedura di build prevista nel Dockerfile impostato dal compose.yaml è necessario effettuare sia una modifica al compose.yaml che al Dockerfile. Nel mio esempio il proxy è attivo sulla macchina host, pertanto lo si può &#8220;puntare&#8221; con il nome host.docker.internal avendo l&#8217;accortezza di aggiungere, come vedremo in avanti, nel ... <a title="Docker compose: come passare il proxy nel Dockerfile" class="read-more" href="https://blog.smsoft.it/2026/05/19/docker-compose-come-passare-il-proxy-nel-dockerfile/" aria-label="Per saperne di più su Docker compose: come passare il proxy nel Dockerfile">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Per per utilizzare un proxy all&#8217;interno della procedura di build prevista nel <strong>Dockerfile</strong> impostato dal <strong>compose.yaml </strong>è necessario effettuare sia una modifica al compose.yaml che al Dockerfile. </p>



<p class="wp-block-paragraph">Nel mio esempio il proxy è attivo sulla macchina <strong>host</strong>, pertanto lo si può &#8220;puntare&#8221; con il nome <strong>host.docker.internal</strong> avendo l&#8217;accortezza di aggiungere, come vedremo in avanti, nel file <strong>compose.yaml</strong>:</p>



<pre class="wp-block-code"><code>      extra_hosts:
        - "host.docker.internal:host-gateway"</code></pre>



<p class="wp-block-paragraph">Ipotizziamo che il <strong>Dockerfile</strong> contenga qualcosa di questo tipo:</p>



<pre class="wp-block-code"><code># Stage 1: Dipendenze
FROM node:20-alpine AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app</code></pre>



<p class="wp-block-paragraph">dobbiamo aggiungere le necessarie variabili facendolo diventare:</p>



<pre class="wp-block-code"><code># Stage 1: Dipendenze
FROM node:20-alpine AS deps
ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG NO_PROXY

ENV HTTP_PROXY=${HTTP_PROXY}
ENV HTTPS_PROXY=${HTTPS_PROXY}
ENV NO_PROXY=${NO_PROXY}

RUN apk add --no-cache libc6-compat
WORKDIR /app</code></pre>



<p class="wp-block-paragraph">ora passiamo a modificare il <strong>compose.yaml</strong> che da:</p>



<pre class="wp-block-code"><code>services:
  app:
    image: gest:latest
    build:
      context: .
      dockerfile: Dockerfile
      args:
        BUILD_GIT_SHA: ${BUILD_GIT_SHA:-unknown}
        BUILD_DATE: ${BUILD_DATE:-unknown}
    container_name: app-club
    restart: unless-stopped</code></pre>



<p class="wp-block-paragraph">dovrà diventare:</p>



<pre class="wp-block-code"><code>services:
  app:
    image: gest:latest
    build:
      context: .
      dockerfile: Dockerfile
      args:
        BUILD_GIT_SHA: ${BUILD_GIT_SHA:-unknown}
        BUILD_DATE: ${BUILD_DATE:-unknown}
        HTTP_PROXY: http://host.docker.internal:8888
        HTTPS_PROXY: http://host.docker.internal:8888
        NO_PROXY: 127.0.0.1,localhost
      extra_hosts:
        - "host.docker.internal:host-gateway"
    container_name: app-club
    restart: unless-stopped</code></pre>



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



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/05/19/docker-compose-come-passare-il-proxy-nel-dockerfile/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian 13: Installare GitLab Runner</title>
		<link>https://blog.smsoft.it/2026/05/12/debian-13-installare-gitlab-runner/</link>
					<comments>https://blog.smsoft.it/2026/05/12/debian-13-installare-gitlab-runner/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 12 May 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitlab]]></category>
		<category><![CDATA[gitlab runner]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=7038</guid>

					<description><![CDATA[GitLab runner consente di avviare runner che possono Per l&#8217;isntallazione bastano pochi comandi: Poi accediamo all&#8217;interfaccia web di GitLab, andiamo nel progetto che ci interessa, poi &#8220;Settings&#8221; e &#8220;CI/CD&#8220;. Qui apriamo la sezione &#8220;Runners&#8221; e clicchiamo sul pulsante &#8220;Create project runner&#8220;. La procedura mostrerà un comando da scrivere nel terminale per agganciare il runner del ... <a title="Debian 13: Installare GitLab Runner" class="read-more" href="https://blog.smsoft.it/2026/05/12/debian-13-installare-gitlab-runner/" aria-label="Per saperne di più su Debian 13: Installare GitLab Runner">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">GitLab runner consente di avviare runner che possono</p>



<p class="wp-block-paragraph">Per l&#8217;isntallazione bastano pochi comandi:</p>



<pre class="wp-block-code"><code>curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | bash
apt-get install -y gitlab-runner
</code></pre>



<p class="wp-block-paragraph">Poi accediamo all&#8217;interfaccia web di <strong>GitLab</strong>, andiamo nel progetto che ci interessa, poi &#8220;<strong>Settings</strong>&#8221; e &#8220;<strong>CI/CD</strong>&#8220;. Qui apriamo la sezione &#8220;<strong>Runners</strong>&#8221; e clicchiamo sul pulsante &#8220;<strong>Create project runner</strong>&#8220;. La procedura mostrerà un comando da scrivere nel terminale per agganciare il runner del progetto, in particolare c&#8217;è una chiave che serve per abilitare il runner. Recuperiamo la chiave e poi digitiamo:</p>



<pre class="wp-block-code"><code>sudo gitlab-runner register \
  --non-interactive \
  --url "SITE_URL" \
  --token "RUNNER_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --docker-pull-policy "if-not-present" \
  --description "docker-runner"</code></pre>



<p class="wp-block-paragraph">sostituendo <strong>SITE_URL</strong> con l&#8217;url del sito dove avete installato <strong>GitLab</strong> e <strong>RUNNER_TOKEN</strong> con il token recuperato nella procedura &#8220;<strong>Create project runner</strong>&#8221; avviata prima.</p>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/05/12/debian-13-installare-gitlab-runner/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debian 13: Installare docker e docker compose</title>
		<link>https://blog.smsoft.it/2026/05/05/debian-13-installare-docker-e-docker-compose/</link>
					<comments>https://blog.smsoft.it/2026/05/05/debian-13-installare-docker-e-docker-compose/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 05 May 2026 08:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[docker-compose]]></category>
		<category><![CDATA[portainer.io]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=7034</guid>

					<description><![CDATA[Vediamo come procedere all&#8217;installazione veloce di docker e docker compose su debian 13 Trixie ma funziona anche con Debian 12 e Debian 11. Partiamo con docker: Rimuoviamo eventuali pacchetti installati prima: Installiamo la chiave GPG Aggiungiamo il repository ad APT: Effettuiamo l&#8217;installazione vera e propria dell&#8217;ultima versione disponibile: Nota: per installare una versione specifica, al ... <a title="Debian 13: Installare docker e docker compose" class="read-more" href="https://blog.smsoft.it/2026/05/05/debian-13-installare-docker-e-docker-compose/" aria-label="Per saperne di più su Debian 13: Installare docker e docker compose">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Vediamo come procedere all&#8217;installazione veloce di <strong>docker</strong> e <strong>docker compose</strong> su <strong>debian 13 Trixie</strong> ma funziona anche con Debian 12 e Debian 11. </p>



<p class="wp-block-paragraph">Partiamo con <strong>docker</strong>:</p>



<pre class="wp-block-code"><code>apt-get update
apt-get install apt-transport-https ca-certificates curl gnupg lsb-release</code></pre>



<p class="wp-block-paragraph">Rimuoviamo eventuali pacchetti installati prima:</p>



<pre class="wp-block-code"><code>apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)</code></pre>



<p class="wp-block-paragraph">Installiamo la chiave GPG</p>



<pre class="wp-block-code"><code>curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc</code></pre>



<p class="wp-block-paragraph">Aggiungiamo il repository ad APT:</p>



<pre class="wp-block-code"><code>tee /etc/apt/sources.list.d/docker.sources &lt;&lt;EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release &amp;&amp; echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF</code></pre>



<p class="wp-block-paragraph">Effettuiamo l&#8217;installazione vera e propria dell&#8217;ultima versione disponibile:</p>



<pre class="wp-block-code"><code>apt-get update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin</code></pre>



<p class="wp-block-paragraph"><strong>Nota</strong>: per installare una <strong>versione</strong> specifica, <strong>al posto dell&#8217;ultimo</strong> comando, facciamo:</p>



<pre class="wp-block-code"><code>apt list --all-versions docker-ce

VERSION_STRING=5:29.6.1-1~debian.12~bookworm
apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin</code></pre>



<p class="wp-block-paragraph">Ora verifichiamo se tutto è andato a buon fine:</p>



<pre class="wp-block-code"><code>systemctl status docker
systemctl start docker</code></pre>



<p class="wp-block-paragraph">e proviamo ad avviare un&#8217;immagine di esempio</p>



<pre class="wp-block-code"><code>docker run hello-world</code></pre>



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



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



<p class="wp-block-paragraph"><strong>Nota</strong>: per disinstallare docker:</p>



<pre class="wp-block-code"><code>apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
rm -rf /var/lib/docker
rm -rf /var/lib/containerd</code></pre>



<p class="wp-block-paragraph">e rimuoviamo anche il riferimento al repository ed alla firma:</p>



<pre class="wp-block-code"><code>rm /etc/apt/sources.list.d/docker.sources
rm /etc/apt/keyrings/docker.asc</code></pre>



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



<p class="wp-block-paragraph">Infine, se vi interessa un sistema visuale per la gestione delle istanze docker, posso consigliarvi <a rel="noreferrer noopener" href="https://www.portainer.io/" target="_blank">portainer</a> che potete recuperare da <a rel="noreferrer noopener" href="https://github.com/portainer/portainer" target="_blank">github</a>. Per l&#8217;installazione di default:</p>



<pre class="wp-block-code"><code>docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest</code></pre>



<p class="wp-block-paragraph">Nota: se la macchina in questione è dietro un proxy, potreste ricevere il seguente errore:</p>



<pre class="wp-block-code"><code>docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).</code></pre>



<p class="wp-block-paragraph">Questo sicuramente è legato al fatto che docker non riesce ad utilizzare il proxy. Su Debian consiglio quanto segue:</p>



<pre class="wp-block-code"><code>mkdir /etc/systemd/system/docker.service.d</code></pre>



<p class="wp-block-paragraph">editare il file <strong>/etc/systemd/system/docker.service.d/http-proxy.conf</strong> ed inserire i parametri del proxy, es:</p>



<pre class="wp-block-code"><code>&#91;Service]
Environment="HTTP_PROXY=http://proxyHost:proxyPort"
Environment="HTTPS_PROXY=http://proxyHost:proxyPort"
Environment="NO_PROXY=localhost,127.0.0.1"</code></pre>



<p class="wp-block-paragraph">Ricaricare l&#8217;unità di systemd:</p>



<pre class="wp-block-code"><code>systemctl daemon-reload</code></pre>



<p class="wp-block-paragraph">Verificare che le impostazioni siano state correttamente lette:</p>



<pre class="wp-block-code"><code>systemctl show --property Environment docker</code></pre>



<p class="wp-block-paragraph">riavviare il servizio docker, eseguire entrambe i comandi:</p>



<pre class="wp-block-code"><code>systemctl restart docker
<meta http-equiv="content-type" content="text/html; charset=utf-8">service docker restart</code></pre>



<p class="wp-block-paragraph">E poi ripetere l&#8217;installazione di portainer, passando anche qui il proxy:</p>



<pre class="wp-block-code"><code>docker run -d -p 8000:8000 -p 9443:9443 -e "HTTPS_PROXY=http://proxyHost:proxyPort" --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest</code></pre>



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



<h2 class="wp-block-heading"><em><strong>Voglio ricordare che è possibile passare il proxy su docker in altri due modi:</strong></em></h2>



<p class="wp-block-paragraph">Inserire nel file <strong><code>/etc/default/docker</code></strong> le informazioni del proxy, come segue:</p>



<pre class="wp-block-code"><code>export http_proxy='http://proxyHost:proxyPort'
export https_proxy='http://proxyHost:proxyPort'
export no_proxy=localhost,127.0.0.1</code></pre>



<p class="wp-block-paragraph">oppure creare il file <strong><code>~/.docker/config.json</code></strong> ed inserire quanto segue:</p>



<pre class="wp-block-code"><code>{
"proxies": {
      "defaults": {
        "httpProxy":"http://proxyHost:proxyPort",
        "httpsProxy":"http://proxyHost:proxyPort",
        "noProxy":"localhost,127.0.0.1"
      }
    }
}</code></pre>



<p class="wp-block-paragraph">In ogni caso, ricordatevi di riavviare il servizio con:</p>



<pre class="wp-block-code"><code>service docker restart</code></pre>



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



<p class="wp-block-paragraph">Per verificare le impostazioni passate alle macchine guest, basterà eseguire questo comando:</p>



<pre class="wp-block-code"><code>docker container run --rm busybox env</code></pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2026/05/05/debian-13-installare-docker-e-docker-compose/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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>
	</channel>
</rss>
