Hello everyone and welcome! In today's video,
we're going to be taking a look at how to build a dedicated server for Satisfactory - and we're
going to be building this on a Debian 11 box. Now this video is going to be a little bit different
than what I typically post on this channel, but since dedicated servers were just released for
Satisfactory with update 5, and holidays are right around the corner - I'm planning on doing quite a
bit of new factory building with some friends and family. So I figured it was about time to build a
dedicated server and get ready for endless hours of playing over the holidays. So today in this
video, we're gonna walk through just a quick tutorial on how to stand up a new dedicated server
for Steam and Satisfactory on a Debian Linux box. Now as a quick disclaimer this video is only going
to cover how to install and set up the dedicated server software on a Linux machine. We will
not cover installing Linux, nor any of the port forwarding or any of that type of stuff - because
those both could be videos upon videos upon videos of themselves. So we will just be focusing
today on installing the server software itself. So as you can see on the screen right now,
I do have the Satisfactory page up for dedicated servers. We'll pretty much be walking
through this step by step, so I will post a link to this in the video description for you to
reference. There are some additional things that we'll have to do that aren't referenced on this
page - but we'll get to that when we get to it. So with that being said - let's go ahead and get
started. I will go ahead and bring up my Linux terminal for my Satisfactory machine that I built.
We'll check which version we're running... and sure enough right now I am running Debian version
11.1. Now since this is a brand new install of Debian, by default the system is going to select
DHCP for its IP addressing. And so if we check the current IP address with the 'ip addr' command
looks like our current address is 10.122.2.83. Now unfortunately that is a dynamic and DHCP
address - and we're going to want our dedicated server to have a static address. So we'll go ahead
and use nano to open the network interfaces file. and you will have to use sudo because this is
a restricted file, so we'll have to elevate our permissions to be able to write changes to it....
and we'll be prompted for our password. So once we're in this file we're going to do a couple of
quick things. As we can see towards the bottom, it looks like interface ens192 is going to be our
primary network port - and we could have also seen that in the IP address output before when we were
looking at what our our current dynamic IP address is. So the first thing that we're going to do is
we're going to go ahead and scroll down to this line down here, where it says "iface ens192
inet dhcp" - and we'll change that to static. We'll also include a line right
above that just says "auto ens192". And now below we're going to go ahead and add
our interface configuration. So I'll go ahead and put address and then I'm going to make this
10.122.2.21. And we'll have to add a network mask, in my case it's going to be 255.255.255.0. Then
we'll add our gateway, in my case 10.122.2.254. And last but not least we will
have to set our DNS servers. Okay now that config looks good, so let's go ahead
and hit Ctrl-X to save our file. We'll be prompted to save and we'll hit yes, and overwrite this
file. Next we will need to restart the networking service for those changes to take effect. So we'll
do "sudo systemctl restart networking.service" Now since we are currently connected to that
.83 address, and we just changed the address to .21 - when we restart that networking
service, we are going to get disconnected. So we'll go ahead and start a new
session and reconnect to our server. So we should be able to
log into that 2.21 address. Okay and now once we're logged back in again, we can also double check by
using that "ip address" command. And sure enough we can see that our IP address is
now 10.122.2.21 - and that is a static address. So it should not change, so we can always connect
to this when we're connecting to our server. Next we're going to go ahead and add
a new user for Steam to run under. So we'll do "sudo useradd -m steam", and again
we'll enter our password real quick. All right, once we have that we need to go ahead and install
the Steam command line interface. And we can do that using Debian's package manager - but by
default Debian doesn't actually have that package included. So first we'll just have to go ahead
and add a new software repository that Debian can scan and find those packages for installation.
So we'll go ahead and edit our apt sources. So we'll go ahead and scroll all the way
down to the bottom here - and similar to all of the other entries that you
can see on the screen right now, we're going to go ahead and add
two quick lines to this file, that will be the third party repositories where
we'll pull down the Steam command line utilities. And once we have those added in, we'll
go ahead and save the file again. Now once we've added those repositories,
before we can actually install the utility - we will have to make sure that
our package list on the system has been updated from that repository. So go
ahead and do a "sudo apt-get update" Okay, now we can definitely see
that lines five through nine, that we're pulling the new images and
package lists from the linode repository. One more thing before we install
the Steam command line utility, we will need to add the i386 architecture into
our package manager. Okay once we do that, we can go ahead and run our "apt-get update"
one more time - pull down a couple of additional package repositories. And once we have that, we
can finally do the "apt-get install steamcmd". And we'll go ahead and say yes, we
do want to install all of these. Short way through the process, we will be
prompted to accept the Steam user agreement. So we'll go ahead and hit "Okay" first, and then
"yes I agree". Okay once all of that is done, we have the Steam command line utilities
installed. So let's go ahead and switch over to the Steam user real quick. First I'll go ahead
and clear out my screen - and then we'll just do a "sudo su steam". We'll go ahead and move to
the account's home directory. And right now we don't have anything in our directory - so the
first thing we'll do is we'll create a shortcut for the Steam command executable. And we'll
do this with "ln -s /usr/games/steamcmd". And so now if we check our directory, we have a
link to that Steam command here. And so copying straight from the Satisfactory wiki install
page for dedicated servers - we'll go ahead and run "steamcmd", and we'll do "force_install_dir"
to change the installation directory. And we'll go ahead and set that to this user's home directory
slash Satisfactory. And then we'll go ahead and set "login" to anonymous - this is for connecting
to the Steam cloud, rather than logging in with an individual steam user account, we're just going
to go ahead and log in anonymously because we just need the server software. And we'll set the
"app_update" parameter - and validate plus quit. Now I'll call out here before we run this real
quick if you wanted to download the experimental branch, the other thing we would need to
do is... about here, we'll include the line "-beta experimental" ...I probably misspelled
that, but since I'm going to go ahead and download this stable branch - I will go ahead
and remove that and we'll run the command as is. Once we run this - this is going
to go reach out to the Steam cloud, and pull down the Satisfactory
dedicated server software and copy it to that "satisfactory"
directory that we asked it to create. So while this is downloading the satisfactory
server - I guess now is a good time for a quick break. So I just wanted to say hello and
welcome to anyone who's finding this channel because you're searching for Satisfactory content.
This isn't the typical type of video that I do, but if you find value out of this video
and it's helpful to you - if you're able to like and or subscribe to the video, it
would be greatly appreciated! Thank you! Okay and after a couple of seconds, it looks like
Satisfactory has been successfully downloaded and installed. We can validate this by first
checking the contents of our home directory. Sure enough - we now have a Steam folder
and a Satisfactory folder. So let's go ahead and change directory into the Satisfactory
folder. And if we look at the contents here, we do have all of the game files. Now if we
just wanted to run the server as a one-off and not something that's persistently available - we
could just do a "./FactoryServer.sh". And so what that'll do, is it'll start the game immediately
and it'll start it as a foreground service. So if we close our window right now, it'll actually
kill that service and the game will stop running. But if you wanted to just one-off run this to
test - that's the way you're going to do it. Likely what you're going to want to
do, is have the server on all the time. And for that we'll need to install the
Satisfactory server as a background service within our Linux server. So let's go ahead and
press Ctrl-C, to go ahead and kill the server and ask it to stop. A nd then let's take a look
at how we can create a Linux service for this. So I brought up the Satisfactory wiki page for
creating a Linux dedicated service - and we're going to go ahead and place a file in this
"/etc/systemd/system/satisfactory.service". And here's the contents of what that
service definition is going to look like. So this looks pretty straightforward, but we
will need to make a couple of minor changes to this file before we install our service.
So let's go ahead and copy this out... and I'll open up a notepad file and we'll go ahead
and paste this in here. So the first thing that we're going to need to change, is anywhere
where it says "your_user" - we will need to set this to the user that we created to run
Satisfactory, which is going to be "steam". So we'll go ahead and edit these. Got one in the
"ExecStart", one up here in the "ExecStartPre", and one down in the "WorkingDirectory", and then we also need to set the
user and group both to steam as well. Okay looks good. The only other thing
I will mention here, is that since we installed our game to /home/steam/satisfactory,
that's good. If you installed the game into any other directory, you will need to
change that file location as well. So now that we have this done - let's go
ahead and select all of it, and copy it. We'll run back over to our
Linux terminal real quick. Okay back on our Linux terminal - first thing
we're gonna do, is we're gonna go ahead and exit out of the steam user, because we no longer need
it now that we've tested the Satisfactory server. Now back on my user account, we'll go ahead and
create that new service file that the Satisfactory wiki had mentioned. So we'll go ahead and do a
"nano /etc/systemd/system/satisfactory.service". In this file, we'll just go ahead and right-click
to paste the contents of our clipboard. And as long as that looks good, we'll do a
Ctrl-X again to go ahead and save this file. Now that we have that service file
defined, we can enable it by doing a "systemctl enable satisfactory.service"
- and that will go ahead and register that service in the system. So that it knows
now, it's a valid service, and anytime this server reboots, it will go ahead and make sure
to start that service upon the system coming back online. And last but not least, we're free
now to start our Satisfactory service - so we can run the game in the background, and go
ahead and connect and try and test it out. So we'll do that again with "sudo
systemctl start satisfactory.service" - and after a quick second that service should start
in the background. And we can validate this by using the "systemctl status satisfactory.service"
- and so if there were any issues in getting the server up and running it would show here. But
instead we do see that the process is currently "active (running)". And so we should be free
to go ahead and open up the Satisfactory game itself and connect to our server. So let's go
ahead and jump over the game and give it a shot. Once the game starts up, we do have on our
left side - a new option for server manager. We'll go ahead and click that. Down at the
bottom we'll click "add server" - and we'll go ahead and put in the address of our
dedicated server, in my case 10.122.2.21. And we'll hit confirm. And give the game a
second to go ahead and connect to that server. So as the first person to connect to the server,
we get to go ahead and configure the server and become the administrator for it. So first we'll
enter a name for our server - so we'll go ahead and put "0x2142-Satisfactory". Once we're good
with that, we'll go ahead and hit confirm. And we can set an admin password -
so I'll go ahead and do that now. And we'll click confirm. So now it looks like our
server is online. It shows that it's currently idle. We are the administrator. We can also
see the current ping time to that server, which should be pretty close - since the actual
dedicated server's sitting right next to me. So before we create a game, if there are any other
settings that we want to change around - we can hit the "Server Settings". We can change the
name, set a session name, we can change our admin password if we want, we can also add a "Player
Password Protection" - so this is going to be if you want to keep people from joining your game
without having a password. This is where you'd set it here, and then you'd give that password
to your friends who want to play with you. A couple of settings down here that are
interesting to know about. One is going to be to save the game any time when someone disconnects
- I'm going to go ahead and leave that on because that is something that I want. The other one,
is whether or not to pause the game when no players are connected. Now this is an interesting
one, because - on one side, you're going to save resources by your machine not running quite
as hard if no one is connected to the game. But if you let the game keep running while no
one's on it, then you're going to continue to accumulate resources in the background because all
of your factories and machinery are still running. For me I'd rather it go at our own pace, so I'll
leave this as pause when no one's connected. So last but not least, we can
go ahead and create a new game. And just to test it out we'll go ahead and enter
"Grass Fields" - create a new session called "Demo". And we also have another option here under
"Join" - so that once we create the session, we can automatically join. We'll leave that off for
now - we'll just go ahead and hit "Create Game". So it should just take a quick second
as our server spins up the new world. Once the server is done, it looks like it
just drops us back on the create game screen. We can see over on the left side here, that
it says that there is now a game ongoing. And if we want to join, we'll go ahead and
click this "Status" tab - and we can see some information... So we have no milestones
yet, we're on tier two, the game hasn't really started yet... So we'll just go ahead and
hit "Join" down in the lower-right corner. And here we are! We are now in our new game,
on our new world, and ready to start building! Last but not least, before I wrap up this
video... One more thing I wanted to call out. So what we've accomplished in this video,
is just building a Satisfactory dedicated server on a Linux machine. In order for
us to play, since we're on the same local network - all we have to do is point our
game to that server and go ahead and connect. If you need friends or family to connect from
other locations, who aren't sitting next to you and playing on the same local network - you
will have to configure your internet router or firewall to forward certain ports towards your
game server. This will allow people to connect from outside of your local network. Again as
I mentioned at the beginning of this video, that isn't something that I'm going to cover here
- since there are a bunch of different tutorials and guides already on the internet for how to
do that. But once that's all done, you should be able to go ahead and play and have a setup,
static, dedicated server for everyone to enjoy. So with that - I hope that this video was
helpful in getting you started in building a Satisfactory dedicated server. I wish you
the best of luck in exploring the world and creating some new factories! So I hope this video
was helpful, and thank you so much for watching!!