No More Room in Hell

No More Room in Hell

Not enough ratings
No More Room In Hell Dedicated Server Setup 2023 (Windows)
By Hectic Morder
Hello and welcome
Why another server guide? I found that i had way too many tabs open just to gather the right information about dedicated server hosting, workshop, and other updated info. So i created this with what i could find for future reference also for any nmrih server operator's that want a more completed server package. 'Enjoy'
   
Award
Favorite
Favorited
Unfavorite
🍉Intro
This guide is for those of you wishing to make a fully working 24/7 No More Room in Hell dedicated server for the public to join. As most know that getting a server up and running with mods, workshop items or general editing can be a pain for new server operator's, This guide is to cover other outdated guides that fail to show or provide more detailed information beyond just installing it on "Steam CMD"

What is a "dedicated" server?
A dedicated server is technically a server that is available all the time, day or night, 24/7, 365. To do this it has a dedicated machine to use. Special hardware should be used to run a dedicated server the right way. Most users prefer to host these from a datacenter. However, since it's just another piece of software you could use a spare computer.



🍱Setting Up Dedicated Server (Windows)
Dedicated servers are preferred if you want to ensure you get the best performance and flexibility. Most of the time, it's installed on a separate machine/computer where both it and the server are made available 24/7. (Hence the term dedicated)


Requirements/Recommended
    Windows
  • Windows Server 2008 or later is supported.
  • VS C+ 2013 Redistributable is recommended.
  • notepad++ [notepad-plus-plus.org]is recommended for better .file editing.
  • General knowledge of port forwarding.
📼SteamCMD
Adding SteamCMD to your PC/Server

SteamCMD is the command line version of the Steam client. The tool is used to download dedicated server applications of popular Steam games quickly and easily for running your own Valheim server or nmrih server,

Navigate to your desktop and create a folder called "SteamCMD"
Should look something like this.

C:\Users\Jimbob\Desktop\SteamCMD

Now install latest SteamCMD patch for Windows https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
Extract the files into your SteamCMD folder you just created

example: C:\Users\Jimbob\Desktop\SteamCMD\SteamCMD

Click on SteamCMD.exe let it download the necessary files when it's done type "quit"

To download the NMRiH dedicated server software, Re-lunch steamcmd and type the following into SteamCMD then hit enter after each line. (be mindful of the spaces)

force_install_dir .\nmrih_ds\
login anonymous
app_update 317670
exit

Notes:
  • SteamCMD will update if required each time it's executed.

  • You don't need to login to a steam account within SteamCMD leave it as anonymous user.

  • [nmrih_ds\] This is the name of the folder in which your server will be downloaded to.

  • app_update 317670 this can be found here -->> https://steamdb.info/app/317670/config/
💻Setting up Server
RUN.bat
Navigate to C:\Users\jombob\Desktop\steamcmd\nmrih_ds then create a file called RUN.bat edit with notepad and add these lines

start srcds.exe -game nmrih -secure -console -maxplayers 8 -port 27015 +map nmo_broadway

Example:

./srcds_run -console -game nmrih +sv_lan 0 +maxplayers 4 +map nmo_boardwalk start srcds.exe -game nmrih -autoupdate -pingboost 2 -port 27016 +maxplayers 2 +map nmo_chinatown

Now create a shortcut for the RUN.bat file on your desktop this will be a .bat that starts your server and gives access to command-line within your server.

Additional Commandline Parameter Information can be found here: https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server


Server.cfg

Next we must add a server.cfg file in C:\Users\jimbob\Desktop\steamcmd\nmrih_ds\nmrih\cfg
I recommend getting notpad++ for this as it will make your editing experience much better. In this .cfg file we will be adding our server name, commands ect.

To obtain a server.cfg you must find one as there are a few player updated one's floating around on the internet.

I have one that can be downloaded on GitHub.
server.cfg https://github.com/HecticElites/no-more-room-in-hell-dedicated-server-package/commit/e1d1f1215868512e4d264f70bb1c56fc565e8232

After downloading/obtaining a server.cfg place it in C:\Users\jimbob\Desktop\steamcmd\nmrih_ds\nmrih\cfg then open it up with notepad or notepad++ edit the desired parameters within the server.cfg.
📡Port Forwarding
Note:
  • This is a copy-paste from No More Room in Hell Official Server Manual i am not experienced in port forwarding and the devs have explained it really well.
  • This section details port forwarding in a basic manor. If you are familiar with port forwarding and networking, feel free to skip this section.
To get things started, we should talk about what these "external" and "internal" IP addresses are, and how they affect you.

You will probably have a DHCP server in your house/apartment. Most of the time this will be your router, but in some cases it could be something else. DHCP is a system that allows the router (or other device) to pass out internal IP addresses to other devices (such as your computer, laptop or tablet) that connect to it. Inside your network, all the devices talk to each other by using these internal addresses. Only devices inside your network can talk to others with these addresses - as they are reserved for use in LAN networks.

Note: You can tell a internal IP from an external one because all of them start with non-routable addresses. These special IPs are in the ranges listed below:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255


If your friend wanted to connect to your NMRiH server, they may see it as having the IP of 192.168.1.2. This is what you see too, but your friend will scream and kick at not being able to connect. Just like you, your friend will be using these internal addresses as well. The problem here is that they correspond to computers/devices on their network, so when they try to connect, their router will only search on their network for a device that has the 192.168.1.2 address. In order to solve this problem, this is where external ip addresses come in.

Your router is assigned a public (external) IP address by your ISP's modem so it can communicate to computers around the word. This public address is also used when someone wants to give you data (websites, game servers, etc.). You can tell your router to pass on information it gets on a port to a computer inside the network. This is done by specifying the IP of the machine on the network, and what port to send it to. The common term for this is called "Port Forwarding", as it forwards the port(s) to another computer/device. This article won't go into detail about how to do that, but a great place to start is http://www.portforward.com, which will show you how to port forward.

To play on the server you only need to have 27015 (UDP) open/forwarded. The server doesn't use TCP traffic on this port for gameplay and thus is recommended that you do not forward it.

Now remember reading before about DHCP? It will come back to haunt you sadly. Since there is a limited amount of internal IP addresses, the router will try free up internal IP address for use. It will do this by removing unused addresses. These include computers/devices that are not on. So if you happen to turn the computer off that hosts the server and another device connects, it is likely to take that address your computer had and thus breaking the port forwarding you did. In order to prevent this from happening, you will have to set a static IP for the machine (technically the machine's ethernet interface).

That should now all be clear, you may be wondering where to get your external/public IP from. There are many sites that show you it - even Google "What is my IP address". After obtaining it, send it to your friends.

Now, many will argue at why you only need 27015 (UDP) open. Why not 27015 (TCP) with all those other ports as well? The remote console (RCON) for the server runs on 27015 (TCP) and can lead to security issues and Denial of Service attacks (DoS). ''You should only allow the TCP traffic in if you know what you're doing.'' Other ports shown in other guides are not needed, and thus don't need to be opened.

More info about Port Forwarding: https://portforward.com/no-more-room-in-hell/
💾Downloading Wrokshop Maps
Getting Started

There are 3 ways to download custom files to clients.
  • Internal downloads, controlled by sv_allowdownload <1/0>, they're slow, capped at ~64 MB and vulnerable to a bunch of attacks, you want these disabled.

  • External web server aka fastdl, controlled by svdownloadurl, they're fast and uncapped but require you rent a web server to store the files, some GSPs offer this as part of their service.

  • Workshop, controlled by workshop commands, they require no file server but are a bit brittle, sometimes clients miss map updates due to slow steam cache and things like soundscapes are bugged in-game.


Mapcycle.txt

Before you start adding maps there are a few thing we must do, First go to C:\Users\jombob\Desktop\steamcmd\nmrih_ds\nmrih\cfg then open server.cfg and mapcycle.txt. Start by changing the mapcycle line in server.cfg mapcycle_default.txt To mapcycle.txt

Example: // Map cycle - Maps to be rotated on the server. // "mapcycle.txt" - All maps // "mapcycle_objective.txt" - Objective maps only // "mapcycle_survival.txt" - Survival maps only mapcyclefile "mapcycle_default.txt"
To
Example: // Map cycle - Maps to be rotated on the server. // "mapcycle.txt" - All maps // "mapcycle_objective.txt" - Objective maps only // "mapcycle_survival.txt" - Survival maps only mapcyclefile "mapcycle.txt"
Now save and close.

Open mapcycle.txt file, Here you want to add the custom map names that you want on the server
Example: // .................................. Custom-Maps ................................. // nmo_khafre_v12 nms_hershels_farm_v6
Now save and close.

For those's who want a more complete file i have one on my GitHub. This only includes custom nmo maps from the community.
https://github.com/HecticElites/no-more-room-in-hell-dedicated-server-package

My map collection can be found in the Resources & Links tab.


WrokshopDL

Note:
  • Do not move/copy workshop maps into ...nmrih/maps/ folder!

  • To confirm you have workshop maps, type the command maps nmo in the server console.

Adding Map To Server:
Look for your favourite workshop map-id on steam. Once you are on the page look at the top left of steam you will find id's there OR you can go to. E:\SteamLibrary\steamapps\workshop\content\224260 depending where you install your Steam

Examples:
/https://steamcommunity.com/sharedfiles/filedetails/?id=2914838562




launch your server and type in your server console the command: workshop_download 2914838562 server will start downloading the map, it could take some time to finish. Be patient and wait if you want to add more maps just type in your server console workshop_download <map id>.

Adding Map Collections From Steam
To add whole collection of workshop maps type the command: workshop_download_collection <collection id> Example: workshop_download_collection 3043068173

Updating Workshop Maps
launch your server and type in your server console the command: workshop_update


Workshop.txt
Open ...nmrih/workshop_maps.txt, here is where you will find custom maps related to what was added into the server. "don't edit this file"
Example:
"nmo_ghostbuster" "1563718549" "nmo_gmi_hunt_ep2_v2" "1480509891" "nmo_gmi_hunt_ep3_v2" "1480513772" "nmo_gmihunt_ep1_v3" "1480507118"


My workshop collection of nmo/objective maps related to the Mapcycle.txt above
https://steamcommunity.com/sharedfiles/filedetails/?id=3043068173


For fastdl here is a step by step guide on the topic
https://moonstar-x.dev/old-server-setup/game-servers/fastdl/
and
Here is most of the maps in mapcycle for fastdl users https://drive.google.com/drive/folders/1LitcOEYi29HY_Tj-HWzUCYSlTS4d8u0R?usp=sharing
📁Sourcemod & Metamod
Sourcemod and Metamod are the foundation on what mods/plugins need to work, So without Sourcemod/Metamod your plugins probably wont work. This guide is to show the general basics of installing Sourcemod, Metamod and plugins.

Why should i install Sourcemod & Metamod? Sourcemod provides a wide range of ways to customise your game server and more complex admin management control's.

Installing

To install SourceMod first extract the .zip (Windows)
download here -->> https://www.sourcemod.net/downloads.php?branch=stable
place the SourceMod folder into the addons folder ...\nmrih_ds\nmrih\addons. (Make a folder if you don't have one)

Now download metamod here -->> https://www.sourcemm.net/downloads.php?branch=master&all=1
place the metaMod folder into the addons folder.

Restart your server completely, In your server console type the command: meta list

If the install worked, you will see something like:

] meta list Listing 1 plugin: [01] SourceMod (1.1.0.2489) by AlliedModders LLC


You should then be able to use the SourceMod root console command, which can be invoked with simply:
sm

For example:

] sm version SourceMod Version Information: SourceMod Version: 1.1.0.2489 SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.1.0-svn) SourcePawn API: v1 = 4, v2 = 2 Compiled on: Sep 5 2008 02:02:12 http://www.sourcemod.net/

Setting up

Admin:
For setting up your administration rights go to ...\nmrih_ds\nmrih\addons\sourcemod\configs
once you are done. Load nmrih in game enable dev console join your server type sm_admin. You should see a menu popup with all the admin management options.

Install plugins:
Note: rockthevote, mapchooser and other map management related plugins are in the disabled folder by default ...\addons\sourcemod\plugins\disabled

The most common files you will see when adding plugins is.. .smx .phrases or translations and .sp
  • .smx is the plugin part of the mod and can be found here ...\addons\sourcemod\plugins
  • .sp is the script part of the mod and can be found here ...\addons\sourcemod\scripting
  • .phrases or translations this can be found in ...\addons\sourcemod\translations

A list of working plugins can be found here -->> https://www.sourcemod.net/newstats.php?mod_id=3376



📊Process Priority Levels
Introduction
Changing the process priority of your important tasks is one of the more advanced ways to boost performance in Windows 10. Easy enough to do, but a bit tricky not to mess up accidentally.

What Are the Process Priority Levels?

Process priority is defined in multiple discrete levels. Like a ranking system, this orders processes from the top to bottom, in the order of their importance.

There are six priority levels in Windows. Only five of these are meant to be set by applications (or users, for that matter).




  • Normal is, well, the ‘normal’ priority level. Most applications run at this level.

  • Below normal is the priority level just below normal. Processes on this level are allocated fewer resources than normal applications. Best suited for unimportant tasks with no time constraints.

  • Low is the lowest priority level in Windows. Tasks operating at this level are given resources only after all other processes have completed their current tasks.

  • Above normal is the next higher priority level after normal. Use this for processes that need a little boost but don’t need to upstage system processes.

  • High is a priority level used by important system processes necessary for the smooth functioning of the computer. Not recommended for user applications.

  • Realtime is the highest possible priority level in Windows. Basically, tasks on this level run in real-time, at the expense of any and every other process. For this reason, this level is only reserved for hardware interfacing processes. Running applications on this priority level can easily crash your computer.

Look for srcds.exe (server must be up) within task-manager on the details tab then set your desired priority Level.
📲Updating The Server
To update your server you will need SteamCMD so if you deleted it, you will need to go and download it again.

Step 1: Open SteamCMD

Step 2: Type into SteamCMD the following:
login anonymous
app_update 317670

Step 3: Close SteamCMD and you should now be good to go.
4 Comments
sjwalsh Jan 31 @ 11:44am 
My server crashes after installing sourcemod & metamod
that's the error in the console: metamod unable to load plugin
dotvhs Dec 17, 2024 @ 11:00am 
Thank you for the guide, there's one minor typo "Wrokshop" instead of Workshop.

Could you also please add info on how to add server-side workshop mods? Like extended zombie kids? Thank you in advance!
Hectic Morder  [author] Dec 7, 2023 @ 2:26am 
thanks for sharing i know this guide is for cmd but all are welcome to comment info or workarounds :winter2019happysnowman:
The Cow of Doom Nov 25, 2023 @ 2:49am 
I might've missed this part in the guide but I also needed to open port 1200.

I'm using the in game "create server" feature to run a server just for me and my friends, so all i need to do is open the right ports. As directed I opened 27015 UDC and it just would not work. By a stroke of luck I knew I had previously had this port open for nmrih on a different machine and when I gave it a try it worked! No idea how or why but I do know that was the solution for me.

Perhaps it's common knowledge or something but I thought I'd share my issues in case someone faces the same.