<?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>MacOS &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/category/macos/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=74200</generator>
	<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>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>scp: come copiare più file con wildcards</title>
		<link>https://blog.smsoft.it/2025/04/29/scp-come-copiare-piu-file-con-wildcards/</link>
					<comments>https://blog.smsoft.it/2025/04/29/scp-come-copiare-piu-file-con-wildcards/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 29 Apr 2025 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[wildcards]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6715</guid>

					<description><![CDATA[Con scp è possibile copiare file da/su un host remote tramite SSH. Mentre per copiare, ad esempio, tutti i file .txt da locale al server remoto basta: per fare la copia inversa, occorre inserire il carattere di escape \ prima del carattere *, ovvero: oppure, in alternativa, tutto il riferimento al server/path va racchiuso tra ... <a title="scp: come copiare più file con wildcards" class="read-more" href="https://blog.smsoft.it/2025/04/29/scp-come-copiare-piu-file-con-wildcards/" aria-label="Per saperne di più su scp: come copiare più file con wildcards">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Con scp è possibile copiare file da/su un host remote tramite SSH.</p>



<p class="wp-block-paragraph">Mentre per copiare, ad esempio, tutti i file <strong>.txt</strong> da locale al server remoto basta:</p>



<pre class="wp-block-code"><code>scp *.txt 10.10.10.10:~/</code></pre>



<p class="wp-block-paragraph">per fare la copia inversa, occorre inserire il carattere di escape <strong>\</strong> prima del carattere <strong>*</strong>, ovvero:</p>



<pre class="wp-block-code"><code>scp  10.10.10.10:~/\*.txt .</code></pre>



<p class="wp-block-paragraph">oppure, in alternativa, tutto il riferimento al server/path va racchiuso tra apici o virgolette, es:</p>



<pre class="wp-block-code"><code>scp  "10.10.10.10:~/*.txt" .</code></pre>



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



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



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/04/29/scp-come-copiare-piu-file-con-wildcards/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>lftp: come recuperare una sessione in background</title>
		<link>https://blog.smsoft.it/2025/04/22/lftp-come-recuperare-una-sessione-in-background/</link>
					<comments>https://blog.smsoft.it/2025/04/22/lftp-come-recuperare-una-sessione-in-background/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[attach]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[lftp]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6704</guid>

					<description><![CDATA[Se utilizzate lftp, sapete sicuramente che tra le tante caratteristiche c&#8217;è anche quella di poter avviare il download o l&#8217;upload di un intero sito con il comando mirror. Ad esempio, dopo aver fatto il login ed essersi posizionati nel giusto percorso, per copiare in locale tutto il contenuto remoto: o viceversa per copiare in remoto ... <a title="lftp: come recuperare una sessione in background" class="read-more" href="https://blog.smsoft.it/2025/04/22/lftp-come-recuperare-una-sessione-in-background/" aria-label="Per saperne di più su lftp: come recuperare una sessione in background">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se utilizzate lftp, sapete sicuramente che tra le tante caratteristiche c&#8217;è anche quella di poter avviare il download o l&#8217;upload di un intero sito con il comando mirror.</p>



<p class="wp-block-paragraph">Ad esempio, dopo aver fatto il login ed essersi posizionati nel giusto percorso, per copiare in locale tutto il contenuto remoto:</p>



<pre class="wp-block-code"><code>mirror .</code></pre>



<p class="wp-block-paragraph">o viceversa per copiare in remoto tutto il contenuto locale:</p>



<pre class="wp-block-code"><code>mirror . -R</code></pre>



<p class="wp-block-paragraph">Il comando mirror ha molti parametri, ad esempio per proseguire in caso di errore e lanciare 10 processi paralleli di copia:</p>



<pre class="wp-block-code"><code>mirror . -c --parallel=10</code></pre>



<p class="wp-block-paragraph">La procedura di copia può richiedere molto tempo, in questo caso possiamo uscire da lftp e lasciare a lui completare la procedura. </p>



<p class="wp-block-paragraph">Un&#8217;altra cosa comoda che può richiedere molto tempo è la cancellazione di contenuti, che può essere fatta con il comando <strong>mrm</strong>; ad esempio per cancellare la cartella chiamata <strong>AA</strong> e tutto il suo contenuto</p>



<pre class="wp-block-code"><code>mrm -r AA</code></pre>



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



<p class="wp-block-paragraph">Mentre i dati vengono copiati, premiamo su <strong>CTRL+Z</strong> e vedremo indicato qualcosa tipo:</p>



<pre class="wp-block-code"><code>&#91;0] mirror . -R &amp; -- 53M/53M (99%)</code></pre>



<p class="wp-block-paragraph">Scriviamo poi exit nel terminale e torneremo in console con la scritta:</p>



<pre class="wp-block-code"><code>&#91;1692112] Moving to background to complete transfers…</code></pre>



<p class="wp-block-paragraph">il numero scritto tra parentesi quadre <strong>1692112</strong> è il PID del processo lasciato in esecuzione. Eventualmente non ne prendiamo nota si può ricavare con:</p>



<pre class="wp-block-code"><code>pgrep lftp</code></pre>



<p class="wp-block-paragraph">Prima che la procedura sia completata, possiamo ricollegarci al pid indicato per vedere cosa accade.</p>



<p class="wp-block-paragraph">Lanciamo lftp:</p>



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



<p class="wp-block-paragraph">poi scriviamo:</p>



<pre class="wp-block-code"><code>attach 1692112</code></pre>



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



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



<p class="wp-block-paragraph">per vedere i processi appesi. Potrebbe essere mostrato qualcosa del genere:</p>



<pre class="wp-block-code"><code>&#91;0] mirror . -R -- 201M/201M (100%)<br>\mirror <code>wp-content' -- 142M/142M (100%) \mirror</code>wp-content/plugins' -- 114M/114M (100%)</code></pre>



<p class="wp-block-paragraph">per fermare il processo:</p>



<pre class="wp-block-code"><code>kill 0</code></pre>



<p class="wp-block-paragraph">perché nell&#8217;elempio precedente il processo ha il numero <strong>0</strong>.</p>



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



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/04/22/lftp-come-recuperare-una-sessione-in-background/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Docker: Trasferire un container su un nuovo host</title>
		<link>https://blog.smsoft.it/2025/04/15/docker-trasferire-un-container-su-un-nuovo-host/</link>
					<comments>https://blog.smsoft.it/2025/04/15/docker-trasferire-un-container-su-un-nuovo-host/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 15 Apr 2025 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[docker]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6700</guid>

					<description><![CDATA[Immaginiamo di avere una macchina con docker installato ma che non abbiamo più accesso ad internet per poter scaricare nuovi container. La soluzione più semplice è quella di scaricare il container su un server che raggiunge internet, farne un archivio e poi importarlo. Ipotizziamo di voler trasferire portainer. Innanzitutto scarichiamo il container se ancora non ... <a title="Docker: Trasferire un container su un nuovo host" class="read-more" href="https://blog.smsoft.it/2025/04/15/docker-trasferire-un-container-su-un-nuovo-host/" aria-label="Per saperne di più su Docker: Trasferire un container su un nuovo host">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Immaginiamo di avere una macchina con docker installato ma che non abbiamo più accesso ad internet per poter scaricare nuovi container. La soluzione più semplice è quella di scaricare il container su un server che raggiunge internet, farne un archivio e poi importarlo.</p>



<p class="wp-block-paragraph">Ipotizziamo di voler trasferire portainer.</p>



<p class="wp-block-paragraph">Innanzitutto scarichiamo il container se ancora non lo abbiamo fatto:</p>



<pre class="wp-block-code"><code>docker pull portainer/portainer-ce:lts</code></pre>



<p class="wp-block-paragraph">ora lo archiviamo:</p>



<pre class="wp-block-code"><code>docker save -o portainer.tgz portainer/portainer-ce:lts</code></pre>



<p class="wp-block-paragraph">Lo copiamo sull&#8217;altro host e lo importiamo con:</p>



<pre class="wp-block-code"><code>docker load -i portainer.tgz</code></pre>



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



<p class="wp-block-paragraph">Nota: qualora sul server di appoggio non serva mantenere l&#8217;immagine di portainer, la possiamo rimuovere con:</p>



<pre class="wp-block-preformatted">docker rmi portainer/portainer-ce:lts</pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/04/15/docker-trasferire-un-container-su-un-nuovo-host/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Risalire al file docker-compose.yml a partire da un container in esecuzione</title>
		<link>https://blog.smsoft.it/2025/04/01/risalire-al-file-docker-compose-yml-a-partire-da-un-container-in-esecuzione/</link>
					<comments>https://blog.smsoft.it/2025/04/01/risalire-al-file-docker-compose-yml-a-partire-da-un-container-in-esecuzione/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 01 Apr 2025 08:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[docker-compose]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6691</guid>

					<description><![CDATA[Forse vi à capitato qualche volta di accedere ad un VPS e trovare una serie di container docker in esecuzione, tutti lanciati tramite docker-compose ma non c&#8217;è documentazione per capire dove siano i file docker-compose.yml La procedura più semplice è questa. Recuperare l&#8217;elenco dei docker in esecuzione: ed avremo una lista tipo: prendere il CONTAINER ... <a title="Risalire al file docker-compose.yml a partire da un container in esecuzione" class="read-more" href="https://blog.smsoft.it/2025/04/01/risalire-al-file-docker-compose-yml-a-partire-da-un-container-in-esecuzione/" aria-label="Per saperne di più su Risalire al file docker-compose.yml a partire da un container in esecuzione">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Forse vi à capitato qualche volta di accedere ad un VPS e trovare una serie di container docker in esecuzione, tutti lanciati tramite docker-compose ma non c&#8217;è documentazione per capire dove siano i file docker-compose.yml </p>



<p class="wp-block-paragraph">La procedura più semplice è questa. Recuperare l&#8217;elenco dei docker in esecuzione:</p>



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



<p class="wp-block-paragraph">ed avremo una lista tipo:</p>



<pre class="wp-block-code"><code>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2e227efd6ec9 quay.io/soketi/soketi:1.0-16-alpine "node /app/bin/serve…" 3 days ago Up 3 days 0.0.0.0:6001->6001/tcp, &#91;::]:6001->6001/tcp, 0.0.0.0:9601->9601/tcp, &#91;::]:9601->9601/tcp soketi
048ec95f4cb9 postgres:16-alpine "docker-entrypoint.s…" 3 days ago Up 3 days (healthy) 5432/tcp llmsavastano-postgres-1</code></pre>



<p class="wp-block-paragraph">prendere il <strong>CONTAINER ID</strong>, es 2e227efd6ec9, e poi:</p>



<pre class="wp-block-code"><code>docker inspect 2e227efd6ec9 | grep config_files</code></pre>



<p class="wp-block-paragraph">ed avremo:</p>



<pre class="wp-block-code"><code>"com.docker.compose.project.config_files": "/home/tech/socketi/docker-compose.yml",</code></pre>



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



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



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/04/01/risalire-al-file-docker-compose-yml-a-partire-da-un-container-in-esecuzione/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Come intercettare il traffico iOS</title>
		<link>https://blog.smsoft.it/2025/03/18/come-intercettare-il-traffico-ios/</link>
					<comments>https://blog.smsoft.it/2025/03/18/come-intercettare-il-traffico-ios/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 18 Mar 2025 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[mitmproxy]]></category>
		<category><![CDATA[mitmweb]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[sniffing]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6678</guid>

					<description><![CDATA[Questo articolo è specifico per iOS, ma la stessa modalità si può usare per un dispositivo Android o un PC, etc. La procedura che descrivo di seguito va utilizzata solo a scopo di debug con una propria applicazione che non sta funzionando come dovrebbe , al fine di capire meglio cosa accade. Per intercettare, o ... <a title="Come intercettare il traffico iOS" class="read-more" href="https://blog.smsoft.it/2025/03/18/come-intercettare-il-traffico-ios/" aria-label="Per saperne di più su Come intercettare il traffico iOS">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Questo articolo è specifico per iOS, ma la stessa modalità si può usare per un dispositivo Android o un PC, etc.</p>



<p class="wp-block-paragraph">La procedura che descrivo di seguito va utilizzata solo a scopo di debug con una propria applicazione che non sta funzionando come dovrebbe , al fine di capire meglio cosa accade.</p>



<p class="wp-block-paragraph">Per intercettare, o sniffare, il traffico di un dispositivo nella propria disponibilità, la cosa più semplice è impostare un proxy nella configurazione del dispositivo.</p>



<p class="wp-block-paragraph">Dato che stiamo facendo debug è necessario che il server proxy ed il client siano nella stessa rete (fermo restando che il server proxy potrebbe anche essere attivo su una rete differente ma comunque raggiungibile dal client).</p>



<p class="wp-block-paragraph">Per questa procedura voglio parlarvi di <a href="https://www.mitmproxy.org" target="_blank" rel="noreferrer noopener">mitmproxy</a>, un proxy HTTPS interattivo open-source, disponibili per diverse piattaforme.</p>



<p class="wp-block-paragraph">Vediamo quindi come installare/configurare <strong>mitmproxy</strong> su un <strong>Mac</strong> e configurare un dispositivo <strong>iOS</strong> come client; entrambe i dispositivi si trovano nella <strong>stessa rete wi-fi</strong>.</p>



<h2 class="wp-block-heading">Server proxy</h2>



<p class="wp-block-paragraph">Installare mitmproxy:</p>



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



<p class="wp-block-paragraph">Avviare mitmproxy:</p>



<pre class="wp-block-code"><code>/opt/homebrew/bin/mitmproxy</code></pre>



<p class="wp-block-paragraph">oppure, per avere un&#8217;interfaccia web più pratica da utilizzare:</p>



<pre class="wp-block-code"><code>/opt/homebrew/bin/mitmweb</code></pre>



<p class="wp-block-paragraph">Questo comando avvia il proxy sulla porta <strong>8080</strong> del Mac. Ora bisogna recuperare anche l&#8217;IP del Mac (tra le impostazioni di rete) in modo da avere i parametri da impostare nel client successivamente. In alternativa da CLI si può digitare:</p>



<pre class="wp-block-code"><code>ipconfig getifaddr en0</code></pre>



<p class="wp-block-paragraph">dove <strong>en0</strong> è la prima interfaccia di rete ed è solitamente quella utilizzata.</p>



<p class="wp-block-paragraph">Contestualmente viene aperta una pagina del browser dove verranno riepilogate le varie chiamate.</p>



<h2 class="wp-block-heading">Client iOS</h2>



<p class="wp-block-paragraph">Modificare le impostazioni wifi/ ed inserire il riferimento al proxy:<br>apri <strong>Impostazioni</strong> -&gt; <strong>Wi-Fi </strong>-&gt; cliccare sull&#8217;icona <strong>(i)</strong> a destra del nome della rete wi-fi -&gt; in basso scegliere &#8220;<strong>Configura Proxy</strong>&#8220;, abilitare &#8220;<strong>Manuale</strong>&#8221; ed inserire ip/porta recuperati prima dal server proxy</p>



<p class="wp-block-paragraph">Aprire l&#8217;indirizzo <strong>mitm.it</strong> nel browser Safari del client iOS e scaricare il certificato relativo ad iOS</p>



<p class="wp-block-paragraph">Aprire <strong>Impostazioni</strong> -&gt; <strong>Generali</strong> -&gt; <strong>VPN e gestione dispositivo</strong> ed installa il certificato chiamato &#8220;<strong>mitmproxy</strong>&#8220;</p>



<p class="wp-block-paragraph">Aprire <strong>Impostazioni</strong> -&gt; <strong>Generali</strong> -&gt; <strong>Info</strong> -&gt; <strong>Attendibilità certificati</strong> ed abilita il certificato chiamato mitmproxy</p>



<h2 class="wp-block-heading">Client MacOS</h2>



<p class="wp-block-paragraph">E&#8217; possibile impostare in modo similare anche la connessione del Mac tramite proxy. Aprire <strong>Impostazioni</strong> -> <strong>Wifi</strong> (oppure Rete se connessi con cavo) -> pulsante <strong>Dettagli</strong> vicino la connessione attiva -> <strong>Proxy</strong> -> abilitare <strong>Proxy web (HTTP)</strong> e <strong>Proxy web sicuro (HTTPS)</strong> -> infine indicare come Server <strong>127.0.0.1</strong> e come Porta <strong>8080</strong>.</p>



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



<h2 class="wp-block-heading">Verifica finale</h2>



<p class="wp-block-paragraph">Bene, a questo punto bisogna provare adaprire una pagina qualsiasi in <strong>Safari</strong>, es &#8220;www.google.com&#8221; e verificare che<strong> il browser non mostri errori.</strong> Se il sito richiamato si vede, contestualmente si può controllare su mitmproxy verificare che stia inizando a loggare le richieste.</p>



<p class="wp-block-paragraph">La documentazione è presente all&#8217;indirizzo <a href="https://docs.mitmproxy.org/stable/" target="_blank" rel="noopener">https://docs.mitmproxy.org/stable/</a> dove sono disponibile anche diversi video esemplificativi.</p>



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



<p class="wp-block-paragraph">In alternativa posso consigliare <a href="https://proxyman.com/" target="_blank" rel="noreferrer noopener">proxyman</a> da installare con:</p>



<pre class="wp-block-preformatted">brew install --cask proxyman</pre>



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



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/03/18/come-intercettare-il-traffico-ios/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Comandi utili per docker e docker compose</title>
		<link>https://blog.smsoft.it/2025/03/11/comandi-utili-per-docker-e-docker-compose/</link>
					<comments>https://blog.smsoft.it/2025/03/11/comandi-utili-per-docker-e-docker-compose/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 11 Mar 2025 09:30:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[docker-compose]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6658</guid>

					<description><![CDATA[Non mi soffermo sull&#8217;utilità e la fase di installazione di Docker, eventualmente in futuro dedicherò un apposito post a queste cose. Oggi volevo solo riepilogare alcuni comandi utili per chi utilizza docker e docker compose: Avvio i container nel docker compose e sgancio la console: Spengo i container specificate nel DockerFile, rimuovo i container e ... <a title="Comandi utili per docker e docker compose" class="read-more" href="https://blog.smsoft.it/2025/03/11/comandi-utili-per-docker-e-docker-compose/" aria-label="Per saperne di più su Comandi utili per docker e docker compose">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Non mi soffermo sull&#8217;utilità e la fase di installazione di Docker, eventualmente in futuro dedicherò un apposito post a queste cose. Oggi volevo solo riepilogare alcuni comandi utili per chi utilizza docker e docker compose:</p>



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



<p class="wp-block-paragraph">Avvio i container nel docker compose e sgancio la console:</p>



<pre class="wp-block-code"><code>docker compose up -d</code></pre>



<p class="wp-block-paragraph">Spengo i container specificate nel DockerFile, rimuovo i container e le reti create:</p>



<pre class="wp-block-code"><code>docker compose down</code></pre>



<p class="wp-block-paragraph">Spengo i container nel DockerFile senza però cancellarli:</p>



<pre class="wp-block-code"><code>docker compose stop</code></pre>



<p class="wp-block-paragraph">Avvio i container nel DockerFile senza ricrearli:</p>



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



<p class="wp-block-paragraph">Spengo (o accendo con star) un container in particolare:</p>



<pre class="wp-block-code"><code>docker compose stop NOME_CONTAINER</code></pre>



<p class="wp-block-paragraph">Mostro i container relativi al DockerFile:</p>



<pre class="wp-block-code"><code>docker compose ps</code></pre>



<p class="wp-block-paragraph">Dopo la modifica del Dockerfile docker-compose-yml:</p>



<pre class="wp-block-code"><code>docker compose stop &amp;&amp; docker compose up -d --no-deps --build</code></pre>



<p class="wp-block-paragraph">Rimuovo anche i volumi associati alle macchine nel docker-compose:</p>



<pre class="wp-block-code"><code>docker compose down --volumes</code></pre>



<p class="wp-block-paragraph">Rimuovo anche le immagini scaricate/costruite dal docker-compose:</p>



<pre class="wp-block-code"><code>docker compose down --rmi all</code></pre>



<p class="wp-block-paragraph">Guardo i log di docker-compose effettuando un tail, ovvero continua ad aggiornarli:</p>



<pre class="wp-block-code"><code>docker compose logs -f</code></pre>



<p class="wp-block-paragraph">Mostra i log di un container in parlitocolare:</p>



<pre class="wp-block-code"><code>docker compose logs NOME_CONTAINER</code></pre>



<p class="wp-block-paragraph">Mi collego ad un container da CLI:</p>



<pre class="wp-block-code"><code>docker exec -it NOME_CONTAINER /bin/sh</code></pre>



<p class="wp-block-paragraph">Cancello le risorse (container/image/network) non usate da nessun docker attivo:</p>



<pre class="wp-block-code"><code>docker system prune</code></pre>



<p class="wp-block-paragraph">Cancello i log dei vari docker:</p>



<pre class="wp-block-code"><code>truncate -s 0 /var/lib/docker/containers/*/*-json.log</code></pre>



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



<p class="wp-block-paragraph">Aggiornare le immagini dei container definiti nel docker-compose:</p>



<pre class="wp-block-preformatted">docker compose pull</pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/03/11/comandi-utili-per-docker-e-docker-compose/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Estrarre solo un file o una cartella da un archivio tgz</title>
		<link>https://blog.smsoft.it/2025/02/25/estrarre-solo-un-file-o-una-cartella-da-un-archivio-tgz/</link>
					<comments>https://blog.smsoft.it/2025/02/25/estrarre-solo-un-file-o-una-cartella-da-un-archivio-tgz/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 25 Feb 2025 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[extract]]></category>
		<category><![CDATA[tar.gz]]></category>
		<category><![CDATA[tgz]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6652</guid>

					<description><![CDATA[Se abbiamo un archivio tgz o tar.gz molto grande ed abbiamo la necessità di estrarre solo alcuni file (anche solo per motivi di spazio), c&#8217;è una semplice proceduara che può aiutarvi. Innanzitutto possiamo dare un&#8217;occhiata al contenuto del file. Ipotizziamo che l&#8217;archivio si chiami archivio.tgz, procediamo come segue: questo mostrerà l&#8217;elenco del contenuto; eventualmente possiamo ... <a title="Estrarre solo un file o una cartella da un archivio tgz" class="read-more" href="https://blog.smsoft.it/2025/02/25/estrarre-solo-un-file-o-una-cartella-da-un-archivio-tgz/" aria-label="Per saperne di più su Estrarre solo un file o una cartella da un archivio tgz">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se abbiamo un archivio <strong>tgz</strong> o <strong>tar.gz</strong> molto grande ed abbiamo la necessità di estrarre solo alcuni file (anche solo per motivi di spazio), c&#8217;è una semplice proceduara che può aiutarvi.</p>



<p class="wp-block-paragraph">Innanzitutto possiamo dare un&#8217;occhiata al contenuto del file. Ipotizziamo che l&#8217;archivio si chiami <strong>archivio.tgz</strong>, procediamo come segue:</p>



<pre class="wp-block-code"><code>$ tar -tvf archivio.tgz</code></pre>



<p class="wp-block-paragraph">questo mostrerà l&#8217;elenco del contenuto; eventualmente possiamo già filtrare i risultati (se sappiamo come il file è strutturato), es:</p>



<pre class="wp-block-code"><code>$ tar -tvf archivio.tgz mail/cur</code></pre>



<p class="wp-block-paragraph">Quando abbiamo rilevato la struttura dei contenuti, possiamo procedere con l&#8217;estrazione. Ad esempio vogliamo estrarre la cartella <strong>mail/cur</strong>:</p>



<pre class="wp-block-code"><code>$ tar -xvf archivio.tgz mail/cur</code></pre>



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



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/02/25/estrarre-solo-un-file-o-una-cartella-da-un-archivio-tgz/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>docker: ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule</title>
		<link>https://blog.smsoft.it/2025/01/28/docker-error-failed-to-setup-ip-tables-unable-to-enable-skip-dnat-rule/</link>
					<comments>https://blog.smsoft.it/2025/01/28/docker-error-failed-to-setup-ip-tables-unable-to-enable-skip-dnat-rule/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 28 Jan 2025 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[docker]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=6609</guid>

					<description><![CDATA[Se durante il riavvio di una macchina docker, o di un gruppo di macchine con docker-compose, viene mostrato un errore tipo: è probabilmente legato al fatto che sono state fatto modifiche sul firewall ed è stata rimossa qualche chain attiva. Per ripristinare il tutto basterà effettuare un riavvio del servizio docker: enjoy!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Se durante il riavvio di una macchina docker, o di un gruppo di macchine con docker-compose, viene mostrato un errore tipo:</p>



<pre class="wp-block-code"><code>ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule</code></pre>



<p class="wp-block-paragraph">è probabilmente legato al fatto che sono state fatto modifiche sul <strong>firewall</strong> ed è stata rimossa qualche chain attiva.</p>



<p class="wp-block-paragraph">Per ripristinare il tutto basterà effettuare un riavvio del servizio docker:</p>



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



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2025/01/28/docker-error-failed-to-setup-ip-tables-unable-to-enable-skip-dnat-rule/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
