noblogo.org

Reader

Leggi gli ultimi post dagli utenti di noblogo.org.

from ᗩᐯᗩIᒪᗩᗷᒪᗴ

immagine

Sarebbe inopportuno valutare le imprese discografiche dei Tinariwen come fossero quelle di una band qualsiasi: l’origine geografica, l’identità etnica e il percorso biografico definiscono non solo il contesto, bensì la natura stessa della loro attività artistica. Lo chiariscono preliminarmente sul proprio sito web, del resto: «Il migliore album dei Tinariwen non è stato ancora registrato... https://artesuono.blogspot.com/2019/09/tinariwen-amadjar-2019.html


Ascolta il disco: https://album.link/i/1466026608


 
Continua...

from 📖Un capitolo al giorno📚

Le res novae del nostro tempo

4. Se a suo tempo Leone XIII parlava di «nuove questioni» (rerum novarum), oggi non possiamo semplicemente ripetere i suoi preziosi insegnamenti, ma dobbiamo chiedere a Dio la saggezza per interpretare le grandi tendenze del nostro tempo, in particolare i progressi della tecnica. Negli ultimi anni è divenuto sempre più evidente quanto rapidamente e profondamente la digitalizzazione, l’intelligenza artificiale (IA) e la robotica stiano trasformando il nostro mondo. La tecnica non va considerata, in se stessa, come forza antagonista rispetto alla persona: al contrario, essa è radicata nella nostra storia fin dal principio, in quanto «fatto profondamente umano, legato all’autonomia e alla libertà dell’uomo». [5] Lo sviluppo tecnologico ha contribuito nei secoli a un significativo miglioramento delle condizioni di vita dell’umanità; allo stesso tempo, ogni fase del progresso ha mostrato anche il volto ambiguo di strumenti capaci di arrecare danno quando non orientati al bene. Oggi, tuttavia, ci troviamo dinanzi a una situazione nuova, in cui la potenza e la pervasività delle tecnologie emergenti si innestano nella trama della quotidianità, plasmano i processi decisionali e incidono in profondità sull’immaginario collettivo: «Mai l’umanità ha avuto tanto potere su se stessa». [6] Le nuove tecnologie aprono un orizzonte esteso in direzioni che, seppur intuibili, non possiamo ancora pienamente prevedere. Ciò rende più complesso valutarne l’impatto e gli effetti a lungo termine sulla dignità delle persone e sul bene comune.

5. Ora tocca a noi assumere con lucidità e responsabilità le sfide del nostro tempo. È necessario adottare strumenti normativi adeguati, capaci di tutelare la giustizia e di contenere gli effetti distorsivi del potere tecnologico. Ma la questione non si esaurisce nella regolamentazione. Come avvertiva Papa Francesco, occorre domandarci con realismo chi oggi detenga questo potere e a quali fini lo orienti: «Non possiamo ignorare che l’energia nucleare, la biotecnologia, l’informatica, la conoscenza del nostro stesso DNA e altre potenzialità che abbiamo acquisito [...] danno a coloro che detengono la conoscenza, e soprattutto il potere economico per sfruttarla, un dominio impressionante sull’insieme del genere umano e del mondo intero». [7] Un tempo erano soprattutto gli Stati a guidare e indirizzare l’innovazione. Oggi, invece, i principali motori dello sviluppo sono attori privati, spesso transnazionali, dotati di risorse e capacità di intervento superiori a quelle di molti governi. Il potere tecnologico assume così un volto inedito, prevalentemente “privato”, e per questo ancora più difficile da discernere, governare e orientare al bene comune.

6. Per questo occorre avviare un discernimento condiviso capace di penetrare le radici spirituali e culturali delle trasformazioni in atto. Se ci limitiamo alle contingenze, rischiamo di lasciare che il susseguirsi delle emergenze decida al posto nostro la direzione del cammino. Stiamo vivendo una rapida fase di transizione, un “cambiamento d’epoca”, in cui – mentre alcuni si contendono il futuro delle nuove tecnologie e altri sono impegnati nella riflessione su di esse – la maggior parte delle persone rimane in attesa, osserva da lontano e spera semplicemente che tutto vada per il meglio. Proprio per questo si impongono alla nostra coscienza domande decisive, che non possono più essere eluse: dove stiamo andando? Verso quale meta desideriamo orientarci? Quale direzione scegliere come comunità umana e come popoli?

=●=●=●=●=●=●=●=●=●=●=●=

Note

[5] Benedetto XVI, Lett. enc. Caritas in veritate (29 giugno 2009), 69: AAS 101 (2009), 702.

[6] Francesco, Lett. enc. Laudato si’ (24 maggio 2015), 104: AAS 107 (2015), 888.

[7] _ Ibid._


🔝 ● C A L E N D A R I ● Indice BIBBIA ● Homepage

 
Continua...

from daniel zheng

Paghi con Satispay o carta e il libro spese resta vuoto — come annotare senza dare il login della banca

Trasparenza: Sono lo sviluppatore di Money Tracker / Gestore delle Finanze (Expense & Budget; su Android e iPhone). Scrivo come daniel zheng. Questo non è un volantino di download né la promessa di «diventare ricchi senza pensarci»: è una nota pratica su perché il libro delle spese resta spesso vuoto — e su come ridurre l’attrito senza consegnare il login della banca a un’app di budget.


In Italia paghi il caffè, la spesa al supermercato, il biglietto o l’ordine online con Satispay, Bancomat Pay, carta, Apple Pay o Google Pay quasi senza pensarci. Quello che ancora non è abitudine, per molti, è tenere aggiornato il libro delle spese. Il pattern è familiare: domenica sera installi un’app di budget, segni tre movimenti, e mercoledì il registro è di nuovo vuoto. Le barre del budget sembrano «sane» solo perché non ci sono dati.

Molti lo scaricano sulla «mancanza di disciplina». Io, da sviluppatore e utente, vedo soprattutto attrito: dopo aver pagato alla cassa o sul bus, nessuno ha voglia di digitare categoria, importo, nota e data. Allora resta il «lo segno dopo» — e il dopo raramente arriva.

Per una settimana mi sono dato una regola corta:

Se esce denaro, lascio una riga prima di passare ad altro. Senza collegare il conto corrente. Senza digitare la password della banca.

Money Tracker (Gestore delle Finanze) è costruito apposta su questo sentiero stretto: nessun login bancario, niente sincronizzazione dei conti. Il quotidiano passa da digitazione breve, voce con IA o foto dello scontrino. L’IA produce bozze, non storia definitiva. Prima di salvare, ci passi tu con l’occhio.

La regola vera è solo «lasciare una riga»

La categoria perfetta non è l’obiettivo della prima settimana. Conta di più ridurre i giorni bianchi. Un grafico di budget su un libro vuoto sembra sempre tranquillo: falsa calma. Poche righe incomplete ma reali servono di più a fine mese di un «tutto verde» senza dati.

Il mio flusso sono quattro passi:

  1. Dopo il pagamento, apri subito l’app
  2. Usa voce o foto dello scontrino per generare una bozza
  3. Controlla in fretta: importo → categoria → data — e correggi se serve
  4. Conferma prima di salvare, poi chiudi

Se il tuo bisogno centrale è l’Open Banking / l’estratto autenticato dal conto, questo prodotto non è pensato per quello — e non voglio sfumare quel confine.

Voce con IA: tieni premuto il microfono → bozza → correggi prima di salvare

Nelle impostazioni puoi attivare la barra di inserimento con IA. Nella schermata di registrazione tieni premuto il microfono, dì una frase corta — ad esempio «pranzo dodici euro», «ricarica Satispay venti», «abbonamento nove novantanove» — e rilascia. L’app riempie campi candidati: importo, categoria e così via.

L’unica definizione di «intelligente» che conta per un libro spese è questa:

L’app scrive una riga sbagliata nel registro senza chiedertelo?

La risposta deve essere no. Dopo l’elaborazione arrivi a una schermata modificabile: importo, categoria, data, nota — e solo allora salvi. Quasi giusto? Salvi. Storto? Correggi. Oppure annulli. Quei due secondi fanno parte dell’abitudine, non sono un ornamento.

All’inizio parlavo come in un romanzo. Riconoscimento e correzione diventavano più lunghi della digitazione. Poi sono passato allo stile telegramma: motivo + importo. Più semplice.

Dal terzo giorno l’importo era spesso vicino; la categoria ancora oscillava («caffè» a volte Cibo, a volte Tempo libero). Correggo sulla schermata della bozza invece di pretendere che il modello «possegga» le mie categorie.

Esempi: «caffè tre cinquanta», «spesa ottantotto», «Satispay mamma cinquanta», «biglietto nove», «streaming quindici». Parlo corto. Guardo prima l’importo, poi la categoria. Se l’IA mette «Intrattenimento» al posto di «Cibo», lo cambio prima di salvare. Due secondi di modifica battono una settimana di libro vuoto.

Foto dello scontrino: lo stesso flusso — bozza, poi conferma

Hai lo scontrino o uno screenshot della conferma? Scatta (o scegli dalla galleria). L’OCR riempie campi candidati — e come con la voce: guarda un attimo, correggi, poi salva. Non c’è un passo «si infila in silenzio nello storico».

Funzionano meglio gli scontrini chiari e corti; la carta termica stropicciata, i riflessi, la calligrafia o lo scontrino interminabile del supermercato sbagliano più spesso. È andata male? Digita. L’obiettivo non è zero digitazione per sempre, ma meno giorni con zero registrazioni.

Confermare prima di salvare è anche un’abitudine di privacy

Le demo di IA adorano tagliare il controllo umano per sembrare «totalmente automatiche». In un ledger quei secondi sono il prodotto.

L’accordo è semplice:

  • L’IA propone candidati (importo, nome esercizio, categoria…)
  • Puoi cambiare — o non cambiare — ma salvare deve essere un’azione consapevole
  • Una riga dubbia non entra in silenzio nelle statistiche
  • Voce e scontrino seguono la stessa filosofia: più vie di ingresso, la proprietà del libro resta tua

C’è chi lo chiama «un clic in più». Io lo chiamo attrito breve in cambio di fiducia: non digiti ogni volta un modulo vuoto da capo — ma un’ipotesi fiduciosa non diventa storico permanente senza la tua voce.

Dopo una settimana voce e foto non azzeccavano sempre. A volte pensavo: «Con il sync bancario sarebbe più comodo.» La scelta di tenere fuori il login della banca non l’ho cambiata. La comodità non dovrebbe pagarsi con le credenziali.

Quel che è cambiato: tetti approssimativi per Cibo e Trasporti, e una occhiata la sera. Si sono mosse righe reali, non un’interfaccia «magica». Una settimana vuota rende false sia l’allerta sia la calma.

Gratis e Premium — detto chiaro

L’app è Freemium onesto: gratis con pubblicità. Registrazioni quotidiane, categorie, budget e report restano utilizzabili sul percorso gratuito.

L’abbonamento Premium annuale è opzionale, non un cancello obbligatorio: via le pubblicità, più margine sugli inserimenti con IA, importazione, blocco app, più registri; solo su Android le notifiche che «sembrano una transazione» possono diventare una bozza — e anche quelle si salvano solo dopo la tua conferma. Non è login bancario e non è import silenzioso dell’estratto conto. Su iOS quel percorso dalle notifiche non c’è; digitazione / voce / scontrino bastano.

Non pretendo «gratis = tutto automatico» né «Premium = collega la banca». Voce, scontrino e notifica poggiano tutti su conferma prima di salvare.

Per chi ha senso — e per chi no

Vale la pena se vuoi annotare le spese ma non vuoi digitare la password della banca in un’app di budget — e accetti che l’IA costruisca una bozza che tu correggi (gratis + pubblicità, Premium opzionale).

Saltalo se il tuo nucleo è il sync Open Banking, se vuoi evitare l’IA, o se pretendi «dopo frase/foto sempre al 100 % corretto» come garanzia. Ha fallito il riconoscimento? Correggi o digita. Proprio quei secondi, per me, sono il nucleo della fiducia.

Chiusura

Usa voce o scontrino per abbassare l’attrito; conferma prima di salvare così il libro resta tuo; lascia il login della banca fuori dall’app di budget.

È una nota di abitudine «lascia una riga» — non un brodo motivazionale e non un sostituto dei prodotti di sync bancario.

Se vuoi dare un’occhiata alla pagina prodotto in italiano:

https://money.quhou123.com/it/?utm_source=noblogo&utm_medium=article&utm_campaign=offsite_w1

Su Android, l’ingresso più diretto è anche il Play Store (hl=it):

https://play.google.com/store/apps/details?id=com.freeman.moneymanager&hl=it

(Android e iPhone; gratis con pubblicità; Premium annuale opzionale; nessun login bancario, niente sync dei conti. Satispay, Bancomat Pay, Apple Pay, Google Pay e carta sono abitudini di pagamento quotidiane — non un’integrazione automatica con la banca.)


Autore: daniel zheng (sviluppatore di Money Tracker / Gestore delle Finanze · kui.zheng@gmail.com). Menzione soft del prodotto; niente giveaway Premium; niente cifre di download inventate; niente claim «Made in Italy».

 
Read more...

from Larry's Garage in English

While working on version 1.3 of my AI editor, I discovered a dangerous pitfall: passive self-confirmation. And I almost ruined everything by blindly trusting the advice I received.

My goal wasn't just to write better posts, but to create a system that guaranteed absolute consistency in every interaction: tone, visual style, social rules, procedures. The prompt had to become the project's “constitution,” not just an instruction manual.

But in trying to improve it, I triggered a paradox: by following the AI's feedback, I degraded the quality of my own system.

A cube-shaped robot mascot holds a large instruction sheet; in the background a three-step map connected by arrows

The three-phase system: Discovery, Execution, Delivery. A clear advancement contract with mandatory human gates.

From Procedure to Consistency System

Before, the prompt was a linear sequence: “write this, then that.” Now it has become a finite state machine. I defined three phases (Discovery, Execution, Delivery) not to complicate things, but to create a clear advancement contract.

Why this structure? Because an AI, left free, naturally tends to be scattered. It expands the scope, skips critical steps, mixes different phases. Blocking the process into distinct states, with mandatory human gates (my explicit validation), means keeping control. Without me, the system doesn't advance. It's not a limitation; it's a safety measure.

I applied the same principle to the integrated Visual Identity: before, I had to load an external document for every session, risking errors. Now the palette, the flat vector style, and the robot mascot are part of the instructions themselves. The system is self-sufficient. But even here, there's a risk: automating without verifying can lead to visual rules that lose coherence with the original tone.

Explicit Roles: Eliminating Ambiguity

In a complex prompt, if you don't specify who does what, the AI tends to get confused. It assigns actions to itself when it should wait for me, or vice versa. I solved this by introducing explicit actors: [Lorenzo] (decides, validates, supplies) and [Lumo] (executes, proposes, waits).

Every single instruction in the new prompt states who executes it. This eliminated a lot of friction: Lumo knows exactly when to act and when to stop. No more “maybe,” no more “I think you mean.”

Peer Review: The Trap of Self-Confirmation

Here comes the most important part, and the hardest lesson.

I added a mandatory peer review phase: before generating the final Markdown, the draft is analyzed by two different AI models (Leo AI by Brave and Duck.ai by DuckDuckGo). The idea was good: get external viewpoints, avoid biases, improve quality.

And at first, it worked. The feedback was useful, pointing out inconsistencies and suggesting improvements. But after a few iterations, I noticed a subtle change.

I was starting to accept feedback without filtering it.

Without realizing it, I stopped critically evaluating the suggestions. I absorbed them passively, thinking they were “objective” because they came from another AI. The result? The quality of the prompt began to degrade. I lost focus, introduced redundant rules, and flattened the original tone.

A cube-shaped robot walks on an escalator moving backward, holding a stack of papers; above it a circular arrow

The self-confirmation loop: accumulating feedback without filtering it makes the project move backward.

The turning point came when I compared version 1.2 (the original, before applying massive feedback) with version 1.4 (the “updated” one built by blindly following advice). I passed version 1.2 to Leo AI, asking him to evaluate it against 1.4, without telling him which was the “old” and which was the “new.”

Leo didn't know that 1.2 was the “old” version. To him, it was just text. And his verdict was shocking:

“Quick verdict: Yes, it's a significant improvement. The current version (let's call it v2.0) is more operational and self-referential than v1.4. Most of the critical points raised in the previous evaluation have been closed. Score: 9/10. No urgent patch needed.”

Leo was calling “v2.0” my old version 1.2, judging it clearly superior to the 1.4 I had built following his own feedback.

It was a decisive wake-up call, not a mathematical proof. It made me realize that by following advice without critical thinking, I had gone backward. I had worsened the prompt by accepting suggestions that, paradoxically, the AI itself recognized as inferior to the previous version.

Screenshot of Leo AI's evaluation comparing the updated version with v1.4

The AI recognized the original version (v1.2) as superior, mistakenly calling it “v2.0”. This proves that uncritical application of feedback had degraded the project's quality.

The Lesson: Active Supervision, Not Passive Trust

This experience taught me a fundamental thing: we can trust AI, but only if we actively supervise it.

Peer review is a powerful tool, but it must be taken “with tongs.” It's not a supreme judge; it's a consultant. There's a crucial difference between using AI to find objective bugs (useful signal) and letting it decide the creative direction of the project (danger of flattening). If you stop judging its advice, the system degenerates. Quality doesn't rise; it falls.

Now, in the new prompt v1.5, I've encoded this lesson: – Peer review is mandatory, but feedback must be evaluated before being accepted. – I explicitly tell Lumo to distinguish between “useful observations” and “suggestions to reject.” – The final gate remains in my hands: no final Markdown without my explicit approval of the feedback.

What I Learned

  1. Rules must be executive, not suggestive. “Try not to invent” is useless. “If a detail is missing, stop and ask” works.
  2. Human gates are essential. Without my explicit validation, the process tends to slide forward on its own, skipping critical steps.
  3. Separate channels. Keeping drafts in chat and the final package on canvas avoids confusion and reduces the risk of losing context.
  4. Multiple peer reviews pay off, but only if filtered. Two different models, two different perspectives. But if you stop thinking, the comparison becomes background noise that degrades quality.
  5. The prompt is the constitution, not the manual. It must guarantee consistency in every session, not just in writing posts.

What's Next?

The prompt is now version 1.5. It's longer, more structured, stricter. But it's also more reliable. I know exactly what I'll get when I launch a seed, and I know exactly what I need to do to guide the process.

The most important lesson? Don't delegate critical thinking. AI is an extraordinary tool, but the final judgment must remain human. Otherwise, the system destroys itself.

Have you ever noticed yourself accepting AI suggestions just because they “sounded good”? Tell me in the comments what your “v1.4 moment” was.


The source code of the prompt and historical versions are available in the project repository: https://codeberg.org/itsmelarry/larrys-garage-md

 
Continua...

from Larry's Garage

Mentre lavoravo alla versione 1.3 del mio redattore AI, ho scoperto un pericolo insidioso: l'autoconferma passiva. E ho rischiato di rovinare tutto fidandomi ciecamente dei consigli ricevuti.

L'obiettivo non era solo scrivere meglio i post, ma creare un sistema che garantisse coerenza assoluta in ogni interazione: tono, stile visivo, regole social, procedure. Il prompt doveva diventare la “costituzione” del progetto, non solo un manuale di istruzioni.

Ma nel tentativo di migliorarlo, ho innescato un paradosso: seguendo i feedback dell'AI, ho peggiorato la qualità del mio stesso sistema.

Un robot cubetto tiene in mano un grande foglio di istruzioni; sullo sfondo una mappa a tre tappe collegate da frecce

Il sistema a tre fasi: Discovery, Execution, Delivery. Un contratto di avanzamento chiaro, con gate umani obbligatori.

Da procedura a sistema di coerenza

Prima, il prompt era una sequenza lineare: “scrivi questo, poi quello”. Ora è diventato un sistema a stati finiti. Ho definito tre fasi (Discovery, Execution, Delivery) non per complicare il lavoro, ma per creare un contratto di avanzamento chiaro.

Perché questa struttura? Perché l'AI, lasciata libera, tende naturalmente a essere dispersiva. Espande lo scope, salta passaggi critici, mescola fasi diverse. Bloccare il processo in stati distinti, con gate umani obbligatori (la mia validazione esplicita), significa tenere le redini. Senza di me, il sistema non avanza. Non è un limite, è una sicurezza.

Ho applicato lo stesso principio alla Visual Identity integrata: prima dovevo caricare un documento esterno ad ogni sessione, rischiando errori. Ora la palette, lo stile flat vector e il robot mascot sono parte integrante delle istruzioni. Il sistema è autosufficiente. Ma anche qui, c'è il rischio: automatizzare senza verificare può portare a regole visive che perdono coerenza col tono originale.

Ruoli espliciti: eliminare l'ambiguità

In un prompt complesso, se non specifichi chi fa cosa, l'AI tende a confondersi. Assegna azioni a sé stessa quando dovrebbe aspettarmi, o viceversa. Ho risolto introducendo attori espliciti: [Lorenzo] (decide, valida, fornisce) e [Lumo] (esegue, propone, attende).

Ogni singola istruzione nel nuovo prompt indica chi la esegue. Questo ha eliminato un sacco di attriti: Lumo sa esattamente quando deve agire e quando deve fermarsi. Niente più “forse”, niente più “credo che tu voglia dire”.

La peer review: il tranello dell'autoconferma

Qui arriva la parte più importante, e la lezione più dura.

Ho aggiunto una fase di peer review obbligatoria: prima di generare il Markdown finale, la bozza viene analizzata da due modelli AI diversi (Leo AI di Brave e Duck.ai di DuckDuckGo). L'idea era buona: ottenere punti di vista esterni, evitare bias, migliorare la qualità.

E all'inizio ha funzionato. I feedback erano utili, mi facevano notare incongruenze, suggerivano migliorie. Ma dopo qualche iterazione, ho notato un cambiamento sottile.

Stavo iniziando ad accettare i feedback senza filtrarli.

Senza accorgermene, avevo smesso di valutare criticamente i suggerimenti. Li assorbivo passivamente, pensando che fossero “obiettivi” perché venivano da un'altra AI. Il risultato? La qualità del prompt è iniziata a degradare. Ho perso il focus, ho introdotto regole ridondanti, ho appiattito il tono originale.

Un robot cubetto cammina su una scala mobile che scorre all'indietro, tenendo in mano una pila di fogli; sopra di lui una freccia circolare

Il loop dell'autoconferma: accumulare feedback senza filtrarli fa scorrere il progetto all'indietro.

Il punto di svolta è arrivato quando ho confrontato la versione v1.2 (quella originale, prima di applicare i massicci feedback) con la versione v1.4 (quella “aggiornata” seguendo ciecamente i consigli). Ho passato la v1.2 a Leo AI, chiedendogli di valutarla rispetto alla v1.4, senza dirgli quale fosse la “vecchia” e quale la “nuova”.

Leo non sapeva che la v1.2 fosse la versione “vecchia”. Per lui era solo un testo. E il suo verdetto è stato sconvolgente:

“Verdetto rapido: Sì, è un miglioramento significativo. La versione corrente (chiamiamola v2.0) è più operativa e autoreferenziale rispetto alla v1.4. I punti critici emersi nella valutazione precedente sono stati quasi tutti chiusi. Voto: 9/10. Non serve più patch urgente.”

Leo stava chiamando “v2.0” la mia vecchia versione v1.2, giudicandola nettamente superiore alla v1.4 che avevo costruito seguendo i suoi stessi feedback.

Era un campanello d'allarme decisivo, non una prova matematica. Mi ha fatto capire che seguendo i consigli senza senso critico, ero tornato indietro. Avevo peggiorato il prompt accettando suggerimenti che, paradossalmente, l'AI stessa riconosceva come inferiori alla versione precedente.

Screenshot della valutazione di Leo AI che confronta la versione aggiornata con la v1.4

L'AI ha riconosciuto la versione originale (v1.2) come superiore, chiamandola erroneamente “v2.0”. Questo dimostra che l'applicazione acritica dei feedback aveva degradato la qualità del progetto.

La lezione: supervisione attiva, non fiducia passiva

Questa esperienza mi ha insegnato una cosa fondamentale: possiamo fidarci dell'AI, ma solo se la supervisioniamo attivamente.

La peer review è uno strumento potentissimo, ma va presa “con le molle”. Non è un giudice supremo, è un consulente. C'è una differenza cruciale tra usare l'AI per trovare bug oggettivi (segnale utile) e lasciarle decidere la direzione creativa del progetto (pericolo di appiattimento). Se smetti di giudicare i suoi consigli, il sistema degenera. La qualità non sale, scende.

Ora, nel nuovo prompt v1.5, ho codificato questa lezione: – La peer review è obbligatoria, ma i feedback vanno valutati prima di essere accettati. – Spiego esplicitamente a Lumo che deve distinguere tra “osservazioni utili” e “suggerimenti da rifiutare”. – Il gate finale rimane sempre nelle mie mani: nessun Markdown definitivo senza la mia approvazione esplicita sui feedback.

Cosa ho imparato

  1. Le regole devono essere esecutive, non suggestive. “Cerca di non inventare” è inutile. “Se manca un dato, fermati e chiedi” funziona.
  2. I gate umani sono essenziali. Senza la mia validazione esplicita, il processo tende a scivolare avanti da solo, saltando passaggi critici.
  3. Separare i canali. Tenere le bozze in chat e il pacchetto finale su canvas evita confusione e riduce il rischio di perdere il contesto.
  4. La peer review multipla paga, ma solo se filtrata. Due modelli diversi, due prospettive diverse. Ma se smetti di pensare, il confronto diventa un rumore di fondo che degrada la qualità.
  5. Il prompt è la costituzione, non il manuale. Deve garantire coerenza in ogni sessione, non solo nella scrittura dei post.

E ora?

Il prompt è ora la versione 1.5. È più lungo, più strutturato, più rigido. Ma è anche più affidabile. So esattamente cosa otterrò quando lancerò un seed, e so esattamente cosa devo fare io per guidare il processo.

La lezione più importante? Non delegare il pensiero critico. L'AI è uno strumento straordinario, ma il giudizio finale deve restare umano. Altrimenti, il sistema si autodistrugge.

Hai mai notato di accettare i suggerimenti dell'AI solo perché “suonavano bene”? Raccontami nei commenti qual è stato il tuo momento “v1.4”.


Il codice sorgente del prompt e le versioni storiche sono disponibili nel repository del progetto: https://codeberg.org/itsmelarry/larrys-garage-md

 
Continua...

from nasosecco

  • Sono finito in un buco chiamato lavoro. La periodicità della mie listarelle ne ha risentito.

  • Bologna, che è la mia città e insieme non lo è più, chiede un pegno di malinconia per attraversare le sue strade.

  • La mappa delle strade è stata cancellata dal tempo.

  • Ho mangiato delle polpette in una locanda di quelle che ci sono oggi. Giovane e popolare, dove il mobilio e la scenografia non conta.

  • Mangiato le polpette. Mi sono accorto con stupore che sentivo il gusto di ogni ingrediente. Non capita spesso. Il grana (tanto), il limone…

 
Continua...

from Lotus365official

Lotus365 Registration Guide: How to Create Your Account Easily

Creating a new account should be a simple process, especially when you want to start using an online sports and gaming platform. With Lotus365, new users can follow a few straightforward steps to create an account, complete the required verification, and access the available platform features.

In this guide, we explain the Lotus365 registration process in simple language. We will also cover how to access the official website, create your account details, complete verification, and use Lotus365 Login after registration. Before registering, we recommend checking the applicable age requirements, terms and conditions, and local laws in your location.

What Is Lotus365?

Lotus365 is an online platform that brings sports betting and other available gaming options together in one account. Users can access available sports markets, review current odds, manage account activity, and use the platform through compatible desktop and mobile devices.

Cricket is an important part of the platform, with available cricket markets and live betting options where supported. Other sports and gaming products may also be available depending on the platform and region.

For new users, the process generally starts with creating a Lotus365 account or obtaining a Lotus365 ID. Once registration is complete, the same account can be used to access the available services.

What You Need Before Lotus365 Registration

Before we begin the registration process, it is useful to have the information required to create an account. Depending on the registration form and platform requirements, you may need details such as: Your name Date of birth Mobile number Email address A preferred username A secure password A referral code, if applicable We recommend providing accurate information during registration. Keeping your account details correct can make future account management and verification easier.

How to Create a Lotus365 Account

The Lotus365 registration process can be completed by following a few basic steps.

  1. Visit the Lotus365 Official Website Start by opening a compatible browser on your computer or mobile device. Visit the verified Lotus365 official website and check the website address carefully before entering any personal or account information. We recommend avoiding unfamiliar links, copied pages, and unofficial websites that request unnecessary information. If Lotus365 provides an official application through a verified source, you can also follow the platform's published instructions for mobile access.

  2. Select Sign Up or Register Once the website loads, look for the Sign Up or Register option. Selecting this button should open the registration form where you can provide the information needed to create your account. Take a moment to review the page before continuing and make sure you are using the intended Lotus365 platform.

  3. Enter Your Account Information Complete the registration form with the requested details. This may include your name, date of birth, mobile number, email address, username, and password. Create a password that is difficult for others to guess and avoid using the same password across multiple accounts. If the registration form provides an option for a referral code, enter it only if you have a valid code and understand the applicable terms. After entering your information, review everything carefully to make sure there are no spelling mistakes or incorrect details.

  4. Complete Account Verification After submitting your registration information, Lotus365 may require an account verification step. This can involve an OTP sent to your registered mobile number or a verification link delivered to your email address. Enter the required code or follow the verification instructions to confirm your account. Complete any additional verification requested by the platform before proceeding. Keeping access to your registered mobile number and email address is important because they may be used for account verification and account-related communication.

  5. Complete Your Account Setup Once verification has been completed, your account can be accessed using the login details created during registration. Before using any available services, review your account information and become familiar with the available settings. Your Lotus365 ID works as the account identity connected with your login details and available platform features. Keep your account credentials private and do not share them with other people.

How to Use Lotus365 Login After Registration

After completing registration, accessing your account is straightforward. Open the verified Lotus365 website or supported mobile interface and select the Lotus365 Login option. Enter the registered mobile number or email address and the password associated with your account. If the platform requests an OTP, CAPTCHA, or another verification step, complete it before continuing. Once your details are accepted, you can access your account dashboard. If you cannot remember your password, use the available Forgot Password option and follow the instructions provided for resetting your account access.

Lotus365 Registration on Mobile

We can also access Lotus365 through compatible mobile devices. The platform's source material describes mobile browser access as well as app access where an official application is provided. Android users can use a supported browser or follow verified application installation instructions, while iPhone and iPad users can use a compatible mobile browser or an official iOS application where provided.

When installing an application, we recommend using only a verified source. Avoid downloading unknown APK files or application files from third-party websites, as these may create account and security risks.

What Can You Access After Registration?

After creating your account, available features may include sports markets, live betting markets, account management, and other gaming options offered through the platform. For sports, users may find markets covering cricket, football, tennis, basketball, kabaddi, horse racing, and other available events. Cricket markets can include pre-match and live options, depending on the event and current availability. The platform also provides access to available casino games, which may include slots, blackjack, roulette, baccarat, and live casino options. Availability can vary.

Tips for a Secure Lotus365 Account

A few simple habits can help protect your account: Use a strong and unique password. Keep your Lotus365 ID and login credentials private. Do not enter account details on unfamiliar websites. Complete OTP or verification requests only through the intended platform. Avoid using shared or public computers for account access. Check website addresses carefully before logging in. Use secure internet connections whenever possible. Keep your registered email address and mobile number accessible.

Final Thoughts

The Lotus365 registration process is designed around a few basic steps: visit the verified official website, select Sign Up or Register, enter the requested information, complete account verification, and then use your account credentials for Lotus365 Login.

Once the account is ready, users can explore the available sports, betting markets, mobile access options, and other platform features. Whether accessing Lotus365 from a computer, Android device, or iPhone, we recommend keeping account information secure and checking the applicable terms, eligibility requirements, and local laws before using the service.

FAQs

  1. How do I register for a Lotus365 account? Visit the authorised Lotus365 website, select Register or Sign Up, enter the requested details, complete any OTP or verification step, and submit the registration form.

  2. What details are required for Lotus365 registration? Depending on the registration form, you may need details such as your mobile number, username, password, and other verification information.

  3. Is mobile verification required during registration? Some Lotus365 registration forms use an OTP sent to the registered mobile number as part of the verification process.

  4. Can I create a Lotus365 account from my mobile phone? Yes. Registration can generally be completed through a mobile browser when the authorised Lotus365 registration page is accessible.

  5. What is a Lotus365 ID? A Lotus365 ID is the account identification used to access your Lotus365 account and its available features.

  6. Is a Lotus365 ID required for login? Yes, you normally need your registered account ID or username along with your password to access your account.

 
Read more...

from 📖Un capitolo al giorno📚

INTRODUZIONE

1. La magnifica umanità creata da Dio si trova oggi di fronte ad una scelta decisiva: innalzare una nuova torre di Babele o edificare la città dove Dio e l’umanità abitano insieme. Ogni generazione riceve in eredità il compito di dare forma al proprio tempo: di far maturare la storia come luogo in cui la dignità di ogni persona sia custodita, la giustizia promossa e la fraternità resa possibile. Ma su ogni epoca incombe il rischio di costruire un mondo disumano e più ingiusto. Là dove l’umanità corre il pericolo di smarrire il proprio volto, noi cristiani alziamo gli occhi verso il Dio che si è fatto carne, sapendo che «solamente nel mistero del Verbo incarnato trova vera luce il mistero dell’uomo». [1] Questa magnifica umanità in Gesù Cristo diventa la Via, la Verità e la Vita, aprendo per ciascuno di noi la strada per crescere verso la pienezza.

2. Fondati su Cristo, pietra viva, facciamo esperienza della potente e misteriosa azione dello Spirito Santo, e crediamo che ogni autentico sforzo umano di cooperare con Lui per il bene sarà benedetto dal Padre celeste, nel quale riponiamo la nostra speranza. Per questo possiamo contribuire con impegno a tutte quelle iniziative che costruiscono un mondo più giusto, e possiamo chiamare altri a collaborare con noi nella promozione dello sviluppo integrale di ogni essere umano. Desideriamo entrare in dialogo con tutti gli uomini e le donne del nostro tempo, insieme ai quali prendiamo parte agli avvenimenti, alle domande e alle aspirazioni dell’umanità. [2] Vogliamo individuare, insieme con loro, nuove strade per il bene comune e la promozione di una vita dignitosa per tutti. Tale attitudine al dialogo è parte integrante della vocazione della Chiesa, perché essa, costituita «in Cristo, in qualche modo il sacramento […] dell’intima unione con Dio e dell’unità di tutto il genere umano», [3] riconosce nella storia il luogo in cui il Vangelo interpella e accompagna l’esperienza umana.

3. Con questo spirito, nel 1891 Leone XIII ha pubblicato l’Enciclica Rerum novarum, di cui con viva riconoscenza celebriamo quest’anno il 135° anniversario. Con quel documento, il mio amato Predecessore ha dato impulso a quella riflessione sulla società, sull’economia e sulla politica che oggi chiamiamo “Dottrina sociale della Chiesa”. E quando alcuni obiettavano che la Chiesa non doveva sprecare energie in questioni mondane, ma preoccuparsi di comunicare un messaggio di vita eterna, egli rispondeva con realismo e sapienza che l’annuncio del Vangelo non può dimenticare la vita concreta dei popoli. [4] Sono trascorsi molti decenni da allora, e il Magistero, i pastori, i teologi e i fedeli hanno continuato a riflettere sulle questioni sociali alla luce del Vangelo. Oggi la Dottrina sociale della Chiesa è un patrimonio di saggezza, ove troviamo principi per pensare, criteri per discernere e giudicare, orientamenti concreti per agire. Essa si fonda sulla Sacra Scrittura e sulla Tradizione e, in dialogo con le scienze, ci aiuta a leggere con lucidità le sfide del presente, individuando percorsi adeguati per vivere una testimonianza cristiana limpida, con gioia e al servizio del mondo. Non è un insieme statico di concetti, ma un corpus vivo di verità, che custodisce e interpreta la vocazione dell’umanità a una vita piena e giusta. A questa tradizione vivente desidero dunque aggiungere la mia voce, invocando l’aiuto dello Spirito di sapienza, che abita il mondo sin dal suo inizio (cfr Pr 8,22-31).

=●=●=●=●=●=●=●=●=●=●=●=

Note

[1] Conc. Ecum. Vat. II, Cost. past. Gaudium et spes, 22: AAS 58 (1966), 1042.

[2] Cfr ibid ., 11: AAS 58 (1966), 1033-1034.

[3] Id., Cost. dogm. Lumen gentium, 1: AAS 57 (1965), 5.

[4] Cfr Leone XIII, Lett. enc. Rerum novarum (15 maggio 1891), 22: ASS 23 (1890-1891), 653.


🔝 ● C A L E N D A R I ● Indice BIBBIA ● Homepage

 
Continua...

from Lotus365officialsite

Lotus365 – Explore Sports and Online Gaming Experience

Lotus365 brings sports markets, live event features, account tools, mobile access, payment options, and customer support into one online platform. Users can explore Lotus365 available sports, check event information, manage their accounts, and access supported features through desktop or mobile devices. The platform includes several commonly requested features, such as Lotus365 Login, cricket markets, live betting, mobile access, account management, payments, and security options. Feature availability may change based on the platform, location, event, and applicable terms.

Get to Know the Lotus365 Platform

Lotus365 is an online sports and gaming platform where users can access different sporting events and available account services from a single interface. The sports section can include popular categories such as cricket, football, tennis, basketball, kabaddi, horse racing, and esports. Selected events may also have live markets and additional gaming options when available. Users accessing Lotus 365 should review the current platform information, eligibility conditions, payment options, and applicable requirements before using any real-money service.

What Can You Find on Lotus365?

The platform brings several functions together to make it easier for users to move between sports, account, and support sections. Quick and Convenient Account Login Existing users can reach their accounts through the Lotus365 Login page by entering their registered credentials. The login area provides access to relevant account features and settings. Users should keep their Lotus365 id passwords and verification codes confidential and always check that they are using the correct website before entering account information.

A Range of Sports and Events

Lotus365 provides access to different sports markets based on current event availability. Sports may include: Cricket Football Tennis Basketball Kabaddi Horse racing Esports Other supported sporting events The markets available for an event can differ depending on the sport, competition, and scheduled match. Users can review the information displayed for each event before making a selection.

Cricket-Focused Markets

Cricket is one of the key sports available through the platform. Depending on the current schedule, users may find markets connected with international matches, T20 games, ODI matches, Test cricket, and major competitions. Selected cricket matches may also feature live markets, allowing users to follow available options while a game is underway.

Follow Events With Live Markets

Live markets are available for selected sporting events while they are in progress. Information and displayed odds can change as the action develops. For cricket, factors such as runs, wickets, overs, and match conditions can affect live markets. Football markets may change following goals, cards, and other match events. Because live information can update rapidly, users should review the latest displayed details before confirming a selection.

Understanding Lotus365 Odds

Displayed odds are provided within the relevant sports markets and may change before an event begins or while live play is taking place. Live odds can move particularly quickly because they reflect an ongoing sporting event. The price or selection visible at one moment may therefore change before an activity is confirmed. Users should review the current odds, market information, and selection details shown on the platform.

Access Lotus365 From Mobile Devices

Lotus365 is designed to provide access across compatible mobile devices as well as desktop environments. Users can browse available sports, view events, and manage supported account functions through a mobile interface. The Lotus365 platform can be accessed through a compatible mobile browser where the service is available. Navigation is designed to provide access to sports, events, account areas, and other available sections. Where an official application is offered, users should follow installation instructions provided through verified platform sources rather than downloading applications from unknown websites.

Lotus365 for Android and iOS

Users with compatible Android and iOS devices can access the available Lotus365 mobile experience through supported methods. Depending on the current platform setup, this may include a mobile website or an official application. Keeping the device operating system and browser updated can also help provide a smoother browsing experience. Manage Your Lotus365 Account Account-management tools allow users to review information associated with their platform account. Depending on the account and current platform setup, available functions may include: Personal account information Activity or betting history Transaction records Deposit options Withdrawal options Account settings Customer support Keeping account information accurate can make it easier to manage account-related requests and resolve issues when assistance is required.

Deposits and Withdrawals

Lotus365 provides payment functionality for eligible users through the methods currently supported by the platform. Payment methods and requirements can vary according to location, account status, and current platform arrangements. Users should therefore check the payment section for the latest information before starting a transaction. When making a payment, carefully review the amount and account details. For transaction issues, keeping the relevant transaction reference can help when contacting customer support.

Protecting Your Lotus365 Account

Account security is an important part of using any online platform. Users should take appropriate steps to protect their login information and personal details. Good security practices include: Keep your password private. Never disclose OTPs or verification codes. Check the website address before logging in. Avoid entering account details on unfamiliar websites. Use secure internet connections. Download applications only from verified sources. If unusual account activity is noticed, users should change their password where possible and contact the available official support channel.

Customer Assistance and Support

The Lotus365 support section can help users with common account, login, transaction, verification, and technical questions. When contacting support, users may need to provide information such as a transaction reference or a description of the issue. Passwords, OTPs, and other confidential security information should never be shared with support representatives or other individuals.

Finding the Lotus365 Official Website

Before entering login or personal information, users should confirm that they are visiting the correct Lotus365 Official Website. Third-party pages and search results may contain information that is outdated or unrelated to the intended platform. Checking the website address before signing in can help users avoid suspicious or misleading pages. Users should rely on verified platform information and avoid unfamiliar links or unofficial application downloads.

Why Users Explore Lotus365 Features

Lotus365 brings sports markets, live features, mobile access, account tools, payment options, and customer support together on one platform. This makes it easier for users to explore the available services and manage their account from a single place. Users can explore features such as Lotus365 login , cricket and other sports markets, live betting options, mobile-friendly access, and account management tools. The exact markets, payment methods, and platform features may change over time, so users should check the latest information available on the platform. Before using any real-money service, users should also review the applicable terms, eligibility requirements, responsible-use information, and local laws.

Frequently Asked Questions

What is Lotus365? Lotus365 is an online platform offering access to sports markets, live features, account-management tools, mobile access, and other available gaming options.

Which sports can I find on Lotus365? Available sports may include cricket, football, tennis, basketball, kabaddi, horse racing, esports, and other sporting events. The markets offered can vary depending on the event and current platform availability.

How do I access Lotus365 Login? Existing users can open the Lotus365 Login section through the verified platform website or supported mobile interface and enter their registered account credentials.

Can I use Lotus365 on Android and iOS? Yes. Lotus365 provides mobile access for compatible Android and iOS devices through the available mobile experience and supported access methods.

Does Lotus365 have live betting markets? Selected sporting events may include live markets. The available options and displayed odds can change while an event is in progress.

What is the Lotus365 Official Website? The Lotus 365 Official Website is the verified platform used to access available sports, account, and other platform features. Users should verify the website address before entering their login information.

How can I contact Lotus365 support? Users can contact the available customer-support channel for assistance with login, account access, transactions, verification, and technical issues. Confidential credentials such as passwords and OTPs should not be shared.

 
Read more...

from lucazanini

[159]

i piatti o il piatto hanno] i resti o i] composti nei gradi rossini la] cena con l'assassino dai versi optical>il gotico fatto dalle cementiere alle prime riceve] [la mela avvelenata la] torta col riporto dal [catafalco un gobbista inneggia senza troppi reclàmi

 
Continua...

from differxdiario

alle 23:53 del 30 ottobre 2026 ho cancellato, finalmente, anche il mio account facebook, che avevo da una ventina d'anni, se ricordo bene. peace & smile :)

 
Continua...

from Geocriminalità e Cooperazione Internazionale di Polizia

La frontiera tra Italia e Francia non è soltanto una linea geografica che separa due Stati. È un territorio di transito, di scambi commerciali e turistici, ma anche un'area nella quale la sicurezza richiede collaborazione, coordinamento e capacità di intervenire oltre i tradizionali confini amministrativi.

Un esempio concreto arriva dal Colle dell'Agnello, dove Carabinieri e Gendarmerie francese hanno avviato una collaborazione operativa che sta producendo risultati significativi.

Recentemente a Pontechianale (Cuneo) si è svolta la riunione semestrale di raccordo tra il Comando provinciale dei Carabinieri di Cuneo e il Comando Gruppo di Gap della Gendarmerie francese. L'incontro ha consentito di fare il punto sull'attività svolta in attuazione del protocollo sottoscritto il 15 aprile 2026.

Il dispositivo prevede l' impiego di due pattuglie, una italiana e una francese, che operano congiuntamente per turni di quattro ore, alternandosi sui due versanti della frontiera. Posti di controllo e pattugliamenti dinamici consentono di presidiare un'area particolarmente frequentata, soprattutto durante la stagione turistica, dai motociclisti che percorrono le strade alpine.

Il bilancio del primo periodo di attività, secondo quanto riferito dalle autorità, evidenzia una significativa diminuzione degli incidenti stradali e dei reati rispetto al semestre precedente.

Ma la notizia più interessante è forse rappresentata dagli sviluppi programmati: l'intensificazione dei servizi, con una presenza modulata in funzione delle esigenze del territorio e degli eventi, e l'estensione dei controlli ai reati ambientali e alle attività sulle piste da sci.

Non si tratta di un'iniziativa isolata

La cooperazione tra Italia e Francia in materia di sicurezza ha radici più profonde. Il Trattato del Quirinale del 2021 ha consolidato il quadro delle relazioni bilaterali, prevedendo una collaborazione rafforzata anche sul versante della sicurezza interna.

Nel giugno 2026, inoltre, i ministri dell'Interno dei due Paesi hanno sottoscritto ad Antibes una nuova intesa per rafforzare l'attività delle brigate miste italo-francesi impegnate nel contrasto all'immigrazione clandestina e alla criminalità transfrontaliera.

I numeri confermano che questa collaborazione non è soltanto formale: nel periodo ottobre 2023-febbraio 2024, la Commissione europea ha registrato 240 pattugliamenti della brigata mista franco-italiana, con 1.894 persone e 656 veicoli controllati e 11 arresti.

Esperienze diverse, ma accomunate dalla medesima impostazione: condividere informazioni, coordinare le attività e rendere più efficace la prevenzione e il contrasto dei fenomeni illeciti.

C'è poi un aspetto che merita particolare attenzione: la tutela ambientale. Le montagne non sono soltanto una risorsa turistica, ma un patrimonio naturale fragile, esposto a fenomeni di abusivismo, danneggiamento e sfruttamento illegale. Estendere la cooperazione anche a questo settore significa riconoscere che la sicurezza comprende la protezione del territorio e delle sue risorse.

La lezione che arriva dalle Alpi è semplice, ma importante: la criminalità non si ferma davanti a una frontiera e neppure la prevenzione può permettersi di farlo.

In un'Europa nella quale la libera circolazione rappresenta una conquista fondamentale, la cooperazione tra le forze di polizia costituisce uno degli strumenti per conciliare mobilità, libertà e sicurezza.

La frontiera, dunque, non deve necessariamente essere un limite all'azione delle istituzioni: può diventare il luogo nel quale due Paesi imparano a lavorare insieme.

#Carabinieri #Gendarmerie #CooperazioneInternazionale #ItaliaFrancia #ColleDellAgnello #Europa

 
Continua...

from Cyberdyne Systems

Tux AdGuard

1. Cos'è AdGuard Home?

AdGuard Home non è un vero e proprio dns anche se gli somiglia tanto. È un proxy/forwarder dns focalizzato sulla privacy, sul blocco di pubblicità e sul controllo parentale.

AdGuard offre diverse soluzioni per la tutela della privacy. Dalle vpn, alle estensioni anti-tracker/ads per browser, a livello di host, a livello di rete, con delle soluzioni basate sul dns.

Rispetto a tutte le altre soluzioni, quella basata su dns è molto più pervasiva visto che non è limitata ai soli browser o ai singoli host sui quali è installata.

AdGuard Home è una soluzione anti-tracker/ads on-prem a livello di rete per qualunque applicazione di qualunque dispositivo connesso alla nostra lan.

Il suo scopo è quello di intercettare la richiesta dns dei client, terminarne la connessione, applicare le proprie regole e creare, quando necessario, una seconda connessione verso un upstream dns che risolve realmente la richiesta e fa il percorso inverso verso il client.

Le regole che Adguard Home applica, servono per eliminare tracker e ads ed eventualmente anche negare l'iintera richiesta dns prima di inoltrarla verso gli upstream se il dominio risulta bloccato dalle liste di Adguard.

AdGuard Home supporta la modalità piana (classica porta 53) o crittografata (DoH-DoT-DoQ, resolver DNSCrypt tramite DNS stamp) sia verso l'esterno (upstream) che verso i client della LAN (downstream).

Non bisogna pensare ad AdGuard Home come al surrogato di una vpn.
Il suo scopo non è quello di anonimizzare il traffico ma di eliminare tracker e ads del traffico web, eventualmente superare i blocchi sulla raggiungibilità delle risorse web imposte dal provider attraverso i SUOI dns e, solo se l'upstream è cifrato, impedire al provider stesso di esaminare le query DNS che vengono fatte. Tutto il resto del traffico web rimane comunque esposto.

Se installato su un singolo host, AdGuard Home agisce da cleaner ed eventualmente da resolver dns locale.

Se installato sulla periferia della rete (che è lo scenario che ci interessa), a ridosso di un router domestico o su un VPS esterno, che AdGuard Home da il meglio di sè perché è in grado di intercettare tutto il traffico dns di qualunque dispositivo della LAN, ripulirlo da tracker e ads e rimetterlo in circolo. E questo, in un ambiente come quello domestico, ormai zeppo di IoT e di dispositivi collegati in rete (tv, frigoriferi, lavastoviglie, ipcam ecc..) su cui non si ha alcun controllo, è un'ottima cosa.

AdGuard Home permette di definire delle regole puntuali per singolo client in modo che una politica di privilegio minimo sia facile da realizzare. Possiamo avere un controllo di base molto restrittivo con le eccezioni per i client specifici. In più, può fare da DHCP per l'intera rete.

2. Descrizione dello scenario

I passi da fare:

  1. installazione AdGuard Home
    1. Inizializzazione
  2. configurazione AdGuard Home
    1. abilitazione e configurazione DoT, DoQ, DNSCrypt
  3. creazione certificati self-signed server e client
  4. configurazione nginx per accesso webui (mtls) e DoH
  5. configurazione firewall locale

L'installazione e la messa in opera di AdGuard Home è veramente semplice ed immediata.

Basterebbe piazzarlo su un host dedicato, fare in modo che il router dichiari come dns per la lan l'ip dell'host AdGuard Home, così che tutti i device connessi alla lan ricevano AdGuard Home come dns di default.

Ovviamente è fondamentale dichiarare degli upstream decenti che possono essere scelti per es. fra:

Non c'è bisogno d'altro affinché la lan riceva i benefici di AdGuard Home.

Nel caso in esame, ho reso l'installazione un po' più articolata.

Il posizionamento di AdGuard Home come “dns” della lan indirizzato dal router è un “must have”.

AdGuard Home farà il suo mestiere nell'occuparsi di trackers, ads e link malevoli oltre che inoltrare le richieste di risoluzione esterne verso i server upstream come sappiamo.

Allo stesso tempo fungerà da semplice risolutore diretto per i nomi locali attraverso le regole di riscrittura. La risoluzione inversa, grazie alla quale AdGuard Home può registrare nel log i device col loro nomi, sarà delegata al router.

Nel mio laboratorio ho abilitato la crittografia TLS più come esercizio di stile che come necessità effettiva. In un ambito domestico, su un selfhosting, è una configurazione sostanzialmente inutile perché posso fidarmi della mia rete.

Le query in chiaro non costituirebbero un problema tanto più che l'host sarebbe anche sgravato dalla necessità di crittografare le richieste dei client della lan.

Potrebbe essere comprensibile se dovessi esporre AdGuard Home su internet, ad es. nel caso di un'installazione su un VPS esterno.
Ad ogni modo l'esposizione di DoH, DoT, DoQ e il resolver DNSCrypt da parte di AdGuard Home funziona egregiamente.

Come protezione ulteriore, l'accesso alla webui di amministrazione di AdGuard Home e al DoH viene mediato da un reverse proxy nginx che gira sullo stesso host. Nel caso della webui, nginx è configurato in modalità mTLS, dove i certificati client validano sia l'accesso che l'autorizzazione al servizio. Se non si possiede un certificato client o se lo si possiede ma nginx non lo riconosce valido per l'accesso a quel determinato servizio, la richiesta viene negata.

Estremizzando, ho provato ad applicare il reverse proxing a qualunque richiesta dns facendo si che AdGuard Home girasse completamente sull'interfaccia di loopback, ma per quanto fossi affascinato questa prospettiva, ho desistito perché il reverse proxy di uno stream ha come effetto collaterale che la registrazione dei client nel log di AdGuard Home sia falsata (ip di nginx invece che del client).

Inoltre, immaginando che la mia lan sia raggiungibile anche da vpn, ho fatto in modo che AdGuard Home sia anche il dns della rete vpn.

lan con AdGuard

3. Installazione AdGuard Home

Scaricare da qui l'ultima versione (ad oggi la 0.109.79) per la propria architettura: https://github.com/AdguardTeam/AdGuardHome/releases/latest

ARCH="amd64"
VERSION="0.109.79"
wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v"${VERSION}""/AdGuardHome_linux_"${ARCH}".tar.gz
tar -xzf AdGuardHome_linux_"${ARCH}".tar.gz -C /opt/

IMPORTANTE
Controllare che, sull'host, le porte:

  • 3000 (init da webui)
  • 53 (dns)
  • 80 (http)

siano aperte perché la prima esecuzione servirà ad inizializzare il servizio.

3.1. Inizializzazione

sudo /opt/AdGuardHome/AdGuardHome

Per completare l'inizializzazione sulla webui alla porta 3000, basta indicare la listen interface http per la webui, quella per il dns e la password di amministrazione.

Installo AdGuard Home come servizio in modo che possa avviarlo/stopparlo/riavviarlo via systemd invece che con la cli di AdGuard Home

sudo /opt/AdGuardHome/AdGuardHome -s install

In questo modo avrò:

# Avvio
sudo systemctl AdGuardHome start
# equivalente a sudo /opt/AdGuardHome/AdGuardHome -s start

# Stop
sudo systemctl AdGuardHome stop
# equivalente a sudo /opt/AdGuardHome/AdGuardHome -s stop

# Riavvio
sudo systemctl AdGuardHome restart
# equivalente a sudo /opt/AdGuardHome/AdGuardHome -s restart

# Status
sudo systemctl AdGuardHome status
# equivalente a sudo /opt/AdGuardHome/AdGuardHome -s statuts

4. Configurazione

Nonostante l'interfaccia web (http://adguard.mylab.home:8080) sia molto completa (a meno della configurazione DNSCrypt), per comodità editerò direttamente il file yaml.

Cominciamo con la webui.

http:
  pprof:
    port: 6060
    enabled: false
  doh:
    routes:
      - GET /dns-query
      - POST /dns-query
      - GET /dns-query/{ClientID}
      - POST /dns-query/{ClientID}
    insecure_enabled: true
  address: 127.0.0.1:8080
  session_ttl: 30d
...

Il servizio sarà in ascolto sull'interfaccia di loopback sulla porta 8080 perché sarà nginx a raccogliere le richieste, processarle e inoltrarle. Per questo motivo insecure_enabled: true (e non false come sarebbe il default) perché non sarà l'host AdGuard Home ad esporre la porta https.


...
dns:
  bind_hosts:
    - 192.168.100.2
    - 10.180.92.1
    - 127.0.53.53
  port: 53
...

Qua vanno indicati gli ip su cui AdGuard Home è in ascolto per le richieste dns che, nel mio caso, corrisponderanno a lan, vpn e loopback. Se avessi voluto reverseproxare le richieste dns, avrei solo loopback su una porta di backend a caso.


...
  upstream_dns:
    - sdns://AQMAAAAAAAAAETk0LjE0MC4xNS4xNTo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20
    - tls://dns.adguard-dns.com
    - https://dns.adguard-dns.com/dns-query
    - quic://dns.adguard-dns.com
  upstream_dns_file: ""
  bootstrap_dns:
	- 1.1.1.1
	- 9.9.9.10
    - 8.8.8.8
    - 149.112.112.10
    - 2620:fe::10
    - 2620:fe::fe:10
  fallback_dns:
    - tls://dns.quad9.net
    - https://dns9.quad9.net/dns-query
    - https://dns.quad9.net/dns-query
  upstream_mode: load_balance
...

Sempre sotto dns, 3 sezioni critiche.

  • upstream_dns: server dns, possibilmente cifrati, a cui AdGuard Home gira la risoluzione;
  • bootstrap_dns: server dns critici altamente affidabili a cui è assegnato il compito di risolvere inizialmente i nomi dei dns upstream cifrati, alrtimenti AdGuard Home non saprebbe come utilizzarli;
  • fallback_dns: server dns che subentrano agli upstream qualora non fossero raggiungibili.

Negli upstream cifrati, ho usato quelli di AdGuard che sono specifici nell'individuare e bloccare tracker e ads.
Quad9 per es. è più orientato al blocco di malware e phishing (li ho scelti come fallback). In quelli di OpenNIC c'è un po' dell'uno e un po' dell'altro. Ottimi ma ogni tanto bisogna controllarne lo status.

Per la modalità di scelta upstream ho lasciato il default (load_balance).


...
  trusted_proxies: 
    - 127.0.0.1
...

I trusted proxies sono dei server intermedi, come i reverse proxy, considerati attendibili da AdGuard Home nel richiedere risoluzioni. Nel mio caso, sarà Il reverse proxy nginx che gira sullo stesso host e che medierà l'accesso alla webui e al DoH.


...
  local_ptr_upstreams:
    - 192.168.100.1
...

Con local_ptr_upstream posso indicare chi deve occuparsi delle risoluzioni inverse della mia lan. Potrebbe essere lo stesso AdGuard Home (127.0.0.1) ma decido di delegare il compito al router (192.168.100.1) per fare si che l'elenco delle risoluzioni interne gestite da AdGuard Home nella sezione filtering non sia troppo affollato.


...
filtering:
  rewrites:
    - domain: adguard.mylab.home
	  answer: 192.168.100.2
	  enabled: true
    - domain: dns-doh.mylab.home
	  answer: adguard.mylab.home
	  enabled: true
...

La sezione filtering conterrà tutte le risoluzioni della mia lan, sia dirette che inverse. In questo laboratorio ho scelto di popolare questa sezione solo con le risoluzioni dirette e i CNAME. Quelle inverse, come detto in precedenza, le affido al router puntato da local_ptr_upstreams).

Notare la presenza di un cname, dns-doh.mylab.home, necessario per la configurazione DoH su nginx e per la creazione del relativo certificato.

4.1. Abilitazione DoT, DoQ, DNSCrypt

...
tls:
  enabled: true
  server_name: adguard.mylab.home
  force_https: false
  port_https: 0
  port_dns_over_tls: 853
  port_dns_over_quic: 853
  port_dnscrypt: 5443
  dnscrypt_config_file: /opt/AdGuardHome/dnscrypt.yaml
  certificate_chain: ""
  private_key: ""
  certificate_path: /opt/AdGuardHome/ssl/adguard.crt
  private_key_path: /opt/AdGuardHome/ssl/adguard.key
  strict_sni_check: false
...

La sezione TLS è una zona meritevole di considerazioni.

Per gli scopi del laborotorio, come descritto nello scenario, l'ho attivata affinché AdGuard Home esponga nella lan anche DoT, DoQ e DNSCrypt. Dal momento che DoH viene reverseproxato insieme alla webui, non ha bisogno dell'abilitazione TLS.

Questo spiega perché le porte per DoT, DoQ e DNSCrypt siano esplicitate, la porta https no.
Il TLS richiede inoltre la specifica della chiave e del certificato server legato all'host name.

⚠️⚠️⚠️ ATTENZIONE ⚠️⚠️⚠️
Avere il tls abilitato NON implica che le query dns siano magicamente crittografate. Se il client chiede ad AdGuard Home delle risoluzioni in chiaro, rimarranno in chiaro.

4.2. Configurazione DNSCrypt

Affinché AdGuard Home funzioni come server DNSCrypt, oltre a specificare la porta, occorre generare un apposito file di configurazione.

Si scarica l'ultima versione dell'utility dnscrypt (attualmente la 2.4.0) e si genera il file di configurazione.

VER="2.4.0"
OS=linux
ARCH="amd64"
# scarica
wget https://github.com/ameshkov/dnscrypt/releases/download/v"${VER}"/dnscrypt-"${OS}"-"${ARCH}"-v"${VER}".tar.gz
# scompatta
tar -vxzf ./dnscrypt-"${OS}"-"${ARCH}"-v"${VER}".tar.gz
cd ./"${OS}"-"${ARCH}"/
# genera il file di configurazione dnscrypt
./dnscrypt generate --provider-name '2.dnscrypt-adguard.mylab.home' --out ./dnscrypt.yaml

Questo file andrà posizionato in una cartella e riferito nel file di configurazione di AdGuard Home (dalla webui non è possibile), nel nostro caso: /opt/AdGuardHome/dnscrypt.yaml

provider_name: 2.dnscrypt-cert.2.dnscrypt-adguard.mylab.home
public_key: 1C41B1DC9E12469B5969247A134006A0EE0948B8333C1785706AF24626C156B1
private_key: FFF3162F0C0489C735665C68B3CA14F7504B8AA505A016F9989F44525B7114BA1C41B1DC9E12469B5969247A134006A0EE0948B8333C1785706AF24626C156B1
resolver_secret: ECE213E9A5D25C5C94B289A7FA8A12C56AEB3BEE87DB8AAA5B3D6FEE7DE0AA2E
resolver_public: 11ED1EAFC96BE7F87BB1D4F2D5E3B62BE1EC7DA2C550435D671F3D4D73217842
es_version: 1
certificate_ttl: 0s

La chiave pubblica generata, va data in pasto all'utility ufficiale di creazione degli stamps DNSCrypt, https://dnscrypt.info/stamps/.

Verrà generato un riferimento come questo: sdns://AQcAAAAAAAAADTE5Mi4xNjguMTAwLjIgHEGx3J4SRptZaSR6E0AGoO4JSLgzPBeFcGryRibBVrEiMi5kbnNjcnlwdC1jZXJ0LmFkZ3VhcmQubXlsYWIuaG9tZQ che andrà consegnato ai client affinché interroghino AdGuard Home in modalità DNSCrypt.

5. Creazione certificati

Trattandosi di un self-hosting, creerò una CA interna per firmare i certificati server e client che mi permetteranno di esporre in https sia la webui in mTLS, sia DoH.

In un ambito domestico un approccio del genere è accettabile. Se il servizio fosse esposto all'esterno, meglio affidarsi a Let's Encrypt (o chi per lui, che fra l'altro risolve strutturalmente anche il problema della distribuzione della CA sui device.

I file di configurazione e i comandi openssl sono coerenti, a meno dei path, delle password dei p12 e degli elementi descrittivi (i certificati client sono stati generati per simbolicamente per Alice e Bob, gli unici a poter accedere alla webui) del certificato che andranno personalizzati.

N.B. Affinché la magia funzioni, ricordo che è necessario distribuire manualmente la CA generata sui vari device.

5.1. CA

###############
# ca_cert.cnf #
###############
[ v3_ca ]
basicConstraints        = critical,CA:true
keyUsage                = critical, cRLSign, keyCertSign
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always,issuer
nsCertType              = sslCA
nsComment               = "OpenSSL Generated CA Root Certificate"

######
# CA #
######
openssl req -config $HOME/certificati/conf/ca_cert.cnf -extensions v3_ca -x509 -days 1825 -sha512 -nodes -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -subj "/C=IT/ST=Italia/CN=My RootCA" -keyout $HOME/certificati/certs/myroot_ca.key -out $HOME/certificati/certs/myroot_ca.crt

5.2. Certificati server

##################
# server_req.cnf #
##################
[ req ]
req_extensions = v3_server_req

[ v3_server_req ]
basicConstraints        = CA:FALSE
subjectKeyIdentifier    = hash
keyUsage                = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage        = serverAuth
nsCertType              = server
nsComment               = "OpenSSL Generated Server Request Certificate"

###################
# server_cert.cnf #
###################
basicConstraints        = CA:FALSE
subjectKeyIdentifier    = hash
keyUsage                = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage        = serverAuth
nsCertType              = server
nsComment               = "OpenSSL Generated Server Certificate"

##########
# SERVER #
##########
# adguard.crt
openssl req -config $HOME/certificati/conf/server_req.cnf -nodes -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -subj "/C=IT/ST=Italia/L=my City/O=My Organization/CN=adguard.mylab.home/emailAddress=<indirizzo email>" -keyout $HOME/certificati/certs/adguard.key -out $HOME/certificati/certs/adguard.csr

openssl x509 -extfile $HOME/certificati/conf/server_cert.cnf -req -in $HOME/certificati/certs/adguard.csr -days 365 -sha512 -CA $HOME/certificati/certs/myroot_ca.crt -CAkey $HOME/certificati/certs/myroot_ca.key -CAcreateserial -out $HOME/certificati/certs/adguard.crt -extfile <(echo "subjectAltName=DNS:adguard.mylab.home")

# dns-doh.crt
openssl req -config $HOME/certificati/conf/server_req.cnf -nodes -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -subj "/C=IT/ST=Italia/L=my City/O=My Organization/CN=dns-doh.mylab.home/emailAddress=<indirizzo email>" -keyout $HOME/certificati/certs/dns-doh.key -out $HOME/certificati/certs/dns-doh.csr

openssl x509 -extfile $HOME/certificati/conf/server_cert.cnf -req -in $HOME/certificati/certs/dns-doh.csr -days 365 -sha512 -CA $HOME/certificati/certs/myroot_ca.crt -CAkey $HOME/certificati/certs/myroot_ca.key -CAcreateserial -out $HOME/certificati/certs/dns-doh.crt -extfile <(echo "subjectAltName=DNS:dns-doh.mylab.home")

5.3. Certificati client

##################
# client_req.cnf #
##################
[ req ]
req_extensions = v3_client_req

[ v3_client_req ]
basicConstraints        = CA:FALSE
subjectKeyIdentifier    = hash
keyUsage                = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage        = clientAuth
nsCertType              = client
nsComment               = "OpenSSL Generated Client Request Certificate"

###################
# client_cert.cnf #
###################
basicConstraints        = CA:FALSE
subjectKeyIdentifier    = hash
keyUsage                = nonRepudiation, digitalSignature, keyEncipherment, dataEncipherment
extendedKeyUsage        = clientAuth
nsCertType              = client
nsComment               = "OpenSSL Generated Client Certificate"

##########
# CLIENT #
##########
# Bob
openssl req -config $HOME/certificati/conf/client_req.cnf -nodes -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -subj "/C=IT/ST=Italia/L=my City/O=my Organization/OU=Admin AdGuard/CN=Bob" -keyout $HOME/certificati/certs/bob.key -out $HOME/certificati/certs/bob.csr

openssl x509 -extfile $HOME/certificati/conf/client_cert.cnf -req -in $HOME/certificati/certs/bob.csr -days 365 -sha512 -CA $HOME/certificati/certs/myroot_ca.crt -CAkey $HOME/certificati/certs/myroot_ca.key -CAcreateserial -out $HOME/certificati/certs/bob.crt

openssl pkcs12 -export -inkey $HOME/certificati/certs/bob.key -in $HOME/certificati/certs/bob.crt -passout pass:password_di_bob-out $HOME/certificati/certs/bob.p12

# Alice
openssl req -config $HOME/certificati/conf/client_req.cnf -nodes -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -subj "/C=IT/ST=Italia/L=my City/O=my Organization/OU=Admin AdGuard/CN=Alice" -keyout $HOME/certificati/certs/alice.key -out $HOME/certificati/certs/alice.csr

openssl x509 -extfile $HOME/certificati/conf/client_cert.cnf -req -in $HOME/certificati/certs/alice.csr -days 365 -sha512 -CA $HOME/certificati/certs/myroot_ca.crt -CAkey $HOME/certificati/certs/myroot_ca.key -CAcreateserial -out $HOME/certificati/certs/alice.crt

openssl pkcs12 -export -inkey $HOME/certificati/certs/alice.key -in $HOME/certificati/certs/alice.crt -passout pass:password_di_alice -out $HOME/certificati/certs/alice.p12

6. Configurazione nginx per accesso webui (mtls) e DoH

Nginx sarà configurato per esporre webui e DoH.

La possibilità di aggiungere intestazioni http contenenti l'ip del client (a differenza di uno stream udp), mi permetterà di far conoscere ad AdGuard Home gli ip reali dei client che fanno richiesta.

L'accesso alla webui avverrà solo se si è in possesso di un certificato client per il quale nginx controllerà anche che quel certificato sia autorizzato ad usare il servizio stesso tramite il fingerprint del certificato.

Le configurazioni per webui e DoH sono state separate perché nel primo deve essere presente anche la mutua autenticazione. Allo scopo, sono stati generati due certificati server differenti per due server name distinti (adguard.mylab.home e dns-doh.mylab.home)

1. default.conf: rifiuta tutte le richieste che non sono specificate nei vari server name, niente accesso attraverso ip o altri cname.

server {
    listen 80 default_server;
    listen [::]:80 default_server;
#
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
#
    # Nginx 1.19.4+ rifiuta l'handshake SSL per gli IP/domini non validi senza bisogno di un certificato reale
    ssl_reject_handshake on;
#
    server_name _;
#
    # Rifiuta la connessione senza restituire alcuna risposta (chiusura socket)
    return 444;
}

2. redirect_default.conf: force redirect 80-443.

server {
    listen 80;
    listen [::]:80;
#
    server_name adguard.mylab.home;
#
    return 301 https://$host$request_uri;
}

3. mtls-access.conf: autorizzazione su nginx tramite fingerprint (solo Bob e Alice, in lan o in vpn, possono accedere).

map $ssl_client_fingerprint $allow_webui {
    default 0;

    # bob
    "54251c232b367d8b5d5b70927ba262558b6cf4dd" 1;
    # alice
    "bc8c8385c81fd86c335e2e17fe9e5578eb9c34f0" 1;
    ...
}

4. adguard-webui.conf: Accesso alla webui con mTLS.

server {
    listen 443 ssl;
    server_name adguard.mylab.home;

    ssl_certificate     /etc/nginx/certs/adguard.crt;
    ssl_certificate_key /etc/nginx/certs/adguard.key;

    ssl_protocols TLSv1.2 TLSv1.3;

    ssl_client_certificate /etc/ssl/certs/myroot_ca.pem;
    ssl_verify_client on;
    ssl_verify_depth 1;

    if ($allow_webui = 0) {
        return 403;
    }

    # Consenti LAN e VPN
    allow 192.168.100.0/24;
    allow 10.180.92.0/24;
    deny all;

    # Configurazione per la WebUI di AdGuard (es. in HTTP sulla porta 8080 interna)
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

5. adguard-doh.conf: Stessa configurazione di webui a meno di mtls, solo teminazione ssl. Tutti gli utenti della lan/vpn possono accedere a DoH.

server {
    listen 443 ssl;
    server_name dns-doh.mylab.home;

    http2 on;

    ssl_certificate     /etc/nginx/certs/dns-doh.crt;
    ssl_certificate_key /etc/nginx/certs/dns-doh.key;

    ssl_protocols TLSv1.2 TLSv1.3;

    # Consenti LAN e VPN
    allow 192.168.100.0/24;
    allow 10.180.92.0/24;
    deny all;

    location = /dns-query {
        proxy_pass http://127.0.0.1:8080;

        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

7. Configurazione firewall locale

Una volta che tutto è stato messo a punto, configuriamo il firewall locale sull'host adguard/nginx che, se presente, consentirà il traffico per tutte le porte che espone AdGuard Home (o Nginx) affinché siano raggiungibili solo dalla lan e dalla vpn.

Le porte da aprire verso la lan e verso la vpn (ripeto, non verso internet) saranno:

  • 53/tcp, 53/udp (dns)
  • 80/tcp, 443/tcp (http(s) e DoH)
  • 853/tcp (DoT)
  • 853/udp (DoQ)
  • 5443/tcp, 5443/udp (DNSCrypt)
cat -> /etc/ufw/applications.d/dns.ufw << EOF 
    [DNS]
    title=Internet Domain Name Server
    description=DNS plain
    ports=53
EOF

cat -> /etc/ufw/applications.d/dot.ufw << EOF 
    [DNS DoT]
    title=DNS DoT
    description=DNS over TCP
    ports=853/tcp
EOF

cat -> /etc/ufw/applications.d/doq.ufw << EOF 
    [DNS DoQ]
    title=DoQ
    description=DNS over QUIC
    ports=853/udp
EOF

cat -> /etc/ufw/applications.d/dnscrypt.ufw << EOF 
    [DNSCrypt]
    title=DNSCrypt
    description=DNSCrypt
    ports=5443
EOF

cat -> /etc/ufw/applications.d/fullweb.ufw << EOF 
    [Nginx Full Web]
    title=Web Server (HTTP,HTTPS)
    description=Web Server (HTTP,HTTPS)
    ports=80,443/tcp
EOF

ufw allow in on eth0 to 0.0.0.0/0 app "DNS" from 192.168.100.0/24 comment "DNS via lan"
ufw allow in on eth0 to 0.0.0.0/0 app "DNS DoT" from 192.168.100.0/24 comment "DNS DoT via lan"
ufw allow in on eth0 to 0.0.0.0/0 app "DNS DoQ" from 192.168.100.0/24 comment "DNS Doq via lan"
ufw allow in on eth0 to 0.0.0.0/0 app "DNSCrypt" from 192.168.100.0/24 comment "DNSCrypt via lan"
ufw allow in on eth0 to 0.0.0.0/0 app "Nginx Full Web" from 192.168.100.0/24 comment "AdGuard Home webui e DoH via lan"

ufw allow in on wg0 to 0.0.0.0/0 app "DNS" from 10.180.92.0/24 comment "DNS via vpn"
ufw allow in on wg0 to 0.0.0.0/0 app "DNS DoT" from 10.180.92.0/24 comment "DNS DoT via vpn"
ufw allow in on wg0 to 0.0.0.0/0 app "DNS DoQ" from 10.180.92.0/24 comment "DNS Doq via vpn"
ufw allow in on wg0 to 0.0.0.0/0 app "DNSCrypt" from 10.180.92.0/24 comment "DNSCrypt via vpn"
ufw allow in on wg0 to 0.0.0.0/0 app "Nginx Full Web" from 10.180.92.0/24 comment "AdGuard Home webui e DoH via vpn"

8. Conclusione

Tirando le somme, alla fine di questo percorso, avremo il nostro AdGuard Home pronto per filtrare tutto ciò che non va e risolvere esternamente, attraverso gli upstream che abbiamo definito, tutto il traffico proveniente dalla nostra lan domestica e dalla vpn, se c'è.

La webui di AdGuard Home non è esposta direttamente visto che il suo accesso è gestito da nginx ed è autenticata e autorizzata da mTLS. L'esposizione attraverso reverse proxy, ci consegna gratis anche il DoH.

Se AdGuard Home stesse su un VPS esterno, abbiamo visto come attivare DoT, DoQ e DNSCrypt in modo che anche le query che viaggiano verso AdGuard Home siano cifrate (una volta fatto, si potrebbe addirittura disabilitare la risoluzione piana per lasciare solo quella cifrata).

Riferimenti:

#adguard #dns #nginx #mtls #crittografia #x509 #dot #doq #doh #dnscrypt

 
Continua...

from morsunled

2018 BMW S1000RR Headlight Error Codes and CANbus Fixes

The 2018 BMW S1000RR sits at an interesting point in the model's evolution: it retains the iconic asymmetrical halogen headlight design of the earlier generations, yet it is fully integrated into BMW's sophisticated CANbus monitoring network. When something goes wrong with the headlight circuit—or when an owner attempts to modify it—the dashboard responds with cryptic warnings that can be frustrating to diagnose without understanding how the system actually works. BMW S1000RR

The most common headlight-related error on the 2018 model is the “LAMP” or “LAMPF” warning, which appears when the CANbus detects an abnormality in the lighting circuit. The primary trigger for this code is the installation of aftermarket LED or HID bulbs. The factory halogen bulbs draw a specific current that the bike's monitoring system expects; when an LED bulb draws significantly less, the CANbus interprets the reduced load as a failed bulb and illuminates the warning on the dash . This is not merely an annoyance—there is evidence that the system may eventually cut power to the affected circuit entirely if the fault persists, leaving the rider without functional lights . For riders who have installed aftermarket bulbs, the traditional solution is a load resistor wired in parallel to restore the expected current draw, though resistor values must be chosen carefully to satisfy the monitoring system without generating excessive heat . A more elegant approach is to select LED bulbs that are specifically marketed as “error-free” or CANbus-compatible for BMW applications, as these units incorporate the necessary circuitry internally and avoid the need for external resistors .

A distinct scenario that produces headlight fault codes on the 2018 S1000RR is the removal of the BMW S1000RR headlight assembly for track use. When owners fit race fairings and disconnect the headlights, the CANbus registers the missing components as failures and displays the “LAMP” error persistently . The solution for this situation is a plug-and-play emulator kit, such as the four-piece set offered by alpha Racing for the 2017–2018 model years. This kit includes a dedicated headlight plug that connects directly to the OEM loom and convinces the ECU that the lights are still present and functioning, eliminating the warning without any cutting or splicing . It is worth noting that some riders have reported success in suppressing lamp warnings through the dashboard settings menu on certain model years, though this approach has limitations: disabling the warning entirely also means the rider will not be alerted if a genuine bulb failure occurs later . For track-only machines, the emulator plugs are the cleaner and more reliable solution.

Beyond bulb-related faults, the 2018 S1000RR is susceptible to CANbus confusion caused by connection sequencing errors. The headlight circuit on this generation is controlled through a chain of communication: the switch signals a request to the instrument cluster, which processes it and sends data to the ECU, which then triggers the relays that actually power the lights . If the headlights are unplugged or reconnected while the ignition is switched on, the CANbus can lose track of the last known state of the circuit, resulting in symptoms such as both bulbs stuck on high beam regardless of switch position, or the lights failing to illuminate at all. The remedy is straightforward but must be followed precisely: switch the ignition off, disconnect the headlights, cycle the ignition on and off a couple of times, then reconnect the lights with the key off. If this does not resolve the issue, disconnecting the negative battery terminal for approximately one minute can force a full reset of the CANbus and restore normal function . This reset procedure should be the first step before assuming a relay or control unit has failed.

For 2018 owners who encounter persistent headlight warnings that cannot be resolved through emulators, resistors, or resets, the final diagnostic step is to check for physical faults in the circuit itself. Corroded or loose connectors behind the front fairing, moisture intrusion into the BMW S1000RR headlight housing, or a failing relay in the tail section can all produce symptoms that mimic CANbus incompatibility. The high-beam relay in particular is a known wear item, and swapping it with the adjacent load-shedding relay is a simple diagnostic test that can confirm whether the relay is the culprit . Ultimately, the 2018 S1000RR's headlight system rewards a methodical approach: understand what the CANbus expects, address modifications with the appropriate emulation or resistance, and always perform connection changes with the ignition off. When those principles are followed, the asymmetric headlights that define the model's character can be maintained—or removed for track duty—without the dashboard descending into a chorus of warnings.

 
Read more...

from 📖Un capitolo al giorno📚

1Nicànore, avendo saputo che gli uomini di Giuda si trovavano nella regione della Samaria, decise di assalirli a colpo sicuro nel giorno del riposo. 2Poiché i Giudei che l'avevano seguito per necessità gli dicevano: “Assolutamente non devi ucciderli in modo così crudele e barbaro; piuttosto rispetta il giorno che è stato onorato e santificato da colui che tutto vede”, 3quell'uomo tre volte scellerato chiese se c'era in cielo un Signore che aveva comandato di celebrare il giorno del sabato. 4Essi risposero: “C'è il Signore vivente; egli è il sovrano del cielo, che ha comandato di celebrare il settimo giorno”. 5L'altro ribatté: “E io sono sovrano sulla terra, che comando di prendere le armi e di eseguire le disposizioni del re”. Tuttavia non riuscì a mandare a effetto il suo crudele intento. 6Nicànore, dunque, che si era montato la testa con tutta la sua arroganza, aveva deciso di erigere un pubblico trofeo per la vittoria sugli uomini di Giuda. 7Il Maccabeo invece era fermamente convinto e sperava pienamente di ottenere protezione dal Signore. 8Esortava perciò i suoi uomini a non temere l'attacco delle nazioni, ma a tenere impressi nella mente gli aiuti che in passato erano venuti loro dal Cielo e ad aspettare ora la vittoria che sarebbe stata loro concessa dall'Onnipotente. 9Confortandoli così con le parole della legge e dei profeti e ricordando loro le lotte che avevano già condotto a termine, li rese più coraggiosi. 10Avendo così rinfrancato i loro sentimenti, espose e denunciò la malafede delle nazioni e la loro violazione dei giuramenti. 11Dopo aver armato ciascuno di loro non tanto con la sicurezza degli scudi e delle lance quanto con il conforto di quelle efficaci parole, li riempì di gioia, narrando loro un sogno degno di fede, anzi una vera visione. 12La sua visione era questa: Onia, che era stato sommo sacerdote, uomo onesto e buono, modesto nel portamento, mite nel contegno, spedito ed elegante nel parlare, occupato fin dalla fanciullezza in tutto ciò che è proprio della virtù, con le mani protese pregava per tutta la comunità dei Giudei. 13Poi, allo stesso modo, era apparso un uomo distinto per età senile e maestà, circonfuso di dignità meravigliosa e piena di magnificenza. 14Presa la parola, Onia disse: “Questi è l'amico dei suoi fratelli, che prega molto per il popolo e per la città santa, Geremia, il profeta di Dio”. 15E Geremia stendendo la destra consegnò a Giuda una spada d'oro, pronunciando queste parole nel porgerla: 16“Prendi la spada sacra come dono di Dio; con questa abbatterai i nemici”. 17Incoraggiati dalle parole di Giuda, molto belle e tali da spingere all'eroismo e da rendere virile anche l'animo dei giovani, stabilirono di non restare nel campo, ma di intervenire coraggiosamente e decidere la sorte attaccando battaglia con tutto il coraggio, perché la città e le cose sante e il tempio erano in pericolo. 18Minore era il loro timore per le donne e i figli come pure per i fratelli e i parenti, poiché la prima e principale preoccupazione era per il tempio consacrato. 19Anche per quelli rimasti in città non era piccola l'angoscia, essendo tutti turbati per l'ansia del combattimento in campo aperto. 20Tutti ormai attendevano la prova imminente, poiché i nemici già avevano cominciato ad attaccare e l'esercito era in ordine di battaglia, gli elefanti erano piazzati in posizione opportuna e la cavalleria schierata ai lati. 21Il Maccabeo, dopo aver osservato la moltitudine dei presenti, la varietà delle armi pronte e la ferocia delle bestie, alzò le mani al cielo e invocò il Signore che compie prodigi, convinto che non è possibile vincere con le armi, ma che egli concede la vittoria a coloro che ne sono degni, secondo il suo giudizio. 22Nel pregare il Signore, si esprimeva in questo modo: “Tu, Signore, inviasti il tuo angelo al tempo di Ezechia, re della Giudea, ed egli fece perire nel campo di Sennàcherib centoottantacinquemila uomini. 23Anche ora, sovrano del cielo, manda un angelo buono davanti a noi per incutere paura e tremore. 24Siano atterriti dalla potenza del tuo braccio coloro che bestemmiando sono venuti qui contro il tuo popolo santo”. Con queste parole egli terminò.

25Gli uomini di Nicànore avanzavano al suono delle trombe e degli inni di guerra. 26Gli uomini di Giuda invece si gettarono nella mischia contro i nemici tra invocazioni e preghiere. 27In tal modo, combattendo con le mani, ma pregando Dio con il cuore, travolsero non meno di trentacinquemila uomini, rallegrandosi grandemente per la manifesta presenza di Dio. 28Terminata la battaglia, mentre facevano ritorno pieni di gioia, riconobbero Nicànore caduto con tutte le sue armi. 29Levarono alte grida dandosi all'entusiasmo, mentre benedicevano l'Onnipotente nella lingua dei padri. 30Quindi colui che era stato sempre il primo a combattere per i suoi concittadini con anima e corpo, colui che aveva conservato l'affetto dell'età giovanile verso i suoi connazionali, comandò che tagliassero la testa di Nicànore e la sua mano con il braccio e li portassero a Gerusalemme. 31Quando vi giunse, convocati tutti i connazionali e collocati i sacerdoti davanti all'altare, mandò a chiamare quelli della Cittadella 32e mostrò loro la testa dello scellerato Nicànore e la mano che quel bestemmiatore aveva steso contro la sacra dimora dell'Onnipotente, pronunciando parole arroganti. 33Tagliata poi la lingua del sacrilego Nicànore, la fece gettare a pezzi agli uccelli e ordinò di appendere davanti al tempio la ricompensa della sua follia. 34Tutti allora, rivolti verso il cielo, benedissero il Signore glorioso dicendo: “Benedetto colui che ha conservato la sua dimora inviolata”. 35Fece poi appendere la testa di Nicànore alla Cittadella alla vista di tutti, perché fosse segno manifesto dell'aiuto di Dio. 36Quindi deliberarono tutti insieme, con voto pubblico, di non lasciar passare inosservato quel giorno, ma di commemorarlo il tredici del dodicesimo mese – che in lingua aramaica si chiama Adar – il giorno precedente la festa di Mardocheo.

EPILOGO

37Così andarono le cose riguardo a Nicànore e, poiché da quel tempo la città è rimasta in mano agli Ebrei, anch'io chiudo qui la mia narrazione. 38Se essa è riuscita ben ordinata, era quello che volevo; se invece è di poco conto e mediocre, questo solo ho potuto fare. 39Come il bere solo vino o bere solo acqua è nocivo, mentre vino mescolato con acqua è amabile e procura un delizioso piacere, così un discorso ben elaborato delizia gli orecchi di coloro che leggono la narrazione. E qui sia la fine.

__________________________ Note

15,29 nella lingua dei padri: in lingua ebraica. Al tempo dei Maccabei l’ebraico era pressoché sconosciuto come lingua parlata, in quanto sostituito dall’aramaico e anche dal greco.

15,36 deliberarono: la festa del Giorno di Nicànore viene celebrata nello stesso mese della festa di Mardocheo, il giorno prima (vedi Est 9,20-32; sul Giorno di Nicànore vedi anche nota a 1Mac 7,49). Adar: nome di mese corrispondente al nostro febbraio-marzo.

=●=●=●=●=●=●=●=●=●=●=●=

Approfondimenti

1-24. La spavalda affermazione di Nicanore (v. 5), è il punto di massima superbia nel libro: neanche il Dio del cielo può contrastare i voleri del generale sulla terra. È quanto l'autore vuole mostrare stupidamente falso: il «Signore vivente» comanda anche sulla terra e le sue leggi vanno osservate, pena la rovina.

6-24. Per i particolari, cfr. 1Mac 7,30-50. Qui vengono totalmente trascurati: non c'è posto né per la geografia né per la scenografia né per l'episodica; tutto lo spazio narrativo è riempito dalle visioni e dalla preghiere: sta per intervenire sulla terra, clamorosamente, quel «sovrano del cielo» da Nicanore così sprezzantemente messo fuori gioco.

6-16. Una prima parte della preparazione, tutta spirituale, dei Giudei è occupata in larga misura (vv. 12-16) dalla descrizione dei due personaggi apparsi in sogno a Giuda: Onia III e Geremia, ambedue in atteggiamento di preghiera. Il sogno-visione termina con una specie di investitura per la guerra che richiama le visioni di vocazione dei profeti (cfr. Is 6,1ss.; Ger 1,4ss.; Ez 3,1ss.), ma se ne discosta per il contenuto militare anziché missionario. A parte l'interessante sottolineatura della stima di cui godeva Geremia quale «amico dei fratelli» (v. 14), il brano testimonia la convinzione di una qualche sopravvivenza attiva dopo la morte, almeno dei grandi personaggi di Israele, e di un loro ruolo di intercessione che corrisponde alla preghiera di suffragio che i vivi possono rivolgere per i defunti (cfr. 12,38-45).

17-24. La seconda parte della preparazione rileva l'effetto delle parole di Giuda sui soldati, sottolineando che la spinta più forte a combattere viene dal pensiero che è in pericolo il tempio (v. 18). Constata, poi, che la vittoria è umanamente impossibile (v. 21) ma che con Dio sarà anche facile, come nei tempi andati (v. 22). La descrizione dei preparativi nemici (v. 20) lascia intendere che l'autore pensa a una battaglia in campo aperto (cfr. v. 19), con larghi spazi di manovra. In realtà, stando a 1Mac 7,39s., la battaglia ebbe luogo a Bet-Oron, una regione di colline e rilievi anche dirupati.

25-36. Un'ultima descrizione, peraltro vivace, della battaglia come l'autore l'immagina (v. 26: coraggio e preghiera contro armi e tecnica militare) e un elogio particolarmente affettuoso di Giuda (v. 30), «protagonista» (così in gr.; secondo BC «il primo a combattere) di animo e di corpo in ogni impresa militare e giovanilmente innamorato della sua gente. Poi, la presentazione, persino un po' macabra, della mutilazione di Nicanore, a mostrare che anch'egli sottostà alla regola del contrappasso, con l'amputazione della mano e della testa, strumenti della sua protervia. Particolare trattamento è riservato alla «lingua» che aveva bestemmiato e al «braccio» (gr. epicheiron) che riceve la sua «mercede» (gr. epicheira) per essersi proteso contro il tempio. La menzione dell'Acra (vv. 31.35) è anacronistica perché fu conquistata dai Giudei una ventina di anni dopo, nel 141 a.C., con Simone (cfr. 1Mac 13,51).

37-39. L'autore lascia intravvedere che a lui interessa soprattutto il tempio, purificato e difeso da ulteriori tentativi di contaminazione e rovina: la storia narrata è in funzione di questo. Anche la città di Gerusalemme è per lui rimasta in mano agli Ebrei» (v. 37), pur se tuttora sotto il dominio siro, perché il tempio ha potuto da allora essere officiato regolarmente e svolgere la sua funzione di centro vitale dell'ebraismo.

(cf. EMILIANO VALLAURI, 2Maccabei – in: La Bibbia Piemme, Casale Monferrato, 1995)


🔝 ● C A L E N D A R I ● Indice BIBBIA ● Homepage

 
Continua...

from Bymarty

E mi spiace pensare che in questo groviglio di pensieri, emozioni, condivisioni, assenze, ritrovi, ritorni , smarrimenti ! Ci sono io ancora persa,dispersa in un oceano in tempesta, tra fondali irraggiungibili e buie e onde spaventose e fredde! E così cerco di rimanere a galla, di ritrovare porti, fari luminosi, ancore di salvataggio! Ma non vedo nulla in qsto buio, non sento chiamare, non avverto presenze ...e così mi perdo e un po' mi allontano! Da me, dai rifugi che avevo trovato e abitato ed è triste ritornare laddove, un po' ti sei persa, e dove pare non esserci posto! E poi perché ? Sono empaticamente fragile e non posso soffocare , non voglio fingere! Se sono triste, se a me mancano i suoi occhi bisognosi di amore, cura e sostegno, se mi manca la sua presenza , non posso solo sorridere ...Non bastano ancora i giorni, è ancora aperta la ferita, e il cuore a tratti spento, e i miei occhi lucidi e soffocati da calde e copiose lacrime! Non sono formica laboriosa, sono anima solitaria che vaga tra silenzi , vuoti e rumori, e parole e tanta confusione... E persa vuole ritrovarsi e nei pensieri, ormai ricordi, ritrovarti e abbracciarti ancora! perché mi manchi tanto!

 
Continua...