2018-11-08 19:23:39 +05:30
---
2022-07-23 23:45:48 +05:30
stage: Systems
2021-01-03 14:25:43 +05:30
group: Distribution
2021-02-22 17:27:13 +05:30
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
2018-11-08 19:23:39 +05:30
description: 'Learn how to install a GitLab instance on Google Cloud Platform.'
---
2021-04-17 20:07:23 +05:30
# Installing GitLab on Google Cloud Platform **(FREE SELF)**
2017-08-17 22:00:37 +05:30
2022-05-07 20:08:51 +05:30
You can install GitLab on a [Google Cloud Platform (GCP) ](https://cloud.google.com/ ) using the official GitLab Linux package. You should customize it to accommodate your needs.
2017-08-17 22:00:37 +05:30
2021-02-22 17:27:13 +05:30
NOTE:
2021-12-11 22:18:48 +05:30
To deploy production-ready GitLab on
Google Kubernetes Engine,
you can follow Google Cloud Platform's
2022-07-23 23:45:48 +05:30
[`Click to Deploy` steps ](https://github.com/GoogleCloudPlatform/click-to-deploy/blob/master/k8s/gitlab/README.md )
2021-12-11 22:18:48 +05:30
It's an alternative to using a GCP VM, and uses
2019-07-31 22:56:46 +05:30
the [Cloud native GitLab Helm chart ](https://docs.gitlab.com/charts/ ).
2017-08-17 22:00:37 +05:30
## Prerequisites
2022-05-07 20:08:51 +05:30
There are two prerequisites to install GitLab on GCP:
2017-08-17 22:00:37 +05:30
2022-05-07 20:08:51 +05:30
1. You must have a Google account.
1. You must sign up for the GCP program. If this is your first time, Google
2020-05-24 23:13:21 +05:30
gives you [$300 credit for free ](https://console.cloud.google.com/freetrial ) to consume over a 60-day period.
2017-08-17 22:00:37 +05:30
2022-05-07 20:08:51 +05:30
After you have performed those two steps, you can [create a VM ](#creating-the-vm ).
2017-08-17 22:00:37 +05:30
2018-03-27 19:54:05 +05:30
## Creating the VM
2017-08-17 22:00:37 +05:30
2022-05-07 20:08:51 +05:30
To deploy GitLab on GCP you must create a virtual machine:
2017-08-17 22:00:37 +05:30
2019-09-04 21:01:54 +05:30
1. Go to < https: // console . cloud . google . com / compute / instances > and log in with your Google credentials.
2022-05-07 20:08:51 +05:30
1. Select **Create**
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
![Search for GitLab ](img/launch_vm.png )
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
1. On the next page, you can select the type of VM as well as the
2021-03-11 19:13:27 +05:30
estimated costs. Provide the name of the instance, desired data center, and machine type.
2020-06-23 00:09:42 +05:30
Note our [hardware requirements for different user base sizes ](../requirements.md#hardware-requirements ).
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
![Launch on Compute Engine ](img/vm_details.png )
2017-08-17 22:00:37 +05:30
2020-06-23 00:09:42 +05:30
1. To select the size, type, and desired [operating system ](../requirements.md#supported-linux-distributions ),
2022-05-07 20:08:51 +05:30
select **Change** under `Boot disk` . select **Select** when finished.
2017-08-17 22:00:37 +05:30
2022-05-07 20:08:51 +05:30
1. As a last step allow HTTP and HTTPS traffic, then select **Create** . The process finishes in a few seconds.
2017-08-17 22:00:37 +05:30
2018-03-27 19:54:05 +05:30
## Installing GitLab
2017-08-17 22:00:37 +05:30
2021-06-08 01:23:25 +05:30
After a few seconds, the instance is created and available to log in. The next step is to install GitLab onto the instance.
2017-08-17 22:00:37 +05:30
2018-03-27 19:54:05 +05:30
![Deploy settings ](img/vm_created.png )
2017-08-17 22:00:37 +05:30
2021-09-04 01:27:46 +05:30
1. Make a note of the external IP address of the instance, as you will need that in a later step. <!-- using future tense is okay here -->
2022-05-07 20:08:51 +05:30
1. Select **SSH** under the connect column to connect to the instance.
2021-06-08 01:23:25 +05:30
1. A new window appears, with you logged into the instance.
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
![GitLab first sign in ](img/ssh_terminal.png )
2017-08-17 22:00:37 +05:30
2021-09-04 01:27:46 +05:30
1. Next, follow the instructions for installing GitLab for the operating system you choose, at < https: // about . gitlab . com / install /> . You can use the external IP address you noted before as the hostname.
2017-08-17 22:00:37 +05:30
2018-03-27 19:54:05 +05:30
1. Congratulations! GitLab is now installed and you can access it via your browser. To finish installation, open the URL in your browser and provide the initial administrator password. The username for this account is `root` .
2019-09-30 21:07:59 +05:30
![GitLab first sign in ](img/first_signin.png )
2017-08-17 22:00:37 +05:30
## Next steps
These are the most important next steps to take after you installed GitLab for
the first time.
### Assigning a static IP
By default, Google assigns an ephemeral IP to your instance. It is strongly
2021-06-08 01:23:25 +05:30
recommended to assign a static IP if you are using GitLab in production
and use a domain name as shown below.
2017-08-17 22:00:37 +05:30
2019-12-21 20:55:43 +05:30
Read Google's documentation on how to [promote an ephemeral IP address ](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address#promote_ephemeral_ip ).
2017-08-17 22:00:37 +05:30
### Using a domain name
Assuming you have a domain name in your possession and you have correctly
set up DNS to point to the static IP you configured in the previous step,
here's how you configure GitLab to be aware of the change:
2022-05-07 20:08:51 +05:30
1. SSH into the VM. You can select **SSH** in the Google console
2021-06-08 01:23:25 +05:30
and a new window pops up.
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
![SSH button ](img/vm_created.png )
2017-08-17 22:00:37 +05:30
2020-05-24 23:13:21 +05:30
In the future you might want to set up [connecting with an SSH key ](https://cloud.google.com/compute/docs/instances/connecting-to-instance )
2019-09-30 21:07:59 +05:30
instead.
2017-08-17 22:00:37 +05:30
2021-02-22 17:27:13 +05:30
1. Edit the configuration file of Omnibus GitLab using your favorite text editor:
2017-08-17 22:00:37 +05:30
2020-04-22 19:07:51 +05:30
```shell
2019-09-30 21:07:59 +05:30
sudo vim /etc/gitlab/gitlab.rb
```
2017-08-17 22:00:37 +05:30
1. Set the `external_url` value to the domain name you wish GitLab to have
**without** `https` :
2020-04-22 19:07:51 +05:30
```ruby
2019-09-30 21:07:59 +05:30
external_url 'http://gitlab.example.com'
```
2017-08-17 22:00:37 +05:30
2021-06-08 01:23:25 +05:30
We will set up HTTPS in the next step, no need to do this now. <!-- using future tense is okay here -->
2017-08-17 22:00:37 +05:30
1. Reconfigure GitLab for the changes to take effect:
2020-04-22 19:07:51 +05:30
```shell
2019-09-30 21:07:59 +05:30
sudo gitlab-ctl reconfigure
```
2017-08-17 22:00:37 +05:30
1. You can now visit GitLab using the domain name.
### Configuring HTTPS with the domain name
Although not needed, it's strongly recommended to secure GitLab with a TLS
2020-05-24 23:13:21 +05:30
certificate. Follow the steps in the [Omnibus documentation ](https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https ).
2017-08-17 22:00:37 +05:30
### Configuring the email SMTP settings
2022-05-07 20:08:51 +05:30
You must configure the email SMTP settings correctly otherwise GitLab cannot send notification emails, like comments, and password changes.
2020-05-24 23:13:21 +05:30
Check the [Omnibus documentation ](https://docs.gitlab.com/omnibus/settings/smtp.html#smtp-settings ) how to do so.
2017-08-17 22:00:37 +05:30
## Further reading
2021-12-11 22:18:48 +05:30
GitLab can be configured to authenticate with other OAuth providers, like LDAP,
SAML, and Kerberos. Here are some documents you might be interested in reading:
2017-08-17 22:00:37 +05:30
- [Omnibus GitLab documentation ](https://docs.gitlab.com/omnibus/ )
2021-06-08 01:23:25 +05:30
- [Integration documentation ](../../integration/index.md )
2019-09-30 21:07:59 +05:30
- [GitLab Pages configuration ](../../administration/pages/index.md )
2019-12-04 20:38:33 +05:30
- [GitLab Container Registry configuration ](../../administration/packages/container_registry.md )
2017-08-17 22:00:37 +05:30
2019-09-04 21:01:54 +05:30
<!-- ## Troubleshooting
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
one might have when setting this up, or when something is changed, or on upgrading, it's
important to describe those, too. Think of things that may go wrong and include them here.
This is important to minimize requests for support, and to avoid doc comments with
questions that you know someone might ask.
Each scenario can be a third-level heading, e.g. `### Getting error message X` .
If you have none to add when creating a doc, leave this section in place
but commented out to help encourage others to add to it in the future. -->