Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

User:Webb/New linux server: Difference between revisions

From TF2 Classified Wiki
Webb (talk | contribs)
No edit summary
Webb (talk | contribs)
More work
Line 124: Line 124:
=== Testing the server ===
=== Testing the server ===


Before proceeding, we can test the server to make sure the install works.
Before proceeding, we can test the server to make sure the install runs.


<pre>
<pre>
Line 131: Line 131:
</pre>
</pre>


If all goes well, it should launch and be joinable.
If all goes well, it should start.


=== Server Configuration ===
=== Server Configuration ===
Line 141: Line 141:
Upload the generated ZIP file to your server using SFTP, unzip the folder using:
Upload the generated ZIP file to your server using SFTP, unzip the folder using:


<pre>unzip <archive>.zip</pre>
<pre>
$ cd /tmp
$ unzip $PATH_TO_ARCHIVE</pre>


And merge the <code>cfg</code> folder with <code>/home/srcds/sdk/tf2classic/cfg/</code>.
And merge the <code>cfg</code> folder with <code>/home/srcds/sdk/tf2classic/cfg/</code>.


== Running the server ==
<pre>
$ rsync /tmp/cfg ~/srcds/sdk/tf2classic/cfg
$ rm -rf /tmp/cfg
</pre>


=== Creating the server script ===
== Running the server via Systemd ==


Change into the server directory with:
SystemD is a program that will automatically handle things like logging, restarts, and starting your server when your machine boots. We'll use this to run our server, instead of manually running commands.


<pre>$ cd /opt/tf2classic/server/</pre>
=== Creating an SDK 2013 update script ===


Create a script to run the server with one simple command. Use any text editor of your choice to create runserver.sh where srcds_run is located. For the sake of those unfamiliar with terminal text editing, we'll be using nano. Run:
We're going to create a script that will update our SDK 2013 for us instead of typing it out manually each time. Later, we'll optionally use this script to check and update SDK 2013 on our server.  


<pre>$ nano runserver.sh</pre>
First, let's create a directory for the script.
 
Fill it with this line (you may be able to paste using <code>Shift+Insert</code>):
 
<pre>./srcds_run -console -game tf2classic +map pl_upward +maxplayers 24</pre>
 
Feel free to change the map and maxplayers. There are more arguments, but we’ll keep it basic.
 
Save the file by clicking <code>CRTL+X</code>, and then <code>Y</code> to write your changes.
 
Now, make the script executable with:


<pre>
<pre>
$ chmod +x runserver.sh
$ mkdir ~/bin
$ nano ~/bin/update-sdk.steamcmd
</pre>
</pre>


Finally, all you need to do to start the server is run <code>./runserver.sh</code>!
Inside this file, place the following contents:
 
If you want it to run even after closing the terminal window, run <code>nohup ./runserver.sh &</code> followed by <code>disown</code>
 
=== Systemd & Crontab for automated start, restart and updating ===
For easier automation of server restarts, updating, and booting alongside the system, you may use systemd, which is the default init system for most modern Linux distros and cronjobs.


Create file <code>ssdk2013mp-update</code> and fill in the following
<pre>
<pre>
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
@NoPromptForPassword 1
@NoPromptForPassword 1
force_install_dir /home/srcds/sdk
login anonymous
login anonymous
app_update 244310 -beta previous2021
app_update 244310 -beta previous2021
Line 187: Line 178:
</pre>
</pre>


Make it executable with <code>chmod +x ssdk2013mp-update</code>
You can execute this script manually by using the +runscript argument on SteamCMD.


This script will update the underlying Source SDK 2013 MP Dedicated Server, you may execute it by itself, but in this case we will use it for automatic updates.  
<pre>
$ . /etc/environment
$ steamcmd +runscript /home/srcds/bin/update-sdk.steamcmd
</pre>


Next, create a service file in <code>/etc/systemd/system/</code>
=== Creating a service file ===


Example <code>tf2classic.service</code>:
Create a service file in <code>/etc/systemd/system/</code> as root.
 
Example <code>tf2c.service</code>:
<pre>
<pre>
[Unit]
[Unit]
Description=TF2Classic
Description=TF2C
After=network-online.target
After=network-online.target
Wants=network-online.target
Wants=network-online.target


[Service]
[Service]
Type=forking
Type=simple
User=steam
User=srcds
WorkingDirectory=/home/tf2classic
StandardError=journal
RemainAfterExit=yes
StandardOutput=journal
ExecStartPre=/usr/games/steamcmd +runscript /opt/tf2classic/ssdkb2013mp-update
WorkingDirectory=/home/srcds/sdk
ExecStartPre=/opt/tf2classic/TF2CDownloaderLinux --update
RemainAfterExit=no
ExecStart=/opt/tf2classic/server/srcds_run -console -game tf2classic +map tr_walkway_fastcat_v1 -port 27020 +maxplayers 32 +sv_setsteamaccount XXXXXXX
ExecStartPre=/usr/games/steamcmd +runscript /home/srcds/bin/update-sdk.steamcmd # Exclude or comment this if you don't want to check for an update on each restart
Environment="LD_LIBRARY_PATH=".:bin:$LD_LIBRARY_PATH""
ExecStart=/usr/bin/script -e -c "/home/srcds/sdk/srcds_linux +map ctf_2fort -game tf2classic -port 27000 +maxplayers 26" /dev/null
TimeoutStartSec=infinity
TimeoutStartSec=infinity
Restart=always
Restart=always
[Install]
WantedBy=multi-user.target


[Install]
[Install]
Line 220: Line 221:
</pre>
</pre>


Next, switch to the <code>root</code> user using <code>sudo su</code> and execute <code>crontab -e</code>. This is where you can set cronjobs, include something like the following:
=== Automatic restarts using crontab ===
 
As root, execute <code>crontab -e</code>. This will open a special file where you can set cronjobs. For example, adding the following line will restart your game server every day at 04:00:


<pre>
<pre>
# Restart and update check for TF2Classic every day at 4 AM.
0 4 * * * systemctl restart tf2classic.service
0 4 * * * systemctl restart tf2classic.service
</pre>
</pre>