Turning my old PC into a server. Looking for reference articles or forum posts or advice that others found helpful for doing this.

So take all this info with a grain of salt, and understand I am not trying to dissuade you, only inform you of what you are considering. First things first though: your PC probably has the specs to run most games as a "headless client". Do some research on that and figure out the fun bits of Linux first.

On to the harder bits:

1. Latency & Ping: Your server will be hosted at home. This means that anyone connecting to you will have to use your networking speeds to connect. If the person on the other end is further away, or has a bad network to start, they may not even be able to find the server due to a time-out on the connection. If you have a fast internet, or live close by, this may be completely negated.

2. Connection IP & Public "who is": you will be exposing your network to the general public. People can run a "who is" on your address and find all the fun public info (this is sometimes how people get "swatted"). Regardless of if your server has a whitelist (or blacklist), or is even unlisted, usually anyone can find you in these games in server browsers, and people will attack the server (via DDOS or any number of other methods) just because they can. There are bots everywhere that just go out and ping all possible ip addresses daily just to grab some low hanging fruit and install a Bitcoin miner on your PC - rare, but if you have your server running long enough, you might get one. The best example I know of that is popular is hitting Minecraft servers with bots to see what they can do (log in or install scripts) - or simply using a script on an unsecured port to gain access to the server. You can mitigate this with a properly configured (and good) firewall, and a few other networking tricks like whitelisting your friend's IP addresses (if you know them and are okay with rejecting all other network traffic). There's more, but it's a long listed rabbit hole of network security, you should do some research on it to get a better grasp. And disable port 22 if you're not using it - then look up other priority ports and do the same. You can also mitigate this by obfuscating your IP via a Domain name service, if you feel like being fancy.

3. Data limits and throttling: Depending on your network provider, you may have a data cap, or your network may be throttled for traffic. It doesn't seem like much traffic, but trust me, it adds up and you can hit the cap if you really tried. I dropped Comcast for this exact reason - I was able to eat through 1TB of data in less than two weeks.

4. Backups, Installation, Updates, and Maintenance: 9 times out of 10, the server hosting software is a headless client install and runs without a GUI. I mentioned this before, but you'll want to know how to manually update these using a terminal or command prompt, as most server tools don't come with an "auto update", especially if you are building from scratch. This isn't always the case, but be prepared to update right when you're ready to play the game. This is something you usually figure out with experience and get the hang of soon enough. AND FOR THE LOVE OF FUCK MAKE BACKUPS WHEN SOMETHING IS WORKING. Learn to recursively ".tar.gz" a folder.

5. No website required: you are not a hosting service. You do not need a page everyone can see. Close that shit down and don't leave another vector of attack for any bad actors on the web. Do it all locally if you can instead of web anything - it sounds like paranoia, but I've seen attacks on servers before and it's something I feel I should warn about. When you run a game server, you are probably going to open up a console and type "systemctl start gameName", then your game will boot up and people can connect through the game. Odds are there are extra configurations for the game servers, but you'll have to read up on the documentation through their website, including which ports to keep open.

6. Your router and home network: for a project that you host for yourself, something to stream videos, or play locally on your network, it's fine. But start adding traffic outside of that networking, you may have to configure port forwarding, your DNS, reserved IPs, and so on for users to connect to your server, and not some other device on your network. Each router is different, so again, check the documentation. If you can get that sorted, additional services on the network should be a breeze.

7. Do it all locally and test it FIRST: You'll get the server up and running, and you'll connect and tell your friends "It's ready!" Then they can't connect. I have done this myself. If it's working locally first, you can connect and play, then you know when your friends can't connect, it is a networking issue. Also running it locally allows you to make sure it runs as expected, so you don't have any weird surprises when playing. Most of the time, you won't, but if you get to installing mods, fixing an issue with one incompatible with your server may end up taking longer than expected, and ruin your planned night of fun. Simply playing on your server by connecting through the built in server browser in the game (like you would any other server) should be enough to say it's ready.

8. Good Luck: Despite all this, owning your own server is fun, in my opinion, and it's YOUR server. You don't have to use anything a server provider may force on you, and you have root permissions (don't run your games as root please!) So that if something breaks, you have direct access to fix it.

/r/pcmasterrace Thread