Vue lecture
ZimaOS : le grand frère de CasaOS pour serveurs et NAS DIY
Après avoir mis de côté UNRAiD, dont je me suis lassé, j’ai passé le LincStation N1 sous TrueNAS. Cet OS ne m’apporte rien d’autre que la gestion simplifiée des RAIDs via une WebUI (parce que bon… mdadm… c’est chiant). Enfin je ne cherche pas à utiliser l’OS pour être précis, je ne peux donc pas dire qu’il est nul ou top. M’en tape.
Les autres machines, tout aussi peu puissantes que le N1 sont sous Archlinux et Ubuntu. Arch parce que j’aime bien me demander chaque jour si une MàJ va plomber le serveur et comment je vais m’en dépatouiller (et c’est accessoirement mon desktop). Ubuntu, pour changer de Debian, parce que j’ai quand même besoin d’un truc stable dans ma vie de geek. N’utilisant quasi plus de VM/LXC depuis l’avènement de Docker, je n’ai plus de ProxMox.
Du coup, je shunte Ubuntu au profit d’une distribution basée sur Debian : ZimaOS ! Jai passé hier l’ensemble de mes services « utiles » sur TrueNAS pour libérer cette machine pour ce test.
Avertissement : c’est asiat’. Alors pour les complotistes américains peureux bas du front (rayez ou non les mentions inutiles), n’allez pas plus loin. Je n’ai absolument pas fait de RE pour savoir s’ils ont mis des backdoors. « Mais » CVE-2026-21891 (non encore relayée sur GitHub) / discussion Reddit et si j’ai pas sniffé le trafic, mon DNS ne fait rien ressortir d’extraordinaire. La machine ping même pas Baidu, contrairement à la majorité des objets IoT qui s’assurent d’être connectés à Internet en pingant le de Google chinoix (oui, eux aussi ont leur GAFAM BATX).
J’ai découvert cet OS par hasard, quand je cherchais des infos sur des boards de serveurs. J’ai d’ailleurs commencé par découvrir CasaOS, dont j’étais pas fans. Ça faisait un peu Docker in Docker. Pour moi c’est plus à voir comme une alternative à YunoHost (très bon projet pour ceux qui sortent d’une grotte et ne connaissent pas). Même ressenti pour Cosmos d’ailleurs.
ZimaOS est développé pour leurs NAS ZimaCube mais on peut l’installer partout.
Ils font eux-mêmes la comparaison entre ZimaOS et CasaOS, en gros :

C’est un UNRAiD like, avec une interface plus moderne (avis 100% subjectif), avec des clients à la Synology pour Windows, macOS, Linux (AUR), iOS et Android, avec une documentation bien faite sans tomber dans un Wikipedia comme on peut le voir chez certains concurrents, un GitHub et donc la possibilité d’ouvrir des issues (ce qui est bien plus pratique qu’un forum),
Ça s’installe en 2-2 avec une clé USB (iso de 1.3Go) créée avec Balena et se gère uniquement via la WebUI.




J’utilise la version gratuite.

Et il faut activer le Mode Développeur notamment pour désactiver l’indexation du contenu avec leur « IA » (pour faciliter la recherche) et autoriser SSH.





Première vraie configuration à faire, mon stockage. De mémoire j’ai que 2 disques dans ce PC mais la version gratuite permet d’en gérer 4 en RAID. Et la version payante coûte 29$ (« à vie »).


Comme j’ai qu’un SSD en sus de celui de l’OS, je me contente de le formater et ça l’ajoute bien ensuite en stockage. Ce que je vois d’ailleurs avec le widget de la dashboard, qui passe à 718Go de stockage.

Et donc, en standard, ZimaOS intègre un explorateur de fichiers, un outil de backup (depuis ou vers le NAS), un gestionnaire de VM et un PairDrop (je vois la machine sous Windows mais pas mon Arch, faudra que je trouve pourquoi).
Depuis un client (Linux/iOS), on peut parcourir les fichiers du serveur et faire du backup. Notamment de photos depuis l’iPhone (arrière plan ou non).






On peut ajouter des liens externes à la dashboard, ce qui est une très bonne idée et pourrait m’inciter à me passer de mon brave Heimdall qui m’accompagne depuis maintenant des années…


Et nous terminons évidemment avec le fameux AppStore et ses 372 applications (Docker) « prêtes à installer » au moment de cet article. Rien de comparable avec UNRAiD, je vous l’accorde. Mais ici, ça s’installe en 1 clic.

Et on peut ajouter des dépôts et doubler, au moins, le nombre d’applications du store.

Tout comme il est possible d’installer une app via la WebUI si on elle n’est pas dans le Store et qu’on n’est vraiment pas à l’aise en console.

On peut tout à fait utiliser Docker en console ou via Komodo, Arcane, Dockge, Portainer/what ever. Et ça marche « out of the box » dans ce cas, il n’y a rien à adapter pour l’OS.
À noter que par défaut, les applications installées via l’AppStore sont dans /DATA, sur le disque système.
root@ZimaOS:~ ➜ # tree /DATA/
/DATA/
├── AppData
│ └── pihole
│ └── etc
│ └── pihole
│ ├── adlists.list
│ ├── cli_pw
│ ├── config_backups
│ │ └── pihole.toml.1
│ ├── dhcp.leases
│ ├── dnsmasq.conf
│ ├── gravity.db
│ ├── gravity_backups
│ │ └── gravity.db.1
│ ├── gravity_old.db
│ ├── hosts
│ │ └── custom.list
│ ├── listsCache
│ │ ├── list.1.raw.githubusercontent.com.domains
│ │ ├── list.1.raw.githubusercontent.com.domains.etag
│ │ └── list.1.raw.githubusercontent.com.domains.sha1
│ ├── logrotate
│ ├── migration_backup
│ │ └── adlists.list
│ ├── pihole-FTL.db
│ ├── pihole-FTL.db-shm
│ ├── pihole-FTL.db-wal
│ ├── pihole.toml
│ ├── tls.crt
│ ├── tls.pem
│ ├── tls_ca.crt
│ └── versions
├── Backup
├── Documents
├── Downloads
│ └── ISO
├── Gallery
├── Media
│ ├── Movies
│ ├── Music
│ └── TV Shows
└── lost+found
Comme ça se voit au-dessus, j’ai installé Pi-Hole depuis l’AppStore pour tester. Faut juste cliquer pour installer.






Pratique : en cas d’ajout de disques, on peut migrer les données facilement


Même si ZimaOS est basé sur Debian, c’est propriétaire et on ne peut pas utiliser Apt pour y installer ce qu’on veut. C’est une sécurité également, histoire de ne pas mettre en vrac l’OS (ce qu’on est nombreux à avoir fait avec Proxmox hein… mentez pas !!). Ceci dit ils ont prévu le coup.
Ceci dit, leur OS embarque déjà bon nombre d’utilitaires tels que ncdu, jq, rclone…
Dans l’idéal, j’aimerais un dash qui permet de mieux intégrer quelques applications comme le font Heimdall, Homarr, Organizr etc.
Aperçu du client iOS




Avec le recul de cet article, je perçois ZimaOS comme un DSM de Synology, enfin plutôt un Xpenology vu qu’on peut l’installer où on veut, avec un peu de combo d’UNRAiD et cousins.
Enfin tous ces OS se ressemblent mais ZimaOS serait un peu le « macOS » du groupe, à vouloir proposer une expérience très esthétique, complète (Docker natif ou magasin d’applications), pratique (outils intégrés, y compris pour périphériques) et répondant AMHA à la plupart des besoins. Bien que propriétaire, contrairement à CasaOS qui est open source mais n’est qu’une surcouche.
Je pense le faire tourner quelques temps en parallèle de TrueNAS voir remplacer ce dernier. Et j’avais oublié, ça embarque aussi Btop++ pour afficher des stats temps réel.

![]()
Stremio : addon Comet et réseau de partage de métadonnées CometNet
Comet est un addon de sources pour Stremio, comme StreamFusion que j’ai déjà présenté. Seulement là où SF cible le contenu francophone, Comet va ratisser large.
Le premier addon Stremio pour proxyfier les flux Debrid, permettant l’utilisation du service Debrid sur plusieurs IP en même temps avec le même compte !
Limite de connexion maximale basée sur l’IP
Tableau de bord d’administration avec gestion de la bande passante, statistiques et plus…
Scrapers pris en charge : Jackett, Prowlarr, Torrentio, Zilean, MediaFusion, Debridio, StremThru, AIOStreams, Comet, Jackettio, TorBox, Nyaa, BitMagnet, TorrentsDB et Peerflix
Système de cache avec SQLite / PostgreSQL
Scraper en arrière-plan ultra-rapide
Classement intelligent des torrents propulsé par RTN
Support du proxy pour contourner les restrictions des services Debrid
Services Debrid supportés : Real-Debrid, All-Debrid, Premiumize, TorBox, Debrid-Link, Debrider, EasyDebrid, OffCloud et PikPak
Torrents directs pris en charge
Support Kitsu (anime)
Filtre de contenu adulte
Support du protocole ChillLink
Il permet donc de lire des contenus depuis des débrideurs ou depuis du torrenting direct (avec VPN !).
Comet (GitHub | Discord) est présenté par g0ldy comme l’addon le plus rapide pour Stremio, tout simplement parce qu’il constitue un cash des métadonnées des .torrents à partir des sources configurées.

On me confirme que les stats des caches de débrideurs – By Service Provider – sont fluctuantes et non révélatrices, on peut en avoir des milliers comme quasi rien. Testé avec AD, RD, TB et Premiumize, mêmes soucis de stats dans tous les cas. Mais c’est qu’une statistique, en lecture sous Stremio le contenu est bien trouvé.
Certains en ont des 10aines de millions de .torrents en attente d’ajout en base de données. Je débute et relance souvent l’outil donc il ne bosse pas beaucoup et j’ai pas mis beaucoup de sources vu que c’est un test. Et accessoirement, indexer tout le contenu VO de la Terre ne m’intéresse pas (certains indexent un dump de RARBG de quelques Po).
Comet est un indexeur de liens (sources) depuis tous les scrapers indiqués dans la description. C’est un addon de sources pour Stremio, avec filtres de résolution et langues notamment.

Et on peut multiplier les instances, j’ai par exemple un BitMagnet publique et mon instance (elle aussi relancée il y a peu donc pas encore beaucoup de contenu indexé).
Sans compter que mon pauvre Lincstation N1 se mange tout mon setup en ce moment vu que je réinstalle les autres machines. Il est bien brave avec son petit CPU ^^
Et comme g0dly trouvait qu’il ne gavait pas assez son Comet, il a décidé de lancer très récemment (encore en test dirons-nous) un réseau CometNet de partage de métadonnées entre instances (publiques et/ou privées).

Pour ne parler que de FRENCH/MULTi, Comet peut être un bon complément voire une alternative à StreamFusion, à condition d’avoir les bonnes sources. On peut aussi parier dessus, par exemple via BitMagnet, pour les trackers francophones qui disent vouloir publier leurs contenus en DHT.
Dans ce cas, pas la peine d’indexer la planète. Si vous voulez du tout cuit : stremiofr.com propose une instance dédiée à la VF.
L’installation est simple, en Docker. Attention, mes paramètres CometNet (dans le .env) sont des tests et ils évoluent tous les jours en ce moment vu que c’est en plein développement/test.
:beta pour les dernières MàJ de CometNet, :latest sinon
services:
comet:
container_name: comet
#image: g0ldyy/comet:latest
image: g0ldyy/comet:beta
restart: always
ports:
- "9237:8000"
- "8765:8765" # CometNet P2P port
environment:
DATABASE_TYPE: ${DATABASE_TYPE:-postgresql}
DATABASE_URL: ${DATABASE_URL:-comet:comet@postgres:5432/comet}
COMETNET_ENABLED: "True"
FASTAPI_WORKERS: "1"
env_file:
- .env
volumes:
- /mnt/Docker/stremio/comet/data:/data
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8000/health"]
interval: 5s
timeout: 5s
retries: 5
start_period: 10s
depends_on:
postgres:
condition: service_healthy
postgres:
container_name: comet-postgres
image: postgres:18-alpine
restart: always
environment:
POSTGRES_USER: comet
POSTGRES_PASSWORD: comet
POSTGRES_DB: comet
command:
- "postgres"
- "-c"
- "shared_buffers=128MB"
- "-c"
- "effective_cache_size=384MB"
- "-c"
- "maintenance_work_mem=64MB"
- "-c"
- "checkpoint_completion_target=0.9"
- "-c"
- "wal_buffers=8MB"
- "-c"
- "random_page_cost=1.1"
- "-c"
- "effective_io_concurrency=200"
- "-c"
- "work_mem=8MB"
- "-c"
- "max_connections=100"
volumes:
- /mnt/Docker/stremio/comet/postgres:/var/lib/postgresql/
healthcheck:
test: ["CMD-SHELL", "pg_isready -U comet -d comet"]
interval: 5s
timeout: 5s
retries: 5
Et donc le .env
ADDON_ID=stremio.comet.fast
ADDON_NAME=Comet
FASTAPI_HOST=0.0.0.0
FASTAPI_PORT=8000
FASTAPI_WORKERS=1
USE_GUNICORN=True
GUNICORN_PRELOAD_APP=True
EXECUTOR_MAX_WORKERS=1
PUBLIC_BASE_URL=https://stremio-comet.xxx.xxx
ADMIN_DASHBOARD_PASSWORD=xxx
PUBLIC_METRICS_API=False
DATABASE_TYPE=postgresql
DATABASE_FORCE_IPV4_RESOLUTION=False
DATABASE_URL=comet:comet@postgres:5432/comet
DATABASE_PATH=data/comet.db
DATABASE_BATCH_SIZE=20000
DATABASE_STARTUP_CLEANUP_INTERVAL=3600
PROXY_DEBRID_STREAM=True
PROXY_DEBRID_STREAM_PASSWORD=xxx
METADATA_CACHE_TTL=2592000 # 30 days
TORRENT_CACHE_TTL=2592000 # 30 days
LIVE_TORRENT_CACHE_TTL=604800 # 7 days
DEBRID_CACHE_TTL=86400 # 1 day
DEBRID_CACHE_CHECK_RATIO=1 # Minimum ratio (0.5 = 5%) of cached torrents/total torrents required to skip re-checking availability on the debrid service.
METRICS_CACHE_TTL=60 # 1 minute
SCRAPE_LOCK_TTL=300 # 5 minutes - Duration for distributed scraping locks
SCRAPE_WAIT_TIMEOUT=30 # 30 seconds - Max time to wait for other instance to complete scraping
BACKGROUND_SCRAPER_ENABLED=True
BACKGROUND_SCRAPER_CONCURRENT_WORKERS=1 # Number of concurrent workers for scraping (adjust depending on whether you are often ratelimited by scrapers)
BACKGROUND_SCRAPER_INTERVAL=3600 # Interval between scraping cycles in seconds
BACKGROUND_SCRAPER_MAX_MOVIES_PER_RUN=100 # Maximum number of movies to scrape per run
BACKGROUND_SCRAPER_MAX_SERIES_PER_RUN=100 # Maximum number of series to scrape per run
CATALOG_TIMEOUT=30 # Max time to fetch catalog pages (seconds)
ANIME_MAPPING_ENABLED=True
ANIME_MAPPING_REFRESH_INTERVAL=432000 # Seconds between background anime mapping refreshes when using database cache (<=0 disables)
RATELIMIT_MAX_RETRIES=2 # Maximum number of retries for 429 Too Many Requests errors. Set to 0 to disable retries.
RATELIMIT_RETRY_BASE_DELAY=1.0 # Base delay in seconds for exponential backoff (e.g., 1.0 -> 1s, 2s, 4s, 8s...)
SCRAPE_PROWLARR=True
PROWLARR_URL=https://prowlarr.xxx.xxx
PROWLARR_API_KEY=xxx
PROWLARR_INDEXERS=[] # Leave empty to automatically use all configured/healthy indexers. Or specify a list of indexer IDs.
# Shared Settings
INDEXER_MANAGER_TIMEOUT=30 # Max time to get search results (seconds) - Shared by both
INDEXER_MANAGER_WAIT_TIMEOUT=30 # Max time to wait for the indexer manager to initialize (seconds)
INDEXER_MANAGER_UPDATE_INTERVAL=900 # Time in seconds between indexer updates (default: 900s / 15m)
# ============================== #
# Torrent Settings #
# ============================== #
GET_TORRENT_TIMEOUT=5 # Max time to download .torrent file (seconds)
DOWNLOAD_TORRENT_FILES=True # Enable torrent file retrieval from magnet link
MAGNET_RESOLVE_TIMEOUT=60 # Max time to resolve a magnet link (seconds)
DOWNLOAD_GENERIC_TRACKERS=False # Enable downloading generic trackers list at startup (for scraped torrents without trackers, doesn't work well most of the time)
# ============================== #
# Scraping Configuration #
# ============================== #
# Multi-Instance Scraping Support:
# - Single URL: Use a simple string for one instance (default behavior)
# - Multiple URLs: Use JSON array format for multiple instances
# - Example single: COMET_URL=https://comet.feels.legal
# - Example multi: COMET_URL='["https://comet1.example.com", "https://comet2.example.com"]'
#
# Scraper Context Modes:
# Each SCRAPE_* setting can control when scrapers are used:
# - true/both: Used for live scraping AND background scraping (default)
# - live: Only used for live scraping (when users request content)
# - background: Only used for background scraping (automatic content pre-caching)
# - false: Completely disabled
#
# Examples:
# SCRAPE_COMET=both # Used for both live and background scraping
# SCRAPE_TORRENTIO=live # Fast live scraping only
# SCRAPE_ZILEAN=background # Background cache building only
# SCRAPE_NYAA=false # Completely disabled
# SCRAPE_JACKETT=live # Jackett for live scraping only
# SCRAPE_PROWLARR=background # Prowlarr for background scraping only
SCRAPE_COMET=True
COMET_URL=["https://comet.feels.legal", "https://comet.stremiofr.com/"]
SCRAPE_ZILEAN=True
ZILEAN_URL=https://zileanfortheweebs.midnightignite.me
SCRAPE_STREMTHRU=True
STREMTHRU_SCRAPE_URL=https://stremthru.13377001.xyz
STREMTHRU_URL=https://stremthru.13377001.xyz
SCRAPE_BITMAGNET=True
#BITMAGNET_URL=https://bitmagnetfortheweebs.midnightignite.me
BITMAGNET_URL='["https://bitmagnetfortheweebs.midnightignite.me", "http://192.168.0.196:3333"]'
BITMAGNET_MAX_CONCURRENT_PAGES=5
BITMAGNET_MAX_OFFSET=15000 # Maximum number of entries to scrape
SCRAPE_TORRENTIO=True
TORRENTIO_URL=https://torrentio.strem.fun
SCRAPE_MEDIAFUSION=True
MEDIAFUSION_URL=https://mediafusion.elfhosted.com
MEDIAFUSION_API_PASSWORD= # API password for MediaFusion instances that require authentication
MEDIAFUSION_LIVE_SEARCH=True
SCRAPE_JACKETTIO=True
JACKETTIO_URL=https://jackettio.stremiofr.com/xxx
SCRAPE_NYAA=True
NYAA_ANIME_ONLY=True
NYAA_MAX_CONCURRENT_PAGES=5
SCRAPE_ANIMETOSHO=True
ANIMETOSHO_ANIME_ONLY=True
ANIMETOSHO_MAX_CONCURRENT_PAGES=8
SCRAPE_TORBOX=True
TORBOX_API_KEY=xxx
SCRAPE_TORRENTSDB=True
SCRAPE_PEERFLIX=True
DISABLE_TORRENT_STREAMS=False # When true, torrent-only requests return a friendly message instead of magnets
TORRENT_DISABLED_STREAM_NAME=[INFO] Comet # Stremio stream name shown when torrents are disabled
TORRENT_DISABLED_STREAM_DESCRIPTION=Pas de torrenting en direct # Description shown to users in Stremio
REMOVE_ADULT_CONTENT=False
RTN_FILTER_DEBUG=True # Set to True to log why torrents are excluded by RTN (debug only, verbose!)
DIGITAL_RELEASE_FILTER=False # Filter unreleased content
TMDB_READ_ACCESS_TOKEN=xxx
COMETNET_ENABLED=True
COMETNET_ADVERTISE_URL=wss://cometnet.xxx.xxx
COMETNET_KEYS_DIR=/data/cometnet/keys
COMETNET_POOLS_DIR=/data/cometnet/pools
# Network Discovery
COMETNET_BOOTSTRAP_NODES='["wss://cometnet-beta.feels.legal", "wss://cometnet.streamproxy.xyz", "wss://cometnet.selfhosting.sterzeck.com.br", "wss://https://cometnet.at16.co.uk/"]'
#COMETNET_BOOTSTRAP_NODES='["wss://cometnet-beta.feels.legal", "wss://cometnet.streamproxy.xyz"]'
COMETNET_MANUAL_PEERS=[] # JSON array: '["wss://friend.example.com:8765"]'
# Peer Management
COMETNET_MAX_PEERS=100
COMETNET_MIN_PEERS=3
# Contribution Mode: full (default) | consumer | source | leech
COMETNET_CONTRIBUTION_MODE=full
# Optional: Trust Pools (JSON array of pool IDs)
# COMETNET_TRUSTED_POOLS='["my-community"]'
# NAT Traversal (for home connections)
COMETNET_UPNP_ENABLED=True
# Gossip
COMETNET_GOSSIP_FANOUT=3
COMETNET_GOSSIP_INTERVAL=1.0
COMETNET_GOSSIP_MESSAGE_TTL=5
COMETNET_GOSSIP_MAX_TORRENTS_PER_MESSAGE=1000
COMETNET_GOSSIP_CACHE_TTL=300
COMETNET_GOSSIP_CACHE_SIZE=10000
# Validation
COMETNET_GOSSIP_VALIDATION_FUTURE_TOLERANCE=60
COMETNET_GOSSIP_VALIDATION_PAST_TOLERANCE=300
COMETNET_GOSSIP_TORRENT_MAX_AGE=604800
# Peer Discovery
COMETNET_PEX_BATCH_SIZE=20
COMETNET_PEER_CONNECT_BACKOFF_MAX=300
COMETNET_PEER_MAX_FAILURES=5
COMETNET_PEER_CLEANUP_AGE=604800
COMETNET_ALLOW_PRIVATE_PEX=False
COMETNET_SKIP_REACHABILITY_CHECK=False
COMETNET_REACHABILITY_RETRIES=5
COMETNET_REACHABILITY_RETRY_DELAY=10
COMETNET_REACHABILITY_TIMEOUT=10
# Transport
COMETNET_TRANSPORT_MAX_MESSAGE_SIZE=10485760
COMETNET_TRANSPORT_MAX_CONNECTIONS_PER_IP=3
COMETNET_TRANSPORT_PING_INTERVAL=30.0
COMETNET_TRANSPORT_CONNECTION_TIMEOUT=120.0
COMETNET_TRANSPORT_MAX_LATENCY_MS=10000.0
COMETNET_TRANSPORT_RATE_LIMIT_ENABLED=True
COMETNET_TRANSPORT_RATE_LIMIT_COUNT=20
COMETNET_TRANSPORT_RATE_LIMIT_WINDOW=1.0
# NAT Traversal
COMETNET_UPNP_ENABLED=False
COMETNET_UPNP_LEASE_DURATION=3600
# Reputation System
COMETNET_REPUTATION_INITIAL=100.0
COMETNET_REPUTATION_MIN=0.0
COMETNET_REPUTATION_MAX=10000.0
COMETNET_REPUTATION_THRESHOLD_TRUSTED=1000.0
COMETNET_REPUTATION_THRESHOLD_UNTRUSTED=50.0
COMETNET_REPUTATION_BONUS_VALID_CONTRIBUTION=0.001
COMETNET_REPUTATION_BONUS_PER_DAY_ANCIENNETY=10.0
COMETNET_REPUTATION_PENALTY_INVALID_CONTRIBUTION=50.0
COMETNET_REPUTATION_PENALTY_SPAM_DETECTED=100.0
COMETNET_REPUTATION_PENALTY_INVALID_SIGNATURE=500.0


En prime, on a les statistiques de flux.

![]()
🔥 HA-Animated-cards : Le Tweak Home Assistant qui change tout (sans JavaScript lourd)
HA-Animated-cards apporte des animations élégantes et “intelligentes” à vos cartes Mushroom dans Home Assistant, sans lourde custom card : prérequis, installation, exemples (prises, batteries, capteurs, lumières) et astuces pour personnaliser et gagner de la place.