summaryrefslogtreecommitdiff
path: root/doc/pages/administration.md
diff options
context:
space:
mode:
authorAchilleas Pipinellis <axilleas@axilleas.me>2015-12-17 18:03:38 +0200
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-01-31 22:53:55 +0000
commitab220022f40b526ce5b937caed2a13b4b1ca239b (patch)
treed72a561d87328ebf7f8da00f1a661912f58e2e27 /doc/pages/administration.md
parentf8b0d06b3d341b822c6a2b7f54c979f7c0e86b94 (diff)
downloadgitlab-ce-ab220022f40b526ce5b937caed2a13b4b1ca239b.tar.gz
Add GitLab Pages administration guide
Diffstat (limited to 'doc/pages/administration.md')
-rw-r--r--doc/pages/administration.md146
1 files changed, 146 insertions, 0 deletions
diff --git a/doc/pages/administration.md b/doc/pages/administration.md
new file mode 100644
index 00000000000..e754d4cbd96
--- /dev/null
+++ b/doc/pages/administration.md
@@ -0,0 +1,146 @@
+# GitLab Pages Administration
+
+_**Note:** This feature was [introduced][ee-80] in GitLab EE 8.3_
+
+If you are looking for ways to upload your static content in GitLab Pages, you
+probably want to read the [user documentation](README.md).
+
+## Configuration
+
+There are a couple of things to consider before enabling GitLab pages in your
+GitLab EE instance.
+
+1. You need to properly configure your DNS to point to the domain that pages
+ will be served
+1. Pages use a separate nginx configuration file which needs to be explicitly
+ added in the server under which GitLab EE runs
+
+Both of these settings are described in detail in the sections below.
+
+### DNS configuration
+
+GitLab Pages expect to run on their own virtual host. In your DNS 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:
+
+```
+*.gitlabpages.com. 60 IN A 1.2.3.4
+```
+
+where `gitlabpages.com` is the domain under which GitLab Pages will be served
+and `1.2.3.4` is the IP address of your GitLab instance.
+
+It is strongly advised to **not** use the GitLab domain to serve user pages.
+See [security](#security).
+
+### Omnibus package installations
+
+See the relevant documentation at <http://doc.gitlab.com/omnibus/settings/pages.html>.
+
+### Installations from source
+
+1. Go to the GitLab installation directory:
+
+ ```bash
+ cd /home/git/gitlab
+ ```
+
+1. Edit `gitlab.yml` and under the `pages` setting, set `enabled` to `true` in
+ order to enable the pages feature:
+
+ ```bash
+ ## GitLab Pages
+ pages:
+ enabled: true
+ # 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: example.com
+ port: 80 # Set to 443 if you serve the pages with HTTPS
+ https: false # Set to true if you serve the pages with HTTPS
+ ```
+
+1. Make sure you have copied the new `gitlab-pages` Nginx configuration file:
+
+ ```bash
+ sudo cp lib/support/nginx/gitlab-pages /etc/nginx/sites-available/gitlab-pages.conf
+ 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 `gitlabpages.com`, replace
+
+ ```bash
+ server_name ~^(?<group>.*)\.YOUR_GITLAB_PAGES\.DOMAIN$;
+ ```
+
+ with
+
+ ```
+ server_name ~^(?<group>.*)\.gitlabpages\.com$;
+ ```
+
+ You must be extra careful to not remove the backslashes.
+
+1. Restart Nginx and GitLab:
+
+ ```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.
+
+1. In `gitlab.yml`, set the port to `443` and https to `true`:
+
+ ```bash
+ ## GitLab Pages
+ pages:
+ enabled: true
+ # 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: gitlabpages.com
+ port: 443 # Set to 443 if you serve the pages with HTTPS
+ https: true # Set to true if you serve the pages with HTTPS
+ ```
+1. Use 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
+ ```
+
+ Make sure to edit the config and add your domain as well as correctly point
+ to the right location where the SSL certificates reside.
+
+## Set maximum pages size
+
+The maximum size of the unpacked archive can be configured in the Admin area
+under the Application settings in the **Maximum size of pages (MB)**.
+The default is 100MB.
+
+## Security
+
+You should strongly consider running GitLab pages under a different hostname
+than GitLab to prevent XSS.
+
+## How it works
+
+- The public/ is extracted from artifacts and content is served as static pages
+- Pages asynchronous worker use `dd` to limit the unpacked tar size
+- Pages are part of backups
+- Pages notify the deployment status using Commit Status API
+- Pages use a new sidekiq queue: pages
+
+[ee-80]: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/80
+[wiki-wildcard-dns]: https://en.wikipedia.org/wiki/Wildcard_DNS_record