Installing on Windows with WSL: Difference between revisions

From SigMod
Jump to navigation Jump to search
(Created page with "Based on guides: https://docs.microsoft.com/en-us/windows/wsl/install-win10 https://wiki.teamfortress.com/wiki/Linux_dedicated_server Open PowerShell as administrator, then e...")
 
No edit summary
Line 2: Line 2:


Open PowerShell as administrator, then execute those commands
Open PowerShell as administrator, then execute those commands
  <code>dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart</code>
  dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
 
Now restart your PC. After that, execute another PowerShell command
Now restart your PC. After that, execute another PowerShell command
  <code>wsl --set-default-version  2
  wsl --set-default-version  2
  echo [wsl2] memory=2GB > $env:USERPROFILE/.wslconfig</code>
  echo [wsl2] memory=2GB > $env:USERPROFILE/.wslconfig
Open Microsoft Store and install Ubuntu. Launch Ubuntu from start menu. Fill in username and password info when asked. Install required packages by entering those commands into the window:
Open Microsoft Store and install Ubuntu. Launch Ubuntu from start menu. Fill in username and password info when asked. Install required packages by entering those commands into the window:
  <code>sudo dpkg --add-architecture i386
  sudo dpkg --add-architecture i386
  sudo apt-get update
  sudo apt-get update
  sudo apt install lib32z1 libncurses5:i386 libbz2-1.0:i386 lib32gcc1 lib32stdc++6 libtinfo5:i386 libcurl3-gnutls:i386 steamcmd</code>
  sudo apt install lib32z1 libncurses5:i386 libbz2-1.0:i386 lib32gcc1 lib32stdc++6 libtinfo5:i386 libcurl3-gnutls:i386 steamcmd
You will be asked to accept a license, press tab to move to the ok button, then enter to accept it
You will be asked to accept a license, press tab to move to the ok button, then enter to accept it


This will install and update server in ~/hlserver/hlserver:
This will install and update server in ~/hlserver/hlserver:
  <code>mkdir ~/hlserver
  mkdir ~/hlserver
  cd ~/hlserver
  cd ~/hlserver
  steamcmd +login anonymous +force_install_dir ./hlserver +app_update 232250 +quit</code>
  steamcmd +login anonymous +force_install_dir ./hlserver +app_update 232250 +quit
You can browse server files in windows explorer with this Ubuntu command:
You can browse server files in windows explorer with this Ubuntu command:
  <code>explorer.exe ~/hlserver/hlserver</code>
  explorer.exe ~/hlserver/hlserver
Unpack all sigsegv archive contents into tf directory
Unpack all sigsegv archive contents into tf directory


Line 24: Line 25:


Create a server starting file in Ubuntu shell:
Create a server starting file in Ubuntu shell:
  <code>echo "#!/bin/sh" > ~/startserver.sh
  echo "#!/bin/sh" > ~/startserver.sh
  echo "~/hlserver/hlserver/srcds_run -console -game tf -ip 0.0.0.0 +sv_pure 1 +randommap +maxplayers 24" >> ~/startserver.sh
  echo "~/hlserver/hlserver/srcds_run -console -game tf -ip 0.0.0.0 +sv_pure 1 +randommap +maxplayers 24" >> ~/startserver.sh
  chmod u+x ~/startserver.sh</code>
  chmod u+x ~/startserver.sh
Run server in Ubuntu shell:
Run server in Ubuntu shell:
  <code>~/startserver.sh</code>
  ~/startserver.sh
Or, to run a server from windows CMD / PowerShell:
Or, to run a server from windows CMD / PowerShell:
  <code>wsl ~/startserver.sh</code>
  wsl ~/startserver.sh
You should check your linux server IP with a command executed in PowerShell. IP will change with every system reset:
You should check your linux server IP with a command executed in PowerShell. IP will change with every system reset:
  <code>wsl hostname -I</code>
  wsl hostname -I
You can make the server autostart by adding a scheduled task in Task Scheduler, on login condition, running wsl as a program with ~/startserver.sh as an argument.
You can make the server autostart by adding a scheduled task in Task Scheduler, on login condition, running wsl as a program with ~/startserver.sh as an argument.


=Make server accessible from the Internet and the local network=
=Make the server accessible from the Internet and the local network=
Download a program named [http://aluigi.altervista.org/mytoolz/sudppipe.zip sudppipe] (The browser may mark this file as unsafe so you might have to right click and select Save link As)
Download a program named [http://aluigi.altervista.org/mytoolz/sudppipe.zip sudppipe] (The browser may mark this file as unsafe so you might have to right click and select Save link As)


Unpack the downloaded archive, then create tf2portpipe.bat file in the unpacked directory alongside sudppipe.exe. Replace port value with your own server port. The port should not be in use by any other program (TF2 client often binds to port 27015).
Unpack the downloaded archive, then create tf2portpipe.bat file in the unpacked directory alongside sudppipe.exe. Replace port value with your own server port. The port should not be in use by any other program (TF2 client often binds to port 27015).
  <code>@ECHO off
  @ECHO off
   
   
  SET port=27015
  SET port=27015
Line 46: Line 47:
  SET ip=%%F
  SET ip=%%F
  )
  )
  %~dp0/sudppipe.exe -q -b 0.0.0.0 %ip% %port% %port%</code>
  %~dp0/sudppipe.exe -q -b 0.0.0.0 %ip% %port% %port%
Run the bat file. If you wish to get rid of the console window, add a run on system startup scheduled task, with run whether user is logged on or not option, launching this script file as a program.
Run the bat file. If you wish to get rid of the console window, add a run on system startup scheduled task, with run whether user is logged on or not option, launching this script file as a program.

Revision as of 12:09, 22 June 2021

Based on guides: https://docs.microsoft.com/en-us/windows/wsl/install-win10 https://wiki.teamfortress.com/wiki/Linux_dedicated_server

Open PowerShell as administrator, then execute those commands

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Now restart your PC. After that, execute another PowerShell command

wsl --set-default-version  2
echo [wsl2] memory=2GB > $env:USERPROFILE/.wslconfig

Open Microsoft Store and install Ubuntu. Launch Ubuntu from start menu. Fill in username and password info when asked. Install required packages by entering those commands into the window:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt install lib32z1 libncurses5:i386 libbz2-1.0:i386 lib32gcc1 lib32stdc++6 libtinfo5:i386 libcurl3-gnutls:i386 steamcmd

You will be asked to accept a license, press tab to move to the ok button, then enter to accept it

This will install and update server in ~/hlserver/hlserver:

mkdir ~/hlserver
cd ~/hlserver
steamcmd +login anonymous +force_install_dir ./hlserver +app_update 232250 +quit

You can browse server files in windows explorer with this Ubuntu command:

explorer.exe ~/hlserver/hlserver

Unpack all sigsegv archive contents into tf directory

If you have an existing windows server installation you can copy server files here. Do note that you would need to install a linux version of sourcemod and mm: source.

Create a server starting file in Ubuntu shell:

echo "#!/bin/sh" > ~/startserver.sh
echo "~/hlserver/hlserver/srcds_run -console -game tf -ip 0.0.0.0 +sv_pure 1 +randommap +maxplayers 24" >> ~/startserver.sh
chmod u+x ~/startserver.sh

Run server in Ubuntu shell:

~/startserver.sh

Or, to run a server from windows CMD / PowerShell:

wsl ~/startserver.sh

You should check your linux server IP with a command executed in PowerShell. IP will change with every system reset:

wsl hostname -I

You can make the server autostart by adding a scheduled task in Task Scheduler, on login condition, running wsl as a program with ~/startserver.sh as an argument.

Make the server accessible from the Internet and the local network

Download a program named sudppipe (The browser may mark this file as unsafe so you might have to right click and select Save link As)

Unpack the downloaded archive, then create tf2portpipe.bat file in the unpacked directory alongside sudppipe.exe. Replace port value with your own server port. The port should not be in use by any other program (TF2 client often binds to port 27015).

@ECHO off

SET port=27015

FOR /F "tokens=* USEBACKQ" %%F IN (`wsl hostname -I`) DO (
SET ip=%%F
)
%~dp0/sudppipe.exe -q -b 0.0.0.0 %ip% %port% %port%

Run the bat file. If you wish to get rid of the console window, add a run on system startup scheduled task, with run whether user is logged on or not option, launching this script file as a program.