Un dépôt GitHub créé le 3 octobre 2026 a passé les 8 400 étoiles en cinq semaines : Horizon, une réécriture complète de Minecraft Java Edition 26.3 en Rust, publiée sous licence MIT, sans une ligne de code ni un fichier de Mojang. Le projet revendique une parité vanilla de 100 % sur ce que mesurent ses 281 harnais de tests différentiels, enchaîne les versions de son launcher à un rythme quotidien, et surtout fournit horizon-server : un serveur dédié natif, sans machine virtuelle Java, qui s'installe en une commande sur un VPS Linux et accepte les clients vanilla 26.3 avec vérification des comptes. Pour qui administre un serveur Minecraft, la promesse mérite un examen sérieux : ce qui fonctionne, ce qui manque encore, comment le déployer sur un VPS Linux, et pour quel type de serveur cela a un sens aujourd'hui.
Sources : dépôt horizon-rust/horizon sur GitHub (README, docs/hosting.md, docs/server.md, docs/server-next.md, dossier benchmarks, script packaging/server/install.sh, pages des releases du launcher et de la build nightly) et documentation d'hébergement de playhorizon.dev, consultés le 10 novembre 2026. Version de Minecraft : fiche Java Edition 26.3 du Minecraft Wiki.
Horizon : ce que c'est, et ce que ce n'est pas
Horizon est une réimplémentation non officielle du client et du serveur de Minecraft Java Edition 26.3, la version « Wilderness Bound » sortie le 15 septembre 2026, qui impose Java 25 au minimum côté vanilla. Le code est écrit en Rust, compilé en binaire natif, et distribué sous licence MIT. Le projet n'est affilié ni à Mojang ni à Microsoft, et son README insiste sur un point que tout administrateur doit comprendre avant d'aller plus loin : Horizon ne contient ni code ni assets de Minecraft. Il lit les données du jeu depuis une copie que vous possédez. Côté joueur, le launcher Horizon demande un compte Microsoft propriétaire de Minecraft Java Edition et réutilise une installation existante, ou télécharge la 26.3 depuis Mojang avec ce compte. Côté serveur, l'outil horizon-prepare extrait les ressources nécessaires d'un server.jar 26.3 officiel. Rien n'est redistribué, rien n'est téléchargé à votre place.
La revendication de parité vanilla repose sur 281 harnais différentiels : des scénarios rejoués en parallèle sur Horizon et sur le serveur Java d'origine, dont les sorties sont comparées. Le README affiche « Java parity : 100 % » et précise honnêtement que ce chiffre ne porte que sur ce que les harnais comparent. Son registre de portage recense 833 écarts visibles par le joueur, tous fermés au dernier audit du 13 octobre 2026. Les écarts restants remontent par les issues GitHub, qui en comptait 597 ouvertes le 10 novembre, toutes catégories confondues.
Les chiffres d'adoption donnent la mesure de l'engouement : 8 421 étoiles, 1 343 forks et un dernier push le 10 novembre au matin. Le launcher est passé de la version 0.2.41 le 4 novembre, qui apportait un binaire natif Windows ARM64, à la 0.2.58 le 9 novembre : dix-sept versions en cinq jours, dont la 0.2.45 et la 0.2.48 le 6 novembre, cette dernière ajoutant le pilotage d'un serveur installé sur une autre machine via SSH. Le jeu lui-même suit un autre calendrier : sa dernière version numérotée, la 0.2.97, date du 28 octobre, et il est depuis distribué sous forme de build « Nightly » recompilée depuis la branche principale, celle du 8 novembre au moment où nous écrivons, que le launcher installe et maintient à jour. Le projet livre quatre composants : le launcher (Windows x64 et ARM64, macOS Apple Silicon et Intel, Linux x86-64 en AppImage ou archive), le client natif horizon-client, l'outil de pilotage horizon-ctl, et horizon-server, qui lance horizon-engine, le moteur du jeu compilé sans son ni interface pour servir des joueurs.
Ce qui marche et ce qui manque pour un serveur
Le tableau ci-dessous compare horizon-server à un serveur Minecraft Java classique, vanilla ou Paper, sur les points qui comptent pour un administrateur. Les colonnes Horizon reprennent la documentation officielle du projet au 10 novembre 2026.
| Fonction | horizon-server | Serveur Java (vanilla, Paper, Fabric) |
|---|---|---|
| Runtime | Binaire natif Rust, aucune JVM à installer sur le VPS | Java 25 minimum pour la 26.3 |
| Clients acceptés | Clients vanilla 26.3 et clients Horizon. L'option accept_older_clients pour la 26.2 est désactivée par défaut et encore en chantier : les paquets dont le format a changé entre 26.2 et 26.3 ne sont pas tous traduits | La version du serveur, ou plusieurs via ViaVersion sur Paper |
| Online mode | online_mode = true par défaut : chaque compte est vérifié auprès des services Mojang. Whitelist activée par défaut | online-mode=true par défaut |
| Plugins Bukkit, Spigot, Paper | Non pris en charge | Oui sur Paper et dérivés |
| Mods Java Forge, NeoForge, Fabric | Non : pas de JVM, donc aucun jar Java ne s'exécute. Horizon a ses propres formats .hmod et .hnmod | Oui, avec le loader correspondant |
| Monde vanilla existant | Réutilisé tel quel : init détecte le monde et importe server.properties ; ops.json, whitelist.json et les listes de bans gardent le format vanilla. Retour à vanilla possible | Natif |
| Sauvegardes | Intégrées : automatiques toutes les 6 h, 12 conservées, manuelles illimitées, restauration en une commande, sans arrêter le serveur | À monter soi-même : plugin, script, cron |
| Mises à jour | horizon-server update : sauvegarde du monde, bascule, redémarrage, retour arrière automatique si la nouvelle version ne démarre pas. Jamais automatique | Télécharger le nouveau jar à la main ou via un script |
| Panel web | Intégré, écoute uniquement en local (127.0.0.1:8130) : TPS, MSPT, RAM, CPU, joueurs, console, sauvegardes | Pterodactyl, Crafty ou autre, à installer à part |
| RCON, query | Oui, désactivés par défaut (enable-rcon, rcon.port, rcon.password, query GS4) | Oui |
| Proxy Velocity | Transfert de joueurs entre serveurs disponible mais désactivé par défaut, avec forwarding.secret obligatoire | Velocity et BungeeCord matures |
| Image Docker | Non publiée, à construire depuis le dépôt | Images communautaires nombreuses |
| Rechargement de la configuration | Partiel : config set applique à chaud le MOTD, le nombre de joueurs et les réglages de sauvegarde ; tout le reste attend le prochain redémarrage | Partiel selon le logiciel |
| Reprise après plantage | Superviseur intégré : relance le moteur, abandonne après 5 plantages en 10 minutes | Script ou unité systemd à écrire |
| Linux ARM | Pas de binaire : compilation depuis les sources | Java disponible partout |
La ligne qui tranche est celle des plugins et des mods. Tout ce qui fait la vie d'un serveur communautaire Java, les permissions, l'économie, les protections de terrain, les mini-jeux, repose sur des jars Bukkit ou des mods Fabric et Forge. Rien de tout cela ne tourne sur Horizon, et le projet ne le promet pas : son écosystème de mods natifs démarre à peine, et la documentation prévient que ces mods s'exécutent sans bac à sable. Si votre serveur dépend d'un modpack, notre guide pour héberger un serveur Minecraft moddé Forge ou Fabric reste la voie à suivre. Horizon vise d'abord le serveur vanilla, et c'est sur ce terrain qu'il faut le juger.
Installer horizon-server sur un VPS Linux
La procédure officielle tient en quelques commandes, mais elle a une particularité : le serveur a besoin des données du jeu, et celles-ci se préparent avec un Java 25 et un server.jar officiel. Sur un VPS sans interface, le plus simple est de faire cette préparation sur votre poste, puis d'importer le dossier produit. Prérequis :
- Un VPS Linux x86-64, sous Ubuntu 24.04 LTS ou Debian 13 par exemple. Les mesures du projet situent la mémoire du serveur entre 0,7 et 1,5 Go jusqu'à 50 joueurs : une offre VPS Linux Starter à 5,99 € HT par mois, avec 2 vCPU et 4 Go de RAM, suffit à un serveur entre amis ; la Classic à 9,99 € HT par mois (4 vCPU, 8 Go) donne de la marge en cœurs pour dépasser la vingtaine de joueurs.
- De l'espace disque pour l'archive du serveur (environ 45 Mo pour la build nightly du 8 novembre), les ressources préparées, votre monde et ses sauvegardes.
- Sur votre poste : Minecraft Java Edition 26.3 lancé au moins une fois avec le launcher officiel, un Java 25 et le
server.jar26.3 téléchargé depuis minecraft.net. - Un accès SSH par clé au VPS, idéalement durci selon notre guide pour sécuriser SSH sur un VPS Linux.
1. Installer le serveur sur le VPS. Le script officiel télécharge la build nightly courante, vérifie son empreinte SHA-256 publiée par GitHub et, si OpenSSL 3 est présent, la signature Ed25519 du fichier de sommes, puis place horizon-server et horizon-prepare dans ~/.local/bin, sans jamais demander sudo. Les versions et les fichiers de jeu vont dans ~/.local/share/horizon. Comme pour tout script distant, téléchargez-le et lisez-le avant de l'exécuter :
curl -fsSL https://raw.githubusercontent.com/horizon-rust/horizon/main/packaging/server/install.sh -o install.sh
less install.sh
sh install.sh
export PATH="$HOME/.local/bin:$PATH"
horizon-server --help
2. Préparer les fichiers du jeu sur votre poste. La même commande d'installation existe pour macOS, et une variante PowerShell pour Windows. Une fois horizon-prepare disponible, pointez-le vers le server.jar officiel :
horizon-prepare --prepare --server-jar ~/Downloads/server.jar
L'outil produit un dossier 26.3 dans son répertoire game-files. Copiez-le sur le VPS, puis importez-le avec la sous-commande prévue, qui vérifie le dossier et sa version avant de l'accepter. Un dossier préparé avec une version antérieure à la v2026.10.17.07 est refusé, car il lui manque registries.json et commands.json :
rsync -a --progress ./26.3/ utilisateur@ip-du-vps:~/horizon-resources/26.3/
ssh utilisateur@ip-du-vps
horizon-server import-resources ~/horizon-resources/26.3
3. Initialiser le serveur. init pose les questions habituelles (acceptation de l'EULA, nom et seed du monde, port, whitelist, premier opérateur) et écrit server.toml. Chaque question a son option en ligne de commande, donc l'étape se scripte. Si le dossier contient déjà un monde vanilla, il est conservé et le server.properties existant est importé, l'original étant gardé sous le nom server.properties.imported :
mkdir -p ~/minecraft-horizon && cd ~/minecraft-horizon
horizon-server init
horizon-server start
horizon-server status
horizon-server logs -f
Les commandes d'administration courantes passent par le même binaire : horizon-server op Pseudo, horizon-server whitelist add Pseudo, horizon-server cmd say Bonjour pour envoyer n'importe quelle commande de console, stop et restart. Pour la gestion de la liste blanche, les réflexes de notre guide sur la whitelist d'un serveur Minecraft s'appliquent tels quels, le format du fichier étant celui de vanilla.
4. Ouvrir le port et démarrer avec la machine. Le jeu écoute sur le 25565 TCP par défaut. Le panel (8130), l'API de contrôle et le RCON n'ont rien à faire sur Internet : laissez-les en écoute locale et n'ouvrez que le port de jeu, comme détaillé dans notre guide pour ouvrir les ports d'un serveur de jeu avec UFW. Pour le démarrage automatique, service install crée une unité systemd utilisateur ; il faut alors activer le lingering pour que le service survive à la fermeture de votre session SSH :
sudo ufw allow 25565/tcp
horizon-server service install
loginctl enable-linger "$USER"
5. Accéder au panel sans l'exposer. horizon-server panel affiche un lien de connexion à usage unique, valable dix minutes. Le panel n'écoute que sur 127.0.0.1 et refuse une adresse publique tant que panel.allow_public n'est pas forcé à true, en journalisant un avertissement à chaque démarrage si vous le faites. Depuis votre poste, ouvrez un tunnel SSH puis visitez http://127.0.0.1:8130. Une adresse de réseau privé configurée dans [panel] bind est l'autre option documentée, et notre guide sur Tailscale sur un VPS Linux montre comment la mettre en place.
ssh -L 8130:127.0.0.1:8130 utilisateur@ip-du-vps
horizon-server panel
Configuration, sauvegardes et mises à jour
Tout se règle dans un seul fichier, server.toml, à partir duquel le serveur régénère un server.properties compatible vanilla à chaque démarrage. Les valeurs par défaut sont celles de vanilla 26.3 (20 joueurs, difficulté easy, distance de vue 10). Les clés qu'un administrateur touche en premier :
[server]
motd = "Survie entre amis"
port = 25565
max_players = 20
online_mode = true
whitelist = true
view_distance = 10
simulation_distance = 10
[world]
name = "world"
seed = ""
game_mode = "survival"
difficulty = "normal"
[engine]
restart_on_crash = true
low_memory = false
[backups]
every = "6h" # "0" pour désactiver les sauvegardes automatiques
keep = 12
[panel]
bind = "127.0.0.1:8130"
Une clé inconnue ou une valeur que vanilla refuserait empêche le démarrage, et toute autre clé de server.properties se place dans une section [properties] avec sa syntaxe d'origine. L'option low_memory désactive les pages mémoire larges de l'allocateur : sur le VPS 4 cœurs EPYC du projet, avec 20 bots, elle fait passer la mémoire d'environ 1 180 à 980 Mo pour un tick plus long de 1,2 %. Utile sur un petit VPS, inutile dès 8 Go.
Les sauvegardes sont le point fort pratique de l'outil. horizon-server backup avant-event crée une archive du monde, des fichiers vanilla et de server.toml dans backups/, sans arrêter le jeu : le serveur suspend l'écriture automatique, force une sauvegarde, zippe le monde et reprend. Les sauvegardes automatiques suivent every et keep ; les manuelles ne sont jamais supprimées. restore NOM remet une archive en place en déplaçant le monde remplacé dans backups/replaced-<heure>/, et accepte --dimension pour ne restaurer que le Nether ou l'End. Ces archives restent sur le disque du VPS : copiez-les ailleurs, par exemple avec la méthode de notre guide pour sauvegarder un VPS avec rsync vers un hôte distant.
Les mises à jour suivent une logique prudente : le serveur vérifie l'existence d'une nouvelle version une minute après son démarrage puis toutes les six heures, la signale dans le journal, dans status et dans le panel, mais ne l'installe jamais seul. La commande update sauvegarde le monde, bascule sur la nouvelle build, redémarre, et revient automatiquement à l'ancienne version en restaurant le monde si la nouvelle ne démarre pas. rollback fait la même chose à la main, et la variable HORIZON_NO_UPDATE_CHECK=1 coupe la vérification si vous préférez gérer le rythme vous-même.
horizon-server update --check
horizon-server update
horizon-server rollback
Performances : les chiffres publiés par le projet
Le projet publie ses propres mesures et leurs limites. Le banc le plus parlant pour un VPS est celui du 19 octobre 2026, détaillé dans le dossier benchmarks du dépôt : un portable à processeur Core i7-7500U (2 cœurs, 4 threads), des bots pilotés depuis une autre machine, et quatre serveurs comparés sur la même configuration, Horizon v2026.10.19, vanilla 26.3 sur OpenJDK 25 avec 4 Go de tas, Paper 26.3 build 205, et Fabric avec Lithium. Une seule passe par configuration, préviennent les auteurs.
| Bots | Serveur | MSPT moyen | P99 | TPS | RSS | CPU | Démarrage |
|---|---|---|---|---|---|---|---|
| 1 | Horizon | 13,7 ms | 27,4 ms | 20 | 0,72 Go | 46 % | 8,3 s |
| Vanilla | 17,3 ms | 36,4 ms | 20 | 3,44 Go | 55 % | 14,9 s | |
| Paper | 10,3 ms | 22,5 ms | 20 | 4,24 Go | 32 % | 22,3 s | |
| Fabric + Lithium | 12,5 ms | 32,7 ms | 20 | 3,43 Go | 46 % | 17,6 s | |
| 10 | Horizon | 22,9 ms | 53,3 ms | 20 | 0,92 Go | 67 % | 8,2 s |
| Vanilla | 22,9 ms | 56,5 ms | 20 | 3,71 Go | 101 % | 14,7 s | |
| Paper | 20,6 ms | 56,3 ms | 20 | 4,07 Go | 74 % | 20,5 s | |
| Fabric + Lithium | 20,2 ms | 56,1 ms | 20 | 3,73 Go | 94 % | 16,6 s | |
| 25 | Horizon | 30,9 ms | 72,0 ms | 20 | 1,01 Go | 99 % | 8,5 s |
| Vanilla | 37,4 ms | 82,7 ms | 20 | 3,94 Go | 191 % | 15,5 s | |
| Paper | 28,3 ms | 90,4 ms | 20 | 4,16 Go | 124 % | 19,0 s | |
| Fabric + Lithium | 31,4 ms | 93,4 ms | 20 | 3,88 Go | 174 % | 17,5 s | |
| 50 | Horizon | 47,8 ms | 73,2 ms | 20 | 1,11 Go | 143 % | 8,3 s |
| Vanilla | Arrêté par son watchdog (tick de 60 s) | ||||||
| Paper | 46,9 ms | 109,7 ms | 20 | 4,35 Go | 210 % | 19,4 s | |
| Fabric + Lithium | 58,3 ms | 174,4 ms | 17,2 | 4,52 Go | 236 % | 17,5 s | |
Les auteurs résument eux-mêmes : Horizon est devant sur la mémoire, le temps de démarrage, la consommation CPU à partir de 10 joueurs et la régularité du tick (P99), mais Paper garde un tick moyen plus court à tous les paliers, et Fabric avec Lithium le devance à 1 et 10 joueurs. La documentation du serveur ajoute qu'Horizon prend l'avantage avec peu de joueurs et en exploration, tandis qu'avec 25 à 50 joueurs regroupés près du spawn, le tick de vanilla a été plus court que le sien. Pour un VPS, la lecture est simple : avec 1 à 2 Go de mémoire résidente là où tout serveur Java en réclame 3,4 à 4,5, Horizon tient sur 4 Go avec de la place pour le système, et 2 vCPU couvrent une cinquantaine de joueurs au sens de ce banc. Au-delà de 50 joueurs actifs, la documentation d'hébergement demande davantage de cœurs, et notre article sur les vCPU des VPS explique pourquoi tous ne se valent pas.
Un second banc, du 29 octobre 2026 sur un Mac mini M4 Pro partagé, pousse jusqu'à 100 bots face à vanilla 26.3 (Temurin 25, 4 Go de tas) et à Pumpkin, autre serveur en Rust, en mode hors ligne et monde neuf. Les auteurs préviennent que les écarts inférieurs à 20 % relèvent du bruit sur cette machine.
| Bots | Horizon : TPS, MSPT moyen, RSS, cœurs CPU | Vanilla 26.3 : TPS, MSPT moyen, RSS, cœurs CPU |
|---|---|---|
| 10 | 20,0 TPS ; 11,3 ms ; 1,17 Go ; 1,01 cœur | 16,7 TPS ; 41,1 ms ; 3,33 Go ; 0,79 cœur |
| 50 | 20,0 TPS ; 28,7 ms ; 1,54 Go ; 2,11 cœurs | 5,3 TPS ; 58,8 ms ; 3,47 Go ; 0,70 cœur |
| 100 | 14,3 TPS ; 79,2 ms ; 2,05 Go ; 4,42 cœurs | 2,2 TPS ; 108,3 ms ; 3,70 Go ; 1,37 cœur |
À 100 bots, plus personne ne tient 20 TPS : Horizon tombe à 14 et mobilise plus de quatre cœurs, tandis que vanilla s'effondre à 2 TPS. Le démarrage prend 9 à 14 secondes contre 25 à 34 pour vanilla sur cette machine. Autrement dit, Horizon gagne nettement sur la mémoire, le démarrage et la stabilité du tick face à vanilla, mais un Paper bien réglé selon notre guide pour optimiser les performances et le TPS d'un serveur Minecraft reste plus rapide par tick sur un serveur peuplé. Le projet le sait : sa feuille de route serveur vise 200 joueurs à 20 TPS sur 8 cœurs, une sauvegarde hors du thread de tick, des métriques Prometheus et une API de plugins serveur.
Pour quel serveur Minecraft est-ce pertinent aujourd'hui ?
Oui, sans hésiter, pour un serveur survie vanilla entre amis, en whitelist, sur un petit VPS : pas de JVM à installer ni à dimensionner, 1 Go de RAM utilisé, sauvegardes et mises à jour comprises sans panel tiers, et des joueurs qui se connectent avec leur launcher officiel sans rien installer. C'est exactement le profil de notre guide pour héberger un serveur Minecraft entre amis, avec un fichier de configuration en moins et une commande de restauration en plus. C'est aussi un bon choix pour un serveur de test, si vous voulez suivre le projet de près ou mesurer vous-même les écarts de comportement.
Non, pas encore, pour tout serveur qui vit de ses plugins ou de ses mods Java, pour un réseau de plusieurs serveurs derrière Velocity ou BungeeCord, pour une communauté qui joue encore en 26.2, pour un VPS ARM, et pour un serveur public de plusieurs dizaines de joueurs où Paper fait mieux par tick. Il faut aussi accepter le rythme du projet : des builds nightly, un dépôt vieux de cinq semaines, près de 600 issues ouvertes et une configuration qui ne se recharge qu'en partie à chaud. Gardez le server.jar vanilla sous la main : le monde et ses fichiers restent au format d'origine, et la documentation prévoit explicitement le retour à vanilla.
Un dernier point, non négociable : laissez online_mode à true. Le mode hors ligne laisse n'importe qui entrer sous n'importe quel pseudo, et le projet lui-même le réserve à un réseau local ou à un réseau privé avec whitelist. Chaque joueur a besoin d'un compte Microsoft possédant le jeu, sur Horizon comme sur vanilla ; c'est la condition qui rend l'ensemble légal.
Conclusion
Horizon n'est pas un énième fork de Paper : c'est un moteur Minecraft Java 26.3 complet, écrit en Rust, qui supprime la JVM du serveur et livre avec lui ce que les administrateurs bricolent d'habitude à part, sauvegardes, mises à jour avec retour arrière, panel local, superviseur et service systemd. Au 10 novembre 2026, il est pertinent pour un serveur vanilla de petite ou moyenne taille sur un VPS Linux, et hors sujet pour tout ce qui repose sur des plugins ou des mods Java, domaine où notre hébergement Minecraft avec serveur Java reste la réponse. Si votre serveur entre dans la première catégorie, l'essai coûte une commande, un dossier à importer et une heure de votre temps. Et si la question du budget se pose avant celle de la technique, notre article sur ce que coûte un serveur Minecraft compare VPS, offre gérée et serveur dédié.
FiveM
Minecraft
Rust
RedM
Hytale