Editing Server on Linux
From Eco - English Wiki
Your changes will be displayed to readers once an authorized user accepts them. (help)
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
== Important Foreword == | == Important Foreword == | ||
If you run into trouble or have a question, you can make inquiries in the #server-help channel in the {{Eco Discord}} | First, a disclaimer: [[Strange Loop Games]] does provide a Linux server build, but they do not offer official support for it at this time. It is provided as a convenience, not a product. | ||
If you run into trouble or have a question, you can make inquiries in the #server-help channel in the {{Eco Discord}}, but keep in mind the information above. | |||
== Prerequisites == | == Prerequisites == | ||
EcoServer is compiled natively for Linux but requires some packages. | EcoServer is compiled natively for Linux but requires some packages. | ||
Line 7: | Line 9: | ||
./install.sh | ./install.sh | ||
</syntaxhighlight>This will install the following packages: | </syntaxhighlight>This will install the following packages: | ||
* [https://www.mono-project.com/docs/gui/libgdiplus/ libgdiplus] | * [https://www.mono-project.com/docs/gui/libgdiplus/ libgdiplus] | ||
* [https://www.gnu.org/software/libc/libc.html libc6-dev] | * [https://www.gnu.org/software/libc/libc.html libc6-dev] | ||
== Eco Dedicated Server files == | == Eco Dedicated Server files == | ||
There are two primary options for acquisition of the Eco dedicated server: getting it directly from Strange Loop Games, or through Valve Software's Steam platform. | There are two primary options for acquisition of the Eco dedicated server: getting it directly from Strange Loop Games, or through Valve Software's Steam platform. | ||
Line 22: | Line 26: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== SLG Direct Download === | === SLG Direct Download === | ||
An archive of the current release of the Eco Dedicated Server as of this writing (Beta 9.4.1) can be found [https://play.eco/ here]. The following series of commands will download the archive, and set the Eco Dedicated Server up in an <tt>Eco</tt> subdirectory of your home directory, and save a copy of the install archive into a <tt>dist</tt> subdirectory of your home directory: | An archive of the current release of the Eco Dedicated Server as of this writing (Beta 9.4.1) can be found [https://play.eco/s3/release/EcoServerLinux_v0.9.4.1-beta.zip here]. The following series of commands will download the archive, and set the Eco Dedicated Server up in an <tt>Eco</tt> subdirectory of your home directory, and save a copy of the install archive into a <tt>dist</tt> subdirectory of your home directory: | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
mkdir -p ~/Eco | mkdir -p ~/Eco | ||
Line 51: | Line 55: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Systemd service script == | == Systemd service script == | ||
If you wish to set up a systemd service to have ECO run automatically, this will do the trick: | |||
Using your favorite editor (vi, nano etc.) edit /usr/lib/systemd/system/EcoServer.service and paste the following: | |||
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
[Unit] | [Unit] | ||
Description=Eco Server | Description=Eco Server | ||
[Service] | [Service] | ||
Type=simple | Type=simple | ||
Line 73: | Line 70: | ||
Group=ecoserver | Group=ecoserver | ||
Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=%h/.net" | Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=%h/.net" | ||
#ExecStartPre=/home/ark/server/steamcmd +login [username] +force_install_dir /home/ecoserver/Eco_server/ +app_update 739590 +quit | |||
ExecStart=/bin/bash -c 'cd /home/ecoserver/Eco_server && exec /home/ecoserver/Eco_server/EcoServer' | |||
#ExecStartPre=/home/ark/server/steamcmd +login | ExecStop=killall -TERM srcds_linux | ||
ExecStart=/home/ecoserver/Eco_server/EcoServer | |||
ExecStop= | |||
[Install] | [Install] | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
</syntaxhighlight> | </syntaxhighlight> | ||
ExecStartPre is commented out because I was not able to get it to work without user input due to Steam Guard. | |||
Then update the systemd service by running the following:<syntaxhighlight lang="shell"> | Then update the systemd service by running the following:<syntaxhighlight lang="shell"> | ||
sudo systemctl daemon-reload | sudo systemctl daemon-reload | ||
Line 91: | Line 86: | ||
sudo systemctl status EcoServer | sudo systemctl status EcoServer | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''Debian/Ubuntu Version''' | '''Debian/Ubuntu Version''' | ||
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
Line 148: | Line 100: | ||
Group=eco | Group=eco | ||
LimitNOFILE=100000 | LimitNOFILE=100000 | ||
ExecStartPre=/usr/games/steamcmd +login anonymous +force_install_dir /gamesservers/eco +app_update 739590 default validate +quit | ExecStartPre=/usr/games/steamcmd +login anonymous +force_install_dir /gamesservers/eco +app_update 739590 default validate +quit | ||
ExecStart=/gamesservers/eco/EcoServer | ExecStart=/bin/bash -c 'cd /gamesservers/eco && exec /gamesservers/eco/EcoServer' | ||
ExecReload=kill -TERM $MAINPID | ExecReload=/bin/kill -s TERM $MAINPID | ||
ExecStop=kill -TERM $MAINPID | ExecStop=/bin/kill -s TERM $MAINPID | ||
[Install] | [Install] | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Stopping the Server == | |||
To safely shut down the Eco server, send SIGINT or press {{key|Ctrl+C}} with the <tt>EcoServer</tt> process interactively to initiate a safe shutdown. | |||
==Stopping the Server== | |||
To safely shut down the Eco server, send | |||
Please not that this procedure doesn't work with Eco versions prior to 9.0.0-beta. | Please not that this procedure doesn't work with Eco versions prior to 9.0.0-beta. | ||
Line 173: | Line 122: | ||
You will need to make sure that the Docker container is exposing the ports and map them to ports on the host that are open in the hosts firewall and router. | You will need to make sure that the Docker container is exposing the ports and map them to ports on the host that are open in the hosts firewall and router. | ||
==Troubleshooting== | ==Troubleshooting== | ||
===Missing GDI library=== | ===Missing GDI library === | ||
You may sometimes get a crash on an attempted initial startup with an error resembling the following: | You may sometimes get a crash on an attempted initial startup with an error resembling the following: | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
Line 186: | Line 135: | ||
If this happens, try clicking on the "+" symbol in the "Your Worlds" area, then adding in the external IP and port you used (probably 3000). Unfortunately, https://www.yougetsignal.com/tools/open-ports/ does _not_ accurately reflect one's ability to connect to the server. | If this happens, try clicking on the "+" symbol in the "Your Worlds" area, then adding in the external IP and port you used (probably 3000). Unfortunately, https://www.yougetsignal.com/tools/open-ports/ does _not_ accurately reflect one's ability to connect to the server. | ||