Panneau local · modpacks & serveur Minecraft moddé

Monter un modpack ne devrait pas demander six onglets.

Chercher sur Modrinth, revérifier sur CurseForge, installer dans Prism, redéposer le jar sur le serveur, recommencer au mod suivant… ChaosOrder ramène tout ça dans un seul panneau local : une recherche sur les deux stores, une installation liée partout — launchers et serveur.

2 stores, 1 rechercheModrinth et CurseForge dans les mêmes résultats, filtrés version & loader — côté CurseForge via une clé Core API gratuite
1 installationun magasin partagé, lié par symlinks à chaque launcher et au serveur
0 copie à la mainplus de jar à redéposer dans le dossier du serveur à chaque changement
127.0.0.1local par construction — IP publique refusée par défaut dans le code, opt-in explicite réservé au container derrière VPN
Le problème

Aujourd'hui, chaque mod te fait courir.

Un modpack, c'est des dizaines de mods — et pour chacun, le même aller-retour entre les sites, les launchers et le serveur. C'est exactement ce trajet que ChaosOrder supprime.

Sans

  • Le mod est sur Modrinth ? Sinon, on refait la recherche sur CurseForge — autre site, autres filtres.
  • La bonne version du jeu ? Le bon loader ? À vérifier à la main, mod par mod.
  • L'installer dans Prism… puis dans l'app CurseForge… puis redéposer le jar sur le serveur.
  • Client et serveur dérivent : un oubli d'un côté, et ça refuse de se connecter.
  • Les mises à jour ? Repasser sur chaque page de chaque mod.

Avec ChaosOrder

  • Une seule recherche — les deux stores répondent ensemble, déjà filtrés pour ta version et ton loader (côté CurseForge : clé gratuite ; sans elle, Modrinth complet + ajout CurseForge par lien collé).
  • Une seule installation — dans le magasin partagé, liée d'un coup aux launchers et au serveur.
  • « Tout vérifier » — les mises à jour disponibles repérées en un lot, sur les deux stores.
  • Mettre un mod de côté sans le perdre : .disabled, la convention native des loaders.
  • Une bêtise ? L'historique annule ce qui peut l'être — mods, joueurs, scripts.
Le magasin partagé

Installé une fois. Lié partout.

Chaque mod a un exemplaire de référence, dans un magasin partagé — puis des symlinks le rendent présent dans chaque launcher activé et sur le serveur. Les emplacements ne divergent pas : ils pointent tous vers le même fichier.

Magasin partagé
~/.config/…/store/
Prism Launchersymlink
Serveur (dossier mods)symlink
Modrinth Appoptionnel
CurseForge Appoptionnel
Désactiver sans désinstaller. Mettre un mod de côté renomme le fichier réel (et ses liens) en .disabled — la convention que les loaders Minecraft reconnaissent nativement. Il reste là, prêt à revenir.
Le magasin reste la référence. Si un emplacement vit sur un autre volume (où le lien est impossible), le fichier y est copié depuis le magasin — l'exemplaire de référence, lui, ne bouge pas.
Le panneau

Le pack d'un côté, le serveur de l'autre.

Huit onglets dans la même interface : la moitié pack — chercher, installer, vérifier les mises à jour, annuler — et la moitié serveur — console RCON, tableau de bord, joueurs, scripts, nettoyage. Plus besoin d'un terminal SSH à côté.

ChaosOrder
serveur en ligne

Tout le magasin partagé, filtré par type — avec « Tout vérifier » pour repérer les mises à jour en lot sur les deux stores (jamais automatique : le quota CurseForge est précieux).

MODS
1.21.1
NEOFORGE
C
Create CurseForge↑ 0.6.1 dispo
Activé
O
Oculus Désactivé
oculus-1.8.1.jar.disabled

Commandes RCON + flux de logs du serveur en direct (SSE) — dans le navigateur, pas dans un terminal.

14:02:11 [Server] Joueur jeb_ connecté
14:02:44 [Server] Faible TPS détecté (14.2)
14:03:01 [Server] Exception dans mekanism:reactor
14:03:12 [Server] Sauvegarde du monde effectuée
/gamemode creative jeb_

L'état du serveur en un coup d'œil — et démarrer, arrêter, redémarrer sans quitter la page.

Joueurs
3 / 8
TPS
19.8
Mémoire
6.2 / 8 Go

Liste blanche, opérateurs, bannis. Les mutations passent par RCON (serveur démarré requis) — le serveur résout lui-même le pseudo en UUID, même si le joueur ne s'est jamais connecté.

Liste blanche · 3

jeb_
Alex
Notch

Opérateurs · 1

jeb_

Bannis · 2

Griefer42
x_botspam_x

Éditeur KubeJS (Monaco, vendorisé localement — aucun CDN), complétion calibrée sur les typings réels générés par ProbeJS. server_scripts se recharge à chaud.

server_scripts / recipes.js↻ /reload
// recette ajoutée au chargement
ServerEvents.recipes(event => {
  event.shaped('minecraft:diamond', ['XXX'], { X: 'minecraft:coal' })
})

Tuer les entités d'un type donné, avec zone optionnelle — jamais sans confirmation.

Tuer 214 entités « zombie » ?
Zone : rayon 64 autour de 128, -340. Action irréversible. Le type player est bloqué explicitement — jamais utilisable, même par erreur.

Chaque action mutante est journalisée, avec un bouton « Annuler » quand l'action inverse existe — elle est rejouée par les mêmes fonctions que l'action d'origine, mêmes validations, aucun raccourci.

Installation de Create
il y a 2h · store → prism, serveur
Ajout de jeb_ à la liste blanche
il y a 1j · via RCON
✓ Annulé
Bannissement de Griefer42
il y a 3j · via RCON
Sécurité

Un outil qui peut tout changer se garde tout seul.

Mods, joueurs, scripts, entités : ChaosOrder a la main sur beaucoup. Sa réponse n'est pas la confiance — c'est la contrainte, dans le code.

  • Local par construction

    Le service écoute sur 127.0.0.1:8765 et refuse toute IP publique routable dans le code — l'ouvrir demande un opt-in explicite, pensé pour le container. Et comme l'outil parle uniquement HTTP en clair (pas de TLS natif), le maillage chiffré (Tailscale/WireGuard) n'est pas un conseil : c'est l'exigence — sur un tronçon non chiffré, le cookie de session circulerait en clair.

  • Verrouillé tant qu'aucun compte n'existe

    Sans mot de passe configuré, l'outil démarre mais reste inutilisable. L'auth se pose en ligne de commande (jamais via le web) : Argon2id, TOTP recommandé, cookie HttpOnly · SameSite=Strict, recul exponentiel sur les échecs.

  • Zéro cloud, zéro CDN

    Monaco est vendorisé localement, aucune ressource tierce chargée. Ce que tu héberges tourne entièrement chez toi — la seule sortie réseau, c'est vers les stores de mods.

$ mc-service --setup-auth
mot de passe (12 caractères min.) : ••••••••••••
secret TOTP généré
otpauth://totp/ChaosOrder?secret=…
identifiants rangés · ~/.config/mc_service/auth.json · chmod 600
 
$ mc-service
écoute sur 127.0.0.1:8765
Auto-héberger

Local d'abord. Quatre étapes, ton serveur.

ChaosOrder tourne chez toi, à côté de ton serveur. Rien n'est câblé sur un pack en particulier — tout vient de la config.

  1. ConfigurerCopie config.example.json vers config.json et pointe-le sur ton instance Prism et ton serveur. Le même binaire pilote n'importe quelle instance NeoForge.
  2. Compiler le servicecargo build --release -p mc_service — un seul binaire, mc-service.
  3. Poser l'authentificationmc-service --setup-auth — mot de passe + TOTP, en ligne de commande, jamais via le web.
  4. Lancermc-service puis ouvre http://127.0.0.1:8765.
Recherche CurseForge : ajoute une clé Core API gratuite (console.curseforge.com) dans ~/.config/…/curseforge.key. Sans clé, l'outil se dégrade proprement — recherche Modrinth complète, ajout CurseForge par lien collé.
En container ? Une image Docker officielle et un amorçage déclaratif de l'authentification existent pour un déploiement reproductible — derrière un maillage chiffré (Tailscale/WireGuard), pas directement sur Internet.