This guide will explain how to set up a Linux server running on [Google Cloud](https://cloud.google.com/).
Google cloud offers $300 free credits to new users for a limited time, and it also have "Always free products". See [overview](https://cloud.google.com/free) and [docs](https://cloud.google.com/free/docs/gcp-free-tier) for more information.
## Before you begin
1) In the Cloud Console, on the project selector page, select or create a Cloud project.
> Note: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.
**[Go to the project selector page](https://console.cloud.google.com/projectselector2/home/dashboard)**
2) You may need to enable billing for your Google Cloud project. If you have free credits (see above) then these will be used first. [Learn how to confirm billing is enabled for your project.](https://cloud.google.com/billing/docs/how-to/modify-project)
## Setting up a new Server
Start by creating and configuring a new Compute Engine instance.
1) In the Cloud Console, go to the VM instances page:
**[Go to the VM instances page](https://console.cloud.google.com/compute/instances)**
If this is your first instance you will see a dialog prompting you to create a new virtual machine
![create new](./01-vm-instances.jpg)
2) Click Create to get started.
3) On the Create an instance page, configure your instance as follows:
- Name your instance. This tutorial uses the instance name `mirror-instance-demo` throughout.
- Select the region and zone in which you want your instance to be hosted. This tutorial uses the region `us-central1 (Iowa)` and the zone `us-central1-a` throughout.
- Machine configuration depends on the size of your game. For a simple example we can use a small server.
- select `N1` for series
- select `f1-micro` for machine type
- In the Boot disk section, click Change. The Boot disk dialog will pop up.
- Change the disk type to SSD Persistent Disk.
![create instance with name and region](./02-create-instance-name-region.jpg)
4) Boot disk can be left as default `10gb standard persistent disk` with `Debian GNU/Linux 9 (stretch)` for this tutorial.
You may want to change it to best fit your needs. You can instead use an ssd or increase its size, however this will increase the monthly cost.
![Boot disk](./03-boot-disk.jpg)
> Note: The monthly estimate should be shown at the top right next to `Name`
5) To configure Network settings first example the `Management, security, disks, networking, solo tenancy` section, then click on the `Networking` tab.
- Protocols or ports: Select TCP, and then enter port 7777 into the field provided.
- If you're using the default Kcp Transport in your Network Manager instead of the Telepathy Transport, then you will need to use UDP instead. If you are using a different transport or have configured it to use a different port then you will need to use those settings.
- screen name is given by `-S` when creating the screen, for this tutorial it was `mirrorServer`
```sh
screen -r <process-id|screenname>
```
- Detach from screen press `CTRL A + D`
- Stop your game
Once attached to a screen you can press `CTRL + C` to stop the process, this will stop your game and close the screen
### View log files
You can use the `-logfile ~/path/to/log.log` argument for Unity when starting your game server. This will cause the logs to be written to a file instead of to the terminal. This will means recent logs wont show up in `screen -r`.
- you can use the `tail` command to view the the end of the log file
```sh
tail -n 50 ./server.log
```
- you can use the `-n` argument to set how many lines to show
- you can use the `-f` argument follow the end of the file stream showing you any new logs that are written to the file in real time. You will need to press `CTRL + C` to exit follow mode
## Clean up after tutorial
If you used an existing project you will need to delete the following:
- VM instance
- Firewall rule
If you have created a new project you should be able to just delete the project.
**[Go to the Manage resources page](https://console.cloud.google.com/iam-admin/projects)**