@@ -50,62 +50,78 @@ The GitLab installation consists of setting up the following components:
...
@@ -50,62 +50,78 @@ The GitLab installation consists of setting up the following components:
`sudo` is not installed on Debian by default. Make sure your system is
`sudo` is not installed on Debian by default. Make sure your system is
up-to-date and install it.
up-to-date and install it.
# run as root!
```sh
apt-get update -y
# run as root!
apt-get upgrade -y
apt-get update -y
apt-get install sudo -y
apt-get upgrade -y
apt-get install sudo-y
```
**Note:** During this installation some files will need to be edited manually. If you are familiar with vim set it as default editor with the commands below. If you are not familiar with vim please skip this and keep using the default editor.
**Note:** During this installation some files will need to be edited manually. If you are familiar with vim set it as default editor with the commands below. If you are not familiar with vim please skip this and keep using the default editor.
# When editing config/gitlab.yml (Step 5), change the git -> bin_path to /usr/local/bin/git
# When editing config/gitlab.yml (Step 5), change the git -> bin_path to /usr/local/bin/git
```
**Note:** In order to receive mail notifications, make sure to install a mail server. By default, Debian is shipped with exim4 but this [has problems](https://gitlab.com/gitlab-org/gitlab-ce/issues/12754) while Ubuntu does not ship with one. The recommended mail server is postfix and you can install it with:
**Note:** In order to receive mail notifications, make sure to install a mail server. By default, Debian is shipped with exim4 but this [has problems](https://gitlab.com/gitlab-org/gitlab-ce/issues/12754) while Ubuntu does not ship with one. The recommended mail server is postfix and you can install it with:
sudo apt-get install -y postfix
```sh
sudo apt-get install-y postfix
```
Then select 'Internet Site' and press enter to confirm the hostname.
Then select 'Internet Site' and press enter to confirm the hostname.
...
@@ -127,22 +143,28 @@ instructions are designed to install Ruby from the official source code.
...
@@ -127,22 +143,28 @@ instructions are designed to install Ruby from the official source code.
echo"deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
echo"deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt-get update
sudo apt-get install yarn
sudo apt-get install yarn
```
```
Visit the official websites for [node](https://nodejs.org/en/download/package-manager/) and [yarn](https://yarnpkg.com/en/docs/install/) if you have any trouble with these steps.
Visit the official websites for [node](https://nodejs.org/en/download/package-manager/) and [yarn](https://yarnpkg.com/en/docs/install/) if you have any trouble with these steps.
...
@@ -185,7 +209,9 @@ Visit the official websites for [node](https://nodejs.org/en/download/package-ma
...
@@ -185,7 +209,9 @@ Visit the official websites for [node](https://nodejs.org/en/download/package-ma
# Update username/password in config/database.yml.
# MySQL and remote PostgreSQL only:
# You only need to adapt the production settings (first part).
# Update username/password in config/database.yml.
# If you followed the database guide then please do as follows:
# You only need to adapt the production settings (first part).
# Change 'secure password' with the value you have given to $password
# If you followed the database guide then please do as follows:
# You can keep the double quotes around the password
# Change 'secure password' with the value you have given to $password
sudo -u git -H editor config/database.yml
# You can keep the double quotes around the password
sudo-u git -H editor config/database.yml
# PostgreSQL and MySQL:
# Make config/database.yml readable to git only
# PostgreSQL and MySQL:
sudo -u git -H chmod o-rwx config/database.yml
# Make config/database.yml readable to git only
sudo-u git -Hchmod o-rwx config/database.yml
```
### Install Gems
### Install Gems
**Note:** As of bundler 1.5.2, you can invoke `bundle install -jN` (where `N` the number of your processor cores) and enjoy the parallel gems installation with measurable difference in completion time (~60% faster). Check the number of your cores with `nproc`. For more information check this [post](https://robots.thoughtbot.com/parallel-gem-installing-using-bundler). First make sure you have bundler >= 1.5.2 (run `bundle -v`) as it addresses some [issues](https://devcenter.heroku.com/changelog-items/411) that were [fixed](https://github.com/bundler/bundler/pull/2817) in 1.5.2.
**Note:** As of bundler 1.5.2, you can invoke `bundle install -jN` (where `N` the number of your processor cores) and enjoy the parallel gems installation with measurable difference in completion time (~60% faster). Check the number of your cores with `nproc`. For more information check this [post](https://robots.thoughtbot.com/parallel-gem-installing-using-bundler). First make sure you have bundler >= 1.5.2 (run `bundle -v`) as it addresses some [issues](https://devcenter.heroku.com/changelog-items/411) that were [fixed](https://github.com/bundler/bundler/pull/2817) in 1.5.2.
# For PostgreSQL (note, the option says "without ... mysql")
```sh
sudo -u git -H bundle install --deployment --without development test mysql aws kerberos
# For PostgreSQL (note, the option says "without ... mysql")
sudo-u git -H bundle install--deployment--without development test mysql aws kerberos
# Or if you use MySQL (note, the option says "without ... postgres")
# Or if you use MySQL (note, the option says "without ... postgres")
sudo -u git -H bundle install --deployment --without development test postgres aws kerberos
sudo-u git -H bundle install--deployment--without development test postgres aws kerberos
```
**Note:** If you want to use Kerberos for user authentication, then omit `kerberos` in the `--without` option above.
**Note:** If you want to use Kerberos for user authentication, then omit `kerberos` in the `--without` option above.
...
@@ -420,12 +456,14 @@ sudo usermod -aG redis git
...
@@ -420,12 +456,14 @@ sudo usermod -aG redis git
GitLab Shell is an SSH access and repository management software developed specially for GitLab.
GitLab Shell is an SSH access and repository management software developed specially for GitLab.
# Run the installation task for gitlab-shell (replace `REDIS_URL` if needed):
GitLab-Pages uses [GNU Make](https://www.gnu.org/software/make/). This step is optional and only needed if you wish to host static sites from within GitLab. The following commands will install GitLab-Pages in `/home/git/gitlab-pages`. For additional setup steps, please consult the [administration guide](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/administration/pages/source.md) for your version of GitLab as the GitLab Pages daemon can be ran several different ways.
GitLab-Pages uses [GNU Make](https://www.gnu.org/software/make/). This step is optional and only needed if you wish to host static sites from within GitLab. The following commands will install GitLab-Pages in `/home/git/gitlab-pages`. For additional setup steps, please consult the [administration guide](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/administration/pages/source.md) for your version of GitLab as the GitLab Pages daemon can be ran several different ways.
# When done you see 'Administrator account created:'
# When done you see 'Administrator account created:'
```
**Note:** You can set the Administrator/root password and e-mail by supplying them in environmental variables, `GITLAB_ROOT_PASSWORD` and `GITLAB_ROOT_EMAIL` respectively, as seen below. If you don't set the password (and it is set to the default one) please wait with exposing GitLab to the public internet until the installation is done and you've logged into the server the first time. During the first login you'll be forced to change the default password.
**Note:** You can set the Administrator/root password and e-mail by supplying them in environmental variables, `GITLAB_ROOT_PASSWORD` and `GITLAB_ROOT_EMAIL` respectively, as seen below. If you don't set the password (and it is set to the default one) please wait with exposing GitLab to the public internet until the installation is done and you've logged into the server the first time. During the first login you'll be forced to change the default password.
If you installed GitLab in another directory or as a user other than the default you should change these settings in `/etc/default/gitlab`. Do not edit `/etc/init.d/gitlab` as it will be changed on upgrade.
If you installed GitLab in another directory or as a user other than the default you should change these settings in `/etc/default/gitlab`. Do not edit `/etc/init.d/gitlab` as it will be changed on upgrade.
Make sure to edit the config file to match your setup. Also, ensure that you match your paths to GitLab, especially if installing for a user other than the 'git' user:
Make sure to edit the config file to match your setup. Also, ensure that you match your paths to GitLab, especially if installing for a user other than the 'git' user:
# Change YOUR_SERVER_FQDN to the fully-qualified
```sh
# domain name of your host serving GitLab.
# Change YOUR_SERVER_FQDN to the fully-qualified
#
# domain name of your host serving GitLab.
# Remember to match your paths to GitLab, especially
#
# if installing for a user other than 'git'.
# Remember to match your paths to GitLab, especially
#
# if installing for a user other than 'git'.
# If using Ubuntu default nginx install:
#
# either remove the default_server from the listen line
# If using Ubuntu default nginx install:
# or else sudo rm -f /etc/nginx/sites-enabled/default
# either remove the default_server from the listen line
sudo editor /etc/nginx/sites-available/gitlab
# or else sudo rm -f /etc/nginx/sites-enabled/default
sudo editor /etc/nginx/sites-available/gitlab
```
If you intend to enable GitLab pages, there is a separate Nginx config you need
If you intend to enable GitLab pages, there is a separate Nginx config you need
to use. Read all about the needed configuration at the
to use. Read all about the needed configuration at the
...
@@ -581,13 +656,17 @@ to use. Read all about the needed configuration at the
...
@@ -581,13 +656,17 @@ to use. Read all about the needed configuration at the
Validate your `gitlab` or `gitlab-ssl` Nginx config file with the following command:
Validate your `gitlab` or `gitlab-ssl` Nginx config file with the following command:
sudo nginx -t
```sh
sudo nginx -t
```
You should receive `syntax is okay` and `test is successful` messages. If you receive errors check your `gitlab` or `gitlab-ssl` Nginx config file for typos, etc. as indicated in the error message given.
You should receive `syntax is okay` and `test is successful` messages. If you receive errors check your `gitlab` or `gitlab-ssl` Nginx config file for typos, etc. as indicated in the error message given.
### Restart
### Restart
sudo service nginx restart
```sh
sudo service nginx restart
```
## Done!
## Done!
...
@@ -595,7 +674,9 @@ You should receive `syntax is okay` and `test is successful` messages. If you re
...
@@ -595,7 +674,9 @@ You should receive `syntax is okay` and `test is successful` messages. If you re
To make sure you didn't miss anything run a more thorough check with:
To make sure you didn't miss anything run a more thorough check with:
If all items are green, then congratulations on successfully installing GitLab!
If all items are green, then congratulations on successfully installing GitLab!
...
@@ -682,31 +763,39 @@ for the changes to take effect.
...
@@ -682,31 +763,39 @@ for the changes to take effect.
If you'd like to connect to a Redis server on a non-standard port or on a different host, you can configure its connection string via the `config/resque.yml` file.
If you'd like to connect to a Redis server on a non-standard port or on a different host, you can configure its connection string via the `config/resque.yml` file.
# example
```
production:
# example
url: redis://redis.example.tld:6379
production:
url: redis://redis.example.tld:6379
```
If you want to connect the Redis server via socket, then use the "unix:" URL scheme and the path to the Redis socket file in the `config/resque.yml` file.
If you want to connect the Redis server via socket, then use the "unix:" URL scheme and the path to the Redis socket file in the `config/resque.yml` file.
# example
```
production:
# example
url: unix:/path/to/redis/socket
production:
url: unix:/path/to/redis/socket
```
Also you can use environment variables in the `config/resque.yml` file:
Also you can use environment variables in the `config/resque.yml` file:
# example
```
production:
# example
url: <%= ENV.fetch('GITLAB_REDIS_URL') %>
production:
url: <%= ENV.fetch('GITLAB_REDIS_URL') %>
```
### Custom SSH Connection
### Custom SSH Connection
If you are running SSH on a non-standard port, you must change the GitLab user's SSH config.
If you are running SSH on a non-standard port, you must change the GitLab user's SSH config.
# Add to /home/git/.ssh/config
```
host localhost # Give your setup a name (here: override localhost)
# Add to /home/git/.ssh/config
user git # Your remote git user
host localhost # Give your setup a name (here: override localhost)
port 2222 # Your port number
user git # Your remote git user
hostname 127.0.0.1; # Your server name or IP
port 2222 # Your port number
hostname 127.0.0.1; # Your server name or IP
```
You also need to change the corresponding options (e.g. `ssh_user`, `ssh_host`, `admin_uri`) in the `config\gitlab.yml` file.
You also need to change the corresponding options (e.g. `ssh_user`, `ssh_host`, `admin_uri`) in the `config\gitlab.yml` file.