Dat heb ik inderdaad ook zo draaien (2x AGH via Docker). Het werkt behoorlijk goed, maar met 1 beperking: het is afhankelijk van het host ip adres. Dus als je host wel draait, maar de Master AGH container functioneert niet goed, dan komt de Slave niet in actie. En dus loopt de DNS resolving dan alsnog spaak. Ik heb van alles geprobeerd, maar krijg een extra controle hierop niet aan de praat.Glassertje schreef op maandag 9 februari 2026 @ 14:45:
[...]
Ik gebruik keepalived met 2 raspberry pi's en AGH. Met 1 virtueel ip zijn beide Pi's. Verbonden. Als de ene niet reageert, dan reageert de andere. @stormfly heeft de config hier in het topic gepost.
Ik gebruik geen docker op de pizordaz schreef op maandag 9 februari 2026 @ 16:09:
[...]
Dat heb ik inderdaad ook zo draaien (2x AGH via Docker). Het werkt behoorlijk goed, maar met 1 beperking: het is afhankelijk van het host ip adres. Dus als je host wel draait, maar de Master AGH container functioneert niet goed, dan komt de Slave niet in actie. En dus loopt de DNS resolving dan alsnog spaak. Ik heb van alles geprobeerd, maar krijg een extra controle hierop niet aan de praat.
Beide pi's zijn in keepalived BACKUP zodat ik nopreempt optie kan gebruiken. Zo heb je dan geen onnodige VIP-wissels. Vind het niet nodig als de 1e AGH install terug reageert, dat die dan weer overspringt. Dit gebeurd pas als de andere AGH niet reageert. En tot nu toe werkt het vlekkeloos.
Dat is wel mogelijk hoor, maar dan moet je zelf een healthcheck scriptje maken voor AGH. In bijvoorbeeld /etc/keepalived/check_service.sh. Die moet executable zijn.zordaz schreef op maandag 9 februari 2026 @ 16:09:
[...]
Dat heb ik inderdaad ook zo draaien (2x AGH via Docker). Het werkt behoorlijk goed, maar met 1 beperking: het is afhankelijk van het host ip adres. Dus als je host wel draait, maar de Master AGH container functioneert niet goed, dan komt de Slave niet in actie. En dus loopt de DNS resolving dan alsnog spaak. Ik heb van alles geprobeerd, maar krijg een extra controle hierop niet aan de praat.
Bash:
/etc/keepalived/keepalived.conf:1
2
3
4
5
6
7
8
9
10
11
| #!/bin/bash HOST=127.0.0.1 PORT=3000 nc -z "$HOST" "$PORT" >/dev/null 2>&1 if [ $? -eq 0 ]; then exit 0 # OK else exit 1 # FAIL fi |
Bash:
Er zijn vast slimmere manieren om AGH te monitoren, maar dit kwam nu bij mij even uit de hoge hoed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| vrrp_script chk_service { script "/etc/keepalived/check_service.sh" interval 2 timeout 2 fall 2 rise 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 200 advert_int 1 virtual_ipaddress { 10.0.0.100 } track_script { chk_service } } |
gemiddelde procestijd is bij mij 19 ms en 127.0.0.1:5335 445 ms. Vooral deze laatste vind ik vrij traag. Misschien dat het aan Ipv6 ligt. Die heb jij uit staan en gebruik ik wel.Villager schreef op donderdag 5 februari 2026 @ 17:49:
[...]
Ik heb op Adguard Dashboard pagina 2 waarden die de responsetijden weergeven.
Onder Algemene Statistieken > Gemiddelde procestijd: 6 ms
en onder Gemiddelde upstream responstijd> Gemiddelde upstream responstijd voor de afgelopen 24 uren
127.0.0.1:5335 32 ms
Dank, ik ga weer eens een poging wagen. Zo'n scriptje kreeg ik indertijd dus niet werkend (het deed gewoon niets), wat ik ook probeerde.lolgast schreef op maandag 9 februari 2026 @ 16:38:
[...]
Dat is wel mogelijk hoor, maar dan moet je zelf een healthcheck scriptje maken voor AGH. In bijvoorbeeld /etc/keepalived/check_service.sh. Die moet executable zijn.Bash:/etc/keepalived/keepalived.conf:
1 2 3 4 5 6 7 8 9 10 11 #!/bin/bash HOST=127.0.0.1 PORT=3000 nc -z "$HOST" "$PORT" >/dev/null 2>&1 if [ $? -eq 0 ]; then exit 0 # OK else exit 1 # FAIL fiBash:Er zijn vast slimmere manieren om AGH te monitoren, maar dit kwam nu bij mij even uit de hoge hoed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 vrrp_script chk_service { script "/etc/keepalived/check_service.sh" interval 2 timeout 2 fall 2 rise 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 200 advert_int 1 virtual_ipaddress { 10.0.0.100 } track_script { chk_service } }
Had je het script wel executable gemaakt?zordaz schreef op dinsdag 10 februari 2026 @ 10:29:
[...]
Dank, ik ga weer eens een poging wagen. Zo'n scriptje kreeg ik indertijd dus niet werkend (het deed gewoon niets), wat ik ook probeerde.
chmod +x ...
Ik heb de setup met een failover van de Adguard home server al vaker voorbij zien komen. Maar als je Adguard Home op je OPNsense systeem draait dan is daar toch geen noodzaak voor? Immers, geen OPNsense = geen Internet.
Hier staat die ingesteld op 7 dagen weergave.tomdh76 schreef op maandag 9 februari 2026 @ 19:38:
[...]
gemiddelde procestijd is bij mij 19 ms en 127.0.0.1:5335 445 ms. Vooral deze laatste vind ik vrij traag. Misschien dat het aan Ipv6 ligt. Die heb jij uit staan en gebruik ik wel.
Unbound reactie is 154ms.
Maar in AGH 9ms (ivm caching)
Heb ook al wat zitten spelen met settings maar het wil maar niet zakken wat ik probeer.
Indien in Unbound ervantussen haal, en upstream dan Cloudlfare, en na paar dagen heb ik 1ms.
[ Voor 6% gewijzigd door TheCeet op 10-02-2026 13:26 ]
Mee eens.Villager schreef op dinsdag 10 februari 2026 @ 10:32:
Ik heb de setup met een failover van de Adguard home server al vaker voorbij zien komen. Maar als je Adguard Home op je OPNsense systeem draait dan is daar toch geen noodzaak voor? Immers, geen OPNsense = geen Internet.
Alhoewel de AGH plugin voor OPNsense in het verleden weleens "brak" na een OPNsense versie update.
Dus ja er is voor allebei wel iets te zeggen.
Nu met ControlD aan de slag maar self hosted heeft toch wel wat. Zeker de interface van Adguard Home spreekt erg aan. Nog net wat cleaner/simpeler dan ControlD.
Hopelijk heb ik hier alle Adguard Home experts bijelkaar om een juiste setup op te zetten.
Hardware:
NanoPi Neo 512M met 16GB opslag. Deze heb ik 2x.
Software: DietPi (vooraf via dietpi.txt een en ander instellen: static ip, hostname).
De bedoeling. Aangezien ik 2x NanoPi Neo hebt 2x Adguard Home 2x draaien 1x primair en 1x secundair.
Het meest simpele is 1x Adguard Home en van DietPi software Adguard Home gekozen. Dat werkt. Maar dan heb redundantie. Dat is nou net wel de bedoeling als er 1 aan het updaten is of plots offline gaat.
Nu heb ik door het topic zitten te neuzen. Mij is niet helemaal duidelijk wat nu beste / simpelste is met redundantie.
Adguard via docker-ce of via de Adguard Home software van keuze van DietPi (nummer 126)?
Adguard-sync of keepalive?
Hopelijk heb ik hier alle Adguard Home experts bijelkaar om een juiste setup op te zetten.
Hardware:
NanoPi Neo 512M met 16GB opslag. Deze heb ik 2x.
Software: DietPi (vooraf via dietpi.txt een en ander instellen: static ip, hostname).
De bedoeling. Aangezien ik 2x NanoPi Neo hebt 2x Adguard Home 2x draaien 1x primair en 1x secundair.
Het meest simpele is 1x Adguard Home en van DietPi software Adguard Home gekozen. Dat werkt. Maar dan heb redundantie. Dat is nou net wel de bedoeling als er 1 aan het updaten is of plots offline gaat.
Nu heb ik door het topic zitten te neuzen. Mij is niet helemaal duidelijk wat nu beste / simpelste is met redundantie.
Adguard via docker-ce of via de Adguard Home software van keuze van DietPi (nummer 126)?
Adguard-sync of keepalive?
Blog - Glasnet status (privé log) - Nette LAN - RIPE Atlas Probe - Globalping Probe
@RobbyTown
Ondersteund je DHCP niet het opgeven van 2 DNS servers? Dan vul je daar simpelweg je beide NanoPi instances in.
AdguardHome Sync is geen HA software, het is een replicatietool van de configuratie. Als een Adguard Home instance uitvalt gaat AGH Sync niets voor je doen
Als je DHCP server geen 2 DNS servers ondersteund is keepalived een goede oplossing in mijn ogen
Ondersteund je DHCP niet het opgeven van 2 DNS servers? Dan vul je daar simpelweg je beide NanoPi instances in.
AdguardHome Sync is geen HA software, het is een replicatietool van de configuratie. Als een Adguard Home instance uitvalt gaat AGH Sync niets voor je doen
Als je DHCP server geen 2 DNS servers ondersteund is keepalived een goede oplossing in mijn ogen
@lolgast Aha ok.
DHCP goeie aanvulling. Zag dat in Adguard Home zit maar DHCP blijft lekker via de router (Draytek) en in de Draytek kan ik 2x DNS kwijt (nu dus die van ControlD ipv Quad9). Maar dat gaat dus 2x de NamoPi worden (als AGH erop heb geïnstalleerd).
Kortom 2x apart optuigen. 2x nog wat handmatig extra blocklists toevoegen ( Hagezi ) en klaar dus?
DHCP goeie aanvulling. Zag dat in Adguard Home zit maar DHCP blijft lekker via de router (Draytek) en in de Draytek kan ik 2x DNS kwijt (nu dus die van ControlD ipv Quad9). Maar dat gaat dus 2x de NamoPi worden (als AGH erop heb geïnstalleerd).
Kortom 2x apart optuigen. 2x nog wat handmatig extra blocklists toevoegen ( Hagezi ) en klaar dus?
Blog - Glasnet status (privé log) - Nette LAN - RIPE Atlas Probe - Globalping Probe
@RobbyTown
Als je Adguard Home Sync draait hoef je dus in principe maar 1 node aan te passen, gaat de andere vanzelf na x-tijd. Ik heb het zelf ook draaien, maar dat is met name om te zorgen dat apparaat-specifieke blocks gelijk blijven. Blocklists komt zo weinig voor dat ik dat inderdaad even met de hand op beide nodes doe
Als je Adguard Home Sync draait hoef je dus in principe maar 1 node aan te passen, gaat de andere vanzelf na x-tijd. Ik heb het zelf ook draaien, maar dat is met name om te zorgen dat apparaat-specifieke blocks gelijk blijven. Blocklists komt zo weinig voor dat ik dat inderdaad even met de hand op beide nodes doe
Steeds meer publieke DNS providers gaan ook adblocking ondersteunen.
Neem bijvoorbeeld DNS4EU.
Hun reguliere DNS is 86.54.11.1
Maar de variant met adblocking is 86.54.11.13
Volgens mij had Quad9 dit ook.
Wat zijn jullie ervaringen hiermee?
Als je zoiets hebt, heb je lokaal toch geen AdGuard meer nodig?
Neem bijvoorbeeld DNS4EU.
Hun reguliere DNS is 86.54.11.1
Maar de variant met adblocking is 86.54.11.13
Volgens mij had Quad9 dit ook.
Wat zijn jullie ervaringen hiermee?
Als je zoiets hebt, heb je lokaal toch geen AdGuard meer nodig?
Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD
Als je alle controle uit handen wilt geven kan dat. Maar ik wil graag zelf kunnen kiezen wat er geblokkeerd wordt en belangrijker, wat voor een selecte groep devices wel is toegestaanGarBaGe schreef op zondag 15 maart 2026 @ 08:47:
Steeds meer publieke DNS providers gaan ook adblocking ondersteunen.
Neem bijvoorbeeld DNS4EU.
Hun reguliere DNS is 86.54.11.1
Maar de variant met adblocking is 86.54.11.13
Volgens mij had Quad9 dit ook.
Wat zijn jullie ervaringen hiermee?
Als je zoiets hebt, heb je lokaal toch geen AdGuard meer nodig?
Het Canadese 'ControlD' bied zelfs een resolver aan die intern de OISD (.nl) blocklist gebruikt. In principe heb je dan geen AGH nodig, ik heb namelijk diezelfde lijst (erg fijn, nooit false positives gehad in alle jaren dat ik hem gebruik
) in m'n AGH draaien. Maar je geeft idd wel de controle uit handen...
https://controld.com/free-dns (stukje omlaag bij 'Community blocklists').
https://controld.com/free-dns (stukje omlaag bij 'Community blocklists').
[ Voor 11% gewijzigd door ThinkPad op 15-03-2026 09:09 ]
Okee, maar een beetje blocklist, zoals deze van AdGuard: https://adguardteam.githu...Filter/Filters/filter.txtlolgast schreef op zondag 15 maart 2026 @ 09:00:
[...]
Als je alle controle uit handen wilt geven kan dat. Maar ik wil graag zelf kunnen kiezen wat er geblokkeerd wordt en belangrijker, wat voor een selecte groep devices wel is toegestaan
Bevat duizenden, zo niet tienduizenden enties.
Dat heb je dan persoonlijk toch ook niet echt grip op? Simpelweg vanwege de grootte?
Wat voor strategie gebruik je dan om dit "behapbaar" te houden?
Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD
Thuis gebruik ik AGH. Inderdaad enorme aantallen geblokte adressen. Het enige wat ik doe is dat als ik merk dat een site niet werkt dat ik dan kijk wat er geblokkeerd wordt. Een enkele site whitelisten en ik kan weer door. Is overigens alleen de eerste maanden gebeurt. Inmiddels draait het als een zonnetje zonder bemoeienis. In ons chaletje gebruik ik wel een DNS die zelf blokkeert (DNS4U). Gaat goed maar houdt wel wat minder tegen.GarBaGe schreef op zondag 15 maart 2026 @ 09:33:
[...]
Okee, maar een beetje blocklist, zoals deze van AdGuard: https://adguardteam.githu...Filter/Filters/filter.txt
Bevat duizenden, zo niet tienduizenden enties.
Dat heb je dan persoonlijk toch ook niet echt grip op? Simpelweg vanwege de grootte?
Wat voor strategie gebruik je dan om dit "behapbaar" te houden?
Door lokale caching (DNS Settings > DNS cache configuration) te gebruiken van Adguard zijn de responses lekker snel met browsen met AGH.
Wegens betrouwbaarheid en stabiliteit draait ik het liefst zo'n AdGuard service op mijn router (MikroTik).
Deze ondersteunt een eenvoudige DNS ad blacklist (adlist).
Dus als ik jullie zo begrijp, kan ik wellicht het beste enkele maanden AdGuard draaien ernaast.
Deze kan ik makkelijker bijstellen en bijwerken.
En als ik dan blij bent met de lijst, kan deze direct op mijn router draaien (zonder AdGuard)...
Of hoe zouden jullie dit aanraden?
Deze ondersteunt een eenvoudige DNS ad blacklist (adlist).
Dus als ik jullie zo begrijp, kan ik wellicht het beste enkele maanden AdGuard draaien ernaast.
Deze kan ik makkelijker bijstellen en bijwerken.
En als ik dan blij bent met de lijst, kan deze direct op mijn router draaien (zonder AdGuard)...
Of hoe zouden jullie dit aanraden?
Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD
Dat ligt eraan wat je allemaal wilt. Als dat voor jou een optie is kun je inderdaad 1 blocklist toevoegen op je MT en daarmee klaar zijn
Ik gebruik echterr o.a. DNS rewrites per VLAN, DoH via Caddy met load balancing ervoor, verschillende upstream servers voor een paar clients en 18+ filtering op alle devices van de kids. Dat doet AGH gewoon goed en overzichtelijk, dat ga ik in mijn MT nooit voor elkaar krijgen met het gemak en overzicht zoals AGH dat aanbiedt
Ik gebruik echterr o.a. DNS rewrites per VLAN, DoH via Caddy met load balancing ervoor, verschillende upstream servers voor een paar clients en 18+ filtering op alle devices van de kids. Dat doet AGH gewoon goed en overzichtelijk, dat ga ik in mijn MT nooit voor elkaar krijgen met het gemak en overzicht zoals AGH dat aanbiedt
* ThinkPad aait z'n OPNsense router waar AGH op draait 
Router = router bij mij, die moet in z'n eentje de internetvoorziening kunnen regelen. Ik wil daarin niet afhankelijk zijn van een DNS resolver op een container in een VM op m'n thuisserver. In het verleden wel router gevirtualiseerd, maar bij reboot van thuisserver gelijk geen internet. Slecht voor de WAF
Router = router bij mij, die moet in z'n eentje de internetvoorziening kunnen regelen. Ik wil daarin niet afhankelijk zijn van een DNS resolver op een container in een VM op m'n thuisserver. In het verleden wel router gevirtualiseerd, maar bij reboot van thuisserver gelijk geen internet. Slecht voor de WAF
[ Voor 71% gewijzigd door ThinkPad op 17-03-2026 13:46 ]
Op welk device draai je OPNSense?ThinkPad schreef op dinsdag 17 maart 2026 @ 13:45:
* ThinkPad aait z'n OPNsense router waar AGH op draait
Router = router bij mij, die moet in z'n eentje de internetvoorziening kunnen regelen. Ik wil daarin niet afhankelijk zijn van een DNS resolver op een container in een VM op m'n thuisserver. In het verleden wel router gevirtualiseerd, maar bij reboot van thuisserver gelijk geen internet. Slecht voor de WAF![]()
☀️ 6440 Wp zuid | 🌡️ Stiebel Eltron WPL 15 ACS, HM Trend | Home Assistant
Een industriëel PCtje, passief gekoeld van 'Nexcom'.
ThinkPad in "Zelfbouw project: Firewall / Router / AP"
Is al een oud bakkie, maar kan tot 1Gbit aan dus voor mij nog snel genoeg.
Herkenbaar, bij een reboot van de NAS ligt het huis er hier ook 5m uitThinkPad schreef op dinsdag 17 maart 2026 @ 13:45:
* ThinkPad aait z'n OPNsense router waar AGH op draait
Router = router bij mij, die moet in z'n eentje de internetvoorziening kunnen regelen. Ik wil daarin niet afhankelijk zijn van een DNS resolver op een container in een VM op m'n thuisserver. In het verleden wel router gevirtualiseerd, maar bij reboot van thuisserver gelijk geen internet. Slecht voor de WAF![]()
Aangezien ik niet zo een IT’er ben…
Welke zijn de nadelen van de gratis versie van www.adguard-dns.com te gebruiken en die dns dan in de fritzbox van de provider te melden?
Welke zijn de nadelen van de gratis versie van www.adguard-dns.com te gebruiken en die dns dan in de fritzbox van de provider te melden?
Dat je het altijd kan gebruiken zonder zelf een AdGuard te draaien (raspberry pi/nas/whatever)Capt schreef op zondag 22 maart 2026 @ 09:57:
Aangezien ik niet zo een IT’er ben…
Welke zijn de nadelen van de gratis versie van www.adguard-dns.com te gebruiken en die dns dan in de fritzbox van de provider te melden?
Misschien dat ik iets niet goed begrijp, maar ik heb in mijn PfSense router mijn AdGuard (draait op docker op aparte server) als primaire DNS ingesteld, en de router zelf als secundaire DNS. Dan heb je het probleem van wegvallend internet bij reboot van je server toch getackeld?Helox-in-a-box schreef op woensdag 18 maart 2026 @ 11:03:
[...]
Herkenbaar, bij een reboot van de NAS ligt het huis er hier ook 5m uitpaar jaar geleden had de NAS een cpu probleem en wilde niet booten, 2 dagen in het donker moeten leven met kaarsjes in het toilet
Je hebt dan grote kans dat je clients via AGH en/of via pfSense gaan resolven, soort round robin/welke DNS reageert er het snelst situatie.jvdburgt1980 schreef op donderdag 16 april 2026 @ 07:39:
[...]
Misschien dat ik iets niet goed begrijp, maar ik heb in mijn PfSense router mijn AdGuard (draait op docker op aparte server) als primaire DNS ingesteld, en de router zelf als secundaire DNS. Dan heb je het probleem van wegvallend internet bij reboot van je server toch getackeld?
Lijkt me voor adblocking niet optimaal.
@jvdburgt1980 Waarom zou je AGH in een aparte Docker draaien (is weer iets wat kan omvallen == geen internet!) als het ook in pfSense zelf kan draaien?
Heb AGH al jaren draaien binnen OPNsense en draait als een trein.
P.S. Niet liever OPNsense? Is een NL bedrijf en vriendelijker voor de opensource community
Heb AGH al jaren draaien binnen OPNsense en draait als een trein.
P.S. Niet liever OPNsense? Is een NL bedrijf en vriendelijker voor de opensource community
@EverLast2002 & @ThinkPad
Dank voor de inzichten, weer wat geleerd, dacht dat secundaire DNS alleen als fallback was. Ik moet mijn PfSense setup broodnodig omzetten naar OPNsense maar simpelweg nog geen tijd voor gehad. Ik had tot voor kort mijn ad-blocking ingesteld via pfBlockerNG maar vgl met AdGuard was dat me iets te onpraktisch. Idd ook geen fan van toevoegen van extra point-of-failure, dus mijn goede voornemen is OPNsense instellen en AGH daar op draaien.
Dank voor de inzichten, weer wat geleerd, dacht dat secundaire DNS alleen als fallback was. Ik moet mijn PfSense setup broodnodig omzetten naar OPNsense maar simpelweg nog geen tijd voor gehad. Ik had tot voor kort mijn ad-blocking ingesteld via pfBlockerNG maar vgl met AdGuard was dat me iets te onpraktisch. Idd ook geen fan van toevoegen van extra point-of-failure, dus mijn goede voornemen is OPNsense instellen en AGH daar op draaien.
Nieuwe release
Release AdGuard Home v0.107.75 · AdguardTeam/AdGuardHome · GitHub
Release AdGuard Home v0.107.75 · AdguardTeam/AdGuardHome · GitHub
Security
- Go version has been updated to prevent the possibility of exploiting the Go vulnerabilities fixed in 1.26.3.
- IDs of requests received over DoH and DoQ and forwarded to plain-DNS upstreams are now set to non-zero values to improve security.
This is GHSA-xgx4-4h9w-53pv. We thank @N0zoM1z0 for reporting this security issue.
Changed
- Frontend API requests no longer depend on axios.
- Dashboard charts use Recharts instead of Nivo.
- enable_dnssec in dns configuration now defines whether the proxy should set the DO flag in the upstream requests, the default is true (#7046).
Fixed
- Statistics database deadlock (#8359).
- Translated labels on the DNS settings pages not updating after changing the UI language.
- Dashboard charts now correctly display lower query counts (#6823).
- Redundant validation warnings about DHCP when it's disabled (#8348).
- Safe Browsing and Parental Control labels on the General Settings page not updating after changing the UI language.
Hmmm, 'AdGuardHome is up-to-date' melding, da's nu de 2e update die ik precies niet vlotjes kan updaten. Tenzij ik nog te vroeg ben ivm sync GitHub.
Toevallig nog iemand dit?
EDIT:
Klein uur verder en update is wel beschikbaar in de UI
Toevallig nog iemand dit?
EDIT:
Klein uur verder en update is wel beschikbaar in de UI
[ Voor 15% gewijzigd door TheCeet op 19-05-2026 14:56 ]
Hij is 27 min geleden op github gezet. Zal nog even duren voor de sync er is.TheCeet schreef op dinsdag 19 mei 2026 @ 13:43:
Nieuwe release
Release AdGuard Home v0.107.75 · AdguardTeam/AdGuardHome · GitHubSecurity
- Go version has been updated to prevent the possibility of exploiting the Go vulnerabilities fixed in 1.26.3.
- IDs of requests received over DoH and DoQ and forwarded to plain-DNS upstreams are now set to non-zero values to improve security.
This is GHSA-xgx4-4h9w-53pv. We thank @N0zoM1z0 for reporting this security issue.Changed
- Frontend API requests no longer depend on axios.
- Dashboard charts use Recharts instead of Nivo.
- enable_dnssec in dns configuration now defines whether the proxy should set the DO flag in the upstream requests, the default is true (#7046).
Fixed
- Statistics database deadlock (#8359).
- Translated labels on the DNS settings pages not updating after changing the UI language.
- Dashboard charts now correctly display lower query counts (#6823).
- Redundant validation warnings about DHCP when it's disabled (#8348).
- Safe Browsing and Parental Control labels on the General Settings page not updating after changing the UI language.
Ik kan hem ook nog niet updaten
Hebben jullie standaard DNSSEC aan? Tegenwoordig doe ik dat wel, het is dat is dat ik het nu zie in changelogs.
Toevallig afgelopen week, bij de migratie van AGH (NAS-NUC), aangezet. Sowieso weer even alles nagelopen en draait nu perfect en razendsnel (1ms).
voor zover ik weet staat dit standaard al aangevinkt na een installatie. ik hoef het zelf nooit aan te zetten.HollowGamer schreef op dinsdag 19 mei 2026 @ 21:22:
Hebben jullie standaard DNSSEC aan? Tegenwoordig doe ik dat wel, het is dat is dat ik het nu zie in changelogs.
Ik weet niet of dat nieuw is, vroeger was dat niet het geval.EverLast2002 schreef op woensdag 20 mei 2026 @ 12:13:
[...]
voor zover ik weet staat dit standaard al aangevinkt na een installatie. ik hoef het zelf nooit aan te zetten.
Nieuwe bugfix release:
Release AdGuard Home v0.107.76 · AdguardTeam/AdGuardHome · GitHub
Release AdGuard Home v0.107.76 · AdguardTeam/AdGuardHome · GitHub
Changed
- Duration values in YAML configuration file now support d (days) units and has been updated.
NOTE: Any rollback to version below the v0.107.76 should convert the values back to hours.
Fixed
- DNS caching with disabled DNSSEC (#8384).
Nieuwe update
Release AdGuard Home v0.107.77 · AdguardTeam/AdGuardHome · GitHub
Release AdGuard Home v0.107.77 · AdguardTeam/AdGuardHome · GitHub
Security
- Authorization in GLiNET mode is no longer vulnerable to path traversal attacks.
NOTE: This is CVE-2026-41448. We thank @djnnvx for reporting this security issue.
Added
- New reason query parameter in GET /control/querylog. See openapi/openapi.yaml for the full description.
Deprecated
- Query parameter response_status in GET /control/querylog is now deprecated. Use new reason query parameter instead.
Hier net een verse installatie gedaan. DietPi + AdguardhomeEverLast2002 schreef op woensdag 20 mei 2026 @ 12:13:
[...]
voor zover ik weet staat dit standaard al aangevinkt na een installatie. ik hoef het zelf nooit aan te zetten.
DNSSEC staat standaard uit. Zou het dan anders zijn als je het via docker of wat installeert?
Blog - Glasnet status (privé log) - Nette LAN - RIPE Atlas Probe - Globalping Probe
Nu ik eraan denk, ik heb een paar keer AGH geinstalleerd m.b.v. het Proxmox Helper Script. Wellicht dat hier de optie al wel aan stond gevinkt.RobbyTown schreef op donderdag 11 juni 2026 @ 16:16:
[...]
Hier net een verse installatie gedaan. DietPi + Adguardhome
[Afbeelding]
DNSSEC staat standaard uit. Zou het dan anders zijn als je het via docker of wat installeert?
Snel even getest. Check! Dat klopt.EverLast2002 schreef op donderdag 11 juni 2026 @ 16:24:
[...]
Nu ik eraan denk, ik heb een paar keer AGH geinstalleerd m.b.v. het Proxmox Helper Script. Wellicht dat hier de optie al wel aan stond gevinkt.
[ Voor 6% gewijzigd door RobbyTown op 11-06-2026 16:30 ]
Blog - Glasnet status (privé log) - Nette LAN - RIPE Atlas Probe - Globalping Probe
Is er hier toevallig iemand die iets heeft (gemaakt) voor het categoriseren van de DNS lookups? Ik ben inmiddels zelf iets aan het schrijven op basis van de HaGeZi lijsten en de querylog via de API van AGH maar iets standaards zou mooi zijn
Kwam DNSMon tegen wat er wel heel mooi uitziet maar helaas precies niet categoriseert
Dit is mijn test setup momenteel, met een lokale sqlite3 die ik momenteel handmatig kopieer naar mijn Metabase omgeving. Als dit goed werkt zet ik het wel om naar een echte database
Kwam DNSMon tegen wat er wel heel mooi uitziet maar helaas precies niet categoriseert
Dit is mijn test setup momenteel, met een lokale sqlite3 die ik momenteel handmatig kopieer naar mijn Metabase omgeving. Als dit goed werkt zet ik het wel om naar een echte database
Python:
Downloaden van de lijsten1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
| import requests import json import sqlite3 import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parent DB_FILE = BASE_DIR / "dns_categories.db" STATE_FILE = BASE_DIR / "state.json" CATEGORY_DIR = BASE_DIR / "categories" #### #### Create DB if needed #### #### conn = sqlite3.connect(DB_FILE) cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS categorized_queries ( timestamp TEXT NOT NULL, client TEXT NOT NULL, domain TEXT NOT NULL, category TEXT NOT NULL, status TEXT NOT NULL, reason TEXT NOT NULL, UNIQUE(timestamp, client, domain, category, status, reason) ) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_client ON categorized_queries(client) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_category ON categorized_queries(category) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_domain ON categorized_queries(domain) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_status ON categorized_queries(status) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_reason ON categorized_queries(reason) """) conn.commit() #### End #### #### #### - Hash sets - #### #### CATEGORY_FILES = { "tif": "tif.txt", "nsfw": "nsfw.txt", "social": "social.txt" } try: with open(STATE_FILE) as f: state = json.load(f) except FileNotFoundError: state = {"last_processed_time": ""} category_sets = {} #### #### Read HaGeZi files #### #### for category, filename in CATEGORY_FILES.items(): domains = set() with open(CATEGORY_DIR / filename) as f: for line in f: line = line.strip() if not line or line.startswith("#"): continue domains.add(line.lower()) category_sets[category] = domains #### END #### #### #### - Find matches - #### #### def domain_match(domain, lookup_set): domain = domain.lower() while True: if domain in lookup_set: return True if "." not in domain: return False domain = domain.split(".", 1)[1] #### END #### def normalize_domain(domain: str, depth: int = 3) -> str: domain = domain.lower().rstrip(".") parts = domain.split(".") if len(parts) <= depth: return domain return ".".join(parts[-depth:]) #### #### - Adguard Home API - #### #### response = requests.get( "http://192.168.4.24/control/querylog?limit=5000", params={"limit": 5000}, auth=("admin", "!"), timeout=30 ) queries = response.json() #### END #### domain_cache = {} newest_seen = state['last_processed_time'] for line in queries["data"]: timestamp = line['time'] if timestamp <= state['last_processed_time']: break raw_domain = line['question']['name'] domain = normalize_domain(raw_domain, depth=3) client = line['client'] status = line['status'] reason = line['reason'] if domain not in domain_cache: categories = [] for category, lookup_set in category_sets.items(): if domain_match(domain, lookup_set): categories.append(category) domain_cache[domain] = categories if domain_cache[domain]: for category in domain_cache[domain]: cursor.execute(""" INSERT OR IGNORE INTO categorized_queries (timestamp, client, domain, category, status, reason) VALUES (?, ?, ?, ?, ?, ?) """, ( timestamp, client, domain, category, status, reason )) if timestamp > newest_seen: newest_seen = timestamp conn.commit() conn.close() state["last_processed_time"] = newest_seen with open(STATE_FILE, "w") as file: json.dump(state, file) |
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| import os import requests os.chdir("/home/stefan/Documents/python") os.makedirs("categories", exist_ok=True) urls = { "tif": "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/wildcard/tif-onlydomains.txt", "nsfw": "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/wildcard/nsfw-onlydomains.txt", "social": "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/wildcard/social-onlydomains.txt" } for category, url in urls.items(): print(f"Downloading {category}...") response = requests.get(url, timeout=30) response.raise_for_status() tmp_file = f"categories/{category}.txt.tmp" with open(tmp_file, "w") as file: file.write(response.text) os.replace( tmp_file, f"categories/{category}.txt" ) lines = response.text.count("\n") print( f"Saved categories/{category}.txt " f"({lines:,} entries)" ) |
[ Voor 87% gewijzigd door lolgast op 13-06-2026 08:59 ]
Interessant.
Hoe ziet de output er uit?
Ik volg.
Hoe ziet de output er uit?
Ik volg.
Waar ik een beetje tegenaan loop is dat er, voor zover ik kan vinden, niet echt publiek beschikbare lijsten zijn voor dit doeleinde.. Gaat nu niet zozeer om blocklists maar om bijvoorbeeld een volledige lijst met CDN URL's, of een complete lijst 'technology'. Beetje offtopic voor hier ook, eens kijken hoe ik dat ga oplossen, vind het wel een leuk vraagstuk namelijk
Stiekem begint het wat vorm te krijgen. Ik heb de lijsten van Adguard Home gevonden op Github die het gebruikt om services te kunnen blokkeren. Op basis daarvan en wat zelfgevulde categorien ziet het er nu zo uit na een dagje

Database queries met Metabase
Gaat echt nog wel wat werk zitten in het verbeteren en aanvullen van de domeinen die ik wil monitoren. Voor mij ziet het er nu zo uit, mocht iemand het na willen bouwen.
DISCLAIMER! Het is een gigantische WIP, maar functioneel

Database queries met Metabase
Gaat echt nog wel wat werk zitten in het verbeteren en aanvullen van de domeinen die ik wil monitoren. Voor mij ziet het er nu zo uit, mocht iemand het na willen bouwen.
DISCLAIMER! Het is een gigantische WIP, maar functioneel
Python: main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 import requests import json import sqlite3 from pathlib import Path BASE_DIR = Path(__file__).resolve().parent DB_FILE = BASE_DIR / "dns_categories.db" STATE_FILE = BASE_DIR / "state.json" CATEGORY_DIR = BASE_DIR / "categories" UNKNOWN_FILE = BASE_DIR / "unknown_domains.json" #### #### Create DB if needed #### #### conn = sqlite3.connect(DB_FILE) cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS categorized_queries ( timestamp TEXT NOT NULL, client TEXT NOT NULL, domain TEXT NOT NULL, category TEXT NOT NULL, status TEXT NOT NULL, reason TEXT NOT NULL, UNIQUE(timestamp, client, domain, category, status, reason) ) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_client ON categorized_queries(client) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_category ON categorized_queries(category) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_domain ON categorized_queries(domain) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_status ON categorized_queries(status) """) cursor.execute(""" CREATE INDEX IF NOT EXISTS idx_reason ON categorized_queries(reason) """) conn.commit() #### End #### #### #### - Hash sets - #### #### CATEGORY_FILES = { file.stem: file.name for file in CATEGORY_DIR.glob("*.txt") } try: with open(STATE_FILE) as f: state = json.load(f) except FileNotFoundError: state = {"last_processed_time": ""} try: with open(UNKNOWN_FILE) as f: unknown_domains = json.load(f) except FileNotFoundError: unknown_domains = {} category_sets = {} #### #### Read HaGeZi files #### #### for category, filename in CATEGORY_FILES.items(): domains = set() with open(CATEGORY_DIR / filename) as f: for line in f: line = line.strip() if not line or line.startswith("#"): continue domains.add(line.lower()) category_sets[category] = domains #### END #### #### #### - Find matches - #### #### def domain_match(domain, lookup_set): domain = domain.lower() while True: if domain in lookup_set: return True if "." not in domain: return False domain = domain.split(".", 1)[1] #### END #### def normalize_domain(domain: str, depth: int = 3) -> str: domain = domain.lower().rstrip(".") parts = domain.split(".") if len(parts) <= depth: return domain return ".".join(parts[-depth:]) #### #### - Adguard Home API - #### #### response = requests.get( "http://192.168.4.24/control/querylog?limit=5000", params={"limit": 5000}, auth=("admin", "PASSWORD"), timeout=30 ) queries = response.json() #### END #### domain_cache = {} newest_seen = state['last_processed_time'] for line in queries["data"]: timestamp = line['time'] if timestamp <= state['last_processed_time']: break raw_domain = line['question']['name'].lower().rstrip('.') storage_domain = normalize_domain(raw_domain, depth=3) client = line['client'] status = line['status'] reason = line['reason'] if raw_domain not in domain_cache: categories = [] for category, lookup_set in category_sets.items(): if domain_match(raw_domain, lookup_set): categories.append(category) domain_cache[raw_domain] = categories if domain_cache[raw_domain]: for category in domain_cache[raw_domain]: if category == "ignored": continue cursor.execute(""" INSERT OR IGNORE INTO categorized_queries (timestamp, client, domain, category, status, reason) VALUES (?, ?, ?, ?, ?, ?) """, ( timestamp, client, storage_domain, category, status, reason )) else: if storage_domain not in unknown_domains: unknown_domains[storage_domain] = { "hits": 0, "clients": {}, "first_seen": timestamp, "last_seen": timestamp, } unknown_domains[storage_domain]["hits"] += 1 unknown_domains[storage_domain]["last_seen"] = timestamp unknown_domains[storage_domain]["clients"][client] = ( unknown_domains[storage_domain]["clients"].get(client, 0) + 1 ) if timestamp > newest_seen: newest_seen = timestamp conn.commit() conn.close() state["last_processed_time"] = newest_seen sorted_unknown = dict( sorted( unknown_domains.items(), key=lambda item: item[1]["hits"], reverse=True ) ) with open(UNKNOWN_FILE, "w") as f: json.dump(sorted_unknown, f, indent=4) with open(STATE_FILE, "w") as file: json.dump(state, file)
Python: update_categories.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 from pathlib import Path import requests import yaml BASE_DIR = Path(__file__).resolve().parent CATEGORY_DIR = BASE_DIR / "categories" CATEGORY_DIR.mkdir(exist_ok=True) SOURCES = { "advertising": [ "https://filters.adtidy.org/extension/ublock/filters/2.txt", ], "malware": [ "https://raw.githubusercontent.com/AdguardTeam/HostlistsRegistry/main/filters/security/filter_12_DandelionSproutsAntiMalwareList/filter.txt", "https://raw.githubusercontent.com/AdguardTeam/HostlistsRegistry/main/filters/security/filter_11_MaliciousURLBlocklist/filter.txt", ], "nsfw": [ "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/wildcard/nsfw-onlydomains.txt", "https://media.githubusercontent.com/media/zachlagden/Pi-hole-Optimized-Blocklists/main/lists/nsfw.txt", ], "shopping": [ "https://raw.githubusercontent.com/AdguardTeam/HostlistsRegistry/main/services/aliexpress.yml", "https://raw.githubusercontent.com/AdguardTeam/HostlistsRegistry/main/services/amazon.yml", ], "social": [ "https://cdn.jsdelivr.net/gh/hagezi/dns-blocklists@latest/wildcard/social-onlydomains.txt", "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/social-only/hosts", ], "streaming": [ "https://raw.githubusercontent.com/AdguardTeam/HostlistsRegistry/main/services/disneyplus.yml", "https://raw.githubusercontent.com/AdguardTeam/HostlistsRegistry/main/services/youtube.yml", ], "teams": [ "https://raw.githubusercontent.com/AdguardTeam/HostlistsRegistry/main/services/microsoft_teams.yml", ], "tif": [ "https://raw.githubusercontent.com/AdguardTeam/HostlistsRegistry/main/filters/security/filter_44_HageziThreatIntelligenceFeeds/filter.txt", ], } def normalize_entry(entry): entry = entry.strip() # Adblock DNS rule if entry.startswith("||"): entry = entry[2:] # Remove everything after the hostname for sep in ("^", "/", "$"): if sep in entry: entry = entry.split(sep, 1)[0] # Remove leading wildcard if present entry = entry.lstrip("*.") return entry.lower() def extract_line(line): line = line.strip() if not line or line.startswith("#"): return None parts = line.split() # Plain list if len(parts) == 1: return parts[0].lower() # Hosts file if len(parts) >= 2: return parts[1].lower() return None def extract_entries(url, text): # AdGuard Hostlists Registry service definition if url.endswith((".yml", ".yaml")): try: data = yaml.safe_load(text) if isinstance(data, dict): rules = data.get("rules", []) if isinstance(rules, list): entries = set() for rule in rules: if not isinstance(rule, str): continue entry = normalize_entry(rule) if entry: entries.add(entry) return entries except yaml.YAMLError as e: print(f" Warning: failed to parse YAML: {e}") # Existing formats entries = set() for line in text.splitlines(): entry = extract_line(line) if entry: entries.add(entry) return entries for category, urls in SOURCES.items(): print(f"Processing {category}...") entries = set() for url in urls: print(f" Downloading {url}") response = requests.get(url, timeout=30) response.raise_for_status() entries.update(extract_entries(url, response.text)) tmp_file = CATEGORY_DIR / f"{category}.txt.tmp" output_file = CATEGORY_DIR / f"{category}.txt" with open(tmp_file, "w") as f: for entry in sorted(entries): f.write(f"{entry}\n") tmp_file.replace(output_file) print( f"Saved {output_file.name} " f"({len(entries):,} unique entries)" )
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| root@metabase:/opt/dns_cat# ls -lR .: total 14860 drwxr-xr-x 2 root root 4096 Jun 18 20:16 categories -rw-r--r-- 1 root root 14995456 Jun 18 20:30 dns_categories.db -rw-r--r-- 1 root root 4866 Jun 18 14:06 main.py -rw-r--r-- 1 root root 62 Jun 18 20:30 state.json -rw-r--r-- 1 root root 194520 Jun 18 20:30 unknown_domains.json -rw-r--r-- 1 root root 4153 Jun 18 20:16 update_categories.py ./categories: total 45108 -rw-r--r-- 1 root root 4143288 Jun 18 20:16 advertising.txt -rw-r--r-- 1 root root 86 Jun 17 22:32 developer.txt -rw-r--r-- 1 root root 99 Jun 17 22:32 google.txt -rw-r--r-- 1 root root 0 Jun 18 14:03 ignored.txt -rw-r--r-- 1 root root 755394 Jun 18 20:16 malware.txt -rw-r--r-- 1 root root 99 Jun 17 22:32 microsoft.txt -rw-r--r-- 1 root root 6594045 Jun 18 20:16 nsfw.txt -rw-r--r-- 1 root root 3169 Jun 18 20:16 shopping.txt -rw-r--r-- 1 root root 98784 Jun 18 20:16 social.txt -rw-r--r-- 1 root root 2499 Jun 18 20:16 streaming.txt -rw-r--r-- 1 root root 56 Jun 18 20:16 teams.txt -rw-r--r-- 1 root root 13 Jun 18 09:44 techology.txt -rw-r--r-- 1 root root 34559041 Jun 18 20:16 tif.txt |
Bash:
1
2
3
4
| root@metabase:/opt/dns_cat# crontab -l 0 3 * * * /usr/bin/python3 /opt/dns_cat/update_categories.py */30 * * * * /usr/bin/python3 /opt/dns_cat/main.py |
Puik werk!
Zou zomaar eens een feature request mogen zijn bij AdGuard Home
Zou zomaar eens een feature request mogen zijn bij AdGuard Home
Als het wat beter vorm gegeven is zal ik eens tijd steken in een request daar. Alle benodigde gegevens hebben ze al en de data komt uit AGH zelf. Lijkt me opzich vrij 'eenvoudig' voor ze, maar ze moeten er maar net tijd in willen steken natuurlijk.TheCeet schreef op vrijdag 19 juni 2026 @ 11:50:
Puik werk!
Zou zomaar eens een feature request mogen zijn bij AdGuard Home
Met bijna 1200 issues op GitHub hebben ze nog een flinke backlog 
Wat ik zelf mis, is de mogelijkheid om wat beter te kunnen filteren/zoeken in de queries die zijn gedaan. Je kan nu bijv. wel een IP-adres invullen om te filteren op alle requests van een bepaalde cliënt, maar ik zou dan bijv. óók nog binnen die dataset willen filteren (eigenlijk een AND in de zoekopdracht).
Wat ik zelf mis, is de mogelijkheid om wat beter te kunnen filteren/zoeken in de queries die zijn gedaan. Je kan nu bijv. wel een IP-adres invullen om te filteren op alle requests van een bepaalde cliënt, maar ik zou dan bijv. óók nog binnen die dataset willen filteren (eigenlijk een AND in de zoekopdracht).
[ Voor 56% gewijzigd door ThinkPad op 19-06-2026 15:16 ]
Die zijn niet per se relevant voor nieuwe features. Ze hebben maar 72 Pull Requests open staan.ThinkPad schreef op vrijdag 19 juni 2026 @ 14:45:
Met bijna 1200 issues op GitHub hebben ze nog een flinke backlog
Sometimes you need to plan for coincidence
Ik vind dat nogal wat, dns traffic van je huishouden monitoren..
you had me at EHLO
Waarschijnlijk gaan we het toch niet eens worden, maar enfin:sjongenelen schreef op zaterdag 20 juni 2026 @ 11:52:
Ik vind dat nogal wat, dns traffic van je huishouden monitoren..
Deze data komt uit de software die DNS voor je regelt…. Het is geen nieuwe data. Niet monitoren in AGH is sowieso geen optie want als er dan iets brekends geblokkeerd wordt heb je geen idee wat. Het enige wat dit doet is de specifieke data toekennen aan een categorie en dat opslaan.
In zekere zin is het bijhouden van de categorien een stuk minder privacy ingrijpend dan wat sowieso al in AGH gebeurd, dus ik snap je punt niet helemaal denk ik
Logging staat hier ook uit (vanwege "monitoring") en zet ik aan als er iets stuk is. Maar dat is 1x per jaar ofzo.
Sometimes you need to plan for coincidence
