[{"content":" ✍🏻 Questo articolo è stato scritto da un membro della community di GrapheneOS Italia: Jigen\nScopo della guida Questa guida spiega in modo semplice come funzionano i tre componenti più noti per usare UnifiedPush su GrapheneOS senza Google Play: ntfy, Sunup e NextPush.\nSpiega anche:\nquali applicazioni sono dichiaratamente supportate quali sono verificate quali app popolari NON funzionano con UnifiedPush Che cos’è UnifiedPush UnifiedPush è uno standard open source per ricevere notifiche push su Android senza Google Play Services.\nFunzionamento Installi un distributor Il distributor mantiene la connessione col server Le app compatibili si registrano Le notifiche vengono recapitate tramite il distributor ⚠️ Importante\nAurora Store NON sostituisce UnifiedPush Non tutte le app funzionano Serve supporto esplicito o Web Push compatibile Cosa serve su GrapheneOS Per far funzionare UnifiedPush:\nUn distributor installato Almeno una app compatibile Permessi corretti: notifiche attive niente restrizioni batteria aggressive background attivo 👉 Dopo la configurazione: fai sempre un test\nDifferenze tra ntfy, Sunup e NextPush Componente A cosa serve Server Tecnologia Quando usarlo ntfy Distributor semplice e versatile Sì WebSockets / HTTP Test veloce, anche self-host Sunup Minimal e immediato Sì WebSockets Setup rapidissimo NextPush Integrato con Nextcloud No SSE Se hai già Nextcloud ntfy Descrizione Servizio open source di notifiche. Funziona subito con server pubblico o self-hostato.\nInstallazione F-Droid APK ufficiale Google Play (non necessario su GrapheneOS) Attivazione Apri ntfy Usa server pubblico o tuo Apri app compatibile Impostazioni → UnifiedPush Seleziona ntfy Quando usarlo Prima prova Test rapido Self-hosting Sunup Descrizione Distributor semplice, senza account.\nInstallazione F-Droid IzzyOnDroid APK diretto Attivazione Apri app compatibile Vai nelle impostazioni push Seleziona Sunup Quando usarlo Vuoi qualcosa di immediato Zero configurazione NextPush Descrizione Pensato per integrazione con Nextcloud.\nRequisiti Nextcloud attivo Redis configurato App UnifiedPush Provider Reverse proxy corretto Installazione F-Droid / IzzyOnDroid Server: Nextcloud App Store Quando usarlo Hai già Nextcloud Vuoi controllo totale Ordine consigliato ntfy Sunup NextPush (solo se hai server) App supportate (estratto) Categoria App Matrix FluffyChat, Element, SchildiChat Fediverse Tusky, Fedilab, Pachli Messaging Jami, Databag Nextcloud Neon Browser Fennec, IronFox Telegram fork Mercurygram, Nagram, Forkgram App popolari NON supportate App Stato Nota WhatsApp ❌ No Nessun supporto UnifiedPush Signal ❌ No Richiede Google Telegram ❌ No Solo fork supportati ⚠️ Nota su Signal Per avere notifiche:\nUsa Molly MollySocket distributor ⚠️ Signal ufficiale NON supporta UnifiedPush\n⚠️ Nota su Telegram App ufficiale → ❌ nessun supporto Fork → ✅ sì (es. Mercurygram) Come capire se un’app funziona ✔ Ha impostazione UnifiedPush\n✔ Compare nella lista ufficiale\n❌ Non ha impostazioni → non funziona\nProblemi comuni Notifiche non arrivano Controlla batteria Controlla notifiche Verifica registrazione Distributor non visibile → App non compatibile\nNextPush non funziona Redis Reverse proxy Provider mancante Signal / WhatsApp → Non supportati → inutile cambiare distributor\n❌ UnifiedPush NON funziona con tutte le app\n🔗 Link utili ntfy https://ntfy.sh https://github.com/binwiederhier/ntfy-android Sunup https://codeberg.org/Sunup/android NextPush https://codeberg.org/NextPush https://apps.nextcloud.com/apps/uppush 📚 Fonti https://unifiedpush.org/ https://unifiedpush.org/users/apps/ https://unifiedpush.org/users/distributors/ 👤 Autore Questo articolo è stato scritto interamente da Jigen, membro della community di GrapheneOS Italia.\n","permalink":"https://giuxfila.com/blog/unifiedpush-grapheneos-guida/","summary":"\u003cblockquote\u003e\n\u003cp\u003e✍🏻 Questo articolo è stato scritto da un membro della community di GrapheneOS Italia: \u003cstrong\u003eJigen\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003chr\u003e\n\u003ch2 id=\"scopo-della-guida\"\u003eScopo della guida\u003c/h2\u003e\n\u003cp\u003eQuesta guida spiega in modo semplice come funzionano i tre componenti più noti per usare UnifiedPush su GrapheneOS senza Google Play: \u003cstrong\u003entfy\u003c/strong\u003e, \u003cstrong\u003eSunup\u003c/strong\u003e e \u003cstrong\u003eNextPush\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eSpiega anche:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003equali applicazioni sono dichiaratamente supportate\u003c/li\u003e\n\u003cli\u003equali sono verificate\u003c/li\u003e\n\u003cli\u003equali app popolari \u003cstrong\u003eNON\u003c/strong\u003e funzionano con UnifiedPush\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"che-cosè-unifiedpush\"\u003eChe cos’è UnifiedPush\u003c/h2\u003e\n\u003cp\u003eUnifiedPush è uno standard open source per ricevere notifiche push su Android \u003cstrong\u003esenza Google Play Services\u003c/strong\u003e.\u003c/p\u003e","title":"Guida pratica a UnifiedPush su GrapheneOS"},{"content":"Come già visto nell\u0026rsquo;introduzione dell\u0026rsquo;episodio 1, in questa serie di articoli vediamo come creare e mantenere attivo un full node di Bitcoin. Oggi andremo ad installare, configurare ed avviare il cuore del nostro nodo, ovvero Bitcoin Core.\nInstallazione e configurazione Accediamo al nostro server con l\u0026rsquo;utente giuseppe e rechiamoci nella directory temporanea (che si svuota ad ogni riavvio):\ncd /tmp Impostiamo una variabile d\u0026rsquo;ambiente con il numero della versione di Bitcoin Core, digitiamo quindi:\nVERSION=\u0026#34;29.2\u0026#34; 💡Nota:\nPer ottenere l\u0026rsquo;ultima versione ci basterà collegarci al sito 👉🏻 https://bitcoincore.org/en/download/ e verificare il numero.\nA questo punto andiamo ad installare il file binario con le rispettive firme:\nwget https://bitcoincore.org/bin/bitcoin-core-$VERSION/bitcoin-$VERSION-aarch64-linux-gnu.tar.gz wget https://bitcoincore.org/bin/bitcoin-core-$VERSION/SHA256SUMS wget https://bitcoincore.org/bin/bitcoin-core-$VERSION/SHA256SUMS.asc Verifichiamo che il checksum di riferimento nel file SHA256SUMS, corrisponda al checksum che abbiamo calcolato noi:\nsha256sum --ignore-missing --check SHA256SUMS Adesso andiamo a controllare le firme, le versioni di Bitcoin Core sono firmate da più individui, ognuno usando la propria chiave. Per verificare la validità di queste firme, è necessario prima importare le chiavi pubbliche corrispondenti nel database delle chiavi GPG:\ncurl -s \u0026#34;https://api.github.com/repositories/355107265/contents/builder-keys\u0026#34; | grep download_url | grep -oE \u0026#34;https://[a-zA-Z0-9./-]+\u0026#34; | while read url; do curl -s \u0026#34;$url\u0026#34; | gpg --import; done Riceveremo a video una serie di stringhe di firme valide come queste:\nVerifichiamo che il file checksums sia firmato crittograficamente dalle chiavi di firma del rilascio:\ngpg --verify SHA256SUMS.asc Riceveremo a video una serie di stringhe di firme valide come queste, dobbiamo verificare che alcune firme mostrino il seguente testo gpg: Good signature from...:\nUna volta effettuati i controlli, dobbiamo estraiamo i file binari di Bitcoin Core:\ntar -xvf bitcoin-$VERSION-aarch64-linux-gnu.tar.gz Adesso passiamo all\u0026rsquo;installazione:\nsudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-$VERSION/bin/* Verifichiamo che l\u0026rsquo;installazione sia avvenuta con successo attraverso il comando bitcoin-cli, quindi da terminale digitiamo:\nbitcoin-cli --version Passiamo adesso alla creazione di un utente ed un gruppo (in questo tutorial verranno chiamati \u0026ldquo;bitcoin\u0026rdquo;). L\u0026rsquo;utente non avrà una password e nessun privilegio a differenza dell\u0026rsquo;utente \u0026ldquo;giuseppe\u0026rdquo; che ha i privilegi di root., l\u0026rsquo;unico modo che avremo per poter accedere all’ utente \u0026ldquo;bitcoin\u0026rdquo; sarà attraverso \u0026ldquo;giuseppe\u0026rdquo;:\nsudo adduser --gecos \u0026#34;\u0026#34; --disabled-password bitcoin Aggiungiamo l\u0026rsquo;utente \u0026ldquo;giuseppe\u0026rdquo; al gruppo \u0026ldquo;bitcoin\u0026rdquo;:\nsudo adduser giuseppe bitcoin Consentiamo adesso, l\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo; ad utilizzare la porta di controllo e configurare Tor direttamente aggiungendolo al gruppo debian-tor:\nsudo adduser bitcoin debian-tor Creiamo la cartella bitcoin sotto \u0026ldquo;/data\u0026rdquo; creata in precedenza, Bitcoin Core utilizza per impostazione predefinita la cartella \u0026ldquo;.bitcoin\u0026rdquo; nella directory /home dell\u0026rsquo;utente.\nPer poter creare la cartella bitcoin (assicuriamoci di essere l\u0026rsquo;utente \u0026ldquo;giuseppe\u0026rdquo;) e digitiamo:\nmkdir /data/bitcoin Assegniamo come proprietario della directory l\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo;:\nsudo chown bitcoin:bitcoin /data/bitcoin Adesso effettuiamo il login nell\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo;:\nsudo su - bitcoin Creiamo un link simbolico \u0026ldquo;.bitcoin\u0026rdquo; che punti a quella directory:\nln -s /data/bitcoin /home/bitcoin/.bitcoin Verifichiamo che sia stato creato correttamente il link simbolico:\nls -la .bitcoin Con l\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo; rechiamoci nella directory \u0026ldquo;.bitcoin\u0026rdquo; per iniziare a generare le password, che ci serviranno successivamente per il collegamento ai vari wallet:\ncd .bitcoin Scarichamo il programma RPCAuth da github:\nwget https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py Adesso lanciamo lo script con il comando python3 ed aggiungiamo un nome utente (nel caso di questa guida sarà bitcoin):\npython3 rpcauth.py bitcoin Copiamo l\u0026rsquo;output ed andiamo a creare un file per memorizzarlo:\nnano rpc.pw Inseriamo all\u0026rsquo;interno la risposta precedentemente copiata e successivamente salviamo con CTRL + X e confermiamo con Y.\nAdesso rendiamo accessibile il file solo all\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo;:\nchmod 400 rpc.pw Ora, andiamo a crere il file di configurazione bitcoind:\nnano /home/bitcoin/.bitcoin/bitcoin.conf Incolliamo il seguente contenuto:\n# Demone di Bitcoin server=1 txindex=1 # Commento personalizzato (opzionale) uacomment=giuxfila-nodo # Consentiamo la creazione di wallet legacy deprecatedrpc=create_bdb # Rete listen=1 listenonion=1 proxy=127.0.0.1:9050 bind=127.0.0.1=onion i2psam=127.0.0.1:7656 onlynet=onion onlynet=i2p onlynet=ipv4 onlynet=ipv6 # Connessione rpcauth=\u0026lt;Inseriamo qui la stringa salvata su rpc.pw\u0026gt; rpccookieperms=group # Ottimizzazioni per ARM maxconnections=40 maxuploadtarget=5000 # Ottimizzazioni per il sync iniziale: # consigliato: dbcache=1/2 x RAM disponibile, ad esempio: 4GB RAM -\u0026gt; dbcache=2048) dbcache=2048 blocksonly=1 Salviamo il file con CTRL + X e confermiamo con Y.\nAdesso impostiamo le autorizzazioni di lettura solo per l\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo; ed i membri del gruppo \u0026ldquo;bitcoin\u0026rdquo;:\nchmod 640 /home/bitcoin/.bitcoin/bitcoin.conf Usciamo dall\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo;:\nexit Per poter eseguire automaticamente il demone di bitcoin in background, dobbiamo creare un servizio con systemd:\nsudo nano /etc/systemd/system/bitcoind.service Incolliamo il seguente contenuto:\n[Unit] Description=Bitcoin daemon After=network.target [Service] ExecStart=/usr/local/bin/bitcoind -daemon \\ -pid=/run/bitcoind/bitcoind.pid \\ -conf=/home/bitcoin/.bitcoin/bitcoin.conf \\ -datadir=/home/bitcoin/.bitcoin \\ -startupnotify=\u0026#34;systemd-notify --ready\u0026#34; Type=forking PIDFile=/run/bitcoind/bitcoind.pid Restart=on-failure TimeoutSec=300 RestartSec=30 User=bitcoin UMask=0027 RuntimeDirectory=bitcoind RuntimeDirectoryMode=0710 PrivateTmp=true ProtectSystem=full NoNewPrivileges=true PrivateDevices=true MemoryDenyWriteExecute=true [Install] WantedBy=multi-user.target Salviamo il file con CTRL + X e confermiamo con Y. Adesso abilitiamo l\u0026rsquo;avvio automatico (in caso di reboot o shutdown del sistema):\nsudo systemctl enable bitcoind.service Avviamo adesso il servizio, con il comando systemct:\nsudo systemctl start bitcoind.service Da questo momento il è in esecuzione ed impiegherà qualche giorno prima che sarà completamente sincronizzato. Per controllare lo stato del nodo e della sincronizzazione ci basterà interrogare il servizio con il comando:\njournalctl -fu bitcoind Attendiamo qualche minuto affinché il nodo inizi a sincronizzare ed iniziamo ad annotare il nostro indirizzo .onion per eventuali collegamenti esterni.\nAccediamo con l\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo;:\nsudo su - bitcoin Digitiamo sul terminale il seguente comando:\nbitcoin-cli getnetworkinfo | grep address.*onion \u0026amp;\u0026amp; bitcoin-cli getnetworkinfo | grep address.*i2p Riceveremo l\u0026rsquo;indirizzo in formato .onion\nVerifichiamo la corretta abilitazione delle reti I2P e Tor:\nbitcoin-cli -netinfo Ed assicuriamoci che bitcoind sia in ascolto sulle porte RPC e P2P predefinite, quindi con l\u0026rsquo;utente \u0026ldquo;giuseppe\u0026rdquo; digitiamo:\nsudo ss -tulpn | grep bitcoind Sincronizzazione iniziale Se tutto funziona senza intoppi, il nostro nodo inizierà a sincronizzare i blocchi. Per verificare l\u0026rsquo;avanzamento ci basterà collegarci sul nostro terminale con l\u0026rsquo;utente \u0026ldquo;giuseppe\u0026rdquo; e digitare:\nsudo tail -f /data/bitcoin/debug.log Bitcoin Core sincronizzato Una volta terminata la sincronizzazione iniziale di Bitcoin Core, in media 10-15 giorni, ci ritroveremo questa schermata:\nA questo punto possiamo ridurre le dimensioni della cache del database precedentemente aumentate. Rechiamoci (con l\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo;) nella cartella principale \u0026ldquo;.bitcoin\u0026rdquo; e modifichiamo il file di configurazione bicoin.conf:\nnano .bitcoin/bitcoin.conf Aggiungiamo un commento (ovvero il simbolo del cancelletto #) così come di seguito:\nUsciamo dall\u0026rsquo;utente \u0026ldquo;bitcoin\u0026rdquo;:\nexit E rendiamo effettive le modifiche riavviando il demone di bitcoin:\nsudo systemctl restart bitcoind Verifichiamo che tutto funzioni con il comando:\njournalctl -fu bitcoind Update di Bitcoin Core Verifichiamo sempre l\u0026rsquo;ultima versione presente di Bitcoin Core (https://bitcoincore.org/en/download/). Stoppiamo momentaneamente il servizio bitcoind, dal terminale con l\u0026rsquo;utente \u0026ldquo;giuseppe\u0026rdquo; digitiamo:\nsudo systemctl stop bitcoind.service Adesso, accediamo nella directory temporanea /tmp:\ncd /tmp Impostiamo una nuova variabile d\u0026rsquo;ambiente con la versione:\nVERSION=29.2 Scarichiamo il file binario, checksum e firma:\nwget https://bitcoincore.org/bin/bitcoin-core-$VERSION/bitcoin-$VERSION-x86_64-linux-gnu.tar.gz wget https://bitcoincore.org/bin/bitcoin-core-$VERSION/SHA256SUMS wget https://bitcoincore.org/bin/bitcoin-core-$VERSION/SHA256SUMS.asc Verifichiamo che il checksum di riferimento nel file SHA256SUMS, corrisponda al checksum calcolato da noi:\nsha256sum --ignore-missing --check SHA256SUMS Come già visto in fase di installazione andiamo a controllare le firme,\ncurl -s \u0026#34;https://api.github.com/repositories/355107265/contents/builder-keys\u0026#34; | grep download_url | grep -oE \u0026#34;https://[a-zA-Z0-9./-]+\u0026#34; | while read url; do curl -s \u0026#34;$url\u0026#34; | gpg --import; done Ri-verifichiamo che il file checksums sia firmato crittograficamente dalle chiavi di firma del rilascio.\ngpg --verify SHA256SUMS.asc Riceveremo a video una serie di stringhe di firme valide come queste, dobbiamo verificare che alcune firme mostrino il seguente testo gpg: Good signature from...:\nEffettuati i controlli, dobbiamo estrarre il file binario di Bitcoin Core aggiornato:\ntar -xvf bitcoin-$VERSION-aarch64-linux-gnu.tar.gz Adesso passiamo all\u0026rsquo;installazione::\nsudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-$VERSION/bin/* Verifichiamo che l\u0026rsquo;installazione sia avvenuta con successo attraverso il comando bitcoin-cli:\nbitcoin-cli --version Perfetto, il nostro Bitcoin Core è stato correttamente aggiornato, possiamo avviare nuovamente il servizio:\nsudo systemctl start bitcoind.service ","permalink":"https://giuxfila.com/blog/bitcoin-core-arm/","summary":"\u003cp\u003eCome già visto nell\u0026rsquo;introduzione dell\u0026rsquo;\u003ca href=\"/blog/bitcoin-node-arm-preparazione-sistema/\"\u003eepisodio 1\u003c/a\u003e, in questa serie di articoli vediamo come creare e mantenere attivo un full node di Bitcoin. Oggi andremo ad installare, configurare ed avviare il cuore del nostro nodo, ovvero Bitcoin Core.\u003c/p\u003e\n\u003ch2 id=\"installazione-e-configurazione\"\u003eInstallazione e configurazione\u003c/h2\u003e\n\u003cp\u003eAccediamo al nostro server con l\u0026rsquo;utente \u003ccode\u003egiuseppe\u003c/code\u003e e rechiamoci nella directory temporanea (che si svuota ad ogni riavvio):\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecd /tmp\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eImpostiamo una variabile d\u0026rsquo;ambiente con il numero della versione di Bitcoin Core, digitiamo quindi:\u003c/p\u003e","title":"Bitcoin Full Node su ARM #2 — Installare e configurare Bitcoin Core"},{"content":"In questa serie di tutorial vedremo come installare e avviare un Full Node di Bitcoin su qualsiasi piattaforma ARM compatibile (come Raspberry Pi, Pine64, Odroid, Orange Pi, Banana Pi), utilizzando una distribuzione Linux basata su Debian e la riga di comando.\nQuesto è l’episodio 1 di 4, dove vedremo quale sistema operativo installare, come mettere in sicurezza il sistema e come migliorare la privacy utilizzando strumenti come Tor e I2P.\nRequisiti hardware Per seguire la guida ci servirà il seguente hardware:\nUn dispositivo ARM con 4GB+ di RAM (consigliati 8 GB per prestazioni migliori):\nEsempio: Raspberry Pi 4, Raspberry Pi 5, OrangePi 5 Ultra etc. Alimentatore originale o compatibile con equivalente qualità\nUn SSD Sata da 2,5\u0026quot; da 1 TB+ (consigliato un SSD da 2 TB)\nUn adattatore \u0026ldquo;USB to SATA\u0026rdquo; con USB 3.0\n⚠️ Disclaimer Sebbene questa guida sia concepita per essere compatibile con la stragrande maggioranza dei dispositivi ARM (grazie all\u0026rsquo;uso di comandi standard Linux universali), per la stesura dei vari passaggi e degli esempi pratici utilizzerò un Raspberry Pi 5.\nSe utilizzate hardware differenti (come Orange Pi o RockPi), i comandi rimarranno identici al 99,9%, ma tenete presente che alcuni nomi di periferiche o configurazioni specifiche del bootloader potrebbero variare leggermente.\nInstallazione del Sistema Operativo Alla base del nostro Full Node utilizzeremo il sistema operativo Armbian, senza interfaccia utente grafica, questo ci garantirà una migliore stabilità e semplifica la configurazione iniziale.\nFlashing del Sistema Operativo Per flashare il sistema operativo (file .iso) sul nostro disco SATA esterno, utilizzeremo il software Armbian imager.\nInseriamo il nostro disco SATA attraverso l\u0026rsquo;adattatore \u0026ldquo;USB to SATA\u0026rdquo; Andiamo sul sito ufficiale di Armbian imager e scarichiamo la versione per il nostro sistema operativo, attendiamo il download, installiamo il programma ed avviamolo, a video vedremo questa schermata: Selezioniamo la prima voce (Choose Brand) e cerchiamo la marca del nostro dispositivo (es. Raspberry Pi) Selezioniamo la seconda voce (Choose Board) e cerchiamo il modello (es. Raspberry) Selezioniamo la terza voce (Choose OS) e cerchiamo il SO \u0026ldquo;Armbian 26.2.1 trixie 💡 Nota: la versione di Armbian potrebbe cambiare nel futuro. Assicuriamoci sempre di selezionare la distro CLI Debian-based più recente.\nSelezioniamo la quarta voce (Choose storage) e selezioniamo il nostro disco SATA esterno collegato precedentemente, se richiesto facciamo formattare il disco dall\u0026rsquo;imager. Primo avvio, collegamento e configurazione Una volta effettuato il flashing possiamo collegare il nostro disco SATA al dispositivo ARM e alimentarlo. Dopo qualche minuto il sistema sarà avviato e connesso alla rete locale (se collegato via Ethernet). A questo punto dobbiamo andare a trovare l\u0026rsquo;indirizzo IP assegnato al nostro dispositivo ARM.\nPer farlo:\nApriamo il browser sul nostro computer\nInseriamo nella barra degli indirizzi l\u0026rsquo;indirizzo IP del nostro router (es. 192.168.0.1) ed effettuiamo il login.\nUna volta dentro, dobbiamo cercare la una delle seguenti sezioni:\nDispositivi connessi Client DHCP Connected Devices All\u0026rsquo;interno della lista troveremo tutti i dispositivi collegati alla rete. Il dispositivo ARM potrebbe comparire con nomi come: armbian,raspberrypi, oppure come dispositivo sconosciuto. Accanto al nome troveremo il relativo indirizzo IP (es. 192.168.0.119), che useremo per collegarci via SSH.\nUna volta trovato l\u0026rsquo;indirizzo IP è il momento di accedere al nostro nodo attraverso Secure Shell (SSH):\nPer farlo:\nWindows:\nScaricare PuTTY 64 bit x86 o 32 bit x86 a seconda dell\u0026rsquo;architettura del sistema operativo. Avviamo PuTTY e selezioniamo (a sinistra) la categoria \u0026ldquo;Session\u0026rdquo;, successivamente nella casella \u0026ldquo;Host Name\u0026rdquo; digitiamo root@192.168.x.xxx (dove 192.168.x.xxx è l\u0026rsquo;IP del nostro dispositivo ARM), su \u0026ldquo;Port\u0026rdquo; lasciamo 22 Clicchiamo su \u0026ldquo;Open\u0026rdquo; quando appare il banner \u0026ldquo;Avviso di sicurezza PuTTy\u0026rdquo;, premiamo il pulsante \u0026ldquo;Accept\u0026rdquo; ed infine digitiamo la password di default 1234 MacOS e Linux:\nDal terminale nativo del nostro SO digitiamo il comando: ssh root@192.168.x.xxx (dove 192.168.x.xxx è l\u0026rsquo;IP del nostro dispositivo ARM), digitiamo la password di default 1234 e confermiamo la connessione. Al primo accesso, il sistema avvierà una procedura guidata obbligatoria per la messa in sicurezza:\nPassword di Root: Il sistema ci chiederà immediatamente di creare una nuova password per l\u0026rsquo;utente amministratore (root). Scegliamo una password complessa.\nCreazione Utente Personale: Per motivi di sicurezza, non useremo l\u0026rsquo;utente root per la gestione quotidiana del nodo. Il sistema ci chiederà di:\nScegliere un Username (es. giuseppe). Impostare una Password dedicata per questo utente. Inserire il nostro nome reale (opzionale, possiamo premere Enter per saltare). Localizzazione e Lingua: Il sistema rileverà automaticamente il nostro fuso orario (es. Europe/Rome), ci verrà chiesto se vogliamo impostare la lingua di sistema in base alla nostra posizione (Set user language based on your location?). Rispondiamo Y (Yes) per l\u0026rsquo;italiano o N (No) per mantenere l\u0026rsquo;inglese.\nUna volta configurato il tutto ci ritroveremo davanti ad una schermata così:\nATTENZIONE: Per continuità con gli screenshot e gli esempi di questa guida, utilizzerò l\u0026rsquo;utente \u0026ldquo;giuseppe\u0026rdquo;.\nQuesto è l\u0026rsquo;utente creato durante la configurazione iniziale ed è dotato di privilegi di amministrazione (sudo). Ogni volta che vedrete un comando preceduto da sudo, significa che lo stiamo eseguendo con i massimi permessi di sistema.\nRicordate di sostituire \u0026ldquo;giuseppe\u0026rdquo; con il nome utente che avete scelto voi durante l\u0026rsquo;installazione.\nPersonalizzazione del nome della macchina Per identificare facilmente il nostro nodo nella rete, cambiamo il nome del dispositivo (hostname). Quindi sul terminale digitiamo:\nsudo nano /etc/hostname Cancelliamo il nome presente e scriviamo quello scelto (es. bitcoin-nodo). Salviamo con CTRL+X, poi Y e Invio. Per evitare rallentamenti con il comando sudo, dobbiamo aggiornare anche il file hosts:\nsudo nano /etc/hosts Cerchiamo la riga che riporta 127.0.1.1 seguita dal vecchio nome e sostituiamolo con quello nuovo. Salviamo il file con CTRL+X, poi Y e Invio.\nPer evitare di dover ricordare l\u0026rsquo;indirizzo IP del nodo (che potrebbe cambiare nel tempo), installeremo un servizio chiamato Avahi. Questo ci permetterà di collegarci al dispositivo semplicemente usando il suo nome seguito da .local (ad esempio: giuseppe@bitcoin-nodo.local). Per farlo digitiamo nel terminale:\nsudo apt install avahi-daemon -y Attendiamo qualche secondo, ad installazione terminata riavviamo il sistema:\nsudo reboot Attendiamo qualche secondo e riproviamo ad effettuare il collegamento, adesso nel campo HOSTNAME inseriamo il nome scelto della macchina (es. bitcoin-nodo) seguito da .local.\nVerifica delle prestazioni del disco (SSD) Per far girare un nodo Bitcoin in modo efficiente, non basta avere molto spazio; è essenziale che la comunicazione tra il dispositivo ARM e l\u0026rsquo;SSD sia rapida. Un disco lento causerebbe ritardi nella validazione dei blocchi e potenziali blocchi del sistema. Di norma, il primo disco USB collegato viene identificato come /dev/sda. Verifichiamolo elencando i dispositivi di archiviazione:\nlsblk -pli A video riceveremo una risposta simile a questa:\nOra misuriamo la velocità di lettura sequenziale del disco. Utilizzeremo lo strumento hdparm, per prima cosa installiamolo:\nsudo apt install hdparm -y Successivamente digitiamo il seguente comando cambiandosda con il nome del disco se diverso:\nsudo hdparm -t --direct /dev/sda A video riceveremo una risposta simile:\nCome interpretare i risultati:\nSotto i 50 MB/s: Prestazioni scarse. Probabilmente state usando una MicroSD o un adattatore USB 2.0. La sincronizzazione sarà estremamente lenta. Tra 100 e 150 MB/s: Prestazioni accettabili. Il nodo funzionerà, ma la fase iniziale richiederà pazienza. Sopra i 200 MB/s: Ottimo. State sfruttando correttamente il protocollo USB 3.0 e un buon SSD. Questa è la velocità ideale per un\u0026rsquo;esperienza fluida. Cartella dati Tutti i dati del nostro nodo (la blockchain, i database e le configurazioni) verranno salvati in una cartella dedicata chiamata /data.\nPerché?\nSicurezza: I dati non si trovano all\u0026rsquo;interno della cartella home di un utente specifico. Portabilità: È molto più semplice spostare l\u0026rsquo;intera blockchain su un altro disco in futuro, poiché basterà \u0026ldquo;montare\u0026rdquo; il nuovo supporto direttamente in /data. Creiamo la cartella alla radice del sistema:\nsudo mkdir /data Ed infine dobbiamo assegnare la proprietà di questa cartella al nostro utente, in modo che il software Bitcoin possa scriverci dentro senza restrizioni:\nsudo chown giuseppe:giuseppe /data Ora la cartella è pronta \u0026ldquo;appartiene\u0026rdquo; al nostro utente, garantendo che i processi del nodo abbiano i permessi necessari per operare correttamente.\nSicurezza Un Nodo dev\u0026rsquo;essere protetto da attacchi esterni per farlo utilizzeremo due strumenti molto potenti, un firewall (UFW) per chiudere le porte non necessarie ed un reverse proxy (Nginx) per crittografare tutte le comunicazioni web.\nUFW Un firewall controlla il tipo di traffico esterno accettato dal computer e quali applicazioni possono inviare dati. Per impostazione predefinita, molte porte di rete sono aperte e in ascolto delle connessioni in entrata. La chiusura delle porte non necessarie può mitigare molte potenziali vulnerabilità del sistema.\nPer prima cosa, installiamo “ufw” sul nostro server, quindi nel terminale digitiamo:\nsudo apt-get install ufw -y Ora configuriamolo seguendo questi passaggi, per prima cosa disabilitiamo i log (per evitare di scrivere inutilmente sul disco e preservarne la durata):\nsudo ufw logging off Successivamente permettiamo l\u0026rsquo;accesso SSH sulla porta 22/tcp:\nsudo ufw allow 22/tcp comment \u0026#39;SSH\u0026#39; Attiviamo il firewall con il comando:\nsudo ufw enable Ed infine verifichiamo lo stato:\nsudo ufw status verbose A video riceveremo una risposta simile a questa:\nNGINX Molte interfacce che useremo in futuro (come il Block Explorer) trasmettono dati sensibili. Anche se lo useremo solo nella nostra rete di casa, è bene che la comunicazione sia criptata. Useremo Nginx come \u0026ldquo;Reverse Proxy\u0026rdquo;, lui si occuperà di creare una connessione sicura (SSL/TLS) verso l\u0026rsquo;esterno, mentre parlerà \u0026ldquo;in chiaro\u0026rdquo; con i servizi interni al nodo.\nPer prima cosa installiamo nginx:\nsudo apt update \u0026amp;\u0026amp; sudo apt install nginx libnginx-mod-stream -y Verifichiamo che l\u0026rsquo;installazione sia andata a buon fine digitando il comando:\nsudo nginx -v Creiamo un certificato che cripti la connessione, sarà valido per 10 anni:\nsudo openssl req -x509 -nodes -newkey rsa:4096 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -subj \u0026#34;/CN=localhost\u0026#34; -days 3650 A questo punto puliamo la configurazione nginx esistente e creiamone una nuova:\nsudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak sudo nano /etc/nginx/nginx.conf Incolliamo il seguente contenuto:\nuser www-data; worker_processes 1; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; } stream { ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 4h; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; include /etc/nginx/streams-enabled/*.conf; Creiamo la cartella per i futuri moduli \u0026ldquo;stream\u0026rdquo; e rimuoviamo la configurazione di default che non ci serve:\nsudo mkdir /etc/nginx/streams-enabled sudo rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default Adesso verifichiamo che non ci siano errori di sintassi:\nsudo nginx -t Privacy e anonimato Gestire un nodo Bitcoin a casa ci rende sovrani, ma comunica al mondo (e al tuo fornitore internet) che in quella casa c\u0026rsquo;è qualcuno che possiede Bitcoin. Utilizzando servizi come iplocation.net, il tuo indirizzo fisico può essere determinato con precisione. Per proteggere la nostra sicurezza fisica e digitale, instraderemo il traffico del nodo attraverso le reti anonime Tor e I2P.\nInstallazione e configurazione di Tor TOR, ci consente di anonimizzare il traffico Internet instradandolo attraverso una rete di nodi, nascondendo la nostra posizione e il profilo di utilizzo.\nNon useremo la versione nei repository standard (spesso obsoleta), ma quella ufficiale del Tor Project, per prima cosa digitiamo:\nsudo apt install apt-transport-https gpg -y Adesso andiamo ad aggiungere i repository (specifici per ARM64):\nsudo nano /etc/apt/sources.list.d/tor.list Incolliamo il seguente contenuto:\ndeb [arch=arm64 signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org trixie main deb-src [arch=arm64 signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org trixie main A questo punto accediamo come utente root temporaneamente per aggiungere la chiave GPG utilizzata per firmare i pacchetti, quindi digitiamo questi 3 comandi da terminale:\nsudo su wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg \u0026gt;/dev/null exit A questo punto aggiorniamo il repository apt ed installiamo Tor e Tor keyring:\nsudo apt update \u0026amp;\u0026amp; sudo apt install tor deb.torproject.org-keyring -y Verifichiamo che tutto sia stato installato correttamente con il comando:\ntor --version Effettuata l\u0026rsquo;installazione di TOR, provvederemo con la configurazione per Bitcoin Core, affinché comunichi direttamente con il demone per instradare tutto il traffico attraverso la rete Tor. Dobbiamo consentire a Tor di accettare le istruzioni attraverso la sua porta di controllo, con la corretta autenticazione.\nPer farlo andiamo a modificare la configurazione Tor, quindi da terminale digitiamo:\nsudo nano +56 /etc/tor/torrc --linenumbers Andiamo ad eliminare il simbolo \u0026ldquo;#\u0026rdquo; dalla riga Nr. 56 ControlPort 9051 ed aggiungiamo le seguenti voci in basso:\nCookieAuthentication 1 CookieAuthFileGroupReadable 1 Ricarichiamo Tor per rendere effettive le modifiche:\nsudo systemctl reload tor Assicuriamoci che il servizio Tor funzioni e sia in ascolto sulle porte predefinite 9050 E 9051\nsudo ss -tulpn | grep tor | grep LISTEN Il Progetto I2P (Invisible Internet Project) Mentre Tor è ottimo per uscire verso internet in modo anonimo, I2P è una rete \u0026ldquo;dentro\u0026rdquo; internet, perfetta per le connessioni peer-to-peer tra nodi Bitcoin. Useremo i2pd, una versione leggera scritta in C++.\nPer prima cosa aggiungiamo il repository:\nwget -q -O - https://repo.i2pd.xyz/.help/add_repo | sudo bash -s - Successivamente installiamo il pacchetto:\nsudo apt update \u0026amp;\u0026amp; sudo apt install i2pd -y Verifichiamo che i2pd sia stato installato con successo attraverso il comando:\ni2pd --version Assicuriamoci che che il servizio funzioni e sia in ascolto sulle porte predefinite:\nsudo ss -tulpn | grep i2pd Aggiornamento e manutenzione del Sistema La sicurezza di un nodo Bitcoin passa prima di tutto dalla solidità del sistema operativo sottostante. È fondamentale mantenere il software sempre aggiornato per proteggersi da vulnerabilità note.\nEseguite il seguente comando per aggiornare l\u0026rsquo;elenco dei pacchetti e installare le versioni più recenti di tutto il software presente:\nsudo apt update \u0026amp;\u0026amp; sudo apt full-upgrade -y Gestione dei servizi (need restart) Durante il processo di aggiornamento, potrebbe apparire un banner testuale (solitamente su sfondo blu o viola) con il messaggio: \u0026ldquo;Which services should be restarted?\u0026rdquo; (Quali servizi devono essere riavviati?).\nQuesto accade quando vengono aggiornate librerie di sistema utilizzate da processi già in esecuzione. Ecco come comportarsi:\nViene mostrato un elenco di servizi contrassegnati da un asterisco [*]. Manteniamo sempre la selezione predefinita e premiamo semplicemente ENTER (Invio) per confermare il riavvio di tutti gli elementi necessari. Nota finale: Al termine di un aggiornamento corposo, è sempre una buona pratica riavviare l\u0026rsquo;intera macchina per assicurarsi che tutti i nuovi pacchetti siano caricati correttamente:\nsudo reboot ","permalink":"https://giuxfila.com/blog/bitcoin-node-arm-preparazione-sistema/","summary":"\u003cp\u003eIn questa serie di tutorial vedremo come installare e avviare un Full Node di Bitcoin su qualsiasi piattaforma ARM compatibile (come Raspberry Pi, Pine64, Odroid, Orange Pi, Banana Pi), utilizzando una distribuzione Linux basata su Debian e la riga di comando.\u003c/p\u003e\n\u003cp\u003eQuesto è l’episodio 1 di 4, dove vedremo quale sistema operativo installare, come mettere in sicurezza il sistema e come migliorare la privacy utilizzando strumenti come Tor e I2P.\u003c/p\u003e","title":"Bitcoin Full Node su ARM #1 — Preparazione sistema"},{"content":"In un ecosistema selfhosted è indispensabile (a mio avviso) avere un sistema di notifiche affidabile per monitorare l\u0026rsquo;accesso dei propri server e VPS.\nIn questo articolo, vedremo come integrare Gotify con SSH per ricevere le notifiche in maniera istantanena ogni volta che viene effettuato o sbagliato un accesso, questo ci permette di tenere sotto controllo l’attività dei nostri sistemi senza dover continuamente consultare i log.\nRequisiti: Server Gotify; Un VPS o una VM Linux; Installazione Per prima cosa, accediamo alla dashboard del nostro server Gotify da web-ui e, dal menù interattivo in alto a destra, rechiamoci sulla voce \u0026ldquo;CLIENTS\u0026rdquo; clicchiamo successivamente su \u0026ldquo;CREATE APPLICATION\u0026rdquo;:\nDal menù di creazione inseriamo, un nome ed una descrizione (facoltativo), successivamente clicchiamo su \u0026ldquo;Create\u0026rdquo;:\nFinita di creare l\u0026rsquo;applicazione sul server gotify andiamo a copiarci il token ed ad appuntarcelo, ci servirà successivamente.\nA questo punto effettuiamo l\u0026rsquo;accesso al server che vogliamo collegare con le notifiche e, dal nostro terminale, digitiamo il seguente comando:\nsudo nano /usr/local/bin/notifica-ssh Copiamo ed incolliamo il seguente contenuto:\n#!/bin/bash exec \u0026amp;\u0026gt; /dev/null Gotify_URL=\u0026#39;https://gotify.domains.com\u0026#39; # Inseririamo l\u0026#39;url del nostro server gotify Gotify_Token=\u0026#39;gotify-app-token\u0026#39; # Inseririamo il token copiato in precedenza if [ \u0026#34;$PAM_TYPE\u0026#34; = \u0026#34;open_session\u0026#34; ]; then NOW=$(date +\u0026#34;%d/%m/%Y %H:%M\u0026#34;) TITLE=\u0026#34;Accesso SSH su $(hostname)\u0026#34; MESSAGE=\u0026#34;Utente: $PAM_USER IP Remoto: $PAM_RHOST Ora: $NOW\u0026#34; /usr/bin/curl -X POST -s \\ -F \u0026#34;title=$TITLE\u0026#34; \\ -F \u0026#34;message=$MESSAGE\u0026#34; \\ -F \u0026#34;priority=5\u0026#34; \\ \u0026#34;${Gotify_URL}/message?token=${Gotify_Token}\u0026#34; fi Modifichiamo l\u0026rsquo;URL ed il Token, salviamo il file cliccando la combinazione di tasti CTRL + X e successivamente confermiamo con \u0026ldquo;Y\u0026rdquo;.\nAdesso dobbiamo rendere eseguibile il file che abbiamo appena creato quindi lanciamo il comando:\nchmod +x /usr/local/bin/notifica-ssh Successivamente andiamo nel file di configurazione PAM (Pluggable Authentication Modules) e gli diciamo di eseguire il programma sshnotif ogni volta che qualcuno apre una sessione SSH:\nsudo nano /etc/pam.d/sshd Inseriamo la password, se richiesta ed aggiungiamo (all\u0026rsquo;ultimo) la seguente linea:\n# 👉 Nota: viene usato optional per evitare che il login SSH fallisca. session optional pam_exec.so /usr/local/bin/notifica-ssh Effettuiamo un reload del servizio ssh:\nsudo systemctl reload sshd Adesso quando accederemo tramite SSH riceveremo una bella notifica sul nostro server Gotify:\n","permalink":"https://giuxfila.com/blog/gotify-ssh/","summary":"\u003cp\u003eIn un ecosistema selfhosted è indispensabile (a mio avviso) avere un sistema di notifiche affidabile per monitorare l\u0026rsquo;accesso dei propri server e VPS.\u003c/p\u003e\n\u003cp\u003eIn questo articolo, vedremo come integrare \u003ca href=\"https://giuxfila.com/blog/installare-gotify/\"\u003eGotify\u003c/a\u003e con SSH per ricevere le notifiche in maniera istantanena ogni volta che viene effettuato o sbagliato un accesso, questo ci permette di tenere sotto controllo l’attività dei nostri sistemi senza dover continuamente consultare i log.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"requisiti\"\u003eRequisiti:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://giuxfila.com/blog/installare-gotify/\"\u003eServer Gotify\u003c/a\u003e;\u003c/li\u003e\n\u003cli\u003eUn VPS o una VM Linux;\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"installazione\"\u003eInstallazione\u003c/h2\u003e\n\u003cp\u003ePer prima cosa, accediamo alla dashboard del nostro server Gotify da web-ui e, dal menù interattivo in alto a destra, rechiamoci sulla voce \u0026ldquo;CLIENTS\u0026rdquo; clicchiamo successivamente su \u0026ldquo;CREATE APPLICATION\u0026rdquo;:\u003c/p\u003e","title":"Gotify + SSH: Come ricevere le notifiche sugli accessi"},{"content":"Gestire il proprio storage a oggetti compatibile con S3 ci permette di avere il pieno controllo su dove risiedono i nostri dati, elimina i costi per singola richiesta e rimuove la dipendenza da provider cloud esterni. In questa guida vedremo l\u0026rsquo;installazione di Garage su un singolo nodo.\nCos\u0026rsquo;è Garage Garage è un sistema di storage a oggetti distribuito e leggero, progettato specificamente per girare su hardware comune, anche su nodi geograficamente separati, implementa l\u0026rsquo;API S3, quindi qualsiasi strumento o applicazione esistente che comunica con AWS S3 funzionerà con Garage senza modifiche.\nA differenza di soluzioni più pesanti come Ceph, Garage è pensato specificamente per cluster distribuiti su più aree geografiche (anche con connessioni non eccellenti) e per carichi di lavoro medio-piccoli.\nPerché scegliere Garage Esistono diverse soluzioni S3 self-hosted (MinIO è la più popolare), ma Garage presenta alcune caratteristiche distintive:\nScritto in Rust: è efficiente in termini di memoria e ha un\u0026rsquo;impronta binaria ridotta. Progettato per distribuzioni geo-distribuite: utilizza un modello di consistenza debole. Binario singolo: nessuna dipendenza esterna. Gestione dei guasti: gestisce il fallimento dei nodi con grazia e senza interventi manuali. Licenza Apache 2.0: nessuna funzionalità riservata solo alla versione \u0026ldquo;enterprise\u0026rdquo;. Per piccoli team o homelab, la semplicità di Garage è il suo principale punto di forza.\nRequisiti Server Ubuntu 22.04 o 24.04. Almeno 1 GB di RAM (consigliati 2+ GB). Volume di storage montato su un percorso noto (es. /data). Porte del firewall aperte: 3900 (RPC), 3901 (S3), 3902 (web), 3903 (admin). Installazione e configurazione Per prima cosa andiamo a scaricare l\u0026rsquo;ultima versione del binario di Garage, quindi dal terminale:\nwget https://garagehq.deuxfleurs.fr/_releases/v2.2.0/x86_64-unknown-linux-musl/garage Una volta effettuato il download spostiamo il binario all\u0026rsquo;interno della directory /usr/local/bin/, quindi digitiamo sul terminale:`\nsudo mv garage /usr/local/bin/garage E successivamente rendiamolo eseguibile:\nsudo chmod +x /usr/local/bin/garage Adesso verifichiamo che tutto funzioni correttamente:\ngarage --version Riceveremo a video una risposta simile a questa:\nE\u0026rsquo; buona norma far girare Garage con un utente dedicato, quindi andiamo a creare un utente col nome garage, sul nostro terminale digitiamo:\nsudo useradd --system --no-create-home --shell /bin/false garage Successivamente creiamo le varie cartelle che ci serviranno per dati e metadati:\nsudo mkdir -p /data/garage/data sudo mkdir -p /data/garage/meta sudo mkdir -p /etc/garage Adesso impostiamo i permessi all\u0026rsquo;utente garage creato poco fa:\nsudo chown -R garage:garage /data/garage sudo chown -R garage:garage /etc/garage Passiamo adesso alla configurazione di Garage, per farlo andiamo a creare un file di config TOML:\nsudo nano /etc/garage/garage.toml Ed inseriamo il seguente contenuto:\n# File di configurazione di Garage (giuxfila.com/blog/installare-garage) # Definiamo quante copie di ogni oggetto vengono salvate, # lasciare 1 per una config a nodo singolo # in un cluster in produzione il valore standard da inserire è 3 replication_factor = 1 # Porta RPC per la comunicazione interna al cluster rpc_bind_addr = \u0026#34;0.0.0.0:3900\u0026#34; # Chiave segreta per l\u0026#39;autenticazione del cluster - generatela con: openssl rand -hex 32 rpc_secret = \u0026#34;il_tuo_segreto_generato_qui\u0026#34; # Directory per i metadati del database metadata_dir = \u0026#34;/data/garage/meta\u0026#34; # Directory per lo storage dei dati degli oggetti data_dir = \u0026#34;/data/garage/data\u0026#34; [s3_api] # Indirizzo di bind dell\u0026#39;API S3 api_bind_addr = \u0026#34;0.0.0.0:3901\u0026#34; # Identificatore della regione S3 (qualsiasi stringa) s3_region = \u0026#34;us-east-1\u0026#34; # Abilita gli URL stile: bucket.s3.esempio.com (opzionale) # s3_root_domain = \u0026#34;.s3.esempio.com\u0026#34; [s3_web] # Endpoint web per l\u0026#39;hosting di siti statici (opzionale) bind_addr = \u0026#34;0.0.0.0:3902\u0026#34; root_domain = \u0026#34;.web.esempio.com\u0026#34; index = \u0026#34;index.html\u0026#34; [admin] # Porta dell\u0026#39;API di amministrazione api_bind_addr = \u0026#34;0.0.0.0:3903\u0026#34; Salviamo il file con CTRL+X e successivamente confermiamo con \u0026ldquo;Y\u0026rdquo;.\nMi raccomando, genera un secret RPC abbastanza forte col comando openssl rand -hex 32 e sostituisci il_tuo_segreto_generato_qui con l\u0026rsquo;output ottenuto.\nA questo punto andiamo a creare il servizio Systemd, quindi sul terminale digitiamo:\nsudo nano /etc/systemd/system/garage.service Ed inseriamo il seguente contenuto:\n[Unit] Description=Garage S3-compatible object storage After=network.target Documentation=https://garagehq.deuxfleurs.fr/documentation/ [Service] Type=simple User=garage Group=garage # Path to the config file ExecStart=/usr/local/bin/garage -c /etc/garage/garage.toml server Restart=on-failure RestartSec=5 # Resource limits LimitNOFILE=65536 NoNewPrivileges=true PrivateTmp=true ProtectSystem=strict ReadWritePaths=/data/garage [Install] WantedBy=multi-user.target Salviamo il file con CTRL+X e successivamente confermiamo con \u0026ldquo;Y\u0026rdquo;, a questo dobbiamo solamente abilitare il servizio ed avviarlo:\nsudo systemctl daemon-reload sudo systemctl enable --now garage Verifichiamo che tutto sia partito senza intoppi:\nsudo systemctl status garage riceveremo a video una risposta simile a questa:\nAnche per un setup a nodo singolo, dobbiamo definire una zona ed una capacità. Per prima cosa dobbiamo ottenere l\u0026rsquo;id del nodo:\nsudo -u garage garage -c /etc/garage/garage.toml node id Riceveremo a video una risposta simile a questa:\nL\u0026rsquo;ID del nodo è la stringa esadecimale prima della @, quindi impostiamo la zona e la capacità digitando:\nsudo -u garage garage -c /etc/garage/garage.toml layout assign \\ 8f68d2fbdc5baf9c484960da61f428696c7655370792982986ee071434b23b9b \\ --zone dc1 \\ --capacity 1024 Attenzione: --capacity 1024(è il \u0026ldquo;peso\u0026rdquo; del nodo), indica quanta quota di dati questo nodo deve ospitare, espressa in GB, nelle recenti release il valore minimo richiesto è di 1024.\nA video riceveremo una risposta simile a questa:\nAdesso andiamo verifichiamo il layout proposto con il comando:\nsudo -u garage garage -c /etc/garage/garage.toml layout show E successivamente applichiamo definitivamente il layout:\nsudo -u garage garage -c /etc/garage/garage.toml layout apply --version 1 Come ultimo procedimento andiamo a verificare lo stato del cluster:\nsudo -u garage garage -c /etc/garage/garage.toml status Creazione del bucket e chiavi d\u0026rsquo;accesso Una volta effettuata la prima configurazione, non ci resta che creare il nostro primo bucket di dati, per farlo digitiamo:\nsudo -u garage garage -c /etc/garage/garage.toml bucket create mio-bucket Per verificare tutti i bucket possiamo digitare il comando:\nsudo -u garage garage -c /etc/garage/garage.toml bucket list A questo punto generiamo le credenziali d\u0026rsquo;accesso, che andranno utilizzate poi nei programmi o script:\nsudo -u garage garage -c /etc/garage/garage.toml key create mia-chiave Importante: Questo comando restituirà un Access Key ID e una Secret Access Key. Copiamoli subito e salviamoli in un posto sicuro (come un password manager), perché la Secret Key non verrà più mostrata.\nInfine dobbiamo collegare questa chiave al bucket e concedere le autorizzazioni di lettura e scrittura:\nsudo -u garage garage -c /etc/garage/garage.toml bucket allow \\ mio-bucket \\ --read \\ --write \\ --key mia-chiave ","permalink":"https://giuxfila.com/blog/installare-garage/","summary":"\u003cp\u003eGestire il proprio storage a oggetti compatibile con S3 ci permette di avere il pieno controllo su dove risiedono i nostri dati, elimina i costi per singola richiesta e rimuove la dipendenza da provider cloud esterni. In questa guida vedremo l\u0026rsquo;installazione di Garage su un singolo nodo.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"cosè-garage\"\u003eCos\u0026rsquo;è Garage\u003c/h2\u003e\n\u003cp\u003eGarage è un sistema di storage a oggetti distribuito e leggero, progettato specificamente per girare su hardware comune, anche su nodi geograficamente separati, implementa l\u0026rsquo;API S3, quindi qualsiasi strumento o applicazione esistente che comunica con AWS S3 funzionerà con Garage senza modifiche.\u003c/p\u003e","title":"Come configurare lo storage compatibile con S3 Garage su Linux"},{"content":"Quando acquistiamo un server VPS o finiamo di configurare una VM con Linux, la sicurezza è il primo passo fondamentale. In questa guida completa, vedremo come proteggere il tuo sistema riducendo la superficie d’attacco con applicativi leggeri e configurazioni mirate.\nUtente sicuro con privilegi di amministratore Utilizzare costantemente l\u0026rsquo;utente root è come guidare un\u0026rsquo;auto senza cintura di sicurezza, un solo errore (come un rm -rf nella cartella sbagliata) e il sistema è compromesso. Il primo passo per il nostro hardening è creare un utente standard con poteri amministrativi limitati.\nInstallazione di \u0026ldquo;sudo\u0026rdquo; e creazione dell\u0026rsquo;utente Sudo (abbreviazione di super user do, ovvero esegui come super utente) è un programma per sistemi operativi Unix / Unix-like che consente agli utenti autorizzati di eseguire i comandi con i privilegi di un altro utente, solitamente utente root ovvero amministratore. Prima di procedere dobbiamo assicurarci di essere \u0026ldquo;loggati\u0026rdquo; con l\u0026rsquo;utente root quindi dal terminale lanciamo i seguenti comandi:\napt update \u0026amp;\u0026amp; apt install sudo -y A questo punto possiamo procedere con la creazione del nuovo utente (nel caso specifico di questa guida l\u0026rsquo;utente verrà chiamato giuseppe ricorda di cambiarlo con quello che preferisci), dal terminale:\nadduser giuseppe Impostiamo una password robusta per l’ utente e confermiamo con il tasto invio. (Non è obbligatorio inserire le altre informazioni richieste, andiamo avanti digitando il tasto invio ed infine confermiamo che tutte le informazioni sono corrette con Y).\nAdesso diamo il comando per privilegiare anche l’utente appena creato nei “sudoer” ovvero utenti con privilegi di amministratore:\nusermod -aG sudo giuseppe SSH (Secure Shell) Secure Shell (in gergo SSH) è un protocollo di rete che consente l’accesso remoto tramite una connessione crittografata, fornisce un’autenticazione robusta e supporta l’accesso remoto sicuro, l’esecuzione di comandi, il trasferimento di file, il controllo degli accessi, l’inoltro TCP/IP, ecc. E\u0026rsquo; lo standard per l\u0026rsquo;amministrazione remota, ma la classica password è un punto debole, può essere indovinata o colpita da attacchi automatizzati. L\u0026rsquo;utilizzo di una coppia di chiavi crittografiche (pubblica e privata) è il metodo più sicuro per autenticarsi.\nGenerazione della coppia di chiavi (Windows) Per generare una coppia di chiavi (pubblica e privata) sul nostro PC Windows utilizzeremo Puttygen, quindi procediamo con il download a seconda dell\u0026rsquo;architettura che usiamo 64-bit x86 o 32-bit x86, a fine download apriamo il programma (non ci sarà bisogno di installazione) ed avremo una schermata simile a questa:\nClicchiamo adesso sul pulsante (situato a destra) \u0026ldquo;Generate\u0026rdquo; e successivamente spostiamo continuamente il cursore del mouse all\u0026rsquo;interno della finestra fino al completamento della barra. Alla fine della procedura avremo una schermata così:\nAssegniamo una password alla chiave (nell\u0026rsquo;apposito box Key passphrase) e confermiamola in basso e clicchiamo sui due pulsanti \u0026ldquo;Save public key\u0026rdquo; e \u0026ldquo;Save private key\u0026rdquo;.\nSe possibile salviamo le chiavi su una chiavetta removibile per avere più sicurezza.\nA questo punto ci basterà copiare la chiave pubblica (cliccando con il tasto destro sulla schermata Public key for pasting into OpenSSH authorized_keys file):\nGenerazione della coppia di chiavi (macOS e Linux) Per generare una coppia di chiavi (pubblica e privata) sul nostro PC (macOS o Linux) dobbiamo per prima cosa aprire il terminale e digitare il seguente comando:\nssh-keygen -t rsa -b 2048 Quando richiesto di inserire una destinazione dove salvare le chiavi, premiamo invio per utilizzare la posizione predefinita, assegniamo una password alla chiave e confermiamola successivamente, alla fine dell\u0026rsquo;operazione avremo una schermata simile:\nA questo punto dobbiamo copiare la chiave pubblica, per farlo sempre dal terminale digitiamo:\ncat ~/.ssh/id_rsa.pub Il terminale ci farà vedere la nostra chiave pubblica, ci basterà copiare dal punto ssh-rsa fino alla fine:\nImportare la chiave pubblica sul server Una volta generate le chiavi (pubblica e privata) all\u0026rsquo;interno del nostro PC, dobbiamo andare a comunicare al nostro server la chiave pubblica. Per farlo accediamo tramite SSH, ed una volta dentro il server con l\u0026rsquo;utente giuseppe creiamo la cartella ssh:\nmkdir .ssh Limitiamo i permessi per lettura, scrittura ed esecuzione solo all\u0026rsquo;utente giuseppe:\nchmod 700 .ssh Adesso dobbiamo creare un file chiamato \u0026ldquo;authorized_keys\u0026rdquo; dove incollare le informazioni della chiave pubblica:\nnano .ssh/authorized_keys Per Windows, si deve incollare il contenuto presente su Puttygen (vedi qui) Per macOS e/o Linux, si deve incollare il contenuto presente nella chiave pubblica generata (vedi qui) Salviamo il file premendo la combinazione di tasti CTRL+X e poi “Y” per confermare il salvataggio. Andiamo adesso a limitare i permessi di lettura e scrittura solo per l\u0026rsquo;utente giuseppe:\nchmod 600 .ssh/authorized_keys Prima di uscire dal terminale effettuiamo una connessione con la chiave privata, se la connessione ha esito positivo possiamo procedere allo step successivo.\nConfigurazioni di sicurezza sshd Una volta salvata la chiave pubblica e testata, andiamo ad eliminare l\u0026rsquo;accesso tramite SSH per l\u0026rsquo;utente \u0026ldquo;root\u0026rdquo; ed a disabilitare l\u0026rsquo;accesso per gli utenti con password, andiamo quindi a creare un file \u0026ldquo;custom\u0026rdquo; nelle configurazioni ssh, da terminale:\nsudo nano /etc/ssh/sshd_config.d/custom.conf Aggiungiamo il seguente contenuto:\nPermitRootLogin no UsePAM no PasswordAuthentication no Salviamo il file premendo la combinazione di tasti CTRL+X e poi “Y” per confermare il salvataggio e successivamente lanciamo il comando:\nsudo sshd -t Se non il terminale non ci fa vedere alcun output vuol dire che la config va bene. Se invece vediamo qualcosa del tipo /etc/ssh/sshd_config line XX: unsupported option \u0026quot;XXX\u0026quot; ciò significa che qualcosa non va, ci basterà eliminare il il file precedente e riscriverlo.\nAdesso riavviamo il servizio SSH per applicare le modifiche:\nsudo systemctl restart sshd Usciamo digitando exit o logout e ri-effettuiamo nuovamente l\u0026rsquo;accesso.\nUncomplicated Firewall (UFW) Un firewall controlla il tipo di traffico esterno accettato dal computer e quali applicazioni possono inviare dati. Per impostazione predefinita, molte porte di rete sono aperte e in ascolto delle connessioni in entrata. La chiusura delle porte non necessarie può mitigare molte potenziali vulnerabilità del sistema.\nPer prima cosa, installiamo \u0026ldquo;ufw\u0026rdquo; sul nostro server, quindi nel terminale digitiamo:\nsudo apt-get install ufw -y Attendiamo il completamento dell\u0026rsquo;installazione e verifichiamo con il comando:\nsudo ufw version A video riceveremo una risposta simile a questa:\nAndiamo a creare la prima regola, ovvero consentiamo solo la connessione ad SSH in entrata, digitiamo:\nsudo ufw allow 22/tcp comment \u0026#39;SSH\u0026#39; Riceveremo questa risposta a video:\nAdesso dobbiamo abilitare \u0026ldquo;UFW\u0026rdquo; affinché le modifiche apportate abbiano effetto, quando il prompt mostra \u0026quot;Command may disrupt existing ssh connections. Proceed with operation (y|n)?\u0026quot;, premere \u0026quot;y\u0026quot; ed invio:\nsudo ufw enable A video riceveremo una risposta simile a questa:\nPer essere sicuri che \u0026ldquo;UFW\u0026rdquo; sia attivo ed abilitato lanciamo il comando:\nsudo ufw status verbose A video riceveremo una risposta simile:\nFail2Ban Fail2ban (Sito ufficiale) è un software che è nato per permettere di bloccare gli host che stanno tentando di effettuare un attacco di brute force via SSH. Questo genere di attacco si basa su continui tentativi di accesso, provando o l’username root con password probabili (come password, root, toor e così via) oppure tramite coppie di username/password conosciute (create, ad esempio, da malware o da rootkit).\nInstallazione e configurazione di fail2ban Andiamo a scaricare ed installare il software con il comando:\nsudo apt-get install fail2ban -y Terminato il processo di installazione, entriamo nella directory di fail2ban:\ncd /etc/fail2ban Copiamo il file di configurazione:\nsudo cp jail.conf jail.local Adesso andiamo a modificarlo:\nsudo nano jail.local Nella schermata che ci appare adesso dobbiamo modificare i parametri:\nbantime = 1000 maxretry = 5 Andiamo ad abilitare ed avviare il servizio di fail2ban affinché le modifiche siano effettive:\nsudo systemctl enable fail2ban.service sudo systemctl start fail2ban.service Verifichiamo che tutto sia partito senza problemi:\nsudo systemctl status fail2ban.service A video riceveremo una risposta simile a questa:\nPer vedere i logs e gli eventuali ban ci basterà digitare il comando sul terminale:\nsudo tail /var/log/fail2ban.log A video riceveremo una risposta simile a questa:\n","permalink":"https://giuxfila.com/blog/sicurezza-server/","summary":"\u003cp\u003eQuando acquistiamo un server VPS o finiamo di configurare una VM con Linux, la sicurezza è il primo passo fondamentale. In questa guida completa, vedremo come proteggere il tuo sistema riducendo la superficie d’attacco con applicativi leggeri e configurazioni mirate.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"utente-sicuro-con-privilegi-di-amministratore\"\u003eUtente sicuro con privilegi di amministratore\u003c/h2\u003e\n\u003cp\u003eUtilizzare costantemente l\u0026rsquo;utente \u003ccode\u003eroot\u003c/code\u003e è come guidare un\u0026rsquo;auto senza cintura di sicurezza, un solo errore (come un \u003ccode\u003erm -rf\u003c/code\u003e nella cartella sbagliata) e il sistema è compromesso. Il primo passo per il nostro \u003cem\u003ehardening\u003c/em\u003e è creare un utente standard con poteri amministrativi limitati.\u003c/p\u003e","title":"Come rendere sicuro un server"},{"content":"Se c\u0026rsquo;è uno scudo che protegge le nostre informazioni personali, finanziarie e professionali dai pirati informatici, quello è la password. La necessità di utilizzare credenziali sicure dovrebbe essere un concetto ovvio per tutti, eppure le innumerevoli violazioni di dati che leggiamo ogni giorno suggeriscono che la consapevolezza degli utenti è ancora pericolosamente distante dalle reali minacce del Web. Una password robusta non è solo una formalità, è ciò che impedisce l\u0026rsquo;accesso ai nostri dati sensibili come indirizzi, numeri di telefono, dettagli delle carte di credito e molto altro. I criminali informatici utilizzano tecniche avanzate come gli attacchi \u0026ldquo;Brute Force\u0026rdquo;, in cui software automatizzati tentano milioni di combinazioni per decifrare le chiavi d\u0026rsquo;accesso. In questo scenario, una password lunga e complessa diventa un ostacolo quasi insormontabile, portando il sistema di sicurezza a bloccare l\u0026rsquo;account prima che l\u0026rsquo;attacco abbia successo. Una buona protezione è efficace anche contro gli \u0026ldquo;attacchi a dizionario\u0026rdquo;, che setacciano database di parole comuni e frasi fatte per indovinare gli accessi più prevedibili.\nCome si creano le password sicure Per determinare la reale sicurezza di una chiave d\u0026rsquo;accesso, si utilizza il concetto di entropia. Misurata in bit, l\u0026rsquo;entropia indica quanto una password sia matematicamente imprevedibile: più alto è il numero di bit, più tempo sarà necessario per violarla.\nMentre una password breve ha un\u0026rsquo;entropia bassa, una combinazione complessa è il peggior incubo per chi utilizza attacchi brute force. Questi sistemi procedono per \u0026ldquo;tentativi ed errori\u0026rdquo;: se l\u0026rsquo;entropia è sufficientemente alta, il tempo necessario per indovinare la sequenza può passare da pochi secondi a diverse migliaia di anni.\nI pilastri di una password sicura Per massimizzare l\u0026rsquo;entropia, bisogna seguire questi fattori chiave:\nLunghezza: Punta ad almeno 12-15 caratteri. Complessità: Usa un mix di lettere (maiuscole e minuscole), numeri e simboli. Imprevedibilità: Evitiamo sequenze ovvie come “123456” o “password”. Privacy: Non dobbiamo inserire date di nascita, nomi di animali domestici o anniversari. Unicità: Ogni account deve avere una password distinta. Il riutilizzo delle password è il modo più rapido per subire un \u0026ldquo;effetto domino\u0026rdquo; in caso di data breach. Tecniche Mnemoniche: Sicurezza a prova di memoria Spesso password come h5?fxjhYH68%J@ sono sicure ma impossibili da ricordare. Una soluzione efficace è creare una frase mnemonica.\nEsempio: \u0026ldquo;Il mio cane mangia 2 kg di crocchette ogni giorno!\u0026rdquo; Trasformazione: Prendi la prima lettera di ogni parola e aggiungi simboli: Imcm2kdcog!.\nAssociazione visuale: Immaginare visivamente la scena del cane che mangia ti aiuterà a richiamare la password all\u0026rsquo;istante. L\u0026rsquo;alternativa: Le Passphrase Casuali Un\u0026rsquo;altra opzione eccellente è la Passphrase: una stringa di parole casuali ma memorabili.\nEsempio: Leone Nero Pasta Pioggia\nMantenere gli spazi tra le parole aggiunge ulteriore complessità e lunghezza, aumentando drasticamente i bit di entropia. Uno strumento \u0026ldquo;low-tech\u0026rdquo; eccellente per generare queste frasi in modo realmente casuale è il metodo Diceware, che utilizza il lancio di dadi reali per selezionare le parole da una lista predefinita.\nCome visto sopra il fumetto, le passphrase casuali \u0026ldquo;alla Diceware\u0026rdquo; sono sia sicure che facili da ricordare.\nUtilizzare un buon gestore di password In teoria, ora abbiamo tutti gli strumenti per creare una password forte e memorizzabile. Tuttavia, la realtà digitale ci impone un\u0026rsquo;altra regola ferrea: ogni singolo servizio deve avere una password diversa. Nella pratica, ricordare decine (o centinaia) di combinazioni complesse come quelle che abbiamo visto è impossibile per la mente umana. È qui che entra in gioco il Gestore di Password. Utilizzare un Password Manager non è un segno di pigrizia, ma una scelta di sicurezza avanzata, infatti, questi software ci permettono di:\nArchiviare in modo sicuro le nostre password: Tutte le nostre credenziali sono custodite in un \u0026ldquo;caveau\u0026rdquo; crittografato. Generare casualità: Creano istantaneamente password ad altissima entropia che non dovremo mai digitare a mano. Accesso unico: Bisognerà ricordare un\u0026rsquo;unica Master Password (per la quale ti suggerisco di usare la tecnica della Passphrase vista sopra). Affidarsi a un gestore di password elimina l\u0026rsquo;errore umano più comune: il riutilizzo delle credenziali su più siti, che è la causa principale del successo dei cyber-attacchi oggi.\nQual è il miglior gestore di password? Il mercato offre moltissime soluzioni basate sul cloud, ma se la priorità è la massima sicurezza, il mio punto di vista è netto: un gestore di password deve essere offline e crittografato. Affidare le proprie chiavi d\u0026rsquo;accesso a un server remoto significa, in ultima analisi, doversi fidare di un’azienda terza. Per chi cerca il controllo totale, la soluzione migliore è senza dubbio KeePassXC.\nPerché KeePassXC? Database locale: Le tue password non risiedono su internet, ma in un file crittografato salvato esclusivamente sui tuoi dispositivi. Se i server di una grande azienda vengono hackerati, il tuo database è al sicuro perché non è lì. Crittografia di grado militare: Utilizza standard come AES-256 e ChaCha20, rendendo il file virtualmente impenetrabile senza la Master Password. Open Source: Essendo un software a codice aperto, chiunque può verificarne l\u0026rsquo;integrità. Non ci sono \u0026ldquo;backdoor\u0026rdquo; o funzioni nascoste. Zero costi e zero abbonamenti: È un software libero che non richiede canoni mensili, offrendo una sicurezza superiore a molte soluzioni a pagamento. ","permalink":"https://giuxfila.com/blog/creare-conservare-password-sicure/","summary":"\u003cp\u003eSe c\u0026rsquo;è uno scudo che protegge le nostre informazioni personali, finanziarie e professionali dai pirati informatici, quello è la password.\nLa necessità di utilizzare credenziali sicure dovrebbe essere un concetto ovvio per tutti, eppure le innumerevoli violazioni di dati che leggiamo ogni giorno suggeriscono che la consapevolezza degli utenti è ancora pericolosamente distante dalle reali minacce del Web.\nUna password robusta non è solo una formalità, è ciò che impedisce l\u0026rsquo;accesso ai nostri dati sensibili come indirizzi, numeri di telefono, dettagli delle carte di credito e molto altro.\nI criminali informatici utilizzano tecniche avanzate come gli attacchi \u0026ldquo;Brute Force\u0026rdquo;, in cui software automatizzati tentano milioni di combinazioni per decifrare le chiavi d\u0026rsquo;accesso. In questo scenario, una password lunga e complessa diventa un ostacolo quasi insormontabile, portando il sistema di sicurezza a bloccare l\u0026rsquo;account prima che l\u0026rsquo;attacco abbia successo. Una buona protezione è efficace anche contro gli \u0026ldquo;attacchi a dizionario\u0026rdquo;, che setacciano database di parole comuni e frasi fatte per indovinare gli accessi più prevedibili.\u003c/p\u003e","title":"Come creare e conservare password sicure [Guida definitiva]"},{"content":"Ti sei accorto di avere un servizio di \u0026ldquo;Navigazione sicura\u0026rdquo; come (TIM Navigazione sicura) attivo sulla tua linea fissa e/o mobile ma vuoi disattivarlo? Sei nel posto giusto. Nelle prossime righe vedremo insieme i passaggi esatti per disdire questo pacchetto: mettiamoci subito all\u0026rsquo;opera e riprendiamoci la libertà di navigazione.\nDisattivare TIM Navigazione sicura da PC Per disattivare l\u0026rsquo;opzione di Navigazione sicura di TM ci basterà accedere al sito MyTim, ed effettuare l\u0026rsquo;accesso con i nostri dati personali (email e password). All\u0026rsquo;interno della pagina MyTim troveremo sulla sinistra una colonna con diverse voci, clicchiamo su Linea e poi su TV e servizi:\nArrivati a questo punto dovremmo vedere la voce relativa al servizio Tim Navigazione Sicura, clicchiamo su Disattiva per cessare il servizio connesso alla nostra offerta.\n✅ Fatto.\nDisattivare TIM Navigazione sicura dall\u0026rsquo;APP Se vogliamo disattivare l\u0026rsquo;opzione utilizzando il nostro smartphone ci servirà l\u0026rsquo;app MyTim disponibile per:\nGoogle Play Store Apple App Store Una volta scaricata ed avviata l\u0026rsquo;app accediamo con le nostre credenziali e dalla schermata principale clicchiamo sul quadrato \u0026ldquo;Altro\u0026rdquo;:\nNel menù che ci compare clicchiamo su Linea e successivamente ci spostiamo con uno swipe verso destra nella scheda TV e servizi, troveremo la voce Tim Navigazione sicura, clicchiamo su Disattiva per cessare il servizio connesso alla nostra offerta.\n✅ Fatto.\n","permalink":"https://giuxfila.com/blog/disattivare-navigazione-sicura/","summary":"\u003cp\u003eTi sei accorto di avere un servizio di \u0026ldquo;Navigazione sicura\u0026rdquo; come (TIM Navigazione sicura) attivo sulla tua linea fissa e/o mobile ma vuoi disattivarlo? Sei nel posto giusto. Nelle prossime righe vedremo insieme i passaggi esatti per disdire questo pacchetto: mettiamoci subito all\u0026rsquo;opera e riprendiamoci la libertà di navigazione.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"disattivare-tim-navigazione-sicura-da-pc\"\u003eDisattivare TIM Navigazione sicura da PC\u003c/h2\u003e\n\u003cp\u003ePer disattivare l\u0026rsquo;opzione di Navigazione sicura di TM ci basterà accedere al sito MyTim, ed effettuare l\u0026rsquo;accesso con i nostri dati personali (email e password).\nAll\u0026rsquo;interno della pagina MyTim troveremo sulla sinistra una colonna con diverse voci, clicchiamo su Linea e poi su TV e servizi:\u003c/p\u003e","title":"Come disattivare la Navigazione sicura"},{"content":"In questa guida andiamo a vedere passo dopo passo come sostituire i DNS, acronimo della lingua inglese che sta per Domain Name System (Sistema dei nomi di dominio), (se vuoi sapere di cosa stiamo parlando leggi questo mio articolo) che ci assegna automaticamente il nostro operatore con alternative più rapide e, quando possibile, più rispettose della privacy. Non ti serve altro che seguire le istruzioni: niente paroloni, solo pratica. Mettiamoci le mani — in pochi click potresti già notare siti che si aprono più velocemente.\nCambiare i DNS su Android Per cambiare i DNS su qualsiasi Smartphone Tablet Android ci basterà accedere alle ⚙︎ Impostazioni del nostro dispositivo, successivamente clicchiamo sulla casella \u0026ldquo;Rete e internet\u0026rdquo;\nUna volta dentro scorriamo in basso fino a trovare la casella \u0026ldquo;DNS privato\u0026rdquo; (potrebbe apparire anche sotto la voce \u0026ldquo;Avanzate\u0026rdquo;):\nSelezioniamo la modalità di DNS Privato con \u0026ldquo;Nome host\u0026rdquo; ed inseriamo uno dei due seguenti:\ndns.google (Google DNS) one.one.one.one (Cloudflare DNS) Clicchiamo su Salva per applicare le nuove impostazioni DNS.\n✅ Fatto, adesso saremo finalmente liberi di navigare.\nSe vogliamo ripristinare le modifiche DNS Predefinite ci basterà impostare Automatico (nell\u0026rsquo;impostazione DNS privato) e salvare.\nCambiare i DNS su iPhone e iPad (solo Wi-Fi) Per poter cambiare i DNS sul nostro iPhone o iPad dobbiamo prima assicurarci di essere collegati ad una rete Wi-Fi (in caso contrario leggi qui 👉🏻 APP per cambiare DNS), e rechiamoci nelle \u0026ldquo;⚙︎ Impostazioni\u0026rdquo;, selezioniamo la voce l\u0026rsquo;impostazione del Wi-Fi:\nSuccessivamente clicchiamo sull\u0026rsquo;icona informativo (ⓘ) accanto al nome della rete Wi-Fi a cui siamo connessi:\nAdesso scorriamo verso il basso fino ad arrivare (e cliccare) la voce \u0026ldquo;Configura DNS\u0026rdquo;:\nClicchiamo sulla voce \u0026ldquo;Manuale\u0026rdquo; e successivamente eliminiamo le voci DNS esistenti (toccando l\u0026rsquo;icona del meno (-) e confermando con Elimina):\nAdesso clicchiamo su \u0026ldquo;Aggiungi server\u0026rdquo; ed inseriamo l\u0026rsquo;indirizzo del server DNS uno dei due seguenti:\n8.8.8.8 (Google DNS) 1.1.1.1 (Cloudflare DNS) Successivamente, per rendere effettive le modifiche apportate clicchiamo su \u0026ldquo;Salva\u0026rdquo; nell\u0026rsquo;angolo in alto a destra:\n✅ Fatto, adesso saremo finalmente liberi di navigare.\nSe vogliamo ripristinare le modifiche DNS Predefinite ci basterà impostare Automatico (nell\u0026rsquo;impostazione Configura DNS) e salvare.\nCambiare i DNS su Windows Per cambiare i DNS sul nostro PC con Windows dobbiamo per prima cosa cliccare sul tasto \u0026ldquo;Start ⊞\u0026rdquo; e successivamente cercare il Pannello di controllo:\nA questo punto cerchiamo l\u0026rsquo;impostazione di \u0026ldquo;Rete e Internet\u0026rdquo;:\nSuccessivamente clicchiamo su Centro connessioni di rete e condivisione:\nA questo punto, nel centro connessioni di rete dobbiamo andare a scegliere la connessione ad Internet per la quale vogliamo effettuare la modifica delle impostazioni DNS, solitamente la connessione attiva è denominata \u0026ldquo;Wi-Fi\u0026rdquo; o \u0026ldquo;Ethernet\u0026rdquo; e si trova sul lato destro della finestra:\nNella finestra che ci apparirà verranno visualizzate le informazioni generali sulla connessione, andiamo a cliccare quindi su \u0026ldquo;Proprietà\u0026rdquo;:\nNella finestra \u0026ldquo;Propietà\u0026rdquo; scorriamo verso il basso fino a trovare la voce \u0026ldquo;Protocollo Internet versione 4 (TCP/IPv4)\u0026rdquo;, clicchiamo una volta sola per evidenziarlo e successivamente clicchiamo su \u0026ldquo;Proprietà\u0026rdquo;:\nA questo punto dovremmo avere come impostazione predefinita \u0026ldquo;Ottieni indirizzo server DNS automaticamente\u0026rdquo;, a noi interessa spuntare la voce \u0026ldquo;Utilizza i seguenti indirizzi server DNS:\u0026rdquo; e successivamente nelle due caselline in basso impostare uno dei due seguenti server DNS:\nServer DNS preferito: 8.8.8.8 e Server DNS alternativo: 8.8.4.4 (Google DNS) Server DNS preferito: 1.1.1.1 e Server DNS alternativo: 1.0.0.1 (Cloudflare DNS) Adesso clicchiamo sul pulsante \u0026ldquo;OK\u0026rdquo; per salvare le modifiche e Riavviamo il nostro PC per renderle effettive.\n✅ Fatto, adesso saremo finalmente liberi di navigare.\nSe vogliamo ripristinare le modifiche DNS Predefinite ci basterà impostare \u0026ldquo;Ottieni indirizzo server DNS automaticamente\u0026rdquo; dalle impostazioni del Protocollo Internet, salvare e riavviare il nostro PC.\nCambiare i DNS su macOS Per cambiare i DNS sul nostro Mac per prima cosa clicchiamo sul logo Apple, selezioniamo la voce \u0026ldquo;Preferenze di sistema\u0026rdquo; e dalla schermata che ci appare clicchiamo su Rete:\nA questo punto selezioniamo la connessione ad Internet per la quale vogliamo effettuare la modifica delle impostazioni DNS e successivamente clicchiamo su \u0026ldquo;Avanzate\u0026rdquo;:\nApriamo \u0026ldquo;in alto\u0026rdquo; la scheda DNS e clicchiamo sul pulsante \u0026ldquo;+\u0026rdquo; in basso per aggiungere uno dei due seguenti server DNS:\n8.8.8.8 e 8.8.4.4 (Google DNS) 1.1.1.1 e 1.0.0.1 (Cloudflare DNS) Clicchiamo sul Pulsante OK e successivamente riavviamo il nostro Mac affinché le modifiche abbiano effetto immediato.\n✅ Fatto, adesso saremo finalmente liberi di navigare.\nSe vogliamo ripristinare le modifiche DNS Predefinite ci basterà eliminare i due indirizzi DNS inseriti nella scheda \u0026ldquo;DNS\u0026rdquo; nelle impostazioni della connessione, salvare e riavviare il nostro Mac.\nCambiare i DNS con l\u0026rsquo;App 1.1.1.1 Questa sezione è dedicata a chi non ha voglia di smanettare con le impostazioni del proprio dispositivo, infatti da poco nel mercato è entrata in gioco l\u0026rsquo;app ufficiale di Cloudflare (1.1.1.1) che è completamente gratuita ed è stata pensata per essere utilizzata da chiunque.\nPer usare l\u0026rsquo;app è molto semplice, per prima cosa andiamo a scaricare l\u0026rsquo;applicativo ufficiale dal nostro STORE:\nGoogle Play Store Apple App Store Windows Store App Store macOS In questo tutorial farò vedere come scaricare ed installare l\u0026rsquo;app su Android ma il procedimento è il medesimo su qualsiasi dispositivo (sia esso Android-iOS ecc. ecc.). Per prima cosa, installiamo l\u0026rsquo;app dal link in alto, ed una volta scaricata ed installata avviamola. Al primo avvio ci darà le informazioni utili a noi basterà cliccare ripetutamente su Avanti ed accettare T\u0026amp;C (Termini e condizioni). A questo punto ci ritroveremo su questa schermata:\nA questo punto basterà fare uno swype da sinistra verso destra sull\u0026rsquo;interruttore, se è la prima volta che viene avviata ci chiederà di installare un profilo VPN\nCi basterà cliccare sul Pulsante blu Installa profilo VPN e confermare la richiesta con \u0026ldquo;ok\u0026rdquo;, se tutto è andato a buon fine ci troveremo il pulsante attivato:\n✅ Fatto, adesso saremo finalmente liberi di navigare.\nPer disabilitare la VPN ci basterà effettuare lo swipe da destra verso sinistra.\n","permalink":"https://giuxfila.com/blog/come-cambiare-dns/","summary":"\u003cp\u003eIn questa guida andiamo a vedere passo dopo passo come sostituire i DNS, acronimo della lingua inglese che sta per Domain Name System (Sistema dei nomi di dominio), (se vuoi sapere di cosa stiamo parlando leggi \u003ca href=\"https://giuxfila.com/blog/dns\"\u003equesto mio articolo\u003c/a\u003e) che ci assegna automaticamente il nostro operatore con alternative più rapide e, quando possibile, più rispettose della privacy. Non ti serve altro che seguire le istruzioni: niente paroloni, solo pratica. Mettiamoci le mani — in pochi click potresti già notare siti che si aprono più velocemente.\u003c/p\u003e","title":"Come cambiare i DNS [Guida definitiva]"},{"content":"Il Domain Name System (DNS) è la \u0026ldquo;guida telefonica\u0026rdquo; di Internet. Le persone accedono alle informazioni online tramite dei nomi di dominio, come ad esempio nytimes.com o espn.com. I browser Web interagiscono tramite indirizzi Internet Protocol (IP). Il DNS traduce i nomi di dominio in indirizzi IP, in modo che i browser possano caricare le risorse Internet.\nOgni dispositivo collegato a Internet è dotato di indirizzo IP univoco, che altre macchine usano per trovarlo. I server DNS eliminano la necessità per gli esseri umani di memorizzare gli indirizzi IP come 192.168.1.1 (in IPv4) o i più recenti indirizzi IP alfanumerici più complessi come 2400:cb00:2048:1::c629:d7a2 (in IPv6).\nDNS, a cosa serve? Il DNS facilita la nostra interazione quotidiana con internet e garantisce una rete più efficiente e sicura. Il DNS svolge diverse funzioni, la più importante è, come abbiamo visto, è convertire nomi di dominio in indirizzi IP numerici necessari per localizzare i server su internet. Inoltre, il DNS gioca un ruolo cruciale nella gestione della posta elettronica, assicurando che le email vengano indirizzate correttamente ai server di posta attraverso l’uso di record MX. Oltre a queste funzioni, il DNS contribuisce a migliorare la sicurezza delle comunicazioni e la gestione del traffico web, supportando tecnologie come la crittografia delle query e la protezione contro attacchi informatici.\nCome funziona il DNS? Il processo di risoluzione DNS prevede la conversione di un hostname (www.example.com) in un indirizzo IP compatibile con il computer (come 192.168.1.1). Si assegna un indirizzo IP a ciascun dispositivo su Internet, e tale indirizzo è necessario per trovare il dispositivo Internet appropriato, proprio come per trovare una determinata casa si utilizza un indirizzo stradale. Quando un utente desidera caricare una pagina web, deve avvenire una traduzione tra ciò che un utente digita nel proprio browser web (esempio.com) e l\u0026rsquo;indirizzo riconoscibile dalla macchina necessario per individuare la pagina esempio.com.\nPer comprendere il processo alla base della risoluzione DNS, è importante conoscere i diversi componenti hardware tra cui deve passare una query DNS. Per il browser, la ricerca DNS avviene \u0026ldquo;dietro le quinte\u0026rdquo; e non richiede alcuna interazione dal computer dell\u0026rsquo;utente, a parte la richiesta iniziale.\nTipi di server DNS Il sistema dei nomi di dominio (DNS) è un elemento cruciale per le comunicazioni online, fungendo da autentico registro della rete internet. La sua funzione principale è tradurre i nomi di dominio leggibili dagli utenti in indirizzi IP numerici utilizzati dai computer per localizzarsi e comunicare tra loro. La complessità e potenza del DNS derivano dalla varietà di server che lo compongono, ognuno con ruoli specifici nel processo di risoluzione delle query. Ecco un’analisi dettagliata delle principali tipologie.\nServer DNS ricorsivo l server DNS ricorsivo, noto anche come resolver DNS, è progettato per ricevere e rispondere alle richieste DNS provenienti dagli utenti. Questo server ha la responsabilità di trovare i record necessari per individuare il corretto root nameserver (letteralmente un server radice). Se questo non viene identificato immediatamente, il server DNS ricorsivo può effettuare diverse richieste finché il nameserver desiderato non viene trovato. In sostanza, un server ricorsivo può rispondere alle query solo cercando i risultati provenienti da altri server DNS.\nServer DNS autoritativo Il server DNS autoritativo rappresenta il punto finale della procedura di recupero degli indirizzi IP. Di fatto, è l’ultimo anello della catena dei server DNS. Quando un server DNS autoritativo riceve una richiesta, non necessita di comunicare con altri server: ha già i dati necessari per rispondere alla query (la richiesta proveniente dall’utente). A differenza di una query ricorsiva, il server autoritativo non si affida ad altri server per ottenere i dati desiderati.\nRoot nameservers I già citati “server radice”, o root nameservers, sono il primo punto di contatto nella catena di richieste DNS. Non contengono informazioni dettagliate sui domini, ma indirizzano le richieste verso i server del TLD (Top-Level Domain) appropriato. In altre parole, fungono da guida, indirizzando le query DNS verso i server più specifici, a partire dalla richiesta iniziale.\nTLD nameservers Visto che li abbiamo introdotti, vale la pena parlarne più nel dettaglio. I server TLD rappresentano il passo successivo nella catena di risoluzione DNS. Questi server conservano le informazioni sui domini sotto un particolare TLD, come .com, .net o .org. Una volta che la richiesta raggiunge un server TLD, quest’ultima viene inoltrata al server DNS autoritativo appropriato, dove viene trovata l’associazione corretta tra il nome di dominio e l’indirizzo IP.\n","permalink":"https://giuxfila.com/blog/dns/","summary":"\u003cp\u003eIl Domain Name System (DNS) è la \u0026ldquo;guida telefonica\u0026rdquo; di Internet. Le persone accedono alle informazioni online tramite dei nomi di dominio, come ad esempio nytimes.com o espn.com. I browser Web interagiscono tramite indirizzi Internet Protocol (IP). Il DNS traduce i nomi di dominio in indirizzi IP, in modo che i browser possano caricare le risorse Internet.\u003c/p\u003e\n\u003cp\u003eOgni dispositivo collegato a Internet è dotato di indirizzo IP univoco, che altre macchine usano per trovarlo. I server DNS eliminano la necessità per gli esseri umani di memorizzare gli indirizzi IP come 192.168.1.1 (in IPv4) o i più recenti indirizzi IP alfanumerici più complessi come 2400:cb00:2048:1::c629:d7a2 (in IPv6).\u003c/p\u003e","title":"Cosa sono i DNS (Domain Name System)"},{"content":"Se utilizziamo Gotify come sistema di notifiche self-hosted, potremmo voler ricevere gli avvisi direttamente su Telegram tramite un bot personale.\nGotify è uno strumento leggero e potente per la gestione delle notifiche push su server Linux o ambienti Docker. Integrare Gotify con Telegram ci permette di ricevere notifiche in tempo reale su smartphone, desktop o qualsiasi dispositivo su cui utilizziamo Telegram, senza dipendere esclusivamente dall’app ufficiale e, ovviando al problema della mancanza di un app ufficiale su iOS\nIn questa guida vedremo passo dopo passo come configurare un’integrazione tra Gotify e Telegram, creando un bot personale che inoltri automaticamente tutte le notifiche push.\nRequisiti: Server Gotify Bot Telegram Configurazione del Bot Telegram Per prima cosa, rechiamoci su Telegram e nella barra di ricerca cerchiamo BotFather, successivamente avviamo, se non lo abbiamo mai fatto, il BOT:\nAppena il bot si è avviato lanciamo il comando /newbot, successivamente dobbiamo scegliere un nome ed uno username a questo punto verrà creato il BOT e ci verrà dato un API Token, che dobbiamo copiare e conservare (ci servirà tra poco):\nAdesso ci servirà conoscere il nostro Telegram ID, per farlo avviamo il BOT CaptainID, a video riceveremo un messaggio contenente il nostro Telegram ID:\nCopiamo anche questo codice e chiudiamo Telegram (per il momento non ci servirà).\nCreazione del Client Gotify Una volta creato il bot ed appuntanto API Token e Telegram ID, dobbiamo collegarci al nostro server gotify sul nostro browser ed effettuare il login.\nSuccessivamente dobbiamo cliccare sulla sezione \u0026ldquo;Clients\u0026rdquo;, solitamente in alto a destra e successivamente su \u0026ldquo;Create client\u0026rdquo;:\nDiamo un nome qualsiasi e successivamente clicchiamo su \u0026ldquo;Create\u0026rdquo;\nAdesso dalla lista copiamo il Token generato e salviamolo:\nInstallazione di Gotify2Telegram Accediamo al nostro server Gotify e rechiamoci nella directory di gotify-server, nel caso di questo tutorial è stata creata su /data/gotify-server, Il percorso potrebbe variare in base alla modalità di installazione che abbiamo scelto:\ncd /data/gotify-server Per prima cosa, stoppiamo il container docker:\ndocker compose down Adesso andiamo a modificare il nostro docker-compose.yml integrando l\u0026rsquo;applicativo di gotify2telegram, quindi sul terminale digitiamo:\nnano docker-compose.yml E successivamente aggiungiamo (in basso alla configurazione già esistente) la seguente:\n# DA AGGIUNGERE DOPO GOTIFY SERVER gotify-2-telegram: restart: unless-stopped image: rhombusthere/gotify2telegram:latest volumes: - .env:/app/.env Ecco un esempio completo:\nA questo punto salviamo, cliccando \u0026ldquo;CTRL\u0026rdquo;+\u0026ldquo;X\u0026rdquo; e confermiamo con \u0026ldquo;Y\u0026rdquo;. Adesso andiamo a definire il file di enviroment (.env), quindi creiamolo con nano:\nnano .env Copiamo il seguente codice, inserendo i parametri del nostro bot e del nostro gotify server:\nTELEGRAM_BOT_TOKEN=8094563534:AAFOF1jgxsPtlXzS46_dwj27LrPoDDJi8ic # Token generato da @BotFather TELEGRAM_NOTIFICATION_ID=590277553 # L\u0026#39;ID utente del nostro profilo Telegram NOTIFICATION_SERVER=127.0.0.1:8000 # Indirizzo IP e porta del nostro server gotify NOTIFICATION_CLIENT_TOKEN=CP4fvzbdYRXhElm # Client token creato Salviamo, cliccando \u0026ldquo;CTRL\u0026rdquo;+\u0026ldquo;X\u0026rdquo; e confermiamo con \u0026ldquo;Y\u0026rdquo;.\nCompilato il file .env procediamo effettuando il pull dell\u0026rsquo;immagine ed avviando il container:\ndocker compose pull \u0026amp;\u0026amp; docker compose up -d Adesso effettuiamo una prova e se tutto funziona correttamente riceveremo il messaggio dal nostro BOT Telegram, quindi nel terminale digitiamo:\ncurl \u0026#34;https://gotify.dominio.com/message?token=\u0026lt;IL_TOKEN_DEL\u0026#39;APP\u0026gt;\u0026#34; -F \u0026#34;title=Questo è un test\u0026#34; -F \u0026#34;message=Ciao, sei bellissimo. Ti è arrivato su Telegram?\u0026#34; -F \u0026#34;priority=0\u0026#34; Ecco la risposta del BOT:\n","permalink":"https://giuxfila.com/blog/gotify-notifiche-telegram/","summary":"\u003cp\u003eSe utilizziamo \u003ca href=\"/blog/installare-gotify/\"\u003eGotify\u003c/a\u003e come sistema di notifiche self-hosted, potremmo voler ricevere gli avvisi direttamente su Telegram tramite un bot personale.\u003c/p\u003e\n\u003cp\u003eGotify è uno strumento leggero e potente per la gestione delle notifiche push su server Linux o ambienti Docker. Integrare Gotify con Telegram ci permette di ricevere notifiche in tempo reale su smartphone, desktop o qualsiasi dispositivo su cui utilizziamo Telegram, senza dipendere esclusivamente dall’app ufficiale e, ovviando al problema della mancanza di un app ufficiale su iOS\u003c/p\u003e","title":"Gotify + Telegram: Come ricevere le notifiche su Telegram"},{"content":"Gotify è un semplice server che ti permette di inviare e ricevere messaggi in tempo reale. Immaginiamo di avere una bacheca virtuale dove possiamo postare note e/o avvisi, e chiunque sia “iscritto” a questa bacheca riceverà immediatamente una notifica.\nGotify, a cosa serve? Attraverso Gotify abbiamo la possibilità di avere:\nNotifiche personalizzate: E\u0026rsquo; possibile creare notifiche personalizzate per qualsiasi evento, come un nuovo messaggio su un forum, un allarme di sicurezza, un aggiornamento di stato di un sistema, ecc. Integrazioni con altre applicazioni: Gotify può essere integrato con molte altre applicazioni per inviare e ricevere notifiche Sviluppo di applicazioni: Può essere utilizzato come componente di applicazioni più grandi per fornire funzionalità di notifica Comunicazione interna: È utile per la comunicazione all’interno di team o aziende, per condividere aggiornamenti o avvisi rapidi Requisiti:\nDominio (opzionale) Server VPS Docker Nginx Proxy Manager (opzionale) Installazione di Gotify server Per prima cosa, dopo aver effettuato l\u0026rsquo;accesso sul nostro amato terminale, accertiamoci di aver installato docker e docker compose quindi lanciamo il comando:\n1 docker -v \u0026amp;\u0026amp; docker compose version Se riceviamo a video una risposta simile a questa abbiamo docker installato:\nin caso contrario leggi la mia guida su come installare docker\nVerificata l\u0026rsquo;installazione di docker e docker compose possiamo procedere con il deploy vero e proprio di NPM, per prima cosa andiamo a creare una directory dove verranno salvate le varie configurazioni di gotify-server, per praticità creeremo una cartella \u0026ldquo;data\u0026rdquo;, quindi da terminale:\n1 sudo mkdir /data Assegnamo l\u0026rsquo;utente (nel caso di questo tutorial giuseppe ma varia in base al vostro utente) la proprietà di lettura e scrittura:\n1 sudo chown giuseppe:giuseppe /data A questo punto creiamo la directory per gotify-server\n1 mkdir /data/gotify-server Rechiamoci all\u0026rsquo;interno della directory appena creata con il comando cd:\n1 cd /data/gotify-server Una volta dentro creiamo il file per il deploy di gotify-server:\n1 nano docker-compose.yml Nell’editor di testo copiamo il seguente codice:\n1 2 3 4 5 6 7 8 9 10 11 services: app: image: gotify/server:latest container_name: gotify restart: unless-stopped ports: - 83:80 environment: - TZ=\u0026#39;Europe/Rome\u0026#39; volumes: - ./data:/app/data Salviamo il file con il consueto CTRL+X e successivamente “Y” per confermare, ed iniziamo a fare il “pull”, ovvero a scaricare l’immagine dal docker hub, con il comando:\n1 docker compose pull Alla fine del \u0026ldquo;pulling\u0026rdquo; dovremmo avere una schermata simile a questa:\nAdesso, se tutto è andato nel verso giusto possiamo procedere con l\u0026rsquo;avvio del container docker con il comando:\n1 docker compose up -d Integrazione con Nginx Proxy Manager (opzionale) Se abbiamo installato Nginx Proxy Manager e vogliamo accedere a Gotify attraverso il nostro dominio (banalmente gotify.dominio.com) dobbiamo collegarci alla nostra istanza npm sul browser: https://nginx.dominio.com e creare un istanza host impostando le voci come queste immagini:\nA questo punto effettuiamo il salvataggio (cliccando Save) e se tutto funziona correttamente riusciremo a collegarci al nostro server gotify attraverso il nostro dominio.\nAccesso alla UI Una volta avviato il container, ci basterà aprire il nostro browser e navigare all\u0026rsquo;interno del seguente sito: https://gotify.dominio.com o http://IP:83 (se non abbiamo integrato Nginx Proxy Manager). Ci apparirà la seguente pagina:\nLe credenziali predefinite sono le seguenti:\nUsername: **admin** Password: **admin** Per prima cosa, a log-in effettuato andiamo a modificare le credenziali, quindi quindi clicchiamo sull\u0026rsquo;icona con scritto \u0026ldquo;users\u0026rdquo;:\nE successivamente clicchiamo sulla matita (a sinistra) e cambiamo username e password, successivamente clicchiamo \u0026ldquo;Save\u0026rdquo; per rendere effettive le modifiche.\nCreazione di un Applicazione Per aggiungere un app, ci basterà collegarci alla sezione apposita dal menù sulla sinistra chiamata \u0026ldquo;APPS\u0026rdquo;:\nSuccessivamente su \u0026ldquo;Create application\u0026rdquo; ed infine su \u0026ldquo;Create\u0026rdquo;:\nTest di funzionamento Per essere sicuri che tutto fili liscio, proviamo ad inviare al server un messaggio di test, per farlo torniamo sul nostro terminale e lanciamo questo comando:\n1 curl \u0026#34;https://gotify.dominio.com/message?token=\u0026lt;IL_TOKEN_DEL\u0026#39;APP\u0026gt;\u0026#34; -F \u0026#34;title=Questo è un test\u0026#34; -F \u0026#34;message=Ciao, sei bellissimo\u0026#34; -F \u0026#34;priority=0\u0026#34; Torniamo nella dashboard principale del nostro server gotify e dovremmo ricevere la notifica nella homepage:\nNotifiche sullo smartphone Per ricevere le notifiche sul nostro smartphone (android) ci basterà scaricare l\u0026rsquo;app ufficiale dispobibile sul repo github di gotify:\nAPK di Gotify Su iOS purtroppo non è possibile avere un APP ufficiale, l\u0026rsquo;unico metodo per ovviare al problema è ricevere le notifiche su Telegram ","permalink":"https://giuxfila.com/blog/installare-gotify/","summary":"\u003cp\u003eGotify è un semplice server che ti permette di inviare e ricevere messaggi in tempo reale. Immaginiamo di avere una bacheca virtuale dove possiamo postare note e/o avvisi, e chiunque sia “iscritto” a questa bacheca riceverà immediatamente una notifica.\u003c/p\u003e\n\u003ch2 id=\"gotify-a-cosa-serve\"\u003eGotify, a cosa serve?\u003c/h2\u003e\n\u003cp\u003eAttraverso Gotify abbiamo la possibilità di avere:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNotifiche personalizzate: E\u0026rsquo; possibile creare notifiche personalizzate per qualsiasi evento, come un nuovo messaggio su un forum, un allarme di sicurezza, un aggiornamento di stato di un sistema, ecc.\u003c/li\u003e\n\u003cli\u003eIntegrazioni con altre applicazioni: Gotify può essere integrato con molte altre applicazioni per inviare e ricevere notifiche\u003c/li\u003e\n\u003cli\u003eSviluppo di applicazioni: Può essere utilizzato come componente di applicazioni più grandi per fornire funzionalità di notifica\u003c/li\u003e\n\u003cli\u003eComunicazione interna: È utile per la comunicazione all’interno di team o aziende, per condividere aggiornamenti o avvisi rapidi\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eRequisiti\u003c/strong\u003e:\u003c/p\u003e","title":"Gotify: Guida all'installazione con Docker"},{"content":"Nginx Proxy Manager (in gergo NPM) è uno strumento potente e user-friendly progettato per semplificare la gestione di server proxy Nginx. Pensato per utenti di tutti i livelli, NPM offre un’interfaccia grafica intuitiva che permette di configurare e gestire in modo efficace i tuoi proxy, senza la necessità di scrivere manualmente file di configurazione Nginx complessi.\nCome funziona Nginx? Immaginiamo ad NGINX come se fosse un postino:\nRiceve le lettere Quando tu (client) cerchi di raggiungere un sito web (destinatario), la tua richiesta (la lettera) arriva prima a Nginx. Inoltra le lettere: Invece di consegnare direttamente la lettera, Nginx la prende e la inoltra al destinatario corretto (il server web dove si trova il sito). Riceve le risposte:** Il server web elabora la richiesta e invia la risposta (la lettera di risposta) a Nginx. Consegna le risposte:** Nginx riceve la risposta e la inoltra a te, così puoi vedere il contenuto del sito web. Perché usare un postino (Nginx)? Velocità: Nginx è molto veloce nell’inoltrare le lettere, rendendo i siti web più rapidi. Sicurezza: Può proteggere il tuo sito web da attacchi e può crittografare le comunicazioni (HTTPS). Flessibilità: Può fare molte altre cose oltre a inoltrare le lettere, come bilanciare il carico tra diversi server o memorizzare nella cache le risposte per renderle ancora più veloci. Requisiti\nDominio VPS con indirizzo IP Statico (attenzione ai limiti di banda) Installazione di Nginx Proxy Manager Per prima cosa, assicuriamoci di aver installato sul nostro server docker e docker compose, per verificarlo digitiamo sul nostro terminale il comando:\n1 docker -v \u0026amp;\u0026amp; docker compose version Se riceviamo a video una risposta simile a questa abbiamo docker installato:\nin caso contrario leggi la mia guida su come installare docker\nVerificata l\u0026rsquo;installazione di docker e docker compose possiamo procedere con il deploy vero e proprio di NPM, per prima cosa andiamo a creare una directory dove verranno salvate le varie configurazioni di NGINX, per praticità creeremo una cartella \u0026ldquo;data\u0026rdquo;, quindi da terminale:\n1 sudo mkdir /data Assegnamo l\u0026rsquo;utente (nel caso di questo tutorial giuseppe ma varia in base al vostro utente) la proprietà di lettura e scrittura:\n1 sudo chown giuseppe:giuseppe /data A questo punto creiamo la directory per Nginx Proxy Manager:\n1 mkdir /data/nginx-proxy-manager Rechiamoci all\u0026rsquo;interno della directory appena creata con il comando cd:\n1 cd /data/nginx-proxy-manager Una volta dentro creiamo il file per il deploy di nginx-proxy-manager:\n1 nano docker-compose.yml Nell’editor di testo copiamo il seguente codice:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 services: app: image: \u0026#39;jc21/nginx-proxy-manager:latest\u0026#39; restart: unless-stopped ports: - \u0026#39;80:80\u0026#39; - \u0026#39;81:81\u0026#39; - \u0026#39;443:443\u0026#39; volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt networks: default: name: my-main-net external: true Salviamo il file con il consueto CTRL+X e successivamente “Y” per confermare, ed iniziamo a fare il “pull”, ovvero a scaricare l’immagine dal docker hub, con il comando:\n1 docker compose pull Alla fine del \u0026ldquo;pulling\u0026rdquo; dovremmo avere una schermata simile a questa:\nA questo punto impostiamo una regola \u0026ldquo;ufw\u0026rdquo; per aprire le porte del nostro server al pubblico:\n1 2 sudo ufw allow 80,443/tcp comment \u0026#34;Nginx Proxy Manager\u0026#34; sudo ufw allow 81/tcp comment \u0026#34;Nginx Proxy Manager UI\u0026#34; Adesso possiamo avviare il nostro container:\n1 docker compose up -d \u0026amp;\u0026amp; docker compose logs -f Dai LOG dovremmo non vedere errori particolari, intanto rechiamoci sul browser ed apriamo la seguente pagina: http://IP_DEL_SERVER:81/ ci apparirà una schermata simile a questa:\nLe credenziali predefinite sono le seguenti:\nEmail: **admin@example.com** Password: **changeme** Configurazione di Nginx Proxy Manager Effettuato l\u0026rsquo;accesso ci verrà chiesto subito di cambiare la password principale, procediamo creando una password forte, una volta fatto ciò ci ritroveremo una schermata simile a questa:\nQuello che dobbiamo andare a fare noi adesso è far puntare tutto il traffico “**.dominio.com*” all’indirizzo IP del server dove si trova NPM.\nIn questa guida io utilizzerò Cloudflare potrebbe cambiare in base al Vs. provider del dominio, in ogni caso quello che dobbiamo fare noi è registrare un dominio di tipo “A” “*.dominio.com” che punti all’indirizzo IP del nostro server:\nCreato con successo il routing torniamo su NPM e registriamo il nostro primo “subdomain”, per farlo rechiamoci nella sezione Proxy Host, successivamente clicchiamo sulla voce Add Proxy Host e completiamo le voci così come in questo esempio:\nDomain Names: nginx.dominio.com Scheme: http (perché in questo esempio il servizio è esposto sullo schema http) Forward Hostname / IP: dobbiamo inserire l’indirizzo IP del nostro server, oppure 127.0.0.1 Forward Port: dobbiamo inserire la porta nella quale è esposto il servizio in questo caso 81 Spuntiamo le caselle Cache Assets, Block Common Exploits** e Websockets Support Successivamente rechiamoci nella sezione SSL e nella casella SSL Certificate clicchiamo sulla voce Request a new SSL Certificate, successivamente tutte le voci Force SSL, HTTP/2 Support, HSTS Enabled e HSTS Subdomains, inseriamo un indirizzo email per i certificato Let’s Encrypt ed accettiamo termini e condizioni e clicchiamo su “Save”:\nA questo punto collegandoci su https://nginx.dominio.com saremo in grado di collegarci al nostro nginx proxy manager con connessione sicura HTTPS.\nAdesso torniamo nel nostro terminale ed eliminiamo la regola \u0026ldquo;ufw\u0026rdquo; impostata prima sulla porta 81/tcp:\n1 sudo ufw verbose numbered Dalla lista cerchiamo la voce con la porta da eliminare e digitiamo:\n1 sudo ufw delete 3 Certificati SSL Gratuiti con Cloudflare Se non vogliamo utilizzare Let’s Encrypt si può, in alternativa, generare una coppia di certificati gratuiti con Cloudflare, per farlo andiamo nella pagina principale del nostro dominio su Cloudflare, clicchiamo su SSL/TLS successivamente su Server di origine e su Crea certificato\nLasciamo le impostazioni predefinite e clicchiamo su Crea.\nCi apparirà la pagina con i certificati, “Certificato origine” e “Chiave privata”.\nCreiamo due file di testo, uno lo chiameremo certificato.pem e l’altro certificato.key, inseriamo all’interno del file .pem il certificato di origine ed all’interno del file .key la chiave privata, salviamo ed andiamo sulla nostra istanza di nginx proxy manager. Rechiamoci nella sezione SSL Certificates e clicchiamo su Add SSL Certificate successivamente su Custom, inseriamo il nome che desideriamo (es. certificato_dominio), carichiamo su “Certificate Key” il file .key mentre su “Certificate” il file .pem e successivamente Salviamo.\nModifichiamo adesso l’impostazione su Cloudflare di modalità di crittografia SSL/TLS su “Completa”\nE siamo apposto, adesso quando creiamo un nuovo host (o vogliamo modificare uno già creato) abbiamo la possibilità di scegliere come certificato questo di Cloudflare con durata 15 anni\n","permalink":"https://giuxfila.com/blog/installare-nginx-proxy-manager/","summary":"\u003cp\u003eNginx Proxy Manager (in gergo NPM) è uno strumento potente e user-friendly progettato per semplificare la gestione di server proxy Nginx. Pensato per utenti di tutti i livelli, NPM offre un’interfaccia grafica intuitiva che permette di configurare e gestire in modo efficace i tuoi proxy, senza la necessità di scrivere manualmente file di configurazione Nginx complessi.\u003c/p\u003e\n\u003ch2 id=\"come-funziona-nginx\"\u003eCome funziona Nginx?\u003c/h2\u003e\n\u003cp\u003eImmaginiamo ad NGINX come se fosse un postino:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRiceve le lettere Quando tu (client) cerchi di raggiungere un sito web (destinatario), la tua richiesta (la lettera) arriva prima a Nginx.\u003c/li\u003e\n\u003cli\u003eInoltra le lettere: Invece di consegnare direttamente la lettera, Nginx la prende e la inoltra al destinatario corretto (il server web dove si trova il sito).\u003c/li\u003e\n\u003cli\u003eRiceve le risposte:** Il server web elabora la richiesta e invia la risposta (la lettera di risposta) a Nginx.\u003c/li\u003e\n\u003cli\u003eConsegna le risposte:** Nginx riceve la risposta e la inoltra a te, così puoi vedere il contenuto del sito web.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"perché-usare-un-postino-nginx\"\u003ePerché usare un postino (Nginx)?\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eVelocità:\u003c/strong\u003e Nginx è molto veloce nell’inoltrare le lettere, rendendo i siti web più rapidi.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSicurezza:\u003c/strong\u003e Può proteggere il tuo sito web da attacchi e può crittografare le comunicazioni (HTTPS).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFlessibilità:\u003c/strong\u003e Può fare molte altre cose oltre a inoltrare le lettere, come bilanciare il carico tra diversi server o memorizzare nella cache le risposte per renderle ancora più veloci.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eRequisiti\u003c/strong\u003e\u003c/p\u003e","title":"Nginx Proxy Manager: Guida all'installazione con Docker"},{"content":"Cos’è Docker? Docker è una piattaforma open-source che automatizza il processo di creazione, distribuzione ed esecuzione di applicazioni all\u0026rsquo;interno di container.\nImmaginiamo di voler traslocare, invece di caricare ogni singolo oggetto sfuso sul camion (rischiando che qualcosa si rompa o non entri), mettiamo tutto dentro dei container standard. Docker fa esattamente questo con il software, impacchetta il codice, le librerie e le dipendenze in un unico oggetto leggero che funzionerà allo stesso modo su qualsiasi computer, che sia un PC locale o un server in cloud.\nA differenza delle Virtual Machines (VM), Docker non simula un intero sistema operativo. Questo porta vantaggi enormi:\nLeggerezza: I container condividono il kernel del sistema operativo ospitante, occupando molta meno RAM e CPU. Velocità: Un container si avvia in pochi secondi, mentre una VM richiede minuti. Portabilità: \u0026ldquo;Funziona sulla mia macchina\u0026rdquo; non sarà più una scusa. Se il container gira sul tuo PC, girerà ovunque. Cos’è Docker Compose? Se Docker gestisce il singolo container, Docker Compose è il \u0026ldquo;direttore d\u0026rsquo;orchestra\u0026rdquo;. Ti permette di definire e avviare applicazioni multi-container (ad esempio: un container per il sito web + un container per il database) usando un semplice file di configurazione in formato YAML docker-compose.yml.\nCome installare Docker su una macchina Linux Per prima cosa assicuriamoci di non aver installato immagini docker non ufficiali, alcuni manutentori delle distro come Canonical “Ubuntu” forniscono distribuzioni non ufficiali dei pacchetti Docker in apt, per disinstallare tali pacchetti eseguiamo il comando:\n1 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done Esistono diversi metodi di installazione, in questo tutorial andiamo ad installare Docker e Docker Compose attraverso lo script ufficiale di docker (codice sorgente). Quindi dal nostro terminale eseguiamo il comando:\n1 curl -fsSL https://get.docker.com -o get-docker.sh Una volta scaricato lo script andiamo ad installarlo:\n1 sh get-docker.sh | grep -qE \u0026#34;ERROR: Unsupported distribution \u0026#39;rocky\u0026#39;|ERROR: Unsupported distribution \u0026#39;almalinux\u0026#39;\u0026#34; \u0026amp;\u0026amp; sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo \u0026amp;\u0026amp; sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin Attendiamo qualche minuto, il tempo che l\u0026rsquo;installazione finisca e successivamente abilitiamo tramite systemd il servizio all\u0026rsquo;autostart digitiamo i seguenti comandi:\n1 2 sudo systemctl enable docker sudo systemctl start docker A questo punto aggiungiamo il nostro utente predefinito al gruppo docker per consentirgli di eseguire i comandi senza l\u0026rsquo;utilizzo dei permessi privilegiati sudo:\n1 sudo usermod -a ${USER} -G docker Affinché le modifiche siano effettive dobbiamo effettuare un logout dall’utente, digitiamo:\n1 exit Successivamente ci logghiamo nuovamente inserendo le credenziali e, per verificare che le modifiche abbiano avuto successo lanciamo il comando:\n1 docker -v \u0026amp;\u0026amp; docker compose version Se tutto è andato a buon fine riceveremo, a video, una risposta simile a questa:\n","permalink":"https://giuxfila.com/blog/installare-docker/","summary":"\u003ch2 id=\"cosè-docker\"\u003eCos’è Docker?\u003c/h2\u003e\n\u003cp\u003eDocker è una piattaforma open-source che automatizza il processo di creazione, distribuzione ed esecuzione di applicazioni all\u0026rsquo;interno di container.\u003c/p\u003e\n\u003cp\u003eImmaginiamo di voler traslocare, invece di caricare ogni singolo oggetto sfuso sul camion (rischiando che qualcosa si rompa o non entri), mettiamo tutto dentro dei container standard. Docker fa esattamente questo con il software, impacchetta il codice, le librerie e le dipendenze in un unico oggetto leggero che funzionerà allo stesso modo su qualsiasi computer, che sia un PC locale o un server in cloud.\u003c/p\u003e","title":"Come installare Docker e Docker Compose"},{"content":"Vuoi liberare il tuo nodo dai cavi? In questa guida vedremo insieme come stabilire una connessione Wi-Fi con Raspberry Pi e Umbrel. Questa procedura ci permette di collegare il sistema operativo Umbrel a internet senza l\u0026rsquo;ingombro del cavo Ethernet, mantenendo il nostro nodo accessibile e funzionale in qualsiasi angolo della casa.\nSebbene la connessione cablata sia sempre la scelta più stabile per un nodo Bitcoin o Lightning, ci sono situazioni in cui la flessibilità del wireless è fondamentale. Vediamo come procedere passo dopo passo senza rischiare di perdere i dati della nostra blockchain.\nPrepariamo il Raspberry Pi allo spegnimento La prima cosa da fare è spegnere correttamente il nostro Raspberry Pi. Se abbiamo ancora accesso alla dashboard via browser, effettuiamo lo Shutdown dalle impostazioni di Umbrel e attendiamo che i LED del dispositivo indichino lo spegnimento completo.\nEstraiamo la Micro SD Una volta spento il \u0026ldquo;Pi\u0026rdquo;, rimuoviamo con cura la scheda Micro SD. È qui che andremo a operare per iniettare i parametri della nostra rete wireless.\nFlash del sistema operativo UmbrelOS Utilizzando Balena Etcher, andiamo a effettuare nuovamente il flash del sistema operativo Umbrel sulla Micro SD.\nNota importante: Non dobbiamo preoccuparci per i nostri dati. Questo passaggio non cancellerà i dati della blockchain, poiché Umbrel salva i dati pesanti sull\u0026rsquo;SSD esterno e non sulla SD.\nConfigurazione del file wpa_supplicant.conf Dopo il flash, scolleghiamo e ricolleghiamo la Micro SD al PC. Apriamo la partizione denominata \u0026ldquo;boot\u0026rdquo;. Ora dobbiamo creare un ponte per la nostra rete:\nCreiamo un nuovo file di testo. Incolliamo all\u0026rsquo;interno il seguente codice: 1 2 3 4 5 6 7 8 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=IT # Inseriamo il codice ISO (es. IT per Italia) network={ ssid=\u0026#34;NOME_DELLA_TUA_RETE\u0026#34; psk=\u0026#34;PASSWORD_DELLA_TUA_RETE\u0026#34; } Salviamo il file e rinominiamolo esattamente in wpa_supplicant.conf. Assicuriamoci di aver rimosso l\u0026rsquo;estensione .txt. Posizionamento del file e riavvio Trasciniamo il file wpa_supplicant.conf appena creato all\u0026rsquo;interno della cartella principale della partizione boot nella nostra Micro SD.\nAvvio del Nodo e Verifica Siamo pronti! Inseriamo la Micro SD nel Raspberry Pi e accendiamolo. Dopo qualche minuto di avvio, il nostro nodo si collegherà automaticamente al Wi-Fi.\nPossiamo verificare che tutto funzioni correttamente collegandoci da un qualsiasi dispositivo della rete all\u0026rsquo;indirizzo http://umbrel.local/.\n","permalink":"https://giuxfila.com/blog/collegare-umbrel-wifi/","summary":"\u003cp\u003eVuoi liberare il tuo nodo dai cavi? In questa guida vedremo insieme \u003cstrong\u003ecome stabilire una connessione Wi-Fi con Raspberry Pi e Umbrel\u003c/strong\u003e. Questa procedura ci permette di collegare il sistema operativo Umbrel a internet senza l\u0026rsquo;ingombro del cavo Ethernet, mantenendo il nostro nodo accessibile e funzionale in qualsiasi angolo della casa.\u003cbr\u003e\n\u003cbr\u003e\nSebbene la connessione cablata sia sempre la scelta più stabile per un nodo Bitcoin o Lightning, ci sono situazioni in cui la flessibilità del wireless è fondamentale. Vediamo come procedere passo dopo passo senza rischiare di perdere i dati della nostra blockchain.\u003c/p\u003e","title":"Come collegare Umbrel al Wi-Fi: Guida Completa per Raspberry Pi"},{"content":" SimpleX Chat Scansiona il codice QR o clicca per aprire l'App.\n🌐 Clearnet 🧅 Onion 👤 Profilo Scrivimi 📣 Canale Iscriviti 👤 Profilo Scrivimi 📣 Canale Iscriviti 🔑 OpenPGP:\n6b1cff4a81ecacfb0f8699282c8051e4f88baa32 ","permalink":"https://giuxfila.com/contatti/","summary":"\u003cstyle\u003e\n    .page-header, .post-title, .page-title, h1.entry-title, h1.page-title {\n        display: none;\n    }\n    .contact-wrapper {\n        text-align: center;\n        max-width: 800px;\n        margin: 0 auto;\n    }\n    .contact-columns {\n        display: flex;\n        justify-content: center;\n        gap: 2rem;\n        flex-wrap: wrap;\n        margin-top: 20px;\n    }\n    .contact-col {\n        flex: 1;\n        min-width: 250px;\n        max-width: 350px;\n    }\n    .section-icon {\n        display: inline-block;\n        width: 28px;\n        height: 28px;\n        vertical-align: middle;\n        margin-right: 6px;\n        margin-bottom: 2px;\n    }\n    .qr-block {\n        margin: 20px 0;\n        text-align: center;\n    }\n    .qr-image {\n        display: inline-block;\n        width: 200px;\n        height: 200px;\n        padding: 10px;\n        background: #ffffff;\n        border-radius: 12px;\n    }\n    .contact-link {\n        display: inline-block;\n        margin-top: 10px;\n        font-weight: bold;\n        text-decoration: none;\n        font-size: 1.1rem;\n    }\n    .contact-link:hover {\n        opacity: 0.8;\n    }\n    .qr-label {\n        font-weight: 700;\n        font-size: 1.2rem;\n        margin: 8px 0 2px;\n    }\n    .scan-instruction {\n        font-style: italic;\n        font-size: 1rem;\n        margin: 8px 0 30px;\n        opacity: 0.8;\n    }\n    .divider {\n        display: block !important;\n        width: 60% !important;\n        max-width: 400px;\n        height: 1px;\n        background: #ccc;\n        border: none;\n        margin: 40px auto !important;\n        clear: both;\n    }\n    .openpgp-section pre {\n        background: transparent;\n        border: none;\n        padding: 0;\n        margin-top: 10px;\n    }\n\n    /* Stile del toggle switch */\n    .network-toggle {\n        display: inline-flex;\n        align-items: center;\n        gap: 0;\n        margin-bottom: 25px;\n        background: var(--entry);\n        border: 1px solid var(--border);\n        border-radius: 30px;\n        padding: 3px;\n        position: relative;\n        user-select: none;\n        cursor: pointer;\n    }\n    .network-toggle .toggle-option {\n        padding: 8px 22px;\n        border-radius: 30px;\n        font-weight: 600;\n        font-size: 0.95rem;\n        color: var(--secondary);\n        transition: color 0.2s, background 0.3s;\n        z-index: 1;\n    }\n    .network-toggle .toggle-option.active {\n        color: var(--theme);\n        background: var(--primary);\n    }\n    .network-toggle .toggle-knob {\n        position: absolute;\n        top: 3px;\n        left: 3px;\n        width: calc(50% - 6px);\n        height: calc(100% - 6px);\n        border-radius: 30px;\n        background: var(--primary);\n        transition: left 0.3s ease;\n        z-index: 0;\n    }\n    .network-toggle.onion .toggle-knob {\n        left: calc(50% + 3px);\n    }\n\u003c/style\u003e\n\u003cdiv class=\"contact-wrapper\"\u003e\n\u003ch2 style=\"text-align:center; margin-top: 30px;\"\u003e\n  \u003csvg class=\"section-icon\" xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" viewBox=\"0 0 512 512\"\u003e\n    \u003cpath d=\"m128.9 299.7 84.1 84.1 42.8-42.9 85.7-85.7-84.1-84.1-42-42-85.7 85.7 85.7-85.7-84-84.1 42.8-42.9 84 84.1L343.9.5l42 42-85.7 85.7 84 84.1 85.7-85.7 42 42-85.7 85.7 84.1 84.1-42.8 42.9-84.1-84.1-85.6 85.8 84.1 84.1-42.9 42.8-84-84.1-85.7 85.7-42-42 85.7-85.7z\" style=\"fill-rule:evenodd;clip-rule:evenodd;fill:#07b4b9\"/\u003e\n    \u003cpath d=\"m44.5 129.4 84 84.1 85.7-85.7 42 42-85.7 85.7 84.1 84.1-42.8 42.9-84.1-84.1L42 384.2l-42-42 85.7-85.7-84-84.1z\" style=\"fill-rule:evenodd;clip-rule:evenodd;fill:#062d56\"/\u003e\n  \u003c/svg\u003e\n  SimpleX Chat\n\u003c/h2\u003e\n\u003cp class=\"scan-instruction\"\u003eScansiona il codice QR o clicca per aprire l'App.\u003c/p\u003e","title":"Contatti"},{"content":"Gestisci le password sicure ed accedi da tutti i dispositivi.\nURL del server Vaultwarden: https://vault.giuxfila.com\nPerché usare questo servizio? 🔐 Crittografia end‑to‑end: le tue password vengono cifrate sul tuo dispositivo prima di essere inviate al server. Anche se i dati risiedono sulla mia infrastruttura, io non posso leggerli. Solo tu possiedi la chiave. 🆓 Gratuito e senza limiti: nessun costo, nessuna restrizione sul numero di password, nessuna pubblicità. 🌍 Accesso multi‑dispositivo: sincronizza le tue credenziali su PC, smartphone e browser usando le app ufficiali Bitwarden. Come si usa (in 3 passi):\nScarica l\u0026rsquo;applicazione Bitwarden per il tuo dispositivo da bitwarden.com/download (desktop, mobile o estensione browser). Avvia l\u0026rsquo;app e, nella schermata di login, seleziona l\u0026rsquo;opzione Self‑hosted (o \u0026ldquo;Server auto-ospitato\u0026rdquo;). Inserisci l\u0026rsquo;URL del server: https://vault.giuxfila.com. Crea il tuo account con una master password robusta e inizia a salvare le tue password. Software utilizzato: Vaultwarden\n","permalink":"https://giuxfila.com/servizi/vaultwarden/","summary":"\u003cp\u003e\u003ci\u003eGestisci le password sicure ed accedi da tutti i dispositivi.\u003c/i\u003e\u003c/p\u003e\n\u003cp\u003e\u003cb\u003eURL del server Vaultwarden: \u003ca href=\"https://vault.giuxfila.com\" target=\"_blank\" rel=\"noopener\"\u003e\u003ca href=\"https://vault.giuxfila.com\"\u003ehttps://vault.giuxfila.com\u003c/a\u003e\u003c/a\u003e\u003c/b\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch3 id=\"perché-usare-questo-servizio\"\u003ePerché usare questo servizio?\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔐 \u003cstrong\u003eCrittografia end‑to‑end\u003c/strong\u003e: le tue password vengono cifrate sul tuo dispositivo prima di essere inviate al server. Anche se i dati risiedono sulla mia infrastruttura, \u003cstrong\u003eio non posso leggerli\u003c/strong\u003e. Solo tu possiedi la chiave.\u003c/li\u003e\n\u003cli\u003e🆓 \u003cstrong\u003eGratuito e senza limiti\u003c/strong\u003e: nessun costo, nessuna restrizione sul numero di password, nessuna pubblicità.\u003c/li\u003e\n\u003cli\u003e🌍 \u003cstrong\u003eAccesso multi‑dispositivo\u003c/strong\u003e: sincronizza le tue credenziali su PC, smartphone e browser usando le app ufficiali Bitwarden.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eCome si usa (in 3 passi):\u003c/strong\u003e\u003c/p\u003e","title":"Server Bitwarden (Vaultwarden)"}]