UPDATE March 2017: Google Cloud has recently started an always free tier (in addition to 1 year trial of up to $300). However, it is limited to a few US regions only at the moment. If you want a US server I'd go with Google Cloud since it won't be limited to one year like Amazon. I will try to put a guide together soon.

You can run an Altitude server for free for one year through Amazon Web Services (AWS). If you want the lowest latency possible you should pay for a server (will write another guide for other providers soon), but Amazon EC2 is stable and provides decent latency. EC2 has been used in the past for various servers. Altitourney was on US East, old EU ladder was on EU for awhile, and I currently have some Australia servers running out of Sydney (only have like 2 months left free though).

This guide is written for running a Linux EC2 server and setting it up with tools that run on Windows. This guide will still be helpful if you don't have a Windows machine to set up your EC2 instance, but you will need to find equivalent tools for your OS. I recommend against using Windows EC2 instances though as Linux will run better on a micro instance.

Sign up at http://aws.amazon.com/free/. You will have to provide credit card info, but you won't be charged assuming you stay within the free tier limits and make sure you cancel everything before the year is up.

Locations available:

US East (N. Virginia)

US West (Oregon)

US West (N. California)

EU West (Ireland)

EU Central (Frankfurt)

Asia Pacific (Singapore)

Asia Pacific (Tokyo)

Asia Pacific (Sydney)

South America (São Paulo)

You will only have enough enough free EC2 hours to run a single instance, so pick one of the above locations. You can always destroy an instance and create a new instance in another location if you want.

To log into and set up your server you will need the following applications:Altitude (non steam) - If you only have the steam version installed download the non-steam version / demo and install it. The server configurator tool is not included with the Steam version.PuTTY, PuTTYgen, and Pageant - These are all made by the same person, you can download them at http://www.chiark.greenend.org.uk/~s.../download.html. I recommend the Windows installer but if you want to download the tools individually you can do that too.WinSCP - Used to upload files to your EC2 instance: http://winscp.net/

After you have signed up for an AWS account and have the necessary software follow the steps in the second post.

I think by default it will bring you to the US East location, but not sure. The currently selected location is displayed at the top right. Click on the drop down to select the location where you want to have your Altitude server.

Click Launch Instance button. This guide is for Ubuntu Server, so if you want to use this guide select Ubuntu Server 16.04 LTS (HVM), SSD Volume Type.

By default the next page should be set to a micro instance which is what you need to use for a free server.

In the top list of steps, click the link for 6. Configure Security Group. The SSH port is opened automatically. (Optional: For security reasons it is a good idea to change your SSH port, but initially you will need port 22 open to connect via SSH). Click Add Rule and it will start a new Custom TCP Rule, but we need a Custom UDP Rule so use the dropdown to change to UDP. Enter the port range you want to open for your Altitude servers. By default Altitude server uses port 27275 as the 'update' port and the first server you make starts uses 27276 (increasing by one for each additional server). You can either open up only the ports your servers are using or just open up a wide range such as 27275-27290. You would enter the range like that, 27275-27290, under Port Range. Make sure the Source is Anywhere. If you want to run an http server as I will recommend below for fast map downloads, you need to allow http connections as well. Add a new rule and set the type to HTTP.

Click Review and Launch, followed by Launch on the next page.

You have to set up a security key. Give the key a name and download it. Click Launch Instances. After a few minutes your instance should be online and have an IP address (Public IP on instances page).

Open up PuTTYgen to convert the security key to putty format. In the PuTTYgen menu click Conversions -> Import key and select the [keyname].pem file you just downloaded.

Set up a passphase (password) for the key and then click the 'Save private key' button. Don't lose this key (.pkk file) as you will need it to connect to your instance. Close PuTTYgen.

Run Pageant which will show up within the notification icons on the bottom right of Windows next to the clock. Right click the icon and click Add key. Enter the passprase you set for the key.

Open PuTTY which you will use to connect to your EC2 instance via SSH. Enter the IP address assigned to your instance and click Open. PuTTY may display a popup message the first time you connect, just click through it.

It should open up the console for your instance which will ask you what user to login as. Login as 'ubuntu'

Assuming Pageant has your key loaded correctly, it should be detected and you will log in.

Update Ubuntu by running 'sudo apt-get update', followed by 'sudo apt-get upgrade'. You will need to confirm you want to upgrade if there are updates available so enter Y if asked.

You need to make the installer executable by running 'chmod +x altitude.sh'. Now we are ready to install. Run './altitude.sh -c' to run the installer within the console. Use the default install location, the rest of the options don't really matter. I use symlinks in the default location but say N to putting shortcut on the desktop but again, does not matter for running a server. Say no at the end of installation as you don't want to run Altitude.

Leave the PuTTY session open and run WinSCP. For File protocol select SCP. Enter the IP address under Host name and 'ubuntu' as the user name. Leave password empty since you will log in via key file through pageant. You can save the connection details if you want or just click Login. On the left will be your computer and on the right will be your EC2 server.

Now we just need to transfer over the server configuration file and maps. On your computer make sure you have all the maps you want on your server at C:/Program Files/Altitude/maps in 32bit Windows or C:/Program Files(x 86)/Altitude/maps in 64bit Windows (assuming default install directory, if used custom directory find the maps folder there). After the maps are in place, run server_configurator.exe in the Altitude folder (leave maps folder). You can run multiple servers, but might want to limit yourself to 4 or less. I have done as many as 6 on an EC2 instance. I suspect it would be a problem if all 6 servers were full at the same time, but that is very unlikely to happen. Be sure to increase the UDP upload rate for each server you make if you don't have an http server to put your map files at. UDP transfer is really slow, especally at the default rate of 40 (KB/sec). I usually use http so not real sure what a good number is for UDP, maybe try 300. I recommend installing the Nginx http server on your EC2 instance for fast map downloads. See the end of this post for details.. its very simple on Ubuntu.

After you are finished configuring your servers, click File -> Save and Exit in the server configurator.

In WinSCP navigate to open the altitude folder (hit refresh if you don't see it, the default location will be /home/ubuntu/altitude/ which can also be accessed by via shortcut ~/altitude in SSH with ~ taking you to the current user's home directory). Drag and drop your map files from your local Altitude (non steam) installation into the /maps/ folder in WinSCP. If only using official maps you can skip that as they will automatically download when the server is started if you don't have the map files. After those are done copying create a new directory called 'servers' in the altitude folder (if still in /maps/ go up one level). You can create a directory by pressing F7, clicking the new folder icon/button, or right clicking some empty space in the altitude folder in WinSCP and selecting New->Directory. Copy over launcher_config.xml from the servers folder on your computer to the servers folder on your EC2 instance.

Now we just need to run the server. Start the server by running 'nohup ~/altitude/server_launcher > /dev/null 2>&1 &'. The first run sometimes can take up to a few minutes before it appears in the server list if you are using a lot of maps. If you don't see it soon (and you followed this guide correctly), you may have used too many maps or otherwise have a problem with your server config. Check the ServerLauncher.log file at ~/altitude/log for any errors. You can download it to your computer through WinSCP and open it in Notepad or another text editor. You can also view it directly in the PuTTY console by navigating to the log directory and typing 'nano ServerLauncher.log' or from any location 'nano ~/altitude/log/ServerLauncher.log'. Use keys Control+X to exit, entering N as you don't want to save any changes if you accidentally typed anything when viewing the file.

To stop the Altitude server (do this before uploading a new launcher_config xml file if you are making changes to the server), type 'ps ux' in the console to get a list of running processes. You may want to widen the console window if you have not already or else a lot of the info will be cut off. Get the PID of the process (number on far left) that starts with /home/ubuntu/altitude/jre/bin/... Then type 'kill [PID#]'. If you don't see the process in the list, the server is not running. If you were expecting it to be running it probably crashed due to a bad server configuration.

Feel free to ask me any questions. May look intimidating with all the steps but its rather easy. I just tried to be thorough so it looks lengthy.

To install nginx for fast custom map downloads (officials still download from altitude's servers):
sudo apt-get install nginx
Assuming you allowed HTTP connections via the AWS security group as described early in the instructions, you should now have a functional web server. You can make sure it is working by typing your server IP into your web browser. It should load a basic nginx page letting you know it is working.
To avoid having to place map files both in the altitude folder and in the web server directory, you can create a symbolic link in the web server directory. This means that a virtual folder will exist on the web server that points back at your actual Altitude maps folder. Use the command below to create the link:
ln -s ~/altitude/maps /usr/share/nginx/html/maps
That is all that is needed to get the web server working, but you need to have the map http map download source set in the server configurator. You'll need to set it to:
http://<your amazon ec2 instance ip address>/maps
Upload the updated launcher_config.xml file to ~/altitude/servers/, overwriting any old version if you already uploaded one

Updated November 2016 to Ubuntu 16.04 which once again made changes to 32 bit libraries.