Michele Agostinelli Blog

La casa delle mie passioni

Da tempo utilizzo Git per gestire i miei progetti personali, sia software che di configurazione. Per anni mi sono affidato al pc di qualcunaltro (es: Gitlab o GitHub), ma la dipendenza da un servizio centralizzato, per quanto comodo, inizia a starmi stretta. Così ho cercato una soluzione più allineata alla mia filosofia: Forgejo, un fork comunitario di Gitea, leggero e facilmente self-hostabile.

Forgejo

Perché Forgejo

Forgejo nasce da una comunità che punta alla trasparenza e all’autonomia, senza il rischio che un progetto venga assorbito o piegato a logiche commerciali. La compatibilità con Gitea è totale, e i requisiti minimi lo rendono perfetto per VPS o server casalinghi.

Veniamo subito al dunque e facciamolo partire, cosi potremo provarlo con mano!


Setup con Docker

Ci affidiamo a Docker Compose, cosi con un solo file di configurazione abbiamo tutto il necessario.

docker-compose.yaml

services:
  forgejo:
    image: codeberg.org/forgejo/forgejo:latest
    container_name: forgejo
    restart: always
    environment:
      - USER_UID=1000
      - USER_GID=1000
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./robots.txt:/data/gitea/public/robots.txt:ro
    expose:
      - "3000"
    networks:
      - forgejo_net

networks:
  forgejo_net:
    driver: bridge

Reverse Proxy

E' possibile usare il web server che preferiamo, come ad esempio traefik, caddy, apache o nginx, in questo articolo vedremo un esempio con quest'ultimo.

Qui una configurazione base con https (via Let's Encrypt, gestito esternamente):

/etc/nginx/sites-available/forgejo.conf

server {
    listen 80;
    server_name git.miodominio.it;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name git.miodominio.it;

    ssl_certificate /etc/letsencrypt/live/git.miodominio.it/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.miodominio.it/privkey.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Dopo aver creato il file, attivare con:

ln -s /etc/nginx/sites-available/forgejo.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Backup automatico

Il backup rappresenta un step fondamentale del nostro setup, conviene implementarne subito uno all'avvio del servizio, cosi non ce ne dimenticvheremo e terremo i nostri dati al sicuro. Ricordiamoci che qui salveremo il risultato di diverse ore di programmazione, studio e prove!

I nostri dati si trovano nel volume data di cui sopra, quindi sarà sufficiente salvare il docker file e la directory data. Io consiglio di usare #borg ma potete usare il softwsre che preferite, trovo particolarmente utile aggiungere questa nuova directory alle procedure di salvataggio che sicuremante avrete già per tutto il resto. (se non le avete potete anche smettere di leggere questo blog, tornate quando ne avrete implementata una).


Configurazioni iniziali

A questo punto, dopo l'installazione, non ci resta che accedere via web al nostro software e fare le prime configurazioni. È possibile creare utenti, organizzazioni, concedere permessi e creare tutti i repository che si desiderano.

Ciascun progetto può essere impostato ad accesso privatp o pubblico.

In questo modo sarà semplicissimo collaborare in più persone allo stesso progetto, tenendo traccia delle varie modifiche.

Infine è anche possibile importare direttamente altri repository git.

Runner e Action

Forgejo, essendo un fork di Gitea, supporta un sistema di CI/CD integrato chiamato Actions, simile a GitHub Actions, e permette di eseguire job di build o deploy tramite runner personalizzati.

Io stesso ne faccio uso, è uno dei motivi per cui mi sto trovando benissimo con forgejo! Ho varie configurazione a seconda del progetto ospitato, ma essenzialmente queste si occupano di effettuare il “deploy” del codice, cioé copiano a destinazione (server di sviluppo o di produzione a seconda dei casi), il codice modificato, cosi che sia pronto all'uso. In questo modo, grazie alla history di git, sarà sempre possibile tornare indietro, nonché tenere traccia delle modifiche nel tempo.

Come funziona

Le Actions sono definite da file YAML nei repository (.forgejo/workflows/), e possono contenere job con step eseguiti su runner registrati.

I runner sono agent installati su macchine (stessa VPS o remote), che si collegano al server Forgejo e attendono job da eseguire.

Una volta definita la condizione scatenante (es: commit su ramo main, rilascio di una nuova versione, ecc) partirà il worksflow che abbiamo definito, con la possibilità di verificarne lo stato di esecuzione in tempo reale. Infine è anche possibile andare a vedere i log delle esecuzione precedenti.

All'interno di una action si possono usare #secret e #variabili, in modo da poter riusare il codice della action e allo stesso tempo mantenere al sicuro le credenziali.

Setup runner base

Vediamo come creare un nuovo runner, passo passo:

export RUNNER_VERSION=$(curl -X 'GET' https://data.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | jq .name -r | cut -c 2-)
wget -O forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v${RUNNER_VERSION}/forgejo-runner-${RUNNER_VERSION}-linux-amd64
chmod +x forgejo-runner
sudo mv forgejo-runner /usr/local/bin/forgejo-runner
sudo useradd -m -s /bin/bash forgejo-runner
sudo usermod -aG docker forgejo-runner

Rechiamoci sull'interfaccia web di Forgejo: Forgejo > Repository > Settings > Actions > Runners > “Generate new token”

sudo -i -u forgejo-runner
forgejo-runner register

Avvio automatico del runner

Io ho usato uno script systemd per l'avvio automatico, ve lo riporto di seguito

sudo echo "
[Unit]
Description=Forgejo Act Runner
After=network.target docker.service
Requires=docker.service

[Service]
User=forgejo-runner
Group=forgejo-runner
ExecStart=/usr/local/bin/forgejo-runner daemon
Restart=always
WorkingDirectory=/home/forgejo-runner

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/forgejo-runner.service

sudo systemctl daemon-reload
sudo systemctl enable forgejo-runner
sudo systemctl start forgejo-runner
systemctl status forgejo-runner

Vantaggi in breve

  • Repository del proprio codice, diviso come si preferisce: singoli progetti, organizzazioni, ecc.
  • Possibilità di creare utenti per collaboratori/amici con controllo sugli accessi/permessi.
  • Automatizzo test, build, deploy senza dipendere da servizi esterni.
  • Nessuna dipendenza da fornitori terzi e nessun limite di spazio, esecuzioni, personalizzazioni.
  • Versionamento del codice, e nel caso di ci/cd garanzia di riproducibilità
  • Pocchissime risorse necessarie lato server
  • Vuoi mettere quanto è figo avere il proprio servizio di versionamento?

Uso quotidiano

Forgejo supporta #git via #ssh, Web UI e #webhooks. Ho configurato alcuni repository con CI locale usando le Actions e i runner integrati. L’interfaccia è leggera e pulita, senza funzionalità inutili.

Conclusioni

Forgejo è una soluzione Git solida, coerente con un approccio decentralizzato. Semplice da gestire, veloce da installare, e adatta anche per chi – come me – preferisce sapere dove stanno i propri dati. Per ora lo utilizzo solo per progetti personali, ma potrei iniziare a usarlo anche per collaborazioni future.

Non vi resta che provarlo, fatemi sapere le vostre impressioni con un commento nel #fediverso su questo articolo.

#git #forgejo #action #code #programmi #cicd #gitea #runner #selfhosting #selfhost #nocloud

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Alla fine ho ceduto, ho acquistato un mini pc usato di qualche anno fa. Come molti si voi sapranno, da anni il pc sempre acceso di casa mia è un raspberry pi 4, dove gira la domotica di casa (#homeassistant) e qualche altro (piccolo) servizio.

Da tempo ero arrivato un po' al limite, perché ho un sacco di sensori e vorrei conservare un po' di storico (comodo ad esempio per analizzare consumi), ho quindi iniziato a guardarmi intorno.

Per primo ho pensato al pi 5, a cui però vanno aggiunti alimentatore, case, memorie, e quindi il prezzo quasi raddoppia. Da lì sono passato a guardare cosa offriva il mercato dell'usato, ed eccomi giunto a questa riflessione che condivido con voi.

Innanzi tutto i minipc, grazie ai nuovi dischi nvme sono sia compatti, ma anche silenziosi, e poi finalmente da qualche anno a questa parte, non si guarda solo all'evoluzione in termini di prestazioni, ma anche all' efficienza energetica. Anche l'ormai affermata architettura x86 è stata costretta a correre ai ripari nei confronti di arm, molto più efficiente sotto questo punto di vista.

Altra cosa da considerare è che negli ultimi 4-5 anni non c'è stata chissà quale rivoluzione sull'hardware e quindi un pc di qualche anno fa è più che sufficiente per i miei scopi (e quelli di molti) . Il sistema operativo #GnuLinux è molto efficiente nel “ridare” vita a vecchi pc, è in pratica un matrimonio perfetto!

In rete (ebay, subito, amazon) si trovano molti di questi pc ricondizionati, in quanto spesso sono usati, o meglio noleggiati, da aziende per pc ad uso ufficio.

Ovviamente questi mini pc hanno un tdp (= consumo) più alto di un raspberry pi, ma anche molta più potenza di calcolo! Potete addirittura metterci sopra #proxmox e vari server virtuali, a patto di avere memoria ram a sufficienza. Io penso che opterò per #debian su cui userò un po' di software nativi (pacchetti ufficiali) e un po' di immagini #docker alla bisogna.

Il modello che ho scelto (Lenovo m900 tiny) è dotato di processore Intel Core i5 6500T, dove la T finale, appunto, strizza l'occhio ai bassi consumi.

Il pc è anche dotato di varie uscite video e può anche essere montato dietro ad uno schermo, ma io lo userò in modalità #headless, cioè senza monitor collegato.

L'interno hardware del dispositivo è tale e quale ad un portatile, stesso processore, stessa scheda madre, ecc ecc. Ritengo che per uso ufficio e casa è perfetto, basta collegare un monitor (o una tv), tastiera, mouse e via. Per questi usi, va più che bene (con linux), ed è poco rumoroso.

Quindi, per concludere, adesso aspetto che mi arrivi e dopo ci vorrà qualche giorno (non vi nascondo che mi fa un po' fatica) per trasferire tutto quello che avevo sul vecchio sul nuovo!

Spero di avervi fornito qualche spunto di riflessione interessante, soprattutto riguardo al riciclo dell'hardware, e voi ci avete mai fatto un pensierino?

#Linux #opensource #recicle #hardware #minipc

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Beh, chi mi conosce saprà già che la mia risposta è decisamente si!

Non c'è giorno in cui non lo utilizzi. Molte operazioni sono molto più veloci se fatte da terminale, come ad esempio quelle che si possono effettuare su molti file in un colpo solo! Bisogna ammettere che, iniziando da zero, la strada è in salita, c'è molto da imparare, ma una volta acquisita una certa padronanza, velocizzerete moltissimo il vostro flusso di lavoro e non solo ci sono delle operazioni che si possono effettuare solo in questo modo.. Pensate, ad esempio, alla modifica solo di alcuni file in mezzo a migliaia, oppure spostare solo quelli che rispettano alcuni criteri.

Nel mio caso terminale è sinonimo di #bash, la shell più usata in ambito #linux.

Bash

Esempi

Quelli che seguono sono alcuni esempi dei miei utilizzi più comuni.

Resize massivo di immagini

find /home/yunohost.app/nextcloud/data/__groupfolders/3/prove -type f -iname "*.jpg" -exec mogrify -define preserve-timestamp=true -verbose -resize "2048x2048>" -quality 90 {} \;

Resize massivo di video

mencoder panettone.mov -vf rotate=1 -oac pcm -ovc lavc -lavcopts ffmpeg -i input.file -c:v mpeg4 -q:v 5 -tag:v DIVX -vf scale=w=720:h=576:force_original_aspect_ratio=decrease -c:a libmp3lame -q:a 3 -ac 2 -ar 44100 output.avi
find /opt/mypath/ -xtype l

Rinomina di massa file

for i in File*.txt; do j=`echo $i | sed 's/questo/quello/g'`; mv "$i" "$j"; done

Ottimizzazione file pdf

Se vogliamo ridurre le dimensioni di alcuni file pdf in un certo path, rinunciando alla qualità delle immmagini.

for file in $(ls suffisso_*.pdf); do gs -sOutputFile="${resize_file%%.*}".pdf -sDEVICE=pdfwrite -dBATCH -dNOPAUSE -dDownsampleColorImages=true -dDownsampleGrayImages=true $file; done

sincronizzazione di file e directory

Questo comando si può usare sia tra due directory dello stesso computer, sia nel caso uno dei due sia remoto, l'enorme vantaggio sta nella seconda volta in cui viene lanciato, solo le differenze tra il primo e il secondo saranno trasferite, ottimizzando, quindi, i tempi del trasferimento. (saranno riportati anche i permessi dei singoli file)

rsync -auvx /orgine/ /destinazione/

Conversioni di formato (audio, video, ma non solo)

Flac (diversi metodi)

sox track_01.wav track_01.flac

for myfile in $(ls *.wav); do flac --verify --replay-gain --best --delete-input-file $myfile; done

ffmpeg -i in.wav -af aformat=s16:44100 out.flac

Ssh

Spesso la shell (= riga di comando) va a braccetto con il software ssh, che permette di collegarsi su un sistema remoto. Grazie alla combinazione dei due, è possibile amministrare server remoti (cioé diversi dal pc che stiamo usando) o headless, cioé privi dell'interfaccia grafica (che consuma solo risorse aggiuntive), come il famoso #raspberrypi.

curl

Come non citare curl il coltellino svizzero della riga di comando, specializzando in richieste remote via http e trasferimento di file. Su questo strumento (#curl) farò un articolo apposito, perché è uno strumento molto potente, in continuo sviluppo e con numerosi casi d'uso.

Vim

E' il mio editor per eccellenza, quando uso il terminale uso lui per editare i file di testo (e non solo).

Installazione pacchetti

Tutte le varie distribuzioni linux hanno degli appositi software (rigorosamente da riga di comando) per installare i pacchetti e le loro dipendenze, alcuni esempi: – apt (Debian/Ubuntu) – dnf (Fedora, redhat) – pacman (Arclinux) – apk (Alpine)

Ansible

Oltre a bash, di cui sopra abbiamo ampiamente parlato, #ansible merita una mensione d'onore (è probabile che in futuro farò un articolo dedicato a questo strumento). Ansible è un tool (open source) di automazione, con cui effettuare il provisioning, la gestione della configurazione, il deploy delle applicazioni e moltissimi altri processi IT, in modo semplice, organizzato e automatizzato. Il suo utilizzo è libero, e in rete è possibile trovare migliaia di playbook (script), condivisi da altri utenti che permettono di automatizzare i compiti più disparati.

Software di Backup

Da sempre Linux (ma non solo) offre molti software per gestire il backup da riga di comando. Alcuni esempi – borg – duplicity – restic – rsync – rclone

Powershell

Infine una piccola digressione/informazione, anche Microsoft è stata costretta ad ammettere la superiorità della riga di comando, infatti dopo anni in cui ha puntato esclusivamente a rendere le interfacce sempre più accattivanti, da qualche anno fornisce insieme ai suoi sistemi operativi la #powershell. Con questo software, di fatto, non ha voluto rimanere indietro rispetto al competitor #linux. In pratica è un ammissione circa il fatto che alcune cose si fanno meglio e più velocemente con la riga di comando! Nel corso del tempo sono nate estenzioni per questa shell, e ormai è possibile effettuare moltissime operazioni, purtroppo ha una propria sintassi, quindi sarà necessario studiare un po'.

Per motivi spazio e tempi di lettura l'articolo finisce qui, ma ci sarebbe materiale a sufficienza per scrivere libri su libri o riempire di articoli giornalieri un blog. Spero di avervi un po' incuriosito a provare, e con che i miei appunti su qualche comando che uso vi siano di aiuto.

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Cos'è?

Amazon S3 è un tipo di storage in grado di memorizzare vari tipi di oggetti, è usato per applicazioni internet, backup, disaster receovery, archiviazione dati e per memorizzare grandissime quantità di dati per poi essere analizzate. Questo servizio è stato lanciato negli usa nel 2006 ed in Europa è arrivato, invece, l'anno successivo.

Come abbiamo visto, è nato come un servizio del cloud Amazon, ma poi moltissimi altri vendor (o software) hanno implementato le stesse Api, e quindi è diventato uno standard usato da molti altri fornitori (o software). S3 storage

Vantaggi

  • Costo ridotto
  • Possibilità di usarlo come repository per i nostri backup (a buon mercato).
  • Se hostiamo un servizio, possiamo optare per una VPS con disco ridotto (magari del tipo NVME), per poi usare s3 per memorizzare i dati di grandi dimensioni, in questo modo massimizziamo prestazioni e conteniamo i costi.
  • Funzionalità avanzate: cifratura dei dati, immutabilità del dato, snapshot, regole sul ciclo di vita dei dati, ecc.

Svantaggi

Vendor locking, diventa fondamentale prevedere un backup (magari incrementale) su un altro provider, ma non ovviamente avremo un raddoppio dei costi. Impossibilità di accedere ai dati in modo tradizionale: non c'è una directory con i dati organizzati in modo gerarchico.

Bucket

Un bucket è un container per gli oggetti archiviati in S3, si possono avere più bucket con uno stesso account, può essere utile per separare ambiti diversi e anche per creare chiavi di accesso seperate per ciascun bucket, cosi da segregare le applicazioni. S3 bucket

Provider suggeriti

Software server

Se vogliamo self-hostare il servizio esistono dei software tramite i quali noi stessi possiamo diventare fornitori del servizio. È consigliabile avere più vps, magari di provider diversi, che formino un cluster, in modo da garantire la disponibilità del dato anche nel caso di un crash singolo. Alcuni di questi software sono: – miniogarageseeweedFS

Backup

Software client backup

rclone

E'un software da riga di comando che è in grado di gestire files che si trova su cloud storage, tra questi quelli di tipo s3. Detto in parole povere, è #rsync con supporto #s3. Quindi possiamo usarlo per spostare i dati da un bucket ad un altro, sincronizzare due bucket, ecc ecc.

Vendor backup

Alcuni fornitori offrono un proprio servizio di backup (e ripristino) dei dati, in questo caso bisogna fidarsi del fornitore scelto.

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Questo #blog è realizzato con il software #writefreely, la più semplice piattaforma per scrivere contenuti permanenti sul web. Writefreely Logo

Caratteristiche

Si tratta di un software minimalista con cui creare un Blog, o anche un'intera comunità di più blog.

Tra le funzionalità, abbiamo l'autosaving, un editor lineare, senza distrazioni, con il supporto di #markup language. Quella che può sembrare una limitazione, invece è un vantaggio: ci si concentra sul contenuto, e non sull'apparenza.

Ci sono sia il supporto per il feed rss che la federazione con il #fediverso. Rss Fediverso

Federazione

I vostri post saranno federati con il fediverso, per cui, ad esempio, chiunque abbiamo un account su #mastodon potrà seguire il vostro blog. Se non sapete cos'è il #fediverso, potete approfondire qui: https://fediverso.it

Installazione e configurazione

Software leggerissimo, occupa pochissime risorse ed è un solo semplice eseguibile, con l'unico requisito di un database #mysql, che \e dove saranno salvati i contenuti.

Se volete cimentarvi nell'installazione e configurazione, seguita la guida ufficiale, davvero molto semplice, ma esaustiva: https://writefreely.org/start

Gestione Immagini

Dopo averlo provato, l'unica cose di cui sentivo la mancanza era una gestione delle #immagini, ma ho risolto in maniera molto semplice e utile, vi lascio all'articolo che avevo scritto a tal proposito (basterà cliccare sul tag #immagini).

##Personalizzazione E' possibile configurarlo per gestire più blog o uno soltanto (il sito sui cui vi trovato è in modalità mono).

Pubblicazione post

Ciascun blog, può essere configurato i 3 modalità: 1. Pubblico: tutti leggono i vostri articoli. 2. Privato: accessibile solo agli utenti registrati 3. Protetto da password: unica per tutti per poter leggere

Riguardo al punto 1, starà poi a voi decidere se renderlo indicizzabile dai motori di ricerca oppure no, semplicemente configurando il file #robots.txt

Esistono 3 modalità di visualizzazione dei post: 1. Blog: vengono mostrate le data degli articoli che saranno visualizzati dal più recente. 2. Novel: nessuna data degli articoli, ordinamento dal primo post in poi 3. Notebook: nessuna data degli articoli, ordinamento dal post più recente.

Display post

Infine è disponibile un campo per la firma da personalizzare, questo “pezzetto” di testo, o codice, sarà presente in calce a tutti gli articoli.

Css

Le uniche personalizzazioni grafiche realizzabili sono tramite il #css, è possibile trovare in rete dei temi giù pronti da cui partire, tramite i quali personalizzare colori, stili, dimensioni e distanze della pagina, in pieno spirito minimalista.

Conclusioni

Personalmente trovo sia davvero piacevole aprire la schermata di nuovo articolo e trovare un schermo pulito, vuoto, in cui concentrarsi sulla scrittura e quindi sul contenuto, less is more!

Ho scelto questo software perché non avevo bisogno di fare chissà quale cose strabilianti, ma appunto la necessità era quella di scrivere qualcosa utile per gli altri, ma anche per me (scrivere mi rilassa).

Costa aspettate a provarlo? Per chi non si vuol sbattere (o non ha dove farlo) nell'installazione, consiglio questo sito dove potete aprire il vostro blog writefreely: https://noblogo.org

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Introduzione

Scambiare file tra dispositivi diversi (o persone diverse), si dà per scontato che sia sempre facile, veloce e alla portata di tutti, ma quasi mai è così! Nel 2024.ha senso fare un'articolo sull'argomento? Decisamente sì! Di soluzioni ce ne sono moltissime, ma qui ne vedremo solo 3, che poi sono quelle che uso io, con le quali riesco a coprire tutte le esigenze che ho mai avuto.

Pairdrop

Ispirato all'app AirDrop di Apple, questo software offre un servizio semplice, ma allo stesso geniale! Non serve installare alcuna app sul dispositivo, basta un browser! Funziona con tutti i dispositivi e sistemi operativi. E' possibile associare i dispositivi in modo permanente e creare delle stanze in cui scambiare i file. Lo scambio dei file avviene in maniera sicura, il server viene usato solo per mettere in comunicazione i dispositivi, nessun file verrà depositato, anche temporaneamente, sul server.

Vi lascio un'istanza se volete provarlo: https://pairdrop.devol.it/

Pairdrop

Nextcloud

Funziona in modo asincrono, cioè i due dispositivi non devono essere usati (e disponibili) contemporaneamente. Consente varie opzioni di condivisione, come ad esempio la possibilità di avere una cartella condivisa permanente e aggiornata in tempo reale (gli utenti devono avere account sul sistema (o federati). Nextcloud Logo

Ho parlato su questo blog di #nextcloud con un articolo dedicato, clicca sul nome se vuoi approfondire.

Bitwarden (Vaultwarden)

Il famoso password manager Bitwarden (e la sua controparte open Vaultwarden) oltre che per gestire le nostre password, può essere usato anche per inviare file e testi, e non si tratta di una funzione di ripiego, ma è molto bene implementata! Abbiamo la possibilità di proteggere il file con una password, impostare la scadenza del link e addirittura può la modalità usa e getta (il file si autodistrugge dopo lo scaricamento) ! Se volete un'istanza da usare liberamente vi suggerisco questa: https://vaultwarden.devol.it Bitwarden send

E voi cosa usate?

#sharing #filesharing #pairdrop #airdrop #bitwarden #vaultwarden

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

RetroPie è un software gratuito che è possibile installare su Raspberry Pi, Odroid e sistemi x86 e permette di emulare i videogiochi del passato!

Retropie logo

Si basa su retroarch, che è un frontend per vari emulatori, uno dei suoi punti di forza è la possibilità di avere una configurazione unificata per tutte le piattaforme.

RetroArch/Libretro è un progetto di frontend e backend che si propone di creare un proprio ecosistema software che giri come codice dinamico.

cadillac mortal kombat street fighter

Guida brevissima

Perché una guida brevissima? Il web è pieno di guide per installare retropie, non ha senso scriverne un'altra, quindi, fate una ricerca: installare retropie. In breve: si scarica immagine della scheda SE, con un software come balena etcher (o dd) la si scrive sulla scheda, si copiano i giochi in nostro possesso, e, infine, si inserisce e via!

Come si gioca

E' possibile collegare joypad usb o bluetooth, o usare una tastiera (magari meccanica) per navigare tra i menù e giocare. Date un'occhiata ai joypad della 8bitdo.

Essendo un sistema estremamente portatile, è l'ideale da portare ad una cena tra amici e trascorrere la serata a ricordare i giochi che hanno caratterizzato la nostra adolescenza! Sarà sufficiente trovare un tv dotato di porta HDMI, una presa di alimentazione e il divertimento è assicurato.

Se emulate giochi “pesanti” potrebbe essere necessario montare una ventola e dei buoi dissipatori sul vostro raspberry.

Raspberry e Retropie

Configurazione

Le personalizzazioni alla configurazione e il caricamento di nuovi file può essere effettuato in due modi: 1. Collegando direttamente la scheda sd ad un altro computer 2. Configurare il sistema per collegarsi alla rete (wifi, ethernet), in modo da poter accedere alle cartelle condivise (già configurate di default).

Il secondo metodo è molto utile anche per applicare aggiornamenti o per fare lo scraping delle copertine.

EmulationStation

Si tratta del frontend (menù) che ci accoglie dopo aver acceso il sistema. Da qui si fanno partire i vari giochi (e programmi), è altamente personalizzabile, sia come temi che come immagini.

Retroarch

Trattandosi di un unico frontend per i vari emulatori, è possibile accedere al menu e cambiare le configurazioni (es mappatura tasti) per il singolo gioco o come globali e quindi per tutti i giochi che andremo a provare successivamente

Retroarch

Sistemi emulati

  • 3do
  • Amiga
  • Amstrad CPC
  • Apple II
  • Atari 2600
  • Atari 5200
  • Arari 7800
  • Atari Jaguar
  • Atari Lynx
  • Atari ST, STE, TT, Falcon
  • Coco
  • Colevovision
  • Commodore 64, Vic-20
  • Daphne
  • Dragon 32
  • Dreamcast
  • FinalBurn Neo
  • Famicon Disk System
  • GameCube
  • Game & Watch
  • Game Gear
  • Game Boy
  • Game Boy Color
  • Game Boy Advance
  • Intellivision
  • Macintosh
  • MAME
  • Master System
  • Mega-Cd/Sega Cd
  • Megadrive / Genesis
  • MESS
  • MSX
  • Neo Geo
  • Neo Geo Pocket
  • Neo Geo Pocket Color
  • Nintendo 64
  • Nintendo DS
  • Nintendo Entertainment System
  • Oriuc/Armos
  • PC
  • PC-8800
  • PC-9800
  • PC Engine
  • PC Engine 2
  • Playstation 1
  • Playstation 2
  • Pokemon Mini
  • PSP
  • ResidualVM
  • SAM Coupé
  • Saturn
  • ScummVM
  • Sega 32x
  • Sega SG-1000
  • Sharp X1
  • Sharp X68000
  • Super Nintendo Entertainment System
  • TI-99
  • TRS-80
  • Vectrex
  • Videopac
  • Virtual Boy
  • Wii
  • WonderSwan
  • WonderSwan Color
  • ZX-81
  • ZX Spectrum

Rom e licenze (disclaimer)

Attenzione al fatto che molte delle rom anche ancora il copyright in vigore, per cui è necessario possedere una copia acquistata dei giochi che andrete a caricare sul vostro sistema. Usare copie pirata dei giochi è un reato

Approfondimenti

Se ne volete sapere ancora di più vi lascio qualche sito: – https://retropie.org.uk (sito ufficiale) – https://www.retropie.it (sito italiano non ufficiale) – https://t.me/retropie_it (gruppo telegram in italiano) – https://mastodon.uno/tags/retropie (mastodon)

Per veri nerd

Se ho incuriosito, lo avete provato, vi siete divertiti il passo successivo è quello di costruire un cabinet personalizzato!

Vi lascio a qualche immagine presa in giro sul web, giusto per farvi un'idea. cabinet1 cabinet2 cabinet3 cabinet4

Nes Case

Io ho questo come case per il raspberry che uso con retropie. Il disco ssd si trova in quella che era la cartuccia del videogioco!

nespi4 nespi42

#retropie #retrogaming #raspberrypi #case #gaming

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Nota Introduttiva: questo articolo sarà solo un'introduzione, seguiranno approfondimenti sui singoli componenti.

Cos'è nextcloud

Software open source che permette di realizzare un servizio Cloud personale per i propri dati. Ambiente collaborativo e può anche essere federato con altre installazioni. È possibile installarlo su un proprio dispositivo o usare quello messo a disposizione da alcune aziende o associazioni. L'architettura è modulare, questo ci permette di attivare solo le funzionalità che ci servono e se ne possono aggiungere di nuove (via via che gli sviluppatori le rilasciano). C'è un plugin per ogni esigenza!

Nextcloud Logo

Caratteristiche

Il suo punto di forza è la condivisione e la sincronizzazione dei file, che può avvenire tramite semplice browser web o utilizzando l'applicazione disponibile per tutti i sistemi operativi. Possiamo considerarlo un'alternativa a Dropbox, Google drive o onedrive. Ci sono anche numerosi servizi aggiuntivi, che coprono diverse esigenze, come ad esenpio: – calendario – contatti – webmail – attività (task) – note (markup language) – chat interna – suite per l'ufficio (via web, basata su libreoffice) – galleria immagini – ebook reader – password manager – gestione bookmark (con possibilità di sync con plugin per il browser) – podcast – libro di ricette – ricerca – forms

Questi servizi possono essere usati via web, o con i vari client, con il vantaggio di avere tutto sincronizzato tra più dispositivi. Nextcloud diventa così il proprio hub personale dove ci sono tutti i propri dati e le proprie attività.

Nextcloud Dashboard

Vantaggi

  • self hosting: possiamo installarlo su un nostro pc o su una #vps in modo che i nostri dati siano sempre sotto il nostro controllo.
  • nel caso si voglia affidarsi al lavoro di altri, possiamo scegliere il provider che vogliamo e cambiarlo in qualsiasi momento (esportando i dati)
  • tra utenti dello stesso server (o federati) è possibile collaborare
  • condivisione di file (e immagini) avendo sempre tutto sotto controllo, vedi paragrafo dedicato sotto.
  • ricerca globale: usando la casella di ricerca, questa verrà effettuata ovunque: file, note, contatti, calendario, ecc. ecc.

Nextcloud Dashboard

Backup

Come abbiamo visto nextcloud è la nostra casa personale di tutti i dati e attività, diventa quindi fondentale prevedere un sistema di backup affidabile, a cui far ricorso in caso di problemi.

Cosa salvare

  1. Database: dipende da quello che avete scelto, ma solitamente si tratta di Mysql (o MariaDB). Le procedure di salvataggio sono quelle consuete (mysqldump), che potete trovare in rete o in questo blog (in futuro).
  2. File: salvataggio della directory nextcloud ospitata dal webserver, che contiene sia il software che i nostri dati
  3. Se non siamo gli unici utilizzatori dell'istanza, è consigliabile impostare l'istanza in modalità manutenzione durante le operazioni di salvataggio, in modo da avere la consistenza dei dati.

Vi consiglio di usare un sistema come #borg, il quale può essere usato in modalità incrementale così vi garantisce di poter recuperare sempre una certa versione dei vostri documenti e ha il vantaggio che, dopo la prima esecuzione, i backup successivi trasferiranno solo le nuove modifiche sul backup, saranno così molto veloci e occuperanno solo lo spazio strettamente necessario!

Condivisione di file

  • cartelle (e file) in sola lettura per utenti anonimi anche protetti da password
  • possibilità di poter ricevere file da altri (upload)
  • galleria foto
  • cartelle collaborative con altri utenti del server (o istanze federate)
  • supporto nativo a #webdav
  • applicazione desktop per sincronizzazione automatica dei file.
  • supporto al versionamento

Calendario e contatti

  • configurando un app come #davx5 vi permette di sincronizzare contatti e calendario del vostro smartphone
  • È possibile sincronizzare anche i client desktop, sfruttando i protocolli standard #caldav e #carddav
  • import e export da e verso altri sistemi

App mobile

  • accesso a tutti i propri file in mobilità
  • auto upload delle foto scattate

Task

  • gestione categorie
  • sotto task
  • date di inizio e scadenza
  • percentuale avanzamento

Note

  • accesso web
  • markup language
  • categorie
  • app mobile

Nota personale

Io sto usando tantissimo le note, per segnarmi di tutto: appunti, comandi, persino le bozze che scrivo per il blog. Trovo che sia la vera killer application, ritrovo sempre tutto e l'impaginazione è semplice e funzionale.

Nextcloud Note Nextcloud PostIt

Suite ufficio

E' possibile editare i documenti office anche via interfaccia web:

  • Software basato sul diffuso libreoffice
  • Editing collaborativo real time (è necessario installare Collabora office)

Utenti di mastodon.uno

Se vi ho incuriosito e volete provare ad usarlo, vi segnalo che gli utenti di mastodon.uno posso richiedere un account da qui: https://cloud.mastodon.uno/apps/forms/s/YSCoCC37D9omTN8iXSKkQqz9 (sul server sono già preinstallati diversi software aggiuntivi)

Nextcloud Photos Nextcloud Cookbook

#nextcloud #collabora #condivisione #file #contatti #selfhosting

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Aggiornamento 14/02/2024: aggiungo in fondo all'articolo le modifiche necessarie per la parte server.

Questo metodo lo utilizzo ormai da svariati mesi e funziona benissimo!

Premetto subito che non è una semplice soluzione adatta per tutti, poiché richiede un server #wireguard e un'installazione di #pihole. Però se avete un amico che ha già configurato tutto per se, sarà molto semplice farlo usare anche a voi! E' complessa la configurazione server, mentre la parte client è semplicissima: scaricare un'app e scansionare un qr code.

Abbiamo visto la configurazione di entrambi su questo blog (cliccate sui due hashtag per le leggere le guide).

Con questo metodo non solo bloccherete le pubblicità invasive sul browser, ma su tutte le app! Inoltre oltre al blocco pubblicità avrete anche il blocco dei siti malevoli (in base alle liste che avete deciso di aggiungere a pihole).

Il trucco è usare la vpn per fare in modo che lo smartphone navighi nello stessa modalità che avviene da casa, cioè protetto da pihole!

Abbiamo due diverse modalità di uso per la vpn: – usarla solo per la risoluzione dns – usarla per tutto il traffico

L'una non esclude l'altra, cioè possiamo fare due profili diversi e passare da uno all'altro in base alle necessità (ad esempio se ci connettiamo un WiFi pubblico non protetto, conviene usare la seconda opzione). La prima soluzione ha il vantaggio di consumare pochissima banda per il server, solo lo stretto necessario per le risoluzioni dns.

Esempio di configurazione solo dns:

[Interface]
PrivateKey = chiave_priv_client1
Address = 192.168.20.2/24
Dns = ip_vpn_privato_server
[Peer]
PublicKey = chiave_pub_server
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs = ip_vpn_privato_server/32
Endpoint = hostname_pubblico_server:porta

Esempio di configurazione traffico completo:

[Interface]
PrivateKey = chiave_priv_client1
Address = 192.168.20.2/24
Dns = ip_vpn_privato_server
[Peer]
PublicKey = chiave_pub_server
PresharedKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AllowedIPs  = 0.0.0.0/0, ::/0
Endpoint = hostname_pubblico_server:porta

Vi consiglio di usare questo client per wireguard wg-tunnel, perché ha una funzionalità fondamentale per il nostro scopo: è in grado di attivare automaticamente la vpn quando ci disconnettiamo dalla nostra wifi (è possibile scegliere più reti fidate).

Wg tunnel Logo

Wg tunnel Screen 1 Wg tunnel Screen 2

Non ho provato questa soluzione su iPhone, ma presumo che possa funzionare anche lì.

Infine vi consiglio anche un'ottimo client #android per gestire pihole: Pi-hole Droid.

Aggiornamento 14/12/2024

Modifiche configurazione server

Affinchè il server sia in grado di ruotare i pacchetti ricevuti dalla VPN è necessaria qualche configurazione in più, dei comandi “standard” #iptables per gli addetti ai lavori. (su iptables trovate ampia documentazione on line) Ma veniamo al dunque

Esempio di righe in aggiunta alla parte server:

...
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = iptables -A FORWARD -o %i -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# DNS - sostituire 192.168.1.x con ip del proprio pihole
PostUp = iptables -I FORWARD -i %i -p udp -m udp -d 192.168.1.x/32 --dport 53 -j ACCEPT
PostUp = iptables -I FORWARD -i %i -p tcp -m tcp -d 192.168.1.x/32 --dport 53 -j ACCEPT

# Blocco rete locale per tutti (nell'esempio è con subnet 192.168.1.0)
PostUp = iptables -I FORWARD -i %i -d 192.168.1.0/24 -j REJECT

# Apertura rete locale ad un singolo ip
PostUp = iptables -I FORWARD -i %i -s 172.16.2.2/32 -d 192.168.1.0/24 -j ACCEPT

PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -D FORWARD -o %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
...

#pubblicità #blocco #pi-hole #vpn #wireguard

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA

Pare che la vicenda degli spazzolini elettrici WiFi usati per un attacco informatico non sia reale, ma piuttosto si tratta di uno scenario ipotetico. (https://www.hwupgrade.it/news/sicurezza-software/tre-milioni-di-spazzolini-elettrici-smart-utilizzati-come-rete-botnet-per-un-attacco-ddos_124149.html)

Certo non molto distante dalla realtà, visto che ormai tutti gli elettrodomestici hanno connettività WiFi.

A mio avviso il problema è il come è stata implementata la connettività degli apparecchi. Infatti molti di questi richiedono obbligatoriamente una connessione internet funzionante.

A parte eventuali problematiche legate alla sicurezza, questo comporta anche una dipendenza dal sito del produttore. Cioè se per qualsiasi motivo (economico e non) quest'ultimo decide di chiudere il servizio, il nostro apparecchio perderà queste funzionalità.

Facciamo un esempio concreto: in casa ho un impianto di #domotica personale con #homeassistant, ho anche l'impianto di condizionamento collegato in WiFi. Dato che gli apparecchi hanno qualche anno, ho dovuto acquistare una scheda aggiuntiva (WiFi) da inserire al loro interno. Dopo un po' di ricerche e approfondimenti, ho scoperto che ne esistevano due versioni, una più vecchia, ma che esponeva direttamente in rete locale delle #api, e una più moderna che funzionava solo se è attivo un collegamento internet (e il server del produttore è funzionante). Ho faticato un po', ma alla fine sono riuscito a trovare la prima versione della scheda presso un venditore on line, ne aveva ancora disponibili anche se ormai fuori produzione (per mia fortuna). In questo modo riesco a comandarli (e interrogare lo stato) anche se la connessione internet di casa dovesse non funzionare o se il produttore decidesse di interrompere il servizio.

Concludendo, quando acquistate un apparecchio, nella scelta fate attenzione anche a questo aspetto!

#domotica #sicurezza #wifi #informatica #spazzolini

Seguimi su mastodon: @magostinelli@mastodon.uno

Articolo pubblicato con licenza CC BY-NC-SA