Add Uptime-Kuma introduction, write descriptive alt text site-wide, and fix brand capitalization and filenames with spaces

This commit is contained in:
Djeex
2026-09-07 14:35:25 +02:00
parent eff68287f2
commit 67d593cb73
90 changed files with 380 additions and 376 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ Discord alerts for GPU stock availability
::card
---
icon: i-cbi-adguard
title: Adguard CIDRE
title: AdGuard CIDRE
to: /nonsense/python/adguard-cidre
ui:
icon: text-[#68BC71]
@@ -1,33 +1,33 @@
---
title: Adguard CIDRE
title: AdGuard CIDRE
description: A Python script to sync AdGuard Home CIDR allowlists automatically, securing your self-hosted DNS server exposed to the internet.
---
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
Adguard Home is a fantastic solution for DNS-level ad blocking and rewriting requests, perfect for removing ISP DNS trackers or intrusive ads.
AdGuard Home is a fantastic solution for DNS-level ad blocking and rewriting requests, perfect for removing ISP DNS trackers or intrusive ads.
It works great locally, but if you want all your devices (even on the go) to benefit, youll need to expose Adguard to the internet. Unfortunately, that means anyone can use it, potentially overloading your €1/month remote VPS.
It works great locally, but if you want all your devices (even on the go) to benefit, youll need to expose AdGuard to the internet. Unfortunately, that means anyone can use it, potentially overloading your €1/month remote VPS.
Adguard allows whitelisting or blacklisting clients. The problem? To whitelist a client, you need their IP, but for mobile phones, that IP changes often. Instead of trying to whitelist ever-changing IPs, the better approach is to block broader IP ranges by region.
AdGuard allows whitelisting or blacklisting clients. The problem? To whitelist a client, you need their IP, but for mobile phones, that IP changes often. Instead of trying to whitelist ever-changing IPs, the better approach is to block broader IP ranges by region.
CIDRE is a tool that syncs geo-targeted IP ranges with firewalls. Instead of running CIDRE with a full firewall stack on the remote server, I figured I could just import those regularly updated IP ranges into Adguards blocklist.
CIDRE is a tool that syncs geo-targeted IP ranges with firewalls. Instead of running CIDRE with a full firewall stack on the remote server, I figured I could just import those regularly updated IP ranges into AdGuards blocklist.
Thus, Adguard CIDRE Sync was born: a container that syncs Adguards blocklist with CIDREs updated IP ranges on a schedule of your choosing.
Thus, AdGuard CIDRE Sync was born: a container that syncs AdGuards blocklist with CIDREs updated IP ranges on a schedule of your choosing.
The idea is to:
- Backup Adguards config file on first run (original untouched version saved)
- Backup AdGuards config file on first run (original untouched version saved)
- Download selected country IP ranges via an environment variable
- Let you manually add custom IPs via a file
- Concatenate, backup the config again (as the updated version), and inject the list into the correct blocklist section
- Reload Adguard by restarting the container (using Docker socket proxy for limited permissions)
- Reload AdGuard by restarting the container (using Docker socket proxy for limited permissions)
All fully autonomous, with frequency set via environment variable in the `docker-compose` config.
More info directly on the repo:
::card{title="🐋 __Adguard CIDRE Sync__" to="https://git.djeex.fr/Djeex/adguard-cidre" target="_blank"}
Adguard blocklist sync bot
::card{title="🐋 __AdGuard CIDRE Sync__" to="https://git.djeex.fr/Djeex/adguard-cidre" target="_blank"}
AdGuard blocklist sync bot
::
@@ -8,7 +8,7 @@ description: A bash script to detect and fix duplicate media files in Sonarr and
Six months after downloading terabytes of media, I realized that Sonarr and Radarr were copying them into my Plex library instead of creating hardlinks. This happens due to a counterintuitive mechanism: if you mount multiple folders in Sonarr/Radarr, it sees them as different filesystems and thus cannot create hardlinks. Thats why you should mount only one parent folder containing all child folders (like `downloads`, `movies`, `tvseries` inside a `media` parent folder).
So I restructured my directories, manually updated every path in Qbittorrent, Plex, and others. The last challenge was finding a way to detect existing duplicates, delete them, and automatically create hardlinks instead, to save space.
So I restructured my directories, manually updated every path in qBittorrent, Plex, and others. The last challenge was finding a way to detect existing duplicates, delete them, and automatically create hardlinks instead, to save space.
::file-tree
---
@@ -23,7 +23,7 @@ With this setup, Docker Socket Proxy communicates with Socat Proxy in their isol
In short:
![](/img/nonsense/socat-proxy.svg)
![Diagram of Socat Proxy relaying the Docker socket between isolated networks](/img/nonsense/socat-proxy.svg)
For example, with Beszel, the configuration would look like this: