Prérequis
- Un serveur sous Ubuntu, Debian, AlmaLinux, Rocky, CentOS, Fedora ou openSUSE : voir nos VPS au Canada
- Une connexion SSH ouverte en root : Se connecter en SSH à votre VPS
- 1 Go de disque libre et 1 Go de RAM
- Un nom de domaine dont l'enregistrement A pointe sur l'adresse IP du serveur (dans ce guide : votredomaine.com, à remplacer) : depuis Among Us 16.0.5, le jeu n'accepte qu'un serveur en HTTPS
Ce guide installe Impostor, le serveur Among Us libre qui remplace les serveurs officiels : un utilisateur dédié, le serveur (une archive de 657 Ko), le moteur .NET 8 dont il a besoin (93 Mo), son adresse publique, un service qui le démarre avec la machine, le pare-feu, Caddy qui met le serveur en HTTPS avec un certificat Let's Encrypt (le jeu l'exige depuis Among Us 16.0.5), la connexion depuis le jeu (un fichier de région à donner aux joueurs) et la mise à jour. Pas de SteamCMD ici : Impostor se télécharge depuis sa page GitHub. Choisissez votre système ci-dessus. Copiez la commande avec le bouton Copier, collez-la dans votre terminal, et comparez avec le résultat attendu.
1Mettre à jour le système et installer curl
Le système est mis à jour, puis curl, qui télécharge le serveur et le moteur .NET, est installé.
apt update && apt upgrade -y... 212 upgraded, 8 newly installed, 0 to remove and 4 not upgraded. (les nombres dépendent de l'âge de l'image)
dnf upgrade -y... Complete!
dnf upgrade -y... Complete!
zypper -n refresh && zypper -n updateAll repositories have been refreshed. ...
apt install -y curldnf install -y curldnf install -y curlzypper -n install curl2Créer un utilisateur dédié et télécharger le serveur
Le serveur ne tourne jamais en root : un utilisateur impostor, dont le dossier personnel est /opt/impostor, possède le serveur et le moteur .NET. Le dossier est créé avant l'utilisateur : sur Rocky et CentOS, SELinux refuse à useradd de le créer lui-même sous /opt.
mkdir -p /opt/impostor/server && useradd -r -s /bin/bash -d /opt/impostor impostor && chown -R impostor:impostor /opt/impostorLa version 1.10.8 est la dernière publiée à la date de ce guide ; la page https://github.com/Impostor/Impostor/releases donne la version courante, remplacez le numéro deux fois dans l'adresse s'il a changé.
su - impostor -c "cd /opt/impostor/server && curl -fsSL https://github.com/Impostor/Impostor/releases/download/v1.10.8/Impostor-Server_1.10.8_linux-x64.tar.gz | tar zxf - && ls"Impostor.Api.pdb Impostor.Api.xml Impostor.Server Impostor.Server.pdb Impostor.Server.xml config.json packages.lock.json
3Installer le moteur .NET 8
Impostor est un programme .NET : sans le moteur, il répond « You must install .NET to run this application ». Le script officiel de Microsoft installe le moteur ASP.NET Core 8 (qui contient le moteur .NET de base) dans /opt/impostor/dotnet, sans toucher au système.
su - impostor -c "cd /opt/impostor && curl -fsSL https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh && bash dotnet-install.sh --runtime aspnetcore --channel 8.0 --install-dir /opt/impostor/dotnet && ls /opt/impostor/dotnet/shared/ && du -sh /opt/impostor/dotnet"dotnet-install: Attempting to download using aka.ms link https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/8.0.31/aspnetcore-runtime-8.0.31-linux-x64.tar.gz dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/8.0.31/aspnetcore-runtime-8.0.31-linux-x64.tar.gz size is 42028114 bytes. dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/8.0.31/aspnetcore-runtime-8.0.31-linux-x64.tar.gz dotnet-install: Downloaded file size is 42028114 bytes. dotnet-install: The remote and local file sizes are equal. dotnet-install: Installed version is 8.0.31 dotnet-install: Adding to current process PATH: `/opt/impostor/dotnet`. Note: This change will be visible only when sourcing script. dotnet-install: Note that the script does not resolve dependencies during installation. dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section. dotnet-install: Installation finished successfully. Microsoft.AspNetCore.App Microsoft.NETCore.App 93M /opt/impostor/dotnet
4Régler l'adresse publique du serveur
Le fichier /opt/impostor/server/config.json porte l'adresse que le serveur annonce aux joueurs : 127.0.0.1 par défaut, ce qui ne laisse entrer personne d'autre que la machine elle-même. Remplacez 203.0.113.42 par l'adresse IP de votre serveur. La même commande replie le matchmaker HTTP (section HttpServer) sur 127.0.0.1 : seul Caddy (étape 8) lui parlera, en HTTPS ; le trafic du jeu (section Server) reste sur 0.0.0.0.
sed -i 's/"PublicIp": "127.0.0.1"/"PublicIp": "203.0.113.42"/; /"HttpServer"/,/}/ s/"ListenIp": "0.0.0.0"/"ListenIp": "127.0.0.1"/' /opt/impostor/server/config.json && grep -n 'PublicIp\|ListenIp' /opt/impostor/server/config.json3: "PublicIp": "203.0.113.42", 5: "ListenIp": "0.0.0.0", 10: "ListenIp": "127.0.0.1",
Server.PublicIp- L'adresse que les joueurs reçoivent ; obligatoire
Server.PublicPort / ListenPort- Le port du jeu, 22023 par défaut (UDP)
HttpServer.ListenIp / ListenPort- Le matchmaker, que le jeu contacte en premier : 127.0.0.1 et 22023, derrière Caddy
AntiCheat.Enabled / BanIpFromGame- true par défaut : un joueur pris à tricher est expulsé, et banni si BanIpFromGame est true
Compatibility.AllowVersionMixing- true pour laisser jouer ensemble des versions du jeu qu'Impostor n'a pas déclarées compatibles
Compatibility.AllowFutureGameVersions- true pour accepter une version du jeu plus récente que celle qu'Impostor connaît
5Créer le script de démarrage et le service
Le script dit au serveur où est son moteur .NET (DOTNET_ROOT) et le service le lance sous l'utilisateur impostor, le relance s'il tombe et l'arrête proprement à l'extinction de la machine.
cat > /opt/impostor/start.sh << 'EOF'
#!/bin/sh
cd /opt/impostor/server
export DOTNET_ROOT=/opt/impostor/dotnet DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
exec ./Impostor.Server
EOF
chmod +x /opt/impostor/start.sh && chown -R impostor:impostor /opt/impostorcat > /etc/systemd/system/impostor.service << 'EOF'
[Unit]
Description=Serveur Among Us (Impostor)
After=network.target
[Service]
User=impostor
Group=impostor
WorkingDirectory=/opt/impostor/server
ExecStart=/opt/impostor/start.sh
TimeoutStopSec=30
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload && systemctl enable --now impostorCreated symlink /etc/systemd/system/multi-user.target.wants/impostor.service → /etc/systemd/system/impostor.service.
systemctl is-active impostor && journalctl -u impostor --no-pager | grep -h 'Starting Impostor\|Matchmaker is listening\|Application started' && ss -lunp | grep 22023 | awk '{print $4}' && ss -ltnp | grep 22023 | awk '{print $4}' && curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:22023/active Sep 22 01:22:58 serveur start.sh[76739]: [01:22:58 INF] Starting Impostor v1.10.8+5ee0fdb61f3f103342fe4176640dca1322b4e0f8 Sep 22 01:22:58 serveur start.sh[76739]: [01:22:58 INF] Matchmaker is listening on 0.0.0.0:22023, the public server ip is 203.0.113.42:22023. Sep 22 01:22:58 serveur start.sh[76739]: [01:22:58 INF] Application started. Press Ctrl+C to shut down. 0.0.0.0:22023 127.0.0.1:22023 200 (le journal porte aussi « [WRN] Since Among Us 16.0.5 it is required to support HTTPS for players to connect » : c'est l'étape 8)
6Gérer le serveur
Le serveur écrit son journal dans journald ; chaque changement de config.json demande un redémarrage.
systemctl status impostorjournalctl -u impostor -fsystemctl restart impostorsystemctl stop impostorsystemctl start impostor7Ouvrir les ports dans le pare-feu
Le jeu joue en UDP sur le port 22023 ; Caddy (étape 8) reçoit les joueurs en HTTPS sur le port 443 et obtient son certificat par le port 80 : les trois s'ouvrent. La commande active le pare-feu du système en gardant SSH autorisé, puis ouvre les ports.
apt install -y ufw && ufw allow 22/tcp && ufw allow 22023/udp && ufw allow 80,443/tcp && ufw --force enable... Firewall is active and enabled on system startup
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=22023/udp --add-port=80/tcp --add-port=443/tcp && firewall-cmd --reload... success success
dnf install -y firewalld && systemctl enable --now firewalld && firewall-cmd --permanent --add-port=22023/udp --add-port=80/tcp --add-port=443/tcp && firewall-cmd --reload... success success
firewall-cmd --permanent --add-port=22023/udp --add-port=80/tcp --add-port=443/tcp && firewall-cmd --reloadsuccess success
ufw statusStatus: active 22/tcp ALLOW Anywhere 22023/udp ALLOW Anywhere 80,443/tcp ALLOW Anywhere
firewall-cmd --list-ports80/tcp 443/tcp 22023/udp
firewall-cmd --list-ports80/tcp 443/tcp 22023/udp
firewall-cmd --list-ports80/tcp 443/tcp 22023/udp
8Mettre le serveur en HTTPS avec Caddy
Depuis Among Us 16.0.5, le jeu n'accepte qu'un matchmaker en HTTPS, et Impostor ne gère pas les certificats : Caddy, un serveur web des dépôts du système, se place devant lui, demande un certificat Let's Encrypt pour votre domaine (par le port 80, d'où l'étape 7) et le renouvelle lui-même. Le domaine doit déjà pointer sur l'adresse IP du serveur.
apt install -y caddydnf install -y epel-release && dnf install -y caddydnf install -y caddyzypper -n install caddycat > /etc/caddy/Caddyfile << 'EOF'
votredomaine.com
reverse_proxy 127.0.0.1:22023
EOFsystemctl restart caddysystemctl enable --now caddyCreated symlink /etc/systemd/system/multi-user.target.wants/caddy.service → /usr/lib/systemd/system/caddy.service.
systemctl enable --now caddyCreated symlink '/etc/systemd/system/multi-user.target.wants/caddy.service' → '/usr/lib/systemd/system/caddy.service'.
systemctl enable --now caddyCreated symlink '/etc/systemd/system/multi-user.target.wants/caddy.service' → '/usr/lib/systemd/system/caddy.service'.
systemctl is-active caddy && journalctl -u caddy --no-pager | grep -o '"msg":"certificate obtained successfully","identifier":"[^"]*"' && curl -s -o /dev/null -w '%{http_code}\n' https://votredomaine.com/active "msg":"certificate obtained successfully","identifier":"votredomaine.com" 200
9Se connecter au serveur
Among Us n'a pas de champ « adresse du serveur » : chaque joueur ajoute une région au jeu avec un fichier regionInfo.json, que le site d'Impostor fabrique pour vous.
- Ouvrez https://impostor.github.io/Impostor/ : choisissez https://, entrez votre domaine (Server address), le port 443 (Port) et un nom (Server name).
- Sur PC, cliquez « Open in Among Us » avec le jeu lancé : la région s'ajoute d'elle-même. Sinon, cliquez « Download server file », vérifiez que le fichier s'appelle regionInfo.json (pas regionInfo (1).json), puis copiez-le dans le dossier %APPDATA%\..\LocalLow\Innersloth\Among Us (touche Windows + R, collez le chemin, Entrée).
- Lancez Among Us, cliquez « Online », puis choisissez votre région dans le menu en bas à droite : les parties créées là passent par votre serveur.
- Donnez le même domaine, le même port et le même nom à vos joueurs : chacun fait la même manipulation.
10Mettre à jour le serveur
Une nouvelle version d'Impostor s'installe en décompressant la nouvelle archive par-dessus l'ancienne, serveur arrêté ; config.json est exclu de la décompression, vos réglages restent. Prenez le numéro de version sur https://github.com/Impostor/Impostor/releases et remplacez-le deux fois dans l'adresse. Le moteur .NET se met à jour avec la même commande qu'à l'étape 3.
systemctl stop impostor && su - impostor -c "cd /opt/impostor/server && curl -fsSL https://github.com/Impostor/Impostor/releases/download/v1.10.8/Impostor-Server_1.10.8_linux-x64.tar.gz | tar zxf - --exclude=config.json && grep -n PublicIp config.json" && systemctl start impostor3: "PublicIp": "203.0.113.42",
Erreurs fréquentes
Le serveur ne trouve pas son moteur : refaites l'étape 3 (le moteur dans /opt/impostor/dotnet) et vérifiez que start.sh exporte DOTNET_ROOT=/opt/impostor/dotnet (étape 5).
L'adresse publique n'a pas été écrite dans config.json : refaites l'étape 4 avec l'adresse IP de votre serveur, puis systemctl restart impostor. Le serveur tourne quand même, mais personne d'autre que la machine ne peut s'y connecter.
Le moteur est déjà là : rien à faire, c'est la réponse de la commande de l'étape 3 quand on la relance.
Impostor l'écrit à chaque démarrage, Caddy en place ou non : c'est l'étape 8 qui fait le HTTPS. Vérifiez-la avec sa dernière boîte (certificat obtenu, réponse 200).
Caddy tourne, mais Impostor derrière lui est arrêté : systemctl start impostor, puis relancez la boîte.
Ligne d'information sur HTTP/3, sans effet : le certificat s'obtient et le matchmaker répond 200 quand même.
Serveur prêt
Votre serveur Among Us démarre avec la machine, se relance s'il tombe, joue sur le port 22023 et reçoit les joueurs en HTTPS sur votre domaine. Donnez le domaine, le port 443 et le nom de la région à vos joueurs.