summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAchilleas Pipinellis <axilleas@axilleas.me>2016-02-22 01:22:28 +0200
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-01-31 22:55:29 +0000
commitd24763fa16874cf8f99a32635787134f4f76d699 (patch)
tree027b1aa4126520c9d663a6fddfa40c5baf150c37 /doc
parentfed8b62c3d4c57dae05ed4796c19bccdaf540886 (diff)
downloadgitlab-ce-d24763fa16874cf8f99a32635787134f4f76d699.tar.gz
Add the four scenarios and NGINX caveats
Diffstat (limited to 'doc')
-rw-r--r--doc/pages/administration.md203
1 files changed, 126 insertions, 77 deletions
diff --git a/doc/pages/administration.md b/doc/pages/administration.md
index eeda4af18fe..5d7c0d76620 100644
--- a/doc/pages/administration.md
+++ b/doc/pages/administration.md
@@ -28,11 +28,12 @@ probably want to read the [user documentation](README.md).
- [Configuration](#configuration)
- [Configuration scenarios](#configuration-scenarios)
- [DNS configuration](#dns-configuration)
-- [Custom domains without TLS](#custom-domains-without-tls)
-- [Custom domains with TLS](#custom-domains-with-tls)
-- [Wildcard HTTPS domain without custom domains](#wildcard-https-domain-without-custom-domains)
-- [Wildcard HTTP domain without custom domains](#wildcard-http-domain-without-custom-domains)
-- [Omnibus package installations](#omnibus-package-installations)
+- [Setting up GitLab Pages](#setting-up-gitlab-pages)
+ - [Custom domains with HTTPS support](#custom-domains-with-https-support)
+ - [Custom domains without HTTPS support](#custom-domains-without-https-support)
+ - [Wildcard HTTP domain without custom domains](#wildcard-http-domain-without-custom-domains)
+ - [Wildcard HTTPS domain without custom domains](#wildcard-https-domain-without-custom-domains)
+- [NGINX caveats](#nginx-caveats)
- [Set maximum pages size](#set-maximum-pages-size)
- [Change storage path](#change-storage-path)
- [Backup](#backup)
@@ -145,46 +146,57 @@ you need to add a [wildcard DNS A record][wiki-wildcard-dns] pointing to the
host that GitLab runs. For example, an entry would look like this:
```
-*.gitlab.io. 60 IN A 1.2.3.4
+*.example.io. 1800 IN A 1.2.3.4
```
-where `gitlab.io` is the domain under which GitLab Pages will be served
+where `example.io` is the domain under which GitLab Pages will be served
and `1.2.3.4` is the IP address of your GitLab instance.
You should not use the GitLab domain to serve user pages. For more information
see the [security section](#security).
-### Omnibus package installations
+[wiki-wildcard-dns]: https://en.wikipedia.org/wiki/Wildcard_DNS_record
-## Custom domains without TLS
+## Setting up GitLab Pages
+
+Below are the four scenarios that are described in
+[#configuration-scenarios](#configuration-scenarios).
+
+### Custom domains with HTTPS support
+
+**Source installations:**
1. [Install the pages daemon](#install-the-pages-daemon)
1. Edit `gitlab.yml` to look like the example below. You need to change the
`host` to the FQDN under which GitLab Pages will be served. Set
- `external_http` to the secondary IP on which the pages daemon will listen
- for connections:
+ `external_http` and `external_https` to the secondary IP on which the pages
+ daemon will listen for connections:
```yaml
+ ## GitLab Pages
pages:
enabled: true
# The location where pages are stored (default: shared/pages).
# path: shared/pages
host: example.io
- port: 80
- https: false
+ port: 443
+ https: true
external_http: 1.1.1.1:80
+ external_https: 1.1.1.1:443
```
1. Edit `/etc/default/gitlab` and set `gitlab_pages_enabled` to `true` in
order to enable the pages daemon. In `gitlab_pages_options` the
- `-pages-domain` and `-listen-http` must match the `host` and `external_http`
- settings that you set above respectively:
+ `-pages-domain`, `-listen-http` and `-listen-https` must match the `host`,
+ `external_http` and `external_https` settings that you set above respectively.
+ The `-root-cert` and `-root-key` settings are the wildcard TLS certificates
+ of the `example.io` domain:
```
gitlab_pages_enabled=true
- gitlab_pages_options="-pages-domain example.io -pages-root $app_root/shared/pages -listen-proxy 127.0.0.1:8090 -listen-http 1.1.1.1:80"
+ gitlab_pages_options="-pages-domain example.io -pages-root $app_root/shared/pages -listen-proxy 127.0.0.1:8090 -listen-http 1.1.1.1:80 -listen-https 1.1.1.1:443 -root-cert /path/to/example.io.crt -root-key /path/to/example.io.key
```
1. Copy the `gitlab-pages-ssl` Nginx configuration file:
@@ -194,45 +206,47 @@ see the [security section](#security).
sudo ln -sf /etc/nginx/sites-{available,enabled}/gitlab-pages-ssl.conf
```
- Make sure to edit the config to add your domain as well as correctly point
- to the right location of the SSL certificate files. Restart Nginx for the
- changes to take effect.
+ Make sure to [properly edit the config](#nginx-caveats) to add your domain
+ as well as correctly point to the right location of the SSL certificate
+ files. Restart Nginx for the changes to take effect.
+
+1. [Restart GitLab][restart]
+
+---
+
+**Omnibus installations:**
-1. [Restart GitLab](../../administration/restart_gitlab.md)
+### Custom domains without HTTPS support
-## Custom domains with TLS
+**Source installations:**
1. [Install the pages daemon](#install-the-pages-daemon)
1. Edit `gitlab.yml` to look like the example below. You need to change the
`host` to the FQDN under which GitLab Pages will be served. Set
- `external_http` and `external_https` to the secondary IP on which the pages
- daemon will listen for connections:
+ `external_http` to the secondary IP on which the pages daemon will listen
+ for connections:
```yaml
- ## GitLab Pages
pages:
enabled: true
# The location where pages are stored (default: shared/pages).
# path: shared/pages
host: example.io
- port: 443
- https: true
+ port: 80
+ https: false
external_http: 1.1.1.1:80
- external_https: 1.1.1.1:443
```
1. Edit `/etc/default/gitlab` and set `gitlab_pages_enabled` to `true` in
order to enable the pages daemon. In `gitlab_pages_options` the
- `-pages-domain`, `-listen-http` and `-listen-https` must match the `host`,
- `external_http` and `external_https` settings that you set above respectively.
- The `-root-cert` and `-root-key` settings are the wildcard TLS certificates
- of the `example.io` domain:
+ `-pages-domain` and `-listen-http` must match the `host` and `external_http`
+ settings that you set above respectively:
```
gitlab_pages_enabled=true
- gitlab_pages_options="-pages-domain example.io -pages-root $app_root/shared/pages -listen-proxy 127.0.0.1:8090 -listen-http 1.1.1.1:80 -listen-https 1.1.1.1:443 -root-cert /path/to/example.io.crt -root-key /path/to/example.io.key
+ gitlab_pages_options="-pages-domain example.io -pages-root $app_root/shared/pages -listen-proxy 127.0.0.1:8090 -listen-http 1.1.1.1:80"
```
1. Copy the `gitlab-pages-ssl` Nginx configuration file:
@@ -242,14 +256,20 @@ see the [security section](#security).
sudo ln -sf /etc/nginx/sites-{available,enabled}/gitlab-pages-ssl.conf
```
- Make sure to edit the config to add your domain as well as correctly point
- to the right location of the SSL certificate files. Restart Nginx for the
- changes to take effect.
+ Make sure to [properly edit the config](#nginx-caveats) to add your domain.
+ Restart Nginx for the changes to take effect.
+
+1. [Restart GitLab][restart]
+
+---
-1. [Restart GitLab](../../administration/restart_gitlab.md)
+**Omnibus installations:**
-## Wildcard HTTPS domain without custom domains
+### Wildcard HTTP domain without custom domains
+**Source installations:**
+
+1. [Install the pages daemon](#install-the-pages-daemon)
1. Go to the GitLab installation directory:
```bash
@@ -266,12 +286,9 @@ see the [security section](#security).
# The location where pages are stored (default: shared/pages).
# path: shared/pages
- # The domain under which the pages are served:
- # http://group.example.com/project
- # or project path can be a group page: group.example.com
- host: gitlab.io
- port: 80 # Set to 443 if you serve the pages with HTTPS
- https: false # Set to true if you serve the pages with HTTPS
+ host: example.io
+ port: 80
+ https: false
```
1. Make sure you have copied the new `gitlab-pages` Nginx configuration file:
@@ -281,39 +298,27 @@ see the [security section](#security).
sudo ln -sf /etc/nginx/sites-{available,enabled}/gitlab-pages.conf
```
- Don't forget to add your domain name in the Nginx config. For example if
- your GitLab pages domain is `gitlab.io`, replace
+ Make sure to [properly edit the config](#nginx-caveats) to add your domain.
+ Restart Nginx for the changes to take effect.
- ```bash
- server_name ~^(?<group>.*)\.YOUR_GITLAB_PAGES\.DOMAIN$;
- ```
+1. [Restart GitLab][restart]
- with
+---
- ```
- server_name ~^(?<group>.*)\.gitlabpages\.com$;
- ```
+**Omnibus installations:**
- You must be extra careful to not remove the backslashes. If you are using
- a subdomain, make sure to escape all dots (`.`) with a backslash (\).
- For example `pages.gitlab.io` would be:
+1. Set the external URL for GitLab Pages in `/etc/gitlab/gitlab.rb`:
+ ```ruby
+ pages_external_url 'http://example.io'
```
- server_name ~^(?<group>.*)\.pages\.gitlab\.io$;
- ```
+1. [Reconfigure GitLab][reconfigure]
-1. Restart Nginx and GitLab:
+### Wildcard HTTPS domain without custom domains
- ```bash
- sudo service nginx restart
- sudo service gitlab restart
- ```
-
-### Running GitLab Pages with HTTPS
-
-If you want the pages to be served under HTTPS, a wildcard SSL certificate is
-required.
+**Source installations:**
+1. [Install the pages daemon](#install-the-pages-daemon)
1. In `gitlab.yml`, set the port to `443` and https to `true`:
```bash
@@ -323,24 +328,65 @@ required.
# The location where pages are stored (default: shared/pages).
# path: shared/pages
- # The domain under which the pages are served:
- # http://group.example.com/project
- # or project path can be a group page: group.example.com
- host: gitlab.io
- port: 443 # Set to 443 if you serve the pages with HTTPS
- https: true # Set to true if you serve the pages with HTTPS
+ host: example.io
+ port: 443
+ https: true
```
1. Copy the `gitlab-pages-ssl` Nginx configuration file:
```bash
sudo cp lib/support/nginx/gitlab-pages-ssl /etc/nginx/sites-available/gitlab-pages-ssl.conf
- sudo ln -sf /etc/nginx/sites-{available,enabled}/gitlab-pages.conf
+ sudo ln -sf /etc/nginx/sites-{available,enabled}/gitlab-pages-ssl.conf
```
- Make sure to edit the config to add your domain as well as correctly point
- to the right location of the SSL certificate files. Restart Nginx for the
- changes to take effect.
+ Make sure to [properly edit the config](#nginx-caveats) to add your domain
+ as well as correctly point to the right location of the SSL certificate
+ files. Restart Nginx for the changes to take effect.
+
+---
+
+**Omnibus installations:**
+
+1. Place the certificate and key inside `/etc/gitlab/ssl`
+1. In `/etc/gitlab/gitlab.rb` specify the following configuration:
+
+ ```ruby
+ pages_external_url 'https://example.io'
+
+ pages_nginx['redirect_http_to_https'] = true
+ pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/pages-nginx.crt"
+ pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/pages-nginx.key"
+ ```
+
+ where `pages-nginx.crt` and `pages-nginx.key` are the SSL cert and key,
+ respectively.
+
+1. [Reconfigure GitLab][reconfigure]
+
+## NGINX caveats
+
+Be extra careful when setting up the domain name in the NGINX config. You must
+not remove the backslashes.
+
+If your GitLab pages domain is `example.io`, replace:
+
+```bash
+server_name ~^(?<group>.*)\.YOUR_GITLAB_PAGES\.DOMAIN$;
+```
+
+with:
+
+```
+server_name ~^(?<group>.*)\.example\.io$;
+```
+
+If you are using a subdomain, make sure to escape all dots (`.`) with a
+backslash (\). For example `pages.example.io` would be:
+
+```
+server_name ~^(?<group>.*)\.pages\.example\.io$;
+```
## Set maximum pages size
@@ -413,3 +459,6 @@ No new changes.
[8-3-docs]: https://gitlab.com/gitlab-org/gitlab-ee/blob/8-3-stable-ee/doc/pages/administration.md
---
+
+[reconfigure]: ../../administration/restart_gitlab.md#omnibus-gitlab-reconfigure
+[restart]: ../../administration/restart_gitlab.md#installations-from-source