Utiliser NSSM pour démarrer Valheim Dedicated Server

Dans cet article, j’expliquerai comment utiliser NSSM pour démarrer Valheim Dedicated Server en tant que service. Dernièrement, j’ai eu la piqûre pour le jeu d’exploration et de survie Valheim. Je voulais que mon monde soit hébergé sur mon serveur Windows et que mes amis puissent y accéder facilement. Heureusement, les outils mis à notre disposition sont relativement faciles à utiliser.

La première étape est d’installer le serveur. Je ne voulais pas devoir installer Steam sur mon serveur et je ne voulais pas devoir y lier mon profil. La bonne nouvelle est que SteamCMD existe pour pallier à ce problème. Il suffit de télécharger le fichier zip pour Windows et de l’extraire. Une fois disponible, il faut exécuter l’application steamcmd.exe. Une fenêtre de commande devrait être disponible. Voici les commandes à écrire:

login anonymous
app_update 896660
quit

Ces commandes servent à installer ou mettre à jour Valheim Dedicated Server. Une fois l’installation terminée, dans votre dossier SteamCMD il devrait y avoir un nouveau dossier nommé \steamapps\common\Valheim dedicated server. Ce dossier est important pour la prochaine étape.

La deuxième étape est de démarrer le serveur. La plupart des tutoriels vont dire de créer une copie du fichier start_headless_server.bat pour y inscrire vos informations, mais dans notre cas nous allons seulement nous en inspirer pour démarrer le service avec NSSM. NSSM signifie Non-Sucking Service Manager et, comme son nom l’indique, est un gestionnaire de service « performant ». L’application possède une interface graphique pour installer, éditer ou supprimer un service créé à partir de NSSM. Par contre, dans cet article, c’est plutôt des lignes de commande que nous utiliserons. Alors sans plus tarder, voici ces commandes (qui devront être modifiées pour accommoder vos préférences):

set valheimpath=C:\SteamCmd\steamapps\common\Valheim dedicated server
nssm install valheim "%valheimpath%\valheim_server"
nssm set valheim AppDirectory "%valheimpath%"
nssm set valheim AppParameters "-nographics -batchmode -name \"Nom du Serveur\" -port 2456 -world \"Monde\" -password \"MotDePasse\" -savedir \"C:\Valheim\" -public 1"
nssm set valheim DisplayName "Valheim Dedicated Server"
nssm set valheim Description "A server for the Valheim game."
nssm set valheim Start SERVICE_DELAYED_AUTO_START
nssm set valheim AppStdout "%valheimpath%\logs\nssm.log"
nssm set valheim AppStderr "%valheimpath%\logs\nssm.log"
nssm set valheim AppRotateFiles 1
nssm set valheim AppRotateBytes 1000000
nssm set valheim AppEnvironmentExtra SteamAppId=892970
nssm start valheim

La première ligne doit être modifiée pour y mettre le chemin où se trouve l’exécutable valheim_server.exe. La ligne 4 est sans doute la plus importante. Elle permet de spécifier le nom du serveur, le nom du monde, le mot de passe pour accéder au serveur et le dossier où enregistrer les sauvegardes. Pour plus d’information sur ces paramètres, il y a un manuel sous format PDF dans le dossier de l’exécutable. La dernière ligne est celle qui démarre le serveur dédié.

Si vous désirez supprimer le service, c’est cette commande qu’il faut utiliser:

nssm remove valheim

Pour éditer un service déjà installé avec l’interface, on utilise cette commande:

nssm edit valheim

La troisième étape consiste à configurer votre pare-feu pour ouvrir les bons ports. Il faut démarrer Windows Firewall With Advanced Security. En premier, dans la section Inbound Rules, on clique sur New Rule pour y ajouter une règle pour TCP avec les ports 2456-2458. On fait la même chose pour UDP avec les ports 2456-2458. En second lieu, dans la section Outbound Rules, on clique sur New Rule pour y ajouter une règle pour TCP avec les ports 2456-2458. Finalement, on fait la même chose pour UDP avec les ports 2456-2458. La configuration du serveur devrait être terminé.

La quatrième étape est d’ajouter le serveur dans Steam sur votre PC. Il faut simplement aller dans le menu View et par la suite on choisit Servers. Vous cliquez sur le bouton ADD A SERVER et vous suivez les étapes. Pour démarrer une partie, il va falloir utiliser ce nouveau serveur. Le mot de passe utilisé plus haut va vous être demandé avant d’ouvrir le jeu et une seconde fois dans le jeu lorsque vous démarrez la partie.

Voilà, c’est terminé! Vous devriez maintenant être en mesure de jouer avec vos amis dans le même monde.

Deux vikings relax sur le balcon

Utiliser NSSM pour démarrer un agent Jenkins

Dans cet article, j’expliquerai comment utiliser NSSM pour démarrer un agent Jenkins sur Windows en tant que service. Jenkins est un outil d’intégration continue que j’utilise pour gérer mes projets sous git. L’application programmée en Java possède une interface web très intuitive. Un autre de ses avantages est que l’on peut distribuer la charge de la construction et du déploiement d’une application sur plusieurs agents.

Pour un agent Linux, j’utilise habituellement comme Launch method l’option Launch agents via SSH. Pour un agent Windows, c’est plutôt l’option Launch agent by connecting it to the master qui sera utilisée. Une fois l’agent configuré, nous serons confrontés à une page similaire à l’image suivante.

Jenkins Agent page
Jenkins Agent

La première option permet de télécharger une application JNLP (Java Network Launch Protocol) qui démarrera l’agent. Il est aussi possible de l’installer en tant que service. Par contre, mon anti-virus m’empêche de l’ouvrir et/ou de l’installer. C’est l’une des raisons qui m’a poussé à utiliser l’application NSSM. NSSM signifie Non-Sucking Service Manager et, comme son nom l’indique, est un gestionnaire de service « performant ». L’application possède une interface graphique pour installer, éditer ou supprimer un service créé à partir de NSSM. Par contre, dans cet article, c’est plutôt des lignes de commande que nous utiliserons.

Premièrement, pour me simplifier la tâche, j’ai installé nssm.exe dans le dossier C:\jenkins. C’est le Remote root directory dans lequel l’agent va opérer. Ensuite, on ouvre une fenêtre de terminal et on tape toutes ces commandes:

nssm install jenkinsagent "C:\jenkins\java\bin\java.exe"
nssm set jenkinsagent AppDirectory "C:\jenkins"
nssm set jenkinsagent AppParameters "-jar agent.jar -jnlpUrl http://server.com/ci/computer/Demo/jenkins-agent.jnlp -secret ba206ed36a928e773024ea46afdbfb8e33abd0de67f93c73213c4dcf229a1990 -workDir \"c:\jenkins\""
nssm set jenkinsagent DisplayName "Jenkins Agent Service"
nssm set jenkinsagent Description "A Jenkins agent."
nssm set jenkinsagent Start SERVICE_DELAYED_AUTO_START
nssm set jenkinsagent AppStdout "C:\jenkins\logs\nssm.log"
nssm set jenkinsagent AppStderr "C:\jenkins\logs\nssm.log"
nssm set jenkinsagent AppRotateFiles 1
nssm set jenkinsagent AppRotateBytes 1000000
nssm start jenkinsagent

L’agent nécessite d’être démarré par Java.exe, donc la ligne 1 doit être le chemin vers ce fichier. La ligne 3 est une copie de ce que vous allez trouver sur la page web de l’agent. La dernière ligne va démarrer le service. Après cette étape, l’agent devrait maintenant être disponible dans Jenkins.

Si vous désirez supprimer le service, c’est cette commande qu’il faut utiliser:

nssm remove jenkinsagent


Pour éditer un service déjà installé avec l’interface, on utilise cette commande:

nssm edit jenkinsagent

Utiliser GitBucket comme un service Windows

Dans un article précédent, j’avais expliqué comment utiliser Gogs comme un service Windows. Celui-ci sera similaire, à l’exception que ce sera l’application GitBucket.

GitBucket est une solution Git auto-hébergée codée en Scala. Ce projet à code source ouvert hébergé sur GitHub a beaucoup de qualité, entre autres, sa compatibilité avec l’API GitHub et sa facilité d’installation. Maintenant, il est temps de parler de l’un de ses défauts: il ne peut pas être installé nativement comme service Windows.

Tout comme avec Gogs, c’est l’application NSSM qui sera utilisée. Il faut s’assurer qu’elle a été installée dans votre %PATH%. Par exemple, le fichier nssm.exe peut être copié dans le dossier C:\WINDOWS\system32.

Ensuite, on ouvre une fenêtre de terminal et on tape toutes ces commandes:

set warpath=C:\GitBucket
set datapath=C:\GitBucket\data
nssm install gitbucket "%PROGRAMFILES%\Java\jre1.8.0_152\bin\java.exe"
nssm set gitbucket AppDirectory "%warpath%"
nssm set gitbucket AppParameters "-jar gitbucket.war --gitbucket.home=\"%datapath%\" --port=8080"
nssm set gitbucket DisplayName "GitBucket Service"
nssm set gitbucket Description "A Git platform with easy installation, high extensibility & GitHub API compatibility."
nssm set gitbucket Start SERVICE_DELAYED_AUTO_START
nssm set gitbucket AppStdout "%datapath%\nssm.log"
nssm set gitbucket AppStderr "%datapath%\nssm.log"
nssm set gitbucket AppRotateFiles 1
nssm set gitbucket AppRotateBytes 1000000
nssm start gitbucket

Il est important de changer la ligne 1 pour y inscrire le chemin vers le fichier gitbucket.war. La ligne 2 doit pointer vers le dossier où les données seront enregistrées. GitBucket nécessite d’être démarré par Java.exe, donc la ligne 3 doit être le chemin vers ce fichier. La ligne 5 spécifie le port que vous voulez utiliser. Changez-le pour utiliser un port disponible. La dernière ligne va démarrer le service, donc ouvrez un navigateur web et testez que tout fonctionne.

Si vous désirez supprimer le service, c’est cette commande qu’il faut utiliser:

nssm remove gitbucket

Pour éditer un service déjà installé avec l’interface, on utilise cette commande:

nssm edit gitbucket

Utiliser Gogs comme un service Windows

Dans mon dernier article, j’avais expliqué comment démarrer MiNET comme un service Windows. On avait la chance que la fonctionnalité était intégrée à l’application. Par contre, ce n’est pas toujours le cas.

Cette fois-ci c’est l’application Gogs que j’aimerais utiliser comme service Windows. Gogs (Go Git Service) est une solution Git auto-hébergée codée en Go. Ce projet à code source ouvert hébergé sur GitHub a beaucoup de qualité, la plus grande étant sans doute sa facilité d’installation. Maintenant, il est temps de parler de l’un de ses défauts: il ne peut pas être installé nativement comme service Windows.

La documentation de Gogs nous dirige vers l’application NSSM pour palier à ce problème. NSSM (Non-Sucking Service Manager) se vante de ne pas être médiocre comme les autres outils de ce genre. L’application possède même une interface graphique pour installer, éditer ou supprimer un service créer à partir de NSSM. Par contre, dans cet article, c’est plutôt des lignes de commande que nous utiliserons.

En premier, il faut que le fichier app.ini de Gogs soit modifié pour que le paramètre RUN_USER porte le nom du PC. Pour connaitre le nom, vous pouvez utiliser la commande suivante:

echo %COMPUTERNAME%

Le fichier ini doit être modifié comme ceci:

RUN_USER = NOMDUPC$

Le signe de dollar à la fin du nom est important.

En second lieu, il faut s’assurer que NSSM a été installé dans votre %PATH%. Par exemple, le fichier nssm.exe peut être copié dans le dossier C:\WINDOWS\system32.

Ensuite, on ouvre une fenêtre de terminal et on tape toutes ces commandes:

set gogspath=c:\gogs
set escapepath=^%PATH^%
nssm install gogs "%gogspath%\gogs.exe"
nssm set gogs AppDirectory "%gogspath%"
nssm set gogs AppParameters "web"
nssm set gogs DisplayName "Gogs - Go Git Service"
nssm set gogs Description "A painless self-hosted Git service."
nssm set gogs Start SERVICE_DELAYED_AUTO_START
nssm set gogs AppStdout "%gogspath%\gogs.log"
nssm set gogs AppStderr "%gogspath%\gogs.log"
nssm set gogs AppRotateFiles 1
nssm set gogs AppRotateBytes 1000000
nssm set gogs AppEnvironmentExtra "PATH=%escapepath%;%gogspath%;C:\Program Files\Git\bin"
nssm start gogs

Il est important de changer la ligne 1 pour y inscrire le chemin vers l’application Gogs. La ligne 13 doit aussi être changée si Git n’est pas dans le %PATH%. La dernière ligne va démarrer le service, donc ouvrez un navigateur web et testez que tout fonctionne.

Si vous désirez supprimer le service, c’est cette commande qu’il faut utiliser:

nssm remove gogs

Pour éditer un service déjà installé avec l’interface on utilise cette commande:

nssm edit gogs

NSSM Details
Édition du service Gogs à l’aide de NSSM

En terminant, je veux vous parler de Gitea. Il s’agit d’un fork de Gogs qui semble avoir le vent dans les voiles. Pour l’instant, je préfère encore demeurer avec Gogs, mais je garde un œil attentif sur ce projet.