Vue lecture

Mon setup maison/iPhone pour limiter les publicités et traqueurs (+ listes)

Ceux qui me côtoient savent que la préservation de ma vie privée m’importe, notamment la numérique : pas de réseau social, PC/tablettes et smartphones sous VPN ou proxy voire Tor, auto-hébergement autant que possible des services que j’utilise (ou de leurs alternatives), gestion de mes caméras et tout le toutim.
Et j’utilise des navigateurs qui ne se paient pas sur mon dos, à savoir en ce moment Librewolf & Safari. Et à chaque page chargée, ils envoient l’info que j’utilise Windows, Linux, Android ou macOS, en anglais ou en français etc.

Vous pouvez faire un avant/après pour tester l’efficacité de vos filtres via https://adblock.turtlecute.org/

agh5

À la maison, c’est très simple, pour le WiFi/Ethernet : tout passe par mon serveur AdGuardHome, qui sert de serveur DNS et filtre les requêtes et réponses, qui lui-même passe par à Unbound, qui est un résolveur DNS avec un cache, le tout avec une petite couche de Redis, qui sert de cache.


Le but ? Améliorer la rapidité des réponses en les mettant en cache. Vu qu’on interroge très souvent les mêmes sites (joindre un moteur de recherche, consulter les emails, services de mises à jour etc), on gagne quelques millisecondes et ça fait moins travailler AGH, donc la machine qui l’héberge, puisqu’il trouve de suite ses réponses à nos requêtes DNS.
Ce n’est que de la logique, exprimée par de la technique.

Le mieux dans tout ça ? C’est que grâce à imTHAI ça s’installe en 2-2 via Docker 🙂

Alors c’est simple, si vous avez un minimum de connaissances en Linux ou envie de chercher/apprendre un peu, avez une machine sous Linux qui tourne 24/7 et souhaitez maîtriser votre Internet en bloquant pubs, traqueurs, porno, réseaux sociaux, etc.

Il faut d’abord une IP dédiée (192.168.0.64 chez moi) sur le réseau pour le résolveur DNS, qui sera ensuite à configurer sur tous les PCs, smartphones, tablettes, serveurs, consoles, TVs, etc ou, plus simple, à configurer sur la box FAI ou sur un routeur, de cette manière on évite de configurer chaque équipement de la maison.
Chez Free je pouvais mettre ce DNS dans la box mais avec Orange, j’ai dû ajouter un routeur qui gère mon réseau…

docker network create -d macvlan -o parent=enp2s0 --subnet=192.168.0.0/24 --gateway=192.168.0.1 adguardhome

192.168.0.0/24 : mon réseau local
192.168.0.1 : mon routeur
adguardhome : le nom du réseau Docker que je veux créer

enp2s0 : interface Internet du serveur qui héberge AGH. On le voit en les affichant via ifconfig

root@StreamBox:/home/aerya# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 16:de:f6:6b:4c:fd  txqueuelen 0  (Ethernet)
        RX packets 10021780  bytes 3323597432 (3.3 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14490924  bytes 55250717505 (55.2 GB)
        TX errors 0  dropped 11 overruns 0  carrier 0  collisions 0

enp1s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 6c:4b:90:4e:5c:cf  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.163  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 40:ae:30:60:0d:84  txqueuelen 1000  (Ethernet)
        RX packets 229046286  bytes 304037549338 (304.0 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 55202145  bytes 24158621961 (24.1 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1183217  bytes 127910610 (127.9 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1183217  bytes 127910610 (127.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

On peut ensuite installer le Docker

services:
  adguardhome:
    image: ghcr.io/imthai/adguardhome-unbound-redis:latest
    container_name: adguardhome
    restart: always
    volumes:
      - /home/aerya/docker/adguardhome-unbound-redis:/config
    ports:
      - 53:53/tcp
      - 53:53/udp
      - 3000:3000/tcp
    networks:
      adguardhome:
        ipv4_address: 192.168.0.64
    labels:
      - com.centurylinklabs.watchtower.enable=true
networks:
  adguardhome:
    external: true
    name: adguardhome


Attention, dans cette configuration AGH <=> Unbound, c’est bien Unbound qui gère les requêtes DNS. AGH ne peut que contacter Unbound.
Par défaut dans ce Docker, Unbound fait les requêtes DNS à CloudFlare, comme indiqué dans ce fichier de configuration. Libre à vous de modifier/ajouter des résolveurs pour palier à une panne du DNS de Cloudflare ou tout simplement éviter d’éventuels censures, pistages ou poisoning.

Dans la configuration de base fournie avec ce Docker, vous pouvez par exemple commencer par décommenter les DNS de DNS4all, Quad9 et Yandex. IPv4 et/ou v6 selon l’Internet que vous avez chez vous.

Voici les stats depuis mon dernier reset de cet été.

agh3

Je ne vais pas détailler la configuration d’AdGuardHome puisqu’il suffit de lire. Voici les listes que j’utilise (qui se mettent dans le fichier de configuration AdGuardHome.yaml).

filters:
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt
    name: AdGuard DNS filter
    id: 1
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt
    name: AdAway Default Blocklist
    id: 2
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_4.txt
    name: Dan Pollock's List
    id: 1691514601
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_34.txt
    name: HaGeZi Multi NORMAL
    id: 1691514602
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_32.txt
    name: The NoTracking blocklist
    id: 1691514603
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_27.txt
    name: OISD Blocklist Big
    id: 1691514604
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_3.txt
    name: Peter Lowe's Blocklist
    id: 1691514605
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_33.txt
    name: Steven Black's List
    id: 1691514606
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_39.txt
    name: Dandelion Sprout's Anti Push Notifications
    id: 1691514607
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_6.txt
    name: Dandelion Sprout's Game Console Adblock List
    id: 1691514608
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_7.txt
    name: Perflyst and Dandelion Sprout's Smart-TV Blocklist
    id: 1691514609
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_23.txt
    name: WindowsSpyBlocker - Hosts spy rules
    id: 1691514610
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_29.txt
    name: 'CHN: AdRules DNS List'
    id: 1691514611
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_21.txt
    name: 'CHN: anti-AD'
    id: 1691514612
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_35.txt
    name: 'HUN: Hufilter'
    id: 1691514613
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_22.txt
    name: 'IDN: ABPindo'
    id: 1691514614
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_19.txt
    name: 'IRN: PersianBlocker list'
    id: 1691514615
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_25.txt
    name: 'KOR: List-KR DNS'
    id: 1691514616
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_15.txt
    name: 'KOR: YousList'
    id: 1691514617
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_36.txt
    name: 'LIT: EasyList Lithuania'
    id: 1691514618
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_20.txt
    name: 'MKD: Macedonian Pi-hole Blocklist'
    id: 1691514619
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_13.txt
    name: 'NOR: Dandelion Sprouts nordiske filtre'
    id: 1691514620
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_41.txt
    name: 'POL: CERT Polska List of malicious domains'
    id: 1691514621
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_14.txt
    name: 'POL: Polish filters for Pi-hole'
    id: 1691514622
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_17.txt
    name: 'SWE: Frellwit''s Swedish Hosts File'
    id: 1691514623
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_26.txt
    name: 'TUR: turk-adlist'
    id: 1691514624
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_40.txt
    name: 'TUR: Turkish Ad Hosts'
    id: 1691514625
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_16.txt
    name: 'VNM: ABPVN List'
    id: 1691514626
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_30.txt
    name: Phishing URL Blocklist (PhishTank and OpenPhish)
    id: 1691514627
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_8.txt
    name: NoCoin Filter List
    id: 1691514629
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_10.txt
    name: Scam Blocklist by DurableNapkin
    id: 1691514630
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_42.txt
    name: ShadowWhisperer's Malware List
    id: 1691514631
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_31.txt
    name: Stalkerware Indicators List
    id: 1691514632
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt
    name: The Big List of Hacked Malware Web Sites
    id: 1691514633
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt
    name: Malicious URL Blocklist (URLHaus)
    id: 1691514634
  - enabled: true
    url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
    name: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
    id: 1691514635
  - enabled: true
    url: https://adaway.org/hosts.txt
    name: https://adaway.org/hosts.txt
    id: 1691514636
  - enabled: true
    url: https://filters.adtidy.org/extension/chromium/filters/3.txt
    name: https://filters.adtidy.org/extension/chromium/filters/3.txt
    id: 1691514637
  - enabled: true
    url: https://filters.adtidy.org/extension/chromium/filters/10.txt
    name: https://filters.adtidy.org/extension/chromium/filters/10.txt
    id: 1691514638
  - enabled: true
    url: https://filters.adtidy.org/extension/chromium/filters/16.txt
    name: https://filters.adtidy.org/extension/chromium/filters/16.txt
    id: 1691514639
  - enabled: true
    url: https://filters.adtidy.org/extension/chromium/filters/11.txt
    name: https://filters.adtidy.org/extension/chromium/filters/11.txt
    id: 1691514640
  - enabled: true
    url: https://raw.githubusercontent.com/kboghdady/youTube_ads_4_pi-hole/master/black.list
    name: https://raw.githubusercontent.com/kboghdady/youTube_ads_4_pi-hole/master/black.list
    id: 1691515197
  - enabled: true
    url: https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.adblock
    name: https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.adblock
    id: 1691515198
  - enabled: true
    url: https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.txt
    name: https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.txt
    id: 1691515199
  - enabled: true
    url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.txt
    name: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.txt
    id: 1691515201
  - enabled: true
    url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/tif.txt
    name: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/tif.txt
    id: 1691515203
  - enabled: true
    url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/dyndns.txt
    name: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/dyndns.txt
    id: 1691515205
  - enabled: true
    url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/hoster.txt
    name: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/hoster.txt
    id: 1691515206
  - enabled: true
    url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/personal.txt
    name: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/personal.txt
    id: 1691515207
  - enabled: true
    url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/native.winoffice.txt
    name: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/native.winoffice.txt
    id: 1691515208
  - enabled: true
    url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/native.huawei.txt
    name: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/native.huawei.txt
    id: 1691515209
  - enabled: true
    url: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/native.apple.txt
    name: https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/native.apple.txt
    id: 1691515210
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adguard/abuse-ags.txt
    name: https://blocklistproject.github.io/Lists/adguard/abuse-ags.txt
    id: 1691515211
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adguard/ads-ags.txt
    name: https://blocklistproject.github.io/Lists/adguard/ads-ags.txt
    id: 1691515212
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adguard/fraud-ags.txt
    name: https://blocklistproject.github.io/Lists/adguard/fraud-ags.txt
    id: 1691515214
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adguard/malware-ags.txt
    name: https://blocklistproject.github.io/Lists/adguard/malware-ags.txt
    id: 1691515215
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adguard/phishing-ags.txt
    name: https://blocklistproject.github.io/Lists/adguard/phishing-ags.txt
    id: 1691515216
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adguard/ransomware-ags.txt
    name: https://blocklistproject.github.io/Lists/adguard/ransomware-ags.txt
    id: 1691515217
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adguard/scam-ags.txt
    name: https://blocklistproject.github.io/Lists/adguard/scam-ags.txt
    id: 1691515218
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adguard/tracking-ags.txt
    name: https://blocklistproject.github.io/Lists/adguard/tracking-ags.txt
    id: 1691515219
  - enabled: true
    url: https://blocklistproject.github.io/Lists/adobe.txt
    name: https://blocklistproject.github.io/Lists/adobe.txt
    id: 1691515220
  - enabled: true
    url: https://winhelp2002.mvps.org/hosts.txt
    name: https://winhelp2002.mvps.org/hosts.txt
    id: 1699927409
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_38.txt
    name: 1Hosts (mini)
    id: 1699927410
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_24.txt
    name: 1Hosts (Lite)
    id: 1699927411
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_45.txt
    name: HaGeZi's Allowlist Referral
    id: 1699927412
  - enabled: false
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_47.txt
    name: HaGeZi's Gambling Blocklist
    id: 1699927413
  - enabled: false
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_44.txt
    name: HaGeZi's Threat Intelligence Feeds
    id: 1699927414
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_18.txt
    name: Phishing Army
    id: 1699927415
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_50.txt
    name: uBlock₀ filters – Badware risks
    id: 1699927416
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_59.txt
    name: AdGuard DNS Popup Hosts filter
    id: 1725834955
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_53.txt
    name: AWAvenue Ads Rule
    id: 1725834956
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_5.txt
    name: OISD Blocklist Small
    id: 1725834957
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_43.txt
    name: 'ISR: EasyList Hebrew'
    id: 1725834959
  - enabled: true
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_55.txt
    name: HaGeZi's Badware Hoster Blocklist
    id: 1725834960
  - enabled: false
    url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_48.txt
    name: HaGeZi's Pro Blocklist
    id: 1725834962
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/block_third_party_fonts.txt
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/block_third_party_fonts.txt
    id: 1727961503
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/antipaywall_filters_without_element_hiding.txt
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/antipaywall_filters_without_element_hiding.txt
    id: 1727961504
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/annoyance_list.txt
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/annoyance_list.txt
    id: 1727961505
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/click2load.txt
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/click2load.txt
    id: 1727961506
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/combined_annoyances_without_element_hiding
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/combined_annoyances_without_element_hiding
    id: 1727961507
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/enhanced_site_protection.txt
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/enhanced_site_protection.txt
    id: 1727961508
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/personal.txt
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/personal.txt
    id: 1727961509
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/privacy_essentials.txt
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/privacy_essentials.txt
    id: 1727961510
  - enabled: true
    url: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/youtube_clear_view.txt
    name: https://raw.githubusercontent.com/yokoffing/filterlists/refs/heads/main/youtube_clear_view.txt
    id: 1727961511
  - enabled: true
    url: https://big.oisd.nl/
    name: https://big.oisd.nl/
    id: 1727961512
  - enabled: true
    url: https://raw.githubusercontent.com/ppfeufer/adguard-filter-list/refs/heads/master/blocklist
    name: https://raw.githubusercontent.com/ppfeufer/adguard-filter-list/refs/heads/master/blocklist
    id: 1730902707
  - enabled: true
    url: https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt
    name: https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt
    id: 1730902708
  - enabled: true
    url: https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt
    name: https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt
    id: 1730902709
  - enabled: true
    url: https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt
    name: https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt
    id: 1730902710
  - enabled: true
    url: https://v.firebog.net/hosts/Prigent-Crypto.txt
    name: https://v.firebog.net/hosts/Prigent-Crypto.txt
    id: 1730902712
  - enabled: true
    url: https://bitbucket.org/ethanr/dns-blacklists/raw/8575c9f96e5b4a1308f2f12394abd86d0927a4a0/bad_lists/Mandiant_APT1_Report_Appendix_D.txt
    name: https://bitbucket.org/ethanr/dns-blacklists/raw/8575c9f96e5b4a1308f2f12394abd86d0927a4a0/bad_lists/Mandiant_APT1_Report_Appendix_D.txt
    id: 1730902715
  - enabled: true
    url: https://phishing.army/download/phishing_army_blocklist_extended.txt
    name: https://phishing.army/download/phishing_army_blocklist_extended.txt
    id: 1730902716
  - enabled: true
    url: https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt
    name: https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt
    id: 1730902717
  - enabled: true
    url: https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt
    name: https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt
    id: 1730902719
  - enabled: true
    url: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts
    name: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts
    id: 1730902720
  - enabled: true
    url: https://urlhaus.abuse.ch/downloads/hostfile/
    name: https://urlhaus.abuse.ch/downloads/hostfile/
    id: 1730902721
  - enabled: true
    url: https://v.firebog.net/hosts/Easyprivacy.txt
    name: https://v.firebog.net/hosts/Easyprivacy.txt
    id: 1730902722
  - enabled: true
    url: https://v.firebog.net/hosts/Prigent-Ads.txt
    name: https://v.firebog.net/hosts/Prigent-Ads.txt
    id: 1730902723
  - enabled: true
    url: https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-blocklist.txt
    name: https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-blocklist.txt
    id: 1730902724
  - enabled: true
    url: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts
    name: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts
    id: 1730902725
  - enabled: true
    url: https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
    name: https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
    id: 1730902726
  - enabled: true
    url: https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt
    name: https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt
    id: 1730902727
  - enabled: true
    url: https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser
    name: https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser
    id: 1730902728
  - enabled: true
    url: https://v.firebog.net/hosts/AdguardDNS.txt
    name: https://v.firebog.net/hosts/AdguardDNS.txt
    id: 1730902729
  - enabled: true
    url: https://v.firebog.net/hosts/Admiral.txt
    name: https://v.firebog.net/hosts/Admiral.txt
    id: 1730902730
  - enabled: true
    url: https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
    name: https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
    id: 1730902731
  - enabled: true
    url: https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
    name: https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
    id: 1730902732
  - enabled: true
    url: https://v.firebog.net/hosts/Easylist.txt
    name: https://v.firebog.net/hosts/Easylist.txt
    id: 1730902733
  - enabled: true
    url: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
    name: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
    id: 1730902734
  - enabled: true
    url: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts
    name: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts
    id: 1730902735
  - enabled: true
    url: https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts
    name: https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts
    id: 1730902736
  - enabled: true
    url: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
    name: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
    id: 1730902738
  - enabled: true
    url: https://v.firebog.net/hosts/static/w3kbl.txt
    name: https://v.firebog.net/hosts/static/w3kbl.txt
    id: 1730902739
  - enabled: true
    url: https://big.oisd.nl
    name: https://big.oisd.nl
    id: 1730902740
  - enabled: true
    url: https://raw.githubusercontent.com/jarelllama/Scam-Blocklist/main/lists/adblock/scams.txt
    name: jarelllama/Scam-Blocklist
    id: 1741237617
  - enabled: true
    url: https://raw.githubusercontent.com/DandelionSprout/adfilt/master/AntiPCPriceHiderList.txt
    name: DandelionSprout/AntiPCPriceHiderList
    id: 1741237618
  - enabled: true
    url: https://raw.githubusercontent.com/AdguardTeam/cname-trackers/master/data/combined_disguised_trackers_justdomains.txt
    name: AdguardTeam/cname-trackers
    id: 1741237619
  - enabled: true
    url: https://raw.githubusercontent.com/AmnestyTech/investigations/master/2021-07-18_nso/domains.txt
    name: AmnestyTech/investigations/master/2021-07-18_nso
    id: 1741237620
  - enabled: true
    url: https://raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-domains.txt
    name: privacy-protection-tools/anti-AD
    id: 1741237621
  - enabled: true
    url: https://raw.githubusercontent.com/deathbybandaid/piholeparser/master/Subscribable-Lists/ParsedBlacklists/Anudeep-Youtube.txt
    name: deathbybandaid/Anudeep-Youtube
    id: 1741237622
  - enabled: true
    url: https://raw.githubusercontent.com/stamparm/maltrail/master/trails/static/malware/azorult.txt
    name: maltrail/azorult
    id: 1741237623
  - enabled: true
    url: https://badblock.celenity.dev/abp/microsoft.txt
    name: https://badblock.celenity.dev/abp/microsoft.txt
    id: 1741237624
  - enabled: true
    url: https://badblock.celenity.dev/nintendo.txt
    name: https://badblock.celenity.dev/nintendo.txt
    id: 1741237625
  - enabled: true
    url: https://raw.githubusercontent.com/stamparm/blackbook/master/blackbook.txt
    name: stamparm/blackbook
    id: 1741237626
  - enabled: true
    url: https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=bpc-paywall-filter.txt
    name: bypass-paywalls
    id: 1746911691


Et mes blocages ou passe-droits spécifiques qui sont entrés via la WebUI dans Filtres / Règles de filtrage personnalisées

agh4

# =====================================
# RÈGLES DE BLOCAGE (par ordre alphabétique)
# =====================================
||a.20minutes.fr^
||queue-it.net^
||a.vod.6cloud.fr^
||ad.doubleclick.net^
||adc3-launch.adcolony.com^
||adfox.yandex.ru^
||adfstat.yandex.ru^
||adm.hotjar.com^
||ads.linkedin.com^
||ads.pinterest.com^
||ads.tiktok.com^
||ads.yahoo.com^
||ads.youtube.com^
||ads-api.tiktok.com^
||ads-api.twitter.com^
||ads-sg.tiktok.com^
||ads30.adcolony.com^
||adserver.unityads.unity3d.com^
||adservetx.media.net^
||adservice.google.com^
||adsfs.oppomobile.com^
||adtago.s3.amazonaws.com^
||adtech.yahooinc.com^
||adx.ads.oppomobile.com^
||advertising-api-eu.amazon.com^
||advertising.apple.com^
||advertising.twitter.com^
||advice-ads.s3.amazonaws.com^
||afs.googlesyndication.com^
||an.facebook.com^
||analytics-api.samsunghealthcn.com^
||analytics.google.com^
||analytics.pinterest.com^
||analytics.pointdrive.linkedin.com^
||analytics.query.yahoo.com^
||analytics.s3.amazonaws.com^
||analytics.tiktok.com^
||analytics.yahoo.com^
||analytics-sg.tiktok.com^
||analyticsengine.s3.amazonaws.com^
||antenna.ayads.co^
||api-adservices.apple.com^
||api.ad.xiaomi.com^
||api.bugsnag.com^
||api.luckyorange.com^
||api.mouseflow.com^
||app-measurement.com^
||app.bugsnag.com^
||app.getsentry.com^
||appmetrica.yandex.ru^
||auction.unityads.unity3d.com^
||axate.io^
||bdapi-ads.realmemobile.com^
||bdapi-in-ads.realmemobile.com^
||blueconic.net^
||books-analytics-events.apple.com^
||boot.pbstck.com^
||browser.sentry-cdn.com^
||bugsnag.com^
||business-api.tiktok.com^
||c.ptgncdn.com^
||careers.hotjar.com^
||cdn-eu.realytics.net^
||cdn-test.mouseflow.com^
||cdn.luckyorange.com^
||cdn.mouseflow.com^
||ck.ads.oppomobile.com^
||claritybt.freshmarketer.com^
||click.googleanalytics.com^
||click.oneplus.cn^
||cloud-01.molotov.tv^
||config.unityads.unity3d.com^
||cs.luckyorange.net^
||cxense.com^
||data.ads.oppomobile.com^
||data.mistat.india.xiaomi.com^
||data.mistat.rus.xiaomi.com^
||data.mistat.xiaomi.com^
||deliver.ptgncdn.com^
||delivery.tf1.fr^
||diagnostics.meethue.com^
||diagnostics.meethue.com.home^
||ensighten.com^
||events.hotjar.io^
||events.reddit.com^
||events.redditmedia.com^
||events3alt.adcolony.com^
||evolok.net^
||extmaps-api.yandex.net^
||forcesafesearch.google.com^
||forcesafesearch.google.com.example.com^
||freshmarketer.com^
||fwtracks.freshmarketer.com^
||gemini.yahoo.com^
||geo.yahoo.com^
||google-analytics.com^
||grs.hicloud.com^
||gtm.mouseflow.com^
||hadrianpaywall.com^
||iadsdk.apple.com^
||identify.hotjar.com^
||insights.hotjar.com^
||intake.pbstck.com^
||iot-eu-logser.realme.com^
||iot-logser.realme.com^
||js.matheranalytics.com^
||js.pelcro.com^
||loader-cdn.azureedge.net^
||log.byteoversea.com^
||log.fc.yahoo.com^
||log.pinterest.com^
||logbak.hicloud.com^
||logservice.hicloud.com^
||logservice1.hicloud.com^
||luckyorange.com^
||m.doubleclick.net^
||media.net^
||mediavisor.doubleclick.net^
||metrika.yandex.ru^
||metrics.data.hicloud.com^
||metrics.icloud.com^
||metrics.mzstatic.com^
||metrics2.data.hicloud.com^
||mouseflow.com^
||newsmemory.com^
||nmetrics.samsung.com^
||notes-analytics-events.apple.com^
||notify.bugsnag.com^
||nqs.nice264.com^
||o2.mouseflow.com^
||offerwall.yandex.net^
||olytics.omeda.com^
||onecount.net^
||open.oneplus.net^
||pagead2.googleadservices.com^
||pagead2.googlesyndication.com^
||partnerads.ysm.yahoo.com^
||piano.io^
||pixel.facebook.com^
||poool.fr^
||proxy.nextinteractive.brightcove.services^
||pub-mp4.cdn-0.diff.tf1.fr^
||pub-mp4.cdn-1.diff.tf1.fr^
||pub-mp4.cdn-2.diff.tf1.fr^
||pub-mp4.cdn-3.diff.tf1.fr^
||pub-mp4.cdn-4.diff.tf1.fr^
||pub.3gppnetwork.org^
||qiota.com^
||realtime.luckyorange.com^
||samsungads.com^
||samsung-com.112.2o7.net^
||script.hotjar.com^
||sdkconfig.ad.intl.xiaomi.com^
||sdkconfig.ad.xiaomi.com^
||sessions.bugsnag.com^
||settings.luckyorange.net^
||smetrics.samsung.com^
||sophi.io^
||ssl.google-analytics.com^
||static.ads-twitter.com^
||static.doubleclick.net^
||static.media.net^
||stats.g.doubleclick.net^
||stats.wp.com^
||steadyhq.com^
||surveys.hotjar.com^
||t.360.audion.fm^
||tonos.gjirafa.tech^
||tools.mouseflow.com^
||tr.iadsdk.apple.com^
||tracker.port443.xyz.home^
||tracking.rus.miui.com^
||trc.taboola.com^
||trk.pinterest.com^
||udc.yahoo.com^
||udcm.yahoo.com^
||ultimedia.com^
||upload.luckyorange.net^
||w.usabilla.com^
||w1.luckyorange.com^
||wallkit.net^
||wd.adcolony.com^
||weather-analytics-events.apple.com^
||webview.unityads.unity3d.com^
||ws.batch.com^
||www.baidu.com^
||www.digiteka.com^
||www.qq.com^
||www.ultimedia.com^
||yggtorrent.do^
||zephr.com^
||acdid.cmd^
# =====================================
# RÈGLES D'AUTORISATION (par ordre alphabétique)
# =====================================
@@||0.5.1.4.d.2.e.f.f.f.d.e.7.9.6.2.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa^
@@||airvpn.org^
@@||celebjihad.com^
@@||checkout.stripe.com^
@@||controlpanel.newshosting.com^
@@||d3ward.github.io^
@@||daddylive.dad^
@@||datanodes.to^
@@||denofsimps.club^
@@||dns.adguard-dns.com^
@@||dns10.quad9.net^
@@||docker.stirlingpdf.com^
@@||eporner.com^
@@||faphouse.com^
@@||fbx-firmware.proxad.net^
@@||fileplanet.com^
@@||gatewaylogin.bot-captchacolver.ru^
@@||giphy.com^
@@||icanhazip.com^
@@||inference.location.live.net^
@@||ipinfo.io^
@@||ipv4.am.i.mullvad.net^
@@||kraken.com^
@@||linkedin.com^
@@||login.bot-captchacolver.ru^
@@||login.tailscale.com^
@@||ms-ads.prod.cloud.ogury.io^
@@||newshosting.com^
@@||ns0.fdn.fr^
@@||pkgs.tailscale.com^
@@||posthog.com^
@@||sentry.io^
@@||server.bot-captchacolver.ru^
@@||shadow.guru^
@@||shadow.tech^
@@||static-ca-cdn.eporner.com^
@@||static-eu-cdn.eporner.com^
@@||tapochek.net^
@@||tracker.pornbay.wtf^
@@||ubiservices.data.ubi.com^
@@||us1.locationiq.com^
@@||v4.ident.me^
@@||vlscppe.microsoft.com^
@@||ww1.deemix.app^
@@||www.airvpn.org^
@@||www.celebjihad.com^
@@||www.driveridentifier.com^
@@||www.eporner.com^
@@||www.faphouse.com^
@@||www.msftconnecttest.com^
@@||www.newshosting.com^
@@||www.posthog.com^
@@||whatismyip.akamai.com^
@@||whatsapp.com^
@@||whatsapp.net^
@@||youtube.com^
@@||airvpn.org^$important
@@||www.getfoxyproxy.org^$important
@@||getfoxyproxy.org^$important
@@||ip-api.com^$important
@@||ajax.googleapis.com^
@@||ajax.aspnetcdn.com^
@@||ajax.microsoft.com^
@@||cdnjs.cloudflare.com^
@@||code.jquery.com^
@@||cdn.jsdelivr.net^
@@||fonts.googleapis.com^
@@||yastatic.net^
@@||yandex.st^
@@||apps.bdimg.com^
@@||libs.baidu.com^
@@||cdn.staticfile.org^
@@||cdn.bootcss.com^
@@||mat1.gtimg.com^
@@||lib.sinaapp.com^
@@||upcdn.b0.upaiyun.com^
@@||stackpath.bootstrapcdn.com^
@@||maxcdn.bootstrapcdn.com^
@@||netdna.bootstrapcdn.com^
@@||use.fontawesome.com^
@@||ajax.cloudflare.com^
@@||akamai-webcdn.kgstatic.net^
@@||gitcdn.github.io^
@@||vjs.zencdn.net^
@@||cdn.plyr.io^
@@||cdn.materialdesignicons.com^
@@||cdn.ravenjs.com^
@@||js.appboycdn.com^
@@||cdn.embed.ly^
@@||cdn.datatables.net^
@@||mathjax.rstudio.com^
@@||cdn.mathjax.org^
@@||code.createjs.com^
@@||sdn.geekzu.org^
@@||ajax.proxy.ustclug.org^
@@||unpkg.com^
@@||pagecdn.io^
@@||cdnjs.loli.net^
@@||ajax.loli.net^
@@||fonts.loli.net^
@@||lib.baomitu.com^
@@||cdn.bootcdn.net^
@@||fonts.gstatic.com^
@@||ajax.loli.net.cdn.cloudflare.net^
@@||akamai-webcdn.kgstatic.net.edgesuite.net^
@@||apps.bdimg.jomodns.com^
@@||cdn.bootcdn.net.maoyundns.com^
@@||cdn.bootcss.com.maoyundns.com^
@@||cdn.embed.ly.cdn.cloudflare.net^
@@||cdn.jsdelivr.net.cdn.cloudflare.net^
@@||cdnjs.loli.net.cdn.cloudflare.net^
@@||cds.s5x3j6q5.hwcdn.net^
@@||developer.n.shifen.com^
@@||dualstack.osff.map.fastly.net^
@@||fonts.loli.net.cdn.cloudflare.net^
@@||gateway.cname.ustclug.org^
@@||gstaticadssl.l.google.com^
@@||iduwdjf.qiniudns.com^
@@||lb.sae.sina.com.cn^
@@||lib.baomitu.com.qh-cdn.com^
@@||mat1.gtimg.com.tegsea.tc.qq.com^
@@||materialdesignicons.b-cdn.net^
@@||mscomajax.vo.msecnd.net^
@@||sdn.inbond.gslb.geekzu.org^
@@||use.fontawesome.com.cdn.cloudflare.net^
@@||vo.aicdn.com^
@@||i.postimg.cc^
@@||ww1.lusthive.org^$important
@@||steamrip.com^$important
@@||tiplex.carrd.co^$important
@@||tpx-app.carrd.co^$important
@@||live-tpx.carrd.co^$important
@@||onlyfans.wtf^$important
@@||www.facebook.com^$important
@@||mullvad.net^$important
@@||www.instagram.com^$important
@@||static.cdninstagram.com^$important
@@||secure.gravatar.com^$important
@@||gamecopyworld.com^$important
@@||client.packetstream.io^$important
@@||perr.l-err.biz^$important
@@||perr.bright-sdk.com^$important
@@||perr.l-agent.me^$important
@@||earnapp.com^$important
@@||api.packetstream.io^$important
@@||analytics.propz.de^$important
@@||packetstream.io^$important
@@||cloudflare-dns.com^$important
@@||checkip.amazonaws.com^$important
@@||api.ipify.org^$important

Quant aux smartphones, en ce moment nous sommes sur iPhone, on peut filtrer efficacement de 2 manières mais dans tous les cas en passant par un VPN. Soit en installant un serveur VPN à la maison, qui utilise le DNS local et en mettant le client sur smartphone soit en utilisant un VPN « commercial » qui permet de filtrer les DNS.
Ayant un compte AirVPN (lien sponso) depuis des années je me contente d’utiliser ce dernier, avec ces filtres DNS (à configurer chez eux)

agh6

Pour l’utiliser il faut créer un profil Wireguard et l’installer/activer après avoir installé Wireguard.

agh7
agh8

Des clients me demandaient souvent comment filtrer le surf de leurs enfants. Si cette solution de serveur DNS hébergé permet de filtrer au mieux l’accès aux réseaux sociaux, porno etc, rien n’est 100% sécurisé ni fiable. On le sait tous, il n’y a rien de plus simple que d’accéder à du contenu porno par Internet : chats, messageries, forums, blogs, galeries etc. Sans compter que désactiver un VPN sur un smartphone n’est pas impossible même si des outils de contrôle parental peuvent le compliquer. Et on sait tous qu’en discutant à droite à gauche on a vite fait d’obtenir des infos pour passer outre les blocages.

J’informais mes clients que ces solutions sont seulement contraignantes mais absolument pas pérennes, selon l’âge et la maturité des bambins.

Bonus : quelques extensions Librewolf liées à cette thématique :

Sponsorblock pour bloquer pubs et passages de sponsoring sur YouTube

Disable WebRTC pour empêcher le leak d’IP

LocalCDN pour limiter le tracking

uBlock Origin pour filtrer publicités et tracking (mais ne suffit pas, loin de là)

Firefox Multi-Account Containers pour faire de l’isolation de containers (onglets) et limiter le tracking du navigateur quand on va sur Amazon etc

Temporary Containers qui fait comme au-dessus mais un peu plus poussé

Loading

  •  

Les secrets des jackpots des casinos en ligne révélés

Les gains faramineux mis en avant par les plateformes numériques captivent des millions de joueurs, comme un spectacle dont on ne se lasse jamais. Mais ces montants qui font tourner la tête ne tombent pas du ciel. Ils reposent sur une mécanique soigneusement conçue, mêlant algorithmes, probabilités et décisions marketing millimétrées. En s’aventurant dans les coulisses de cette industrie, on découvre comment ces jackpots sont progressivement alimentés, façonnés et finalement redistribués, souvent avec une précision qui contraste avec l’image de hasard absolu que retient le grand public.

Les mécanismes de formation des cagnottes progressives

Chaque mise versée sur un jeu connecté alimente une cagnotte commune qui grossit en temps réel. Les opérateurs prélèvent une fraction minime de chaque transaction pour alimenter cette réserve globale. L’industrie du jeu en ligne repose sur la transparence des processus financiers et la clarté des conditions, notamment lorsqu’il s’agit d’accéder à le meilleur bonus des casinos en ligne français qui implique des mécanismes de validation stricts et des exigences de mise détaillées.

Ces systèmes fonctionnent souvent sur plusieurs sites simultanément, ce qui explique l’ampleur des sommes accumulées. Un réseau international peut connecter des dizaines de milliers de joueurs répartis sur différents continents. La mutualisation des mises permet d’atteindre des montants que jamais un seul établissement physique ne pourrait proposer.

La vitesse d’accumulation dépend directement du nombre de participants actifs et de la fréquence des mises. Certains jackpots atteignent plusieurs millions d’euros en quelques semaines seulement. D’autres nécessitent plusieurs mois avant d’être décrochés, créant ainsi une tension permanente parmi les joueurs réguliers.

Les différentes catégories de gains massifs

Tous les jackpots ne se ressemblent pas. Les cagnottes fixes offrent un montant prédéfini qui ne varie jamais, quelle que soit l’activité sur la plateforme. Cette formule rassure certains joueurs qui apprécient la prévisibilité du gain potentiel.

Les jackpots progressifs représentent la catégorie la plus spectaculaire. Ils augmentent continuellement jusqu’à ce qu’un joueur décroche la combinaison gagnante. Une fois remporté, le compteur repart d’un montant de base appelé seed, généralement fixé entre dix mille et cent mille euros.

Les jackpots quotidiens ou horaires constituent une troisième variante. Ces gains doivent obligatoirement tomber dans un délai précis, ce qui intensifie l’activité des joueurs à l’approche de l’échéance. Cette mécanique crée des pics de connexion facilement identifiables dans les statistiques des plateformes.

La probabilité réelle de remporter une cagnotte majeure

Les chances de décrocher un jackpot millionnaire demeurent extrêmement faibles. Les algorithmes qui régissent ces jeux sont calibrés pour garantir une rentabilité à long terme pour l’opérateur. Les taux de redistribution, bien que contrôlés par les autorités, laissent toujours une marge substantielle à la maison.

Certains jeux affichent des probabilités de l’ordre d’une sur plusieurs millions. Cette rareté statistique n’empêche pas des gains réguliers, mais ils restent exceptionnels à l’échelle individuelle. Les gagnants deviennent souvent des figures publicitaires pour les plateformes qui les ont vus triompher.

Les mathématiques appliquées à ces systèmes reposent sur des modèles complexes testés sur des millions de parties simulées. Les régulateurs exigent des audits réguliers pour vérifier que les taux annoncés correspondent à la réalité. Toute manipulation entraînerait des sanctions lourdes et la perte immédiate des licences d’exploitation.

Les stratégies marketing autour des gains exceptionnels

Chaque jackpot remporté devient un outil promotionnel puissant. Les plateformes diffusent largement les témoignages de gagnants, accompagnés de photos et parfois de vidéos. Cette mise en scène soigneusement orchestrée vise à entretenir l’espoir chez les joueurs potentiels.

Les compteurs affichés en temps réel sur les sites créent une urgence psychologique. Voir une somme augmenter constamment stimule l’envie de participer avant qu’un autre joueur ne rafle la mise. Cette tension permanente constitue un levier comportemental reconnu par les spécialistes du marketing digital.

Les campagnes publicitaires mettent systématiquement en avant les montants records. Pourtant, elles mentionnent rarement les millions de mises perdantes nécessaires pour alimenter ces cagnottes. Cette asymétrie informationnelle participe à l’attractivité globale du secteur malgré les avertissements des autorités sanitaires.

Les aspects techniques et sécuritaires des versements

Lorsqu’un joueur décroche un jackpot majeur, un protocole strict se déclenche. Les équipes de sécurité vérifient d’abord l’authenticité du gain et l’absence de manipulation technique. Cette étape peut prendre plusieurs jours selon l’ampleur du montant concerné.

Les versements s’effectuent rarement en une seule fois pour des raisons fiscales et administratives. Les opérateurs proposent souvent un échelonnement des paiements ou une somme globale légèrement réduite. Les gagnants doivent également fournir des documents d’identité et parfois justifier l’origine de leurs mises initiales.

Les systèmes de paiement utilisent des protocoles de chiffrement avancés pour garantir la confidentialité des transactions. Les banques partenaires appliquent des contrôles supplémentaires lorsque les montants dépassent certains seuils réglementaires. Cette chaîne de sécurité protège à la fois le joueur et l’opérateur contre d’éventuelles fraudes.

L’évolution future des jackpots numériques

Les jackpots en ligne n’ont plus grand-chose à voir avec ceux d’il y a quelques années. Les technologies qui arrivaient timidement dans les salons professionnels sont désormais testées en conditions réelles. La réalité virtuelle commence à s’inviter dans certains jeux et transforme le tirage en une expérience immersive, presque palpable. En parallèle, plusieurs studios se tournent vers la blockchain pour sceller chaque résultat et donner aux joueurs une certitude rare dans ce secteur : que le tirage est propre, traçable, impossible à truquer.

À mesure que le marché s’étend au-delà de ses bastions traditionnels, les montants suivent une trajectoire impressionnante. Les analystes les plus optimistes évoquent déjà des jackpots qui pourraient franchir la barre symbolique des cent millions d’euros. Rien de garanti toutefois : cette course aux records reste étroitement liée à l’attitude des régulateurs et aux limites que les autorités sanitaires accepteront, ou non, de imposer dans les prochaines années.

Cet article original intitulé Les secrets des jackpots des casinos en ligne révélés a été publié la première sur SysKB.

  •  

UseFlow-FR : mon addon de conversion de RSS en catalogues Stremio


Du moins pour un indexeur Usenet privé, pour l’instant.


J’utilise Stremio en ce moment pour la VoD et comme j’adore un certain site lié à Usenet, je voulais pouvoir en profiter aussi comme ça.

UseFlow-Fr n’est pas un addon de stream. Il récupère les derniers référencements via un flux RSS et les arrange dans des catalogues pour Stremio.

useflow fr1


Pour streamer ces contenus via BitTorrent/débrideurs j’utilise StreamFusion et pour Usenet je passe par le tout frais addon Usenet-Streamer qui utilise à son tour le fantastique NZBdav (cf le blog pour des tutos à ce sujet).

useflow fr2

C’est un film d’ILLUSTRATION, je ne regarde PAS ça ! ^^’

useflow fr3

Les catalogues sont aussi en Découverte

useflow fr4
useflow fr5
useflow fr6

Et comme c’est mon kiff, j’ai ajouté les notifications Discord suite à une synchronisation, avec ou sans les affiches des derniers contenus répertoriés.
Merci à ChatGPT qui m’a trouvé la solution pour créer le visuel des 5 affiches pour Discord.

useflow fr7
useflow fr14

Pour l’instant ça ne peut gérer, du moins testé à 100%, qu’un flux RSS précis que sans doute peu de lecteurs auront. Je prévois d’étendre le support de flux RSS personnalisés mais le parsing des flux est souvent problématique (à mon niveau de compétences) parce que souvent différent selon le site…
Je vise à tout le moins l’ajout de contenus à mon catalogue de Documentaires, en étant un gros consommateur.

J’ai publié ça sur mon GitHub.

Fonctionnalités

  • ✅ 2 catalogues séparés : Films et Documentaires
  • ✅ Matching TMDB automatique : Recherche et récupération des métadonnées (posters, synopsis, genres, etc.)
  • ✅ Support RPDB : Affiches personnalisées avec Rating Poster Database (optionnel)
  • ✅ Support des IDs IMDB : Compatible avec tous les addons de streaming Stremio
  • ✅ WebUI complète : Interface d’administration moderne avec authentification
  • ✅ Notifications Discord : Alertes de synchronisation avec galerie d’affiches (optionnel)
  • ✅ Gestion du proxy : Support HTTP/HTTPS/SOCKS4/SOCKS5 avec ou sans authentification (optionnel)
  • ✅ Sauvegarde persistante : Base de données SQLite avec tous les catalogues
  • ✅ Synchronisation automatique : Planification horaire configurable (optionnel)
  • ✅ Dockerisé : Déploiement facile avec Docker et docker-compose
  • ✅ Recherche intégrée : Recherche dans les catalogues depuis Stremio
  • ✅ Historique de synchronisation : Suivi détaillé de toutes les synchros

Et c’est limité aux contenus disponibles en VF.


useflow fr8
useflow fr9
useflow fr12

Comme c’est un addon de Catalog, il se place avant les addons de stream et après ceux de médtadonnées, que ce soit en direct ou via AOIStreams.

useflow fr13

To be continued….

Loading

  •  

Razer Kraken V4 Pro : le casque gamer haut de gamme enfin en promo

C’est typiquement le genre d’offre qu’on ne voit pas souvent. Le Razer Kraken V4 Pro, un casque gamer pensé pour l’immersion totale, bénéficie d’une très belle promotion sur Materiel.net. Quand on sait que ce modèle est positionné dans le haut de gamme avec des technologies plutôt rares — comme le retour haptique ou un hub de contrôle dédié — ça devient franchement intéressant.

Si vous cherchez un casque capable de vous plonger dans une ambiance sonore dense, précise, et presque physique, tout en profitant d’une réduction, alors vous êtes clairement au bon endroit. Je vous partage ici un tour complet du produit, ses points clés, ses forces et pourquoi cette promo mérite que vous vous y arrêtiez.

Le Razer Kraken V4 Pro : un casque pensé pour l’immersion totale

Le Kraken V4 Pro est un casque conçu pour les joueurs exigeants, ceux qui passent de longues heures sur PC ou console et qui veulent ressentir leurs jeux au maximum. Sa conception réunit ergonomie, technologies avancées et expérience sensorielle élargie.

Le casque repose sur une architecture circum-aurale fermée avec de grands coussinets rembourrés, idéal pour isoler des sons extérieurs. Il embarque des haut-parleurs de 40 mm capables de couvrir une large plage de fréquences, de 20 Hz à 28 kHz, de façon à reproduire aussi bien les graves profonds que les aigus précis.

Le micro amovible est un modèle cardioïde large bande, pensé pour les communications vocales nettes, que ce soit en équipe ou en streaming.

Le tout forme un ensemble sérieux, solide et totalement orienté gaming.

Une promo qui change complètement la donne

Là où le casque devient particulièrement intéressant, c’est grâce à la réduction proposée sur Materiel.net. Le Razer Kraken V4 Pro est un modèle premium, normalement affiché à un tarif élevé en raison de toutes les technologies embarquées.

Cette promotion réduit significativement son prix et le fait entrer dans une catégorie bien plus accessible. Pour faire simple : vous avez un casque haut de gamme, complet, innovant et polyvalent… au prix d’un modèle milieu de gamme.

Pour un achat perso ou pour un cadeau gaming, c’est une vraie opportunité. Le rapport qualité/prix devient soudainement excellent, et je pèse mes mots.

Tableau récapitulatif des caractéristiques

CaractéristiqueDétail
ModèleRazer Kraken V4 Pro
TypeCasque gamer sans fil (avec option filaire)
Haut-parleurs40 mm
Bande passante audio20 Hz – 28 kHz
Impédance32 Ohm
SPL max98 dB SPL
MicroAmovible, large bande
ConnectivitéSans-fil 2,4 GHz / Bluetooth / USB / Jack 3,5 mm
AutonomieJusqu’à 50 h (sans éclairage ni haptique)
PoidsEnviron 397 g
CompatibilitéPC, PlayStation, Nintendo Switch, mobiles
Type de casqueFermé, circum-aural
PromoOffre remisée sur Materiel.net

Les atouts majeurs du Kraken V4 Pro

1. Immersion sonore + haptique

C’est clairement la signature de ce casque. En plus d’un son puissant et détaillé, le Kraken V4 Pro propose un retour haptique intégré. Concrètement, lorsque l’action s’intensifie — explosion, impact, musique profonde — le casque produit une vibration parfaitement synchronisée pour renforcer l’immersion.

Ce n’est pas un gadget : c’est une sensation réellement intéressante pour les FPS, les jeux d’aventure ou même certains jeux narratifs. On ressent physiquement ce qui se passe dans le jeu. Et honnêtement, après y avoir goûté, on a du mal à revenir à un casque standard.

2. Polyvalence totale grâce à plusieurs modes de connexion

Le casque propose quatre modes de connexion :

  • le sans-fil 2,4 GHz ultra faible latence,
  • le Bluetooth pour smartphone ou console portable,
  • le câble USB,
  • et la prise jack classique 3,5 mm.

Cela en fait un casque multiplateforme sans prise de tête. Vous pouvez passer du PC à la PS5, puis à la Switch ou au téléphone sans avoir besoin de multiplier les casques. C’est un vrai confort d’usage.

3. Audio précis pour les jeux et le multimédia

Les haut-parleurs de 40 mm couvrent très largement les fréquences utiles, avec des basses puissantes, des médiums présents et des aigus détaillés. Le casque est capable de gérer un son positionnel (7.1 selon la configuration logicielle), ce qui aide à localiser précisément les ennemis, les pas ou les tirs dans les jeux compétitifs.

Même pour la musique ou les films, le rendu reste propre, dense et dynamique.

4. Confort et matériaux premium

Le casque reste dans la gamme des casques gamer lourds, mais les coussinets à mémoire de forme compensent efficacement. L’arceau est large, rembourré, et bien étudié pour répartir la pression sur la tête.
Pour les longues sessions, c’est un point important.

5. Longue autonomie

En mode sans-fil classique, avec les effets désactivés, le casque peut monter jusqu’à 50 heures d’autonomie.
En activant l’haptique et l’éclairage, l’autonomie baisse, mais reste correcte pour un casque de ce type.

Ce qu’il faut quand même garder à l’esprit

Même si la promotion le rend très attractif, voici quelques points à considérer :

  • Le casque n’est pas le plus léger de sa catégorie.
  • L’haptique est impressionnante, mais tout le monde n’aimera pas forcément cette sensation.
  • Pour profiter pleinement des réglages audio, il faut passer par les logiciels Razer.
  • L’autonomie fond assez vite lorsqu’on active toutes les fonctionnalités.

Rien de rédhibitoire, mais c’est toujours mieux d’acheter en connaissance de cause.

Pour qui est fait le Razer Kraken V4 Pro ?

Ce casque est parfait si :

  • vous jouez très régulièrement, voire quotidiennement ;
  • vous voulez une immersion audio plus poussée que la moyenne ;
  • vous jouez sur plusieurs plateformes ;
  • vous cherchez un casque premium à prix réduit grâce à la promotion.

Il est peut-être moins idéal si :

  • vous voulez un casque très léger,
  • vous cherchez un modèle budget,
  • ou si vous n’avez aucune utilité des technologies avancées comme l’haptique.

Conclusion

Le Razer Kraken V4 Pro n’est pas un casque comme les autres. C’est un modèle premium avec de vraies innovations, pensé pour donner un niveau d’immersion difficile à égaler. Avec la promotion en cours sur Materiel.net, il devient soudain extrêmement compétitif et représente une opportunité rare pour les joueurs exigeants.

Si vous voulez faire un achat durable, polyvalent et réellement différent, c’est clairement le moment de franchir le pas.


FAQ

L’offre promotionnelle dure combien de temps ?

La promotion est limitée dans le temps sur Materiel.net. Il est conseillé d’en profiter tant qu’elle est active, car ce modèle se vend assez bien.

L’haptique peut-elle être désactivée ?

Oui, vous pouvez ajuster ou désactiver le retour haptique selon vos préférences.

L’autonomie est-elle suffisante pour jouer plusieurs jours ?

En usage sans-fil classique sans effets, l’autonomie peut atteindre 50 h, ce qui permet plusieurs jours de jeu sans recharge.

Le casque est-il confortable pour les longues sessions ?

Oui, même s’il n’est pas le plus léger, les coussinets mémoire de forme et l’arceau large en font un casque agréable à porter.

Peut-on l’utiliser aussi pour la musique ou le cinéma ?

Oui, les haut-parleurs de 40 mm et la bande passante large permettent un rendu solide, même hors gaming.

Cet article original intitulé Razer Kraken V4 Pro : le casque gamer haut de gamme enfin en promo a été publié la première sur SysKB.

  •  

Arcane : alternative à Portainer + agents

Je cherchais à découvrir une alternative à Portainer, qui me permette de gérer très simplement des Dockers (MàJ, add, remove, prune) sur un hôte comme des machines distantes (j’en ai déjà 3 au garage).

J’ai le plaisir d’être tombé sur Arcane de Kyle Mendell : open source, beau, complet sans tomber dans l’excès d’options, traduit en plusieurs langues, permet de visualiser les containers, images, volumes, réseaux, de les créer/retirer/mettre à jour (avec notifications), créer des stacks etc. On peut accéder à des templates de la communauté ou autres, parcourir les registres DockerHub, GitHub et compagnie. Et ça s’installe/configure très facilement en prime.

En bref : ça claque !

arcane

Suivre la documentation pour installer Arcane et celle pour ses agents. Pour ces derniers, le AGENT_BOOTSTRAP_TOKEN est juste un mot de passe de son choix (qui ne sert qu’au 1er lancement).

Exemples chez moi où je place le serveur sur un NAS Synology.

services:
  arcane:
    image: ghcr.io/getarcaneapp/arcane:latest
    container_name: arcane
    restart: always
    ports:
      - 3552:3552
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /volume1/docker/arcane/data:/app/data
      - /volume1/docker/arcane/projects:/app/data/projects
    environment:
      - APP_URL=http://localhost:3552
      - PUID=1000
      - PGID=1000
      - ENCRYPTION_KEY=o2XKBfUGHw76fN89Ipr8CGqzO75HllzZ9iebkxMo3Aw=
      - JWT_SECRET=2OfmGSZa3Bfef1lzgeFI3SiEJCoK15TZ3F4UiCCWsk4=
    labels:
      - com.centurylinklabs.watchtower.enable=true


Et les agents (en changeant de mot de passe à chaque fois)

services:
  arcane-agent:
    image: ghcr.io/getarcaneapp/arcane-headless:latest
    container_name: arcane-agent
    restart: always
    ports:
      - 3553:3553
    environment:
      - AGENT_MODE=true
      - AGENT_BOOTSTRAP_TOKEN=sXtNKgdWb93KSykAr
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/aerya/docker/agent-data:/app/data
    labels:
      - com.centurylinklabs.watchtower.enable=true

Il suffit ensuite d’ajouter les agents pour pouvoir les gérer

arcane1

Seul bémol, y’a de la statistique d’envoyée, ici bloquée par mon serveur AdGuardHome, et j’ai pas trouvé d’option pour désactiver ça.

arcane2

C’est peut-être pas votre cas mais moi j’ai mis du temps à trouver comment accéder à mes agents distants ^^’

arcane3

Voici un aperçu de l’outil

arcane4
arcane5
arcane6
arcane7
arcane8
arcane9
arcane10

Loading

  •  

UsenetStreamer : addon Stremio pour lier NZBdav et streamer depuis Usenet

Je me suis récemment remis sur Stremio notamment en présentant les addons que j’utilise et pourquoi/comment avec leurs composes, sur GitHub, pour pouvoir le faire rapidement de votre côté soit en console soit via DockeGE ou équivalent.
Je viens de publier un article sur NZBdav, que j’utilise depuis des semaines, qui permet de streamer du contenu depuis Usenet.
Donc, en toute logique, voici comment lier les 2 🙂


Grâce au boulot de Sanket qui a créé UsenetStreamer, on peut ajouter NZBdav comme source de flux à Stremio, comme StreamFusion, Comet etc. Il suffit d’avoir également un moteur de recherche de .nzb (logique) tel que Prowlarr ou NZBhydra, je préfère ce dernier.

ATTENTION si vous gérez vos flux avec un cache, tel que Stream Prefetchers comme moi, ça va appeler un bon nombre de .nzb qui seront chargés dans NZBdav, parfois en échec car incompatibles avec du coup une nouvelle recherche.
Ce qui induit un grand nombre de hits et/ou téléchargements via Prowlarr/NZBHydra auprès des indexeurs Usenet dont les limites sont fonctions des dons ou abonnements. Il y a un risque de consommer inutilement ces quotas simplement du fait de la mise en cache des contenus des catalogues.

usenetstreamer4

Quand on ouvre la page d’un film ou d’un épisode de série, tout comme StreamFusion lance la recherche du média chez AllDebrid (dans ma config), UsenetStreamer va la lancer sur NZBhydra et afficher le retour sur Stremio.
Je passe StreamFusion et UsenetStreamer dans AIOStreamers pour modifier le rendu de la liste des releases ET filtrer l’affichage des rlz : 1080/1440/2160p, FRENCH/MULTI, j’exclus les mots complete.bluray et bluray (pour éviter d’avoir des .iso depuis mes indexeurs Usenet) et je tente de trouver le bon combo de filtre du nombre de résultats par addon et résolution pour avoir une liste courte de releases à lancer (sinon j’en ai par exemple eu 64 tout à l’heure ce qui est complètement inutile). – c’est encore perfectible –

On lance le film, ici depuis Usenet, NZBdav charge le .nzb et ça stream de suite dans Stremio. Il faut pour ça un .nzb compatible : sans archive (donc fichier posté sans compression). NZBdav prend en charge les mots de passe.

usenetstreamer7
usenetstreamer8
usenetstreamer6

Et si on tombe sur un .nzb non compatible, il suffit de changer de release puisqu’on en liste quelques-unes de différentes sources. On remarque au passage que cette vidéo est faite par l’IA…

usenetstreamer9
usenetstreamer10


EDIT 18.11.25 : Usenet-Streamer intègre maintenant parfaitement NZBHydra et permet également de trier les résultats par qualité puis taille ou langue puis qualité puis taille. On peut également filtrer sa langue préférée (1 seule) et définir -ou non- une taille maximale de release.

usenetstreamer17



Pour l’installer il faut suivre les recommandations du GitHub, voici à titre d’exemple mon setup avec NZBHydra. Je l’ai ajouté à ma stack sur GitHub.


services:
  stremio-usenetstreamer:
    container_name: stremio-usenetstreamer
    restart: always
    ports:
      - 32867:7000
    environment:
      INDEXER_MANAGER: nzbhydra
      INDEXER_MANAGER_URL: http://192.168.0.163:5076
      INDEXER_MANAGER_API_KEY: NBFQU9ECCN9PIBE6ES00HI1901
      # INDEXER_MANAGER_INDEXERS: xxx
# ne fonctionne pas chez moi, du coup je n'ai activé que l'indexeur que je sais le plus compatible avec NZBdav
      ADDON_SHARED_SECRET: blahbluhbloh
      NZBDAV_URL: http://192.168.0.163:3029
      NZBDAV_API_KEY: 8bc33968842a4257891521d29ba0fb36
      NZBDAV_WEBDAV_URL: http://192.168.0.163:3029
      NZBDAV_WEBDAV_USER: xxx
      NZBDAV_WEBDAV_PASS: xxx
      NZBDAV_CATEGORY: Stremio
      ADDON_BASE_URL: https://stremio-usenetstreamer.xxx.xxx
    image: ghcr.io/sanket9225/usenetstreamer:latest
    labels:
      - com.centurylinklabs.watchtower.enable=true
  nzbhydra2:
    image: lscr.io/linuxserver/nzbhydra2:dev
    container_name: nzbhydra2
    restart: always
    network_mode: container:gluetun-airvpn
    environment:
      TZ: Europe/Paris
      PUID: 0
      PGID: 0
    volumes:
      - /home/aerya/docker/nzbhydra2/data:/config
    labels:
      - com.centurylinklabs.watchtower.enable=true


L’URL de mon addon pour l’ajouter à Stremio sera donc https://stremio-usenetstreamer.xxx.xxx/blahbluhbloh/manifest.json

Bon… j’ai commencé la rédaction ce matin, il est 16h, et entre temps il a publié une version :dev, qui n’a rien à voir ^^
Exit la configuration via les variables, c’est passé en format WebUI !
C’est bogué pour utiliser NZBHydra, il faut passer par Prowlarr, voici le nouveau compose

services:
  stremio-usenetstreamer:
    container_name: stremio-usenetstreamer
    restart: always
    ports:
      - 32867:7000
    environment:
      ADDON_SHARED_SECRET: blahbluhbloh
    image: ghcr.io/sanket9225/usenetstreamer:dev
    labels:
      - com.centurylinklabs.watchtower.enable=true

Je n’active pas le health check, NZBdav s’en occupant déjà avec sa fonction Repair.

usenetstreamer16


Pour vous donner une idée, voici les médias que j’ai lancés dans Stremio pour ce test

usenetstreamer12

Et les stats de NZBHydra pour l’unique indexeur utilisé

usenetstreamer11

Il me semble dangereux d’utiliser une mise en cache pour UsenetStreamers. Étant seul, ou au pire 2 avec Madame, sur Stremio, je peux aisément me passer du cache. Si vous faites de la revente du partage en famille ou entre amis, ça peut être plus compliqué. Et pourtant je pense qu’en terme de qualité de service, le cache peut avoir son intérêt. À creuser !

Loading

  •  

NZB Dav : streamer depuis Usenet


Déjà fan du streaming dans Plex/Jellyfin depuis des .torrents via Decypharr (pour lequel je propose le compagnon de seed DecypharrSeed), j’avais à l’époque testé Decypharr-Usenet qui donnait des résultats corrects. Le streaming depuis Usenet est prégnant depuis plusieurs mois, divers projets se succèdent et, pour moi, le plus abouti est NZBdav (trouvant AltMount trop… instable).


Il faut évidemment un accès à Usenet via un FAU (je suis chez Eweka, lien sans sponsoring) et un indexeur de .nzbs qui référence des .nzb compatibles (sans archive).

Il agit comme un client de téléchargement SABnzbd pour les *arrs, à la manière de Decypharr, et s’il tombe sur un .nzb non compatible, il remonte alors le fichier en erreur à Radarr/Sonarr qui cherche une source alternative.

Ça s’installe en 2-2 avec Docker, voici mon exemple de compose avec le montage rClone dans lequel peuvent aller lire Plex/Emby/Jellyfin/Radarr/Sonarr/whatever.

Le rclone.conf est à créer selon les directives.

services:
  rclone-nzbdav:
    image: rclone/rclone:latest
    container_name: rclone-nzbdav
    restart: always
    cap_add:
      - SYS_ADMIN
    devices:
      - /dev/fuse
    security_opt:
      - apparmor:unconfined
    volumes:
      - /root/.config/rclone/rclone.conf:/config/rclone/rclone.conf:ro
      - /mnt/nzbdav:/mnt/nzbdav:rshared
      - /mnt/Data/rCloneCache:/mnt/Data/rCloneCache
    command: >
      mount nzb-dav: /mnt/nzbdav --vfs-cache-mode=full --buffer-size=1024
      --dir-cache-time=1s --links --use-cookies --allow-other
      --vfs-cache-max-size=5G --vfs-cache-max-age=180m --allow-non-empty
      --cache-dir /mnt/Data/rCloneCache
    logging:
      driver: json-file
      options:
        max-size: 10m
        max-file: "3"
  nzbdav:
    image: ghcr.io/nzbdav-dev/nzbdav:latest
    container_name: nzbdav
    restart: always
    depends_on:
      - rclone-nzbdav
    environment:
      - PUID=0
      - PGID=0
      - TZ=Europe/Paris
    ports:
      - 3029:3000
    volumes:
      - /mnt/nzbdav:/mnt/nzbdav:rshared
      - /home/aerya/docker/nzbdav:/config
    labels:
      - com.centurylinklabs.watchtower.enable=true


Sur l’accueil sont listés les derniers .nzb chargés, leur état et leur catégorie (« Stremio » c’est pour un artricle à venir). Pour Radarr et Sonarr on verra leurs catégories Movies et Shows.

nzbdav1

On peut parcourir le WEBdav qui est monté par rClone, selon ma configuration, dans /mnt/nzbdav

nzbdav2
nzbdav3
nzbdav4

Côté serveur, c’est bien un montage rClone

aerya@StreamBox:~$ df -H
Filesystem           Size  Used Avail Use% Mounted on
tmpfs                824M  5.6M  818M   1% /run
/dev/sdb2            251G  105G  134G  44% /
tmpfs                4.2G     0  4.2G   0% /dev/shm
tmpfs                5.3M  8.2k  5.3M   1% /run/lock
/dev/sda1            472G   54G  394G  12% /mnt/Data
tmpfs                824M  2.7M  821M   1% /run/user/1000
/dev/sdb2            251G  105G  134G  44% /mnt/decypharr/qbit
nzb-dav:             1.2P     0  1.2P   0% /mnt/nzbdav
decypharr-alldebrid  1.2P     0  1.2P   0% /mnt/decypharr/alldebrid

root@StreamBox:/home/aerya# tree /mnt/nzbdav/
/mnt/nzbdav/
├── completed-symlinks
│   ├── movies
│   ├── Stremio_MOVIE
│   │   ├── A.House.of.Dynamite.2025.MULTi.VF2.HDR.DV.2160p.WEB.H265-SUPPLY
│   │   │   └── A.House.of.Dynamite.2025.MULTi.VF2.HDR.DV.2160p.WEB.H265-SUPPLY.mkv -> /mnt/nzbdav/.ids/5/6/f/7/9/56f79c37-8539-439f-a2a4-2734e4973994
│   │   ├── Road.House.2024.MULTi.HDR.2160p.WEB.H265-UKDHD
│   │   │   └── extracted
│   │   │       └── Road.House.2024.MULTi.HDR.2160p.WEB.H265-UKDHD.mkv -> /mnt/nzbdav/.ids/1/2/0/1/6/120164fd-4fe9-4b84-8475-9f70fb86d89c
│   │   ├── Road.House.2024.MULTi.VF2.SDR.2160p.WEB.H265-FW
│   │   │   └── extracted
│   │   │       └── Road.House.2024.MULTi.VF2.SDR.2160p.WEB.H265-FW.mkv -> /mnt/nzbdav/.ids/b/2/6/6/b/b266b988-9958-465a-ae32-30e5d5a61fcc
│   │   ├── The.Woman.in.Cabin.10.2025.MULTi.DV.2160p.WEB.H265-LOST
│   │   │   └── The.Woman.in.Cabin.10.2025.MULTI.DV.2160p.WEB.H265-LOST.mkv -> /mnt/nzbdav/.ids/e/a/2/1/e/ea21eb64-df23-40ad-87fe-bc56a29f974f
│   │   └── Weapons.2025.MULTi.VFF.VFQ.CUSTOM.Hybrid.2160p.Bluray.REMUX.DV.HDR10P.HEVC-BDHD
│   │       └── Weapons.2025.Multi.VFF.VFQ.Custom.Hybrid.2160p.Bluray.Remux.DV.HDR10P.HEVC-BDHD.mkv -> /mnt/nzbdav/.ids/d/f/9/f/5/df9f5587-1a15-4a58-aa77-6eacdc76b72b
│   ├── Stremio_TV
│   │   └── My.Hero.Academia.The.Movie.Youre.Next.2024.FRENCH.1080p.WEB.x264-SUPPLY
│   │       └── My.Hero.Academia.The.Movie.Youre.Next.2024.FRENCH.1080p.WEB.x264-SUPPLY.mkv -> /mnt/nzbdav/.ids/f/a/2/4/4/fa2441b5-48e2-4d0d-b336-747a6cf3b0bd
│   └── uncategorized
├── content
│   ├── Stremio_MOVIE
│   │   ├── A.House.of.Dynamite.2025.MULTi.VF2.HDR.DV.2160p.WEB.H265-SUPPLY
│   │   │   └── A.House.of.Dynamite.2025.MULTi.VF2.HDR.DV.2160p.WEB.H265-SUPPLY.mkv
│   │   ├── Road.House.2024.MULTi.HDR.2160p.WEB.H265-UKDHD
│   │   │   └── extracted
│   │   │       └── Road.House.2024.MULTi.HDR.2160p.WEB.H265-UKDHD.mkv
│   │   ├── Road.House.2024.MULTi.VF2.SDR.2160p.WEB.H265-FW
│   │   │   └── extracted
│   │   │       └── Road.House.2024.MULTi.VF2.SDR.2160p.WEB.H265-FW.mkv
│   │   ├── The.Woman.in.Cabin.10.2025.MULTi.DV.2160p.WEB.H265-LOST
│   │   │   └── The.Woman.in.Cabin.10.2025.MULTI.DV.2160p.WEB.H265-LOST.mkv
│   │   └── Weapons.2025.MULTi.VFF.VFQ.CUSTOM.Hybrid.2160p.Bluray.REMUX.DV.HDR10P.HEVC-BDHD
│   │       └── Weapons.2025.Multi.VFF.VFQ.Custom.Hybrid.2160p.Bluray.Remux.DV.HDR10P.HEVC-BDHD.mkv
│   ├── Stremio_TV
│   │   └── My.Hero.Academia.The.Movie.Youre.Next.2024.FRENCH.1080p.WEB.x264-SUPPLY
│   │       └── My.Hero.Academia.The.Movie.Youre.Next.2024.FRENCH.1080p.WEB.x264-SUPPLY.mkv
│   └── uncategorized
│       ├── Attentat.du.Bataclan.ils.ont.donne.l.assaut.2025.DOC.FRENCH.720p.WEB.H264-THESYNDiCATE
│       │   └── Attentat.du.Bataclan.ils.ont.donne.l.assaut.2025.DOC.FRENCH.720p.WEB.H264-THESYNDiCATE.mkv
│       ├── Internet.un.geant.tres.vulnerable.2025.DOC.VFF.WEB.1080p.H264.AAC-NoX
│       │   └── extracted
│       │       └── Internet.un.geant.tres.vulnerable.2025.DOC.VFF.WEB.1080p.H264.AAC-NoX.mkv
│       └── The.Lost.Leonardo.2021.DOC.VOSTFR.1080p.BluRay.HDLight.H264.AC3.5.1-ARTHECL0WN
│           └── The.Lost.Leonardo.2021.DOC.VOSTFR.1080p.BluRay.HDLight.H264.AC3.5.1-ARTHECL0WN.mkv
└── nzbs

Les arrs (ou CineSync) viennent taper dans /mnt/nzbdav/content/xxx pour organiser/copier/symlinker les fichiers dans des bibliothèques lisibles dans Plex/Jellyfin.


NZBdav possède également une option de réparation (quand c’est possible, via les .par2)

nzbdav5

Loading

  •  

Pourquoi la mousse EVA n’absorbe pas les odeurs ? Une question de structure moléculaire

Dans un espace d’entraînement, un dojo ou une salle de jeux pour enfants, la qualité de l’air est aussi importante que le confort du sol. Les odeurs, qu’elles proviennent de la transpiration, de l’humidité ou d’accidents quotidiens, peuvent rapidement rendre un environnement insalubre et désagréable. Pourtant, un revêtement de sol se distingue par sa propriété d’être naturellement inodore : la mousse EVA.

Loin d’être un simple argument marketing, cette caractéristique est une conséquence directe de la structure interne de la mousse EVA. Cet article vous propose de plonger dans l’ingénierie du matériau pour comprendre pourquoi il contribue à un air pur et sain, et comment cette propriété en fait un allié précieux du confort et de l’hygiène.

Une architecture moléculaire unique au service de la propreté

Le secret de l’hygiène durable de la mousse EVA réside dans sa structure à la fois simple et ingénieuse.

La structure à cellules fermées : une barrière infranchissable

La structure EVA fermée est le pilier de cette propriété. La mousse EVA est constituée de milliards de micro-cellules, chacune étant scellée et indépendante. Cette architecture crée une surface non poreuse qui agit comme une barrière totale contre les liquides et les gaz. Contrairement à d’autres matériaux qui agissent comme de véritables éponges, la mousse EVA repousse tout ce qui pourrait s’y incruster.

De l’hygiène visible à l’hygiène olfactive

Cette imperméabilité a un double effet bénéfique. D’abord, elle garantit que les liquides restent en surface, ce qui facilite leur nettoyage immédiat. Mais surtout, elle assure que les particules odorantes ne peuvent pas pénétrer le matériau. Ainsi, les odeurs résiduelles liées à la sueur, aux régurgitations ou aux boissons renversées ne s’incrustent pas. Après un simple nettoyage de surface, l’environnement retrouve instantanément un air pur et sain, sans aucune rémanence.

En résumé : La structure EVA fermée rend le matériau non poreux et imperméable. Cette propriété empêche les fluides et les particules odorantes de s’incruster, garantissant une hygiène olfactive durable.

Un confort olfactif pour le bien-être et la concentration

Un environnement sans odeur désagréable est un espace plus agréable, plus motivant et plus sain pour les pratiquants comme pour les usagers.

L’impact sur la performance et le confort

Dans une salle de sport ou un dojo, un air pur et sain contribue à la concentration et au bien-être. Les dalles en mousse qui ne conservent pas les odeurs créent une ambiance plus accueillante et plus motivante. Pour les sportifs, cela signifie des séances d’entraînement plus agréables, sans être distraits par un environnement olfactif saturé. Cet avantage est d’autant plus pertinent que la durabilité mousse EVA est longue, ce qui garantit un confort olfactif constant au fil des années.

Un air sain pour les enfants et les collectivités

Dans les crèches et les établissements collectifs, l’absence d’odeurs est un indicateur clé de propreté. Les tatamis EVA sont une solution idéale pour ces environnements sensibles. La surface non absorbante des dalles de protection permet de nettoyer immédiatement et efficacement les accidents liquides, sans laisser d’odeur résiduelle. Un revêtement inodore qui ne retient pas les odeurs est donc un atout majeur pour les professionnels soucieux de la santé et du bien-être des plus jeunes.

En résumé : La structure EVA fermée rend les dalles en mousse idéales pour le confort olfactif. Elles contribuent à un air sain, favorable à la concentration des sportifs, et sont particulièrement adaptées aux crèches pour leur hygiène irréprochable face aux accidents quotidiens.

L’EVA et la qualité de l’air intérieur : des données concrètes

La capacité de la mousse EVA à ne pas retenir les odeurs est intrinsèquement liée à son innocuité. C’est un critère de choix essentiel qui se mesure scientifiquement.

Le rôle de la composition dans l’émission de COV

Les dalles tatamis et autres revêtements de sol peuvent relâcher des Composés Organiques Volatils (COV) dans l’air. Ces gaz, souvent associés à une odeur chimique désagréable, peuvent être irritants pour les voies respiratoires et potentiellement nocifs. La législation européenne encadre ces émissions avec des valeurs limites strictes.

L’EVA : un matériau sain et non toxique

Les dalles en mousse EVA de qualité supérieure sont garanties sans formamide ni phtalates. Cette composition saine garantit que le matériau est inodore et ne relâche pas de substances nocives dans l’air. Ainsi, le sol tatami contribue activement à la qualité de l’air intérieur. En France, les produits certifiés sont classés A+ pour leurs émissions de COV, ce qui signifie qu’ils ne contiennent que des niveaux très faibles, voire indétectables, de substances polluantes. Cette classification est un gage de sécurité.

En résumé : La non-absorption des odeurs par la mousse EVA est liée à son absence de toxicité. Les dalles de qualité ne relâchent pas de COV et contribuent activement à un air intérieur sain, ce qui est un bénéfice majeur pour la santé, en particulier dans les environnements collectifs.

Comparatif : EVA vs autres revêtements face aux odeurs

Pour illustrer concrètement l’avantage de la mousse EVA, il est pertinent de la comparer à d’autres revêtements de sol couramment utilisés dans les espaces sportifs ou collectifs.

Un encart comparatif : l’EVA face à d’autres revêtements

Pour illustrer concrètement l’avantage de la mousse EVA, il est pertinent de la comparer à d’autres revêtements. La moquette, par exemple, est très poreuse et absorbe fortement les odeurs. Son nettoyage est difficile et les mauvaises odeurs peuvent s’y incruster durablement. Le caoutchouc de premier prix peut aussi avoir une forte odeur chimique et la retenir si elle n’est pas nettoyée en profondeur. Quant aux tapis de gym classiques, leur mousse peut s’imprégner de sueur et de germes. La dalle en mousse EVA se distingue par une absorption d’odeurs nulle. Sa surface non poreuse la rend très facile à nettoyer, empêchant toute incrustation de saletés et de résidus odorants.

En résumé : L’EVA se distingue par son absence totale d’absorption des odeurs, ce qui le rend supérieur aux revêtements poreux comme la moquette ou certains tapis. Un cas pratique montre qu’il assure une hygiène immédiate et durable.

Conclusion : La mousse EVA, une hygiène durable pour un confort optimal

La question de la persistance des odeurs est une préoccupation majeure pour l’hygiène des espaces sportifs et collectifs. Grâce à sa structure EVA fermée, la mousse EVA offre une solution pérenne et efficace. Le mécanisme est simple : les fluides et les particules odorantes ne s’incrustent pas, ce qui garantit un nettoyage parfait et un air toujours pur.

En choisissant un sol tatami en mousse EVA, vous optez pour une solution qui va au-delà de l’amorti et de la sécurité. Vous choisissez un revêtement qui contribue activement au confort olfactif et à la santé de l’environnement, un atout précieux pour le bien-être de tous.

Pour une analyse technique complète de la mousse EVA, de sa densité à ses performances, consultez notre guide expert sur les odeurs et mousse EVA.

FAQ – Mousse EVA et Hygiène Olfactive

1. Le tatami EVA a-t-il une odeur au déballage ? Oui, il peut avoir une légère odeur de « neuf » due aux solvants résiduels du processus de fabrication. Cette odeur se dissipe rapidement après quelques jours d’aération.

2. Qu’est-ce qui empêche l’EVA d’absorber la sueur et les odeurs ? Sa structure à cellules fermées. Chaque bulle d’air est scellée, créant une surface totalement imperméable qui empêche tout liquide ou odeur de pénétrer.

3. L’absence d’odeur est-elle un signe de non-toxicité ? C’est un bon indicateur. Les dalles de qualité ne relâchent pas de substances toxiques et sont généralement inodores après aération. Les certifications comme EN71 confirment leur non-toxicité.

4. Les tatamis EVA peuvent-ils être nettoyés avec un désodorisant ? Il n’est pas nécessaire d’utiliser un désodorisant. Un simple nettoyage à l’eau savonneuse suffit à éliminer les saletés et les odeurs, car elles ne sont pas absorbées par la mousse.

5. La couleur du tatami influence-t-elle sa capacité à retenir les odeurs ? Non, la couleur est un pigment intégré au polymère. Elle n’a aucun impact sur la structure à cellules fermées de la mousse et donc sur sa capacité à ne pas retenir les odeurs.

Cet article original intitulé Pourquoi la mousse EVA n’absorbe pas les odeurs ? Une question de structure moléculaire a été publié la première sur SysKB.

  •  

Stremio : ma stack du moment (auto-hébergée) et liste d’addons VoD/IPTV

Après ma première salve d’articles sur Stremio puis m’être concentré sur Jellyfin, j’y suis revenu quand j’ai testé le plugin Gelato pour Jellyfin. Il permet d’importer des catalogues Stremio dans les bibliothèques Jellyfin. Concrètement, ça le rempli des films et séries qu’on trouve sous Stremio selon la configuration utilisée (FRENCH/MULTI chez moi), le principe étant d’utiliser du streaming depuis des débrideurs pour lire les fichiers (principe de Decypharr, Stremio, un peu nzbdav and co).
Par rapport à mon setup avec Decypharr/AllDebrid, l’intérêt est de limiter justement le nombre de liens activés dans Decypharr (limite de 5000/compte AllDebrid par exemple et ça va vite à atteindre dans « notre milieu »). En effet, avec Stremio/Gelato, les liens AD ne sont activés que lors de la recherche/lecture d’un fichier et non lors de l’ajout de celui-ci à une bibliothèque Jellyfin/Plex. C’est du moins ma compréhension de Decypharr et Gelato.
Et si je me trompe, c’est nouveau et geek, donc fallait que je teste !

Après plusieurs jours sur le sujet, j’ai préféré laisser de côté Gelato, n’étant pas parvenu à avoir des bibliothèques aussi qualitatives qu’espéré : malgré des 10aines de tests d’addons et configs, j’avais toujours 15/20% des fichiers « vides », sans lien de streaming (soit encore au cinéma, soit aucune VF) et ce n’est pas ce que j’attends d’un setup Plex/Hellyfin.

Mais ça m’a remis le pied à l’étrier pour Stremio !

Pour rappel, ou info, Stremio est un lecteur de flux vidéos qui fonctionne avec des plugins, au moins 3 :
– 1 de métadonnées pour avoir les synopsis etc,
– 1 de catalogues pour lister des contenus (films, séries, Netflix, Apple, Canal, listes MDBList, IMDB, Trakt…),
– 1 de recherche de flux vidéos liés à ces contenus.

stremio1
les catalogues de vidéos peuvent être positionnés sur l’accueil ou uniquement dans le menu Découverte

Après avoir utilisé des instances publiques mises à disposition par certains dont la team de stremiofr.com (Discord), j’ai décidé d’auto-héberger un maximum d’outils (tout sauf Stremio Web, pour l’instant).

Outre ma passion pour le self-hosting,un grand nombre des outils publics sont hébergés sur des VPS gratuits Oracle, pas toujours capables de supporter la charge des clients connectés. D’où le fréquent down d’instances TMDB, par exemple, pourtant indispensable au fonctionnement de Stremio.
Je mets ça au garage, sur le petit PC de streaming sous Ubuntu. Ça tape un peu dedans au lancement avec notamment la mise en cache de Zilean mais ensuite c’est peu consommateur de ressources et c’est sans surprise SQL qui mange le plus.

stremio2
l’éclair devant la rlz indique qu’elle est déjà en cache chez le débrideur

J’ai posté sur GitHub l’ensemble des outils que j’utilise, les compose.yml sont automatiquement tenus à jour et font appel soit aux dépôts d’origine, soit à mes forks (qui créent et maintiennent des images Docker, ce qui me semble plus logique). Puisque j’héberge ça chez moi il n’y a aucun proxy pour les débrideurs, ces derniers limitant souvent à 1 IP/compte, voire bannissant celles des hébergeurs de serveurs (d’où le fait que certains passent par Warp pour masquer les différentes IPs).

stremio3
pour éviter les spoilers, les thumbnails d’épisodes non lus sont floutées

Ici je liste les outils que j’utilise ou ai testés en les décrivant brièvement. Je ne mettrai pas de lien d’instance publique, libre à chacun de chercher s’il y en a, la plupart sont indiquées sur GitHub.

Stremio-Community et Stremio- Enhanced : je place ça là… Le 1er est un lecteur de bureau modifié mais qui n’existe hélas pas encore sur Linux, donc pas testé et le 2nd est la même chose mais pour Linux notamment, donc testé ! Très sympa (pas mal de plugins sur GitHub). Le seul bémol de ces outils c’est qu’ici on regarde films et séries sur une télé (j’ai pas d’écran PC 4K de 55″ encore) et hélas l’application AndroidTV n’est pas modifiable. Dans un monde idéal, faudrait que je regarde comment utiliser Stremio-Web en app ATV… « un jour ».

  • AIOMetadata : addon de métadonnées regroupées (TMDB, TVDB, IMDB, MAL) et bien plus puisqu’il permet d’ajouter des listes et filtres
aiometadata9
aiometadata8
aiometadata7
aiometadata6
aiometadata5
aiometadata4
aiometadata3
aiometadata2
aiometadata1

Je ne l’avais pas précisé mais quand on utilise AIOMetadata, ses catalogues intégrés sont forcément en 1er sur l’accueil puisque c’est le 1er addon chargé dans Stremio.
Si on souhaite pousser d’autres catalogues en haut de liste, par exemple YGGFlix et YGG depuis StreamFusion, il suffit d’ajouter le manifeste de SF à AIOMetadata et de mettre les catalogues en 1er.

aiometadata11
aiometadata12
  • Catalogues : ajoute des catalogues tels que Netflix, Apple, Prime, Canal+ etc mais peut aussi lister des recommandations ou contenu similaires. En partie redondant avec d’autres addons de catalogues/listes si on active leurs options, j’utilise d’ailleurs plutôt AIOMetadata à la fin de la rédaction de cet article…
stremio catalog providers1
stremio catalog providers2
  • Saga : affiche les sagas telles que proposées sur TMDB
stremio saga

  • Stream-Fusion : addon de streaming privilégié pour le contenu francophone en embarquant de base YGG et SW. Il permet de lier les films/séries listés dans Stremio avec un ou des débrideurs, avec ou sans cache, avec ou sans Jackett. Bref, très complet, très simple, très efficace. Après l’avoir installé, il faut se rendre sur /api/admin pour générer la clé API à utiliser lors de la configuration. Notez qu’il existe un fork de beluchon, remanié pour TorBox
  • Le principe est presque toujours le même : je clique sur FilmAAA, ça recherche FilmAAA sur YGG et/ou SW et/ou Jackett et une fois FilmAAA.torrent trouvé, ça regarde chez le/les débrideur.s s’il est déjà en cache, si oui ça lit, si non ça télécharge et lit ensuite
  • Zilean : un cache global permettant ici à Stream-Fusion de savoir plus vite FilmAAA est déjà en cache chez un débrideur (plutôt pour les contenu VO). Au 1er lancement ça indexe le cache, j’ai pas constaté de différence de vitesse de listing à mon faible niveau d’utilisation de Stremio
  • Jackett : pour la recherche en direct de contenu sur des trackers BitTorrent en lien avec Stream-Fusion. Je suis passé depuis longtemps sur Prowlarr mais il n’est pas compatible. Un truc à modifier, un jour (ou alors utiliser AIOStreams). Je n’ai pas configuré Jackett, trouvant tout directement sur les débrideurs, jusqu’à maintenant
streamfusion1
streamfusion2

  • Addon-Manager : (une version parmi d’autres) incontournable pour gérer ses addons, placer l’addon de métadonnées en haut de la liste, retirer Cinemeta, renommer (why?! oO) ou changer l’ordre des addons. D’une manière générale il faut placer les addons de recherche de flux tout en bas de la liste. J’ai créé un fork sur GitHub pour construire une image Docker pour simplifier l’installation…
addon manager
  • WAStream : (testé mais pas conservé) Dhylio a pondu ce bel addon pour streamer, via débrideurs, du contenu de sites de DDL, suis pas fan de DDL hormis Usenet mais ça peut dépanner si YGG est down (#humour)
wastream

  • MediaFlow Proxy : à utiliser avec TvVoo (en-dessous) pour proxifier les streams (sinon sur l’instance publique faut refresh toutes les heures pour une nouvelle clé). Je l’ai également forké pour faire un package à installer…
mediaflow proxy
  • TvVoo : IPTV gratuite (sans flux m3u ou autre) sur Stremio. Tous les flux « habituels » de l’IPTV avec les chaînes payantes, triées en catégories qui plus est et fonctionne via la recherche sous Stremio. S’appuie sur vavoo.to et vavoo.tv, pensez à les débloquer dans AdGuardHome si nécessaire (chez moi pour le .tv fallait).
    J’ai pas trouvé d’EPG, non plus pris la peine de tester un autre addon IPTV comme celui-ci pour lequel il faut cependant une source (nous avons TiviMate sur la TV), une prochaine fois…
tvvoo
tvvoo1
tvvoo2
tvvoo3
tvvoo4
  • Rating Aggregator : pour ceux qui ont lu au sujet d’Aphrodite ou Kometa, vous savez que j’aime bien voir les notes avant de choisir un média. Cet addon permet d’obtenir quasi la même chose que cette instance publique (dont le code ne semble pas être publié ?). Encore une fois, pas de package, du coup je fork…
ratings
ratings1
  • AI-Companion : lié à une IA (payante, mais on est fin 2025, c’est comme de parler anglais, c’est normal quand on est geek…) pour faire des découvertes de contenus selon nos demandes. Attention quand le développeur évoque la clé API TMDB dans le compose il s’agit en fait du token. J’en profite pour tester Gemini. La recherche que je montre en exemple sur l’addon est la même dans Stremio
companion1
companion2
companion3
companion4
  • Streams Prefetcher : outil de cache global. Il va mettre en cache les contenus des addons qu’on lui ajoute (ceux de Stremio) afin d’accélérer les recherches et lectures. Très complet : avec ou sans limite de films/séries globalement ou par catalogue, proxy, regex, durée du cache, cron… Pas forcément très utile dans mon contexte d’utilisation (que mon foyer, avec la fibre 8/8GBps) mais j’adore le concept et le boulot de Deejay !
streams prefetcher
  • More Like This : (testé mais pas conservé) sur une page de média, recommande des contenus similaires depuis TMDB, Gemini et d’autres sources. Pareil, forké pour faire une image Docker… Le hic c’est que c’est prévu pour Stremio Web, pas pour l’application ATV
more like this
more like this1
  • AIOStreams : dernier addon de cette présentation, mais pas des moindres, il permet de regrouper tous les addons Stremio en un seul et il embarque surtout un paquet d’options que je vous laisse découvrir sur la page du GitHub : tri des rlz selon des critères prédéfinis ou libres ou via regex (si vous voulez du MULTI HDR mais pas DoVi ou les rlz de Pierre mais pas celles de Paul etc), modification du rendu de la liste des rlz,
    Attention, le compose que j’utilise est personnel donc sans restriction et je n’ai conservé que les options/services qui m’intéressent.
    J’utilise AIOStreams pour des tests, dans le cas d’une utilisation solo il ne me semble pas utile SAUF pour filtrer les contenus par regex et/ou modifier le rendu de la liste des rlz.
  • WARP : un proxy qui route le trafic via Cloudflare. Ce n’est pas un VPN, juste de quoi masquer mon IP quand AIOStreams interroge des services que je n’héberge pas.
aiostreams7
aiostreams6
aiostreams5
aiostreams4
aiostreams3
aiostreams2
aiostreams1



Voici le rendu actuel de ma stack et l’ordre des addons. StreamFusion est ajouté à AIOStreams pour pouvoir modifier l’apparence de la liste des releases.
Ratings => releases (StreamFusion) => Autres médias de la saga (sortis ou à venir)

stremio1
stremio2

TvVoo sert vraiment pas à grand chose quand on a un abonnement IPTV (de qualité) et un vrai lecteur type TiviMate mais c’est sympa pour avoir la météo en bruit de fond 😛

Loading

  •  

TestFlight Status Checker : être alerté des ouvertures de bêta d’applications pour Apple sur TestFlight

Chez Apple, les développeurs peuvent proposer leurs applications en version bêta avant de les mettre sur l’AppStore. Pour y accéder, outre avoir TestFlight sur son périphérique et un code d’invitation, il faut surtout que la limite de bêta-testeurs ne soit pas atteinte.

Si jamais on arrive trop tard, EloneMusk (… ouais… je sais…) a créé Test-Flight-Subscription pour être alerté par email de l’ouverture d’accès à des bêtas.

L’email et le mot de passe à renseigner dans la configuration ne sont PAS ceux de votre compte Apple mais bien ceux d’un compte GMAIL (hardcodé avec Gmail dans app.py).
Il faudra utiliser un compte Gmail avec un mot de passe d’application (chercher app password dans les paramètres Gmail), accessible une fois le 2FA activé sur le dit compte si ce n’est pas encore fait.

services:
  testflight-checker:
    build:
      context: https://github.com/EloneMusk/Test-Flight-Subscription.git
      dockerfile: Dockerfile
    container_name: testflight-checker
    restart: always
    ports:
      - 7654:8000
    environment:
      EMAIL_USER: moi@gmail.com
      EMAIL_PASSWORD: ent iur henf ued

testflight1

Pratique.
Pour découvrir des applications en bêta, on peut par exemple parcourir le SubReddit dédié ou le dépôt GitHub Awesome Testflight App List.

Il a trouvé sa place dans tout mon petit bordel ^^

testflight2

Et… j’y ajoute mon workflow de mise à jour automatique si le dépôt GitHub évoluait, ce qui donne :

services:
  testflight-checker:
    build:
      context: https://github.com/EloneMusk/Test-Flight-Subscription.git
      dockerfile: Dockerfile
    container_name: testflight-checker
    restart: always
    ports:
      - 7654:8000
    environment:
    environment:
      EMAIL_USER: moi@gmail.com
      EMAIL_PASSWORD: ent iur henf ued
  testflight-autoupdate:
    image: alpine:latest
    container_name: testflight-autoupdate
    restart: always
    environment:
      GITHUB_REPO: https://github.com/EloneMusk/Test-Flight-Subscription.git
      DISCORD_WEBHOOK: https://canary.discord.com/api/webhooks/xxx/xxx
      POLL_INTERVAL: 172800 # secondes
      SERVICE_NAME: testflight-checker
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /tmp:/repo
    command: >
      sh -c "
        apk add --no-cache git bash curl docker-cli jq &&
        mkdir -p /repo &&
        cd /repo &&
        git clone --depth 1 \$GITHUB_REPO . || true &&
        REPO_NAME=\$(basename -s .git \$GITHUB_REPO) &&
        DEFAULT_BRANCH=\$(curl -s https://api.github.com/repos/\$(echo \$GITHUB_REPO | sed 's|.*/||;s|.git||') | jq -r .default_branch) &&
        git fetch origin \$DEFAULT_BRANCH &&
        git checkout \$DEFAULT_BRANCH &&
        LAST_COMMIT=\$(git rev-parse HEAD) &&
        while true; do
          git fetch origin \$DEFAULT_BRANCH &&
          NEW_COMMIT=\$(git rev-parse origin/\$DEFAULT_BRANCH) &&
          if [ \"\$NEW_COMMIT\" != \"\$LAST_COMMIT\" ]; then
            echo \"[$(date)] Nouveau commit détecté sur \$DEFAULT_BRANCH, rebuild...\"
            git reset --hard origin/\$DEFAULT_BRANCH &&
            docker compose -f /repo/docker-compose.yml build \$SERVICE_NAME &&
            docker compose -f /repo/docker-compose.yml up -d \$SERVICE_NAME &&
            REPO_LINK=\$GITHUB_REPO &&
            COMMIT_LINK=\"\$GITHUB_REPO/commit/\$NEW_COMMIT\" &&
            curl -H 'Content-Type: application/json' -X POST -d '{\"content\": \"\$REPO_NAME mis à jour automatiquement !\nBranche : \$DEFAULT_BRANCH\nCommit : \$NEW_COMMIT\nDépôt : <\$REPO_LINK|\$REPO_NAME>\nLien du commit : <\$COMMIT_LINK|voir commit>\"}' \$DISCORD_WEBHOOK &&
            LAST_COMMIT=\$NEW_COMMIT
          else
            echo \"[$(date)] Aucun changement sur \$DEFAULT_BRANCH.\"
          fi
          sleep \$POLL_INTERVAL
        done
      "
networks: {}

Loading

  •  

Du commit GitHub au container à jour : workflow Docker simplifié

Il arrive que des gens publient un code sur GitHub avec un Dockerfile mais sans package. Le container est donc à construire soi-même, localement.

Ça peut se faire directement depuis un compose

services:
  applicationABC:
    build:
      context: https://github.com/user/applicationABC.git
      dockerfile: Dockerfile
    container_name: applicationABC
    restart: always
    ports:
      - 8080:8080

Mais dans ce cas la mise à jour automatisée via WatchTower ne fonctionne pas puisqu’il n’y a pas d’image à aller chercher.

    labels:
      - com.centurylinklabs.watchtower.enable=true

Du coup voici une solution de contournement, simple et surtout qui n’implique pas d’outil tiers ou de cloner un dépôt GitHub et faire/tenir à jour un package moi-même.

Ce bout de code va checker les commits d’un dépôt GitHub à intervalles réguliers et, au besoin, construire un container à jour localement et relancer le tout.
Avec notification Discord, parce que j’aime ça.

  applicationABC-autoupdate:
    image: alpine:latest
    container_name: applicationABC-autoupdate
    restart: always
    environment:
      GITHUB_REPO: https://github.com/user/applicationABC.git
      DISCORD_WEBHOOK: https://canary.discord.com/api/webhooks/xxx/xxx
      POLL_INTERVAL: 172800 # secondes
      SERVICE_NAME: applicationABC
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /tmp:/repo
    command: >
      sh -c "
        apk add --no-cache git bash curl docker-cli jq &&
        mkdir -p /repo &&
        cd /repo &&
        git clone --depth 1 \$GITHUB_REPO . || true &&
        REPO_NAME=\$(basename -s .git \$GITHUB_REPO) &&
        DEFAULT_BRANCH=\$(curl -s https://api.github.com/repos/\$(echo \$GITHUB_REPO | sed 's|.*/||;s|.git||') | jq -r .default_branch) &&
        git fetch origin \$DEFAULT_BRANCH &&
        git checkout \$DEFAULT_BRANCH &&
        LAST_COMMIT=\$(git rev-parse HEAD) &&
        while true; do
          git fetch origin \$DEFAULT_BRANCH &&
          NEW_COMMIT=\$(git rev-parse origin/\$DEFAULT_BRANCH) &&
          if [ \"\$NEW_COMMIT\" != \"\$LAST_COMMIT\" ]; then
            echo \"[$(date)] Nouveau commit détecté sur \$DEFAULT_BRANCH, rebuild...\"
            git reset --hard origin/\$DEFAULT_BRANCH &&
            docker compose -f /repo/docker-compose.yml build \$SERVICE_NAME &&
            docker compose -f /repo/docker-compose.yml up -d \$SERVICE_NAME &&
            REPO_LINK=\$GITHUB_REPO &&
            COMMIT_LINK=\"\$GITHUB_REPO/commit/\$NEW_COMMIT\" &&
            curl -H 'Content-Type: application/json' -X POST -d '{\"content\": \"\$REPO_NAME mis à jour automatiquement !\nBranche : \$DEFAULT_BRANCH\nCommit : \$NEW_COMMIT\nDépôt : <\$REPO_LINK|\$REPO_NAME>\nLien du commit : <\$COMMIT_LINK|voir commit>\"}' \$DISCORD_WEBHOOK &&
            LAST_COMMIT=\$NEW_COMMIT
          else
            echo \"[$(date)] Aucun changement sur \$DEFAULT_BRANCH.\"
          fi
          sleep \$POLL_INTERVAL
        done
      "

Le travail est effectué dans le dossier temporaire.

Il suffit d’éditer les variables voire le nom du container, histoire de faire propre

  applicationABC-autoupdate:
    image: alpine:latest
    container_name: applicationABC-autoupdate
    restart: always
    environment:
      GITHUB_REPO: https://github.com/user/applicationABC.git
      DISCORD_WEBHOOK: https://canary.discord.com/api/webhooks/xxx/xxx
      POLL_INTERVAL: 172800 # secondes
      SERVICE_NAME: applicationABC

Attention, la variable SERVICE_NAME doit être le nom exact du service à reconstruire/relancer

services:
  applicationABC:
    build:
      context: https://github.com/user/applicationABC.git
      dockerfile: Dockerfile
    container_name: applicationABC
    restart: always
    ports:
      - 8080:8080

Loading

  •  

TizenTube Cobalt : client AndroidTV YouTube avec AdBlock et SponsorBlock (vs SmartTube)

J’en ai marre des pubs dans tous les sens. J’avais déjà remplacé le launcher de ma Nvidia Shield Pro avec Projectivy et j’utilise SmartTube à la place de Youtube (vidéo/musique qui ne sont donc pas installés).

Un nouveau venu, ou presque, avec TizenTube Cobalt de reisxd. Comme son nom l’indique, il a créé un portage AndroidTV de son application pour OS Tizen (TV Samsung).

Ça s’installe via le downloader d’AFTVNews avec le code 6366500 si vous l’avez sinon à l’ancienne avec l’APK sur une clé USB (et faut avoir installé un explorateur de fichiers sur la box Android évidemment).

tizentube1
tizentube2
tizentube3
tizentube4

Je trouve TizenTube Cobalt bien plus sobre, globalement, et complète dans les options.
Ce qui me dérange avec SmartTube c’est que par défaut, même sans compte, on se prend plein de recommandations et ce sont très clairement des trucs qui ne m’intéressent absolument pas.

Et je précise que ce screen vient d’une émulation ATV vierge, sans compte Google et non liée à mon IP, il n’y a par conséquent aucun lien avec nos trackings publicitaires (qui passent au travers d’AdGuardHome).

smarttube1
smarttube2
smarttube3
smarttube4

Testez les 2 applications, les goûts et les couleurs… 🙂

Loading

  •  

Pulse : monitoring Docker (et Proxmox)

Merci Holaf pour la découverte.

Je n’ai plus de Proxmox depuis des années à la maison, je le teste avec Docker : Ubuntu, Synology et UNRAiD.

Ça fait penser à Beszel mais en plus puissant et complet bien entendu.

Pulse s’utilise en toute logique avec un serveur et des agents. Le tout s’installe en Docker ou en dur.

C’est très musclé et sécurisé, ça permet la découverte de réseaux pour ajouter des nodes Proxmox notamment. Je l’utilise de manière très simple pour ce test :

services:
  pulse:
    image: rcourtman/pulse:latest
    container_name: pulse_serveur
    ports:
      - 7655:7655
    volumes:
      - /mnt/user/appdata/pulse:/data
    restart: always

On peut ensuite définir un compte d’accès

pulse
pulse1
pulse2

Je souhaite ajouter des clients Docker

pulse3

Il faudra pour ça générer un token par client

pulse4
pulse5

Et tout est ensuite expliqué pour l’installer ou le retirer. C’est très bien fait.

pulse6

Mais pour ma machine sous UNRAiD je préfère passer par un container Docker

docker run -d \
  --name pulse-docker-agent \
  -e PULSE_URL="http://192.168.0.195:7655" \
  -e PULSE_TOKEN="a297b11d70d16c15e4eb9241ace555a19bff4279c98ffaa92de5bd9d0bc9bab7" \
  -e PULSE_TARGETS="http://192.168.0.195:7655|a297b11d70d16c15e4eb9241ace555a19bff4279c98ffaa92de5bd9d0bc9bab7" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --restart always \
  ghcr.io/rcourtman/pulse-docker-agent:latest

Et je l’ai tout de suite dans ma liste de clients

pulse7
pulse8
pulse9

Pour un NAS Synology je passe aussi par Docker. En revanche je suis leur recommandation pour ajouter un client sur la machine Ubuntu.

curl -fsSL http://192.168.0.195:7655/install-docker-agent.sh | bash -s -- --url http://192.168.0.195:7655 --token bc6f2c3e562d5c030a1b2b925a6f145050e214359542b3670a79a4a94a971c18

root@StreamBox:/home/aerya# curl -fsSL http://192.168.0.195:7655/install-docker-agent.sh | bash -s -- --url http://192.168.0.195:7655 --token bc6f2c3e562d5c030a1b2b925a6f145050e214359542b3670a79a4a94a971c18

== Pulse Docker Agent Installer ==
[INFO] Primary Pulse URL : http://192.168.0.195:7655
[INFO] Install path      : /usr/local/bin/pulse-docker-agent
[INFO] Log directory     : /var/log/pulse-docker-agent
[INFO] Reporting interval: 30s
[INFO] API token         : provided
[INFO] Docker host ID    : cf13d13b-a0e2-4bc6-b755-2535f80b4932
[INFO] Targets:
[INFO]   • http://192.168.0.195:7655

[INFO] Downloading agent binary
/usr/local/bin/pulse-docker-agent                                                          100%[=======================================================================================================================================================================================================================================>]   6.85M  --.-KB/s    in 0.03s   
[ OK ] Agent binary installed
[ OK ] Cleared any previous stop block for host

== Configuring systemd service ==
[ OK ] Wrote unit file: /etc/systemd/system/pulse-docker-agent.service
[INFO] Starting service
Created symlink /etc/systemd/system/multi-user.target.wants/pulse-docker-agent.service → /etc/systemd/system/pulse-docker-agent.service.

== Installation complete ==
[INFO] Agent service enabled and started
[INFO] Check status          : systemctl status pulse-docker-agent
[INFO] Follow logs           : journalctl -u pulse-docker-agent -f
[INFO] Host visible in Pulse : ~30 seconds

Et j’ai bien mes 3 clients

pulse10
pulse11

Pulse est un outil sécurisé, très simple, très beau, trés complet, très léger. J’adopte !

Loading

  •  
❌