debian-mirror-gitlab/doc/administration/pages/source.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

499 lines
17 KiB
Markdown
Raw Permalink Normal View History

2020-06-23 00:09:42 +05:30
---
2023-06-20 00:43:36 +05:30
stage: Plan
group: Knowledge
2022-11-25 23:54:43 +05:30
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
2020-06-23 00:09:42 +05:30
---
2021-06-08 01:23:25 +05:30
# GitLab Pages administration for source installations **(FREE SELF)**
2017-08-17 22:00:37 +05:30
2021-02-22 17:27:13 +05:30
NOTE:
2017-08-17 22:00:37 +05:30
Before attempting to enable GitLab Pages, first make sure you have
[installed GitLab](../../install/installation.md) successfully.
2023-07-09 08:55:56 +05:30
This document explains how to configure GitLab Pages when you have installed
GitLab from source and not the Omnibus packages.
2017-08-17 22:00:37 +05:30
You are encouraged to read the [Omnibus documentation](index.md) as it provides
2022-08-27 11:52:29 +05:30
invaluable information about the configuration of GitLab Pages.
2017-08-17 22:00:37 +05:30
2021-03-08 18:12:59 +05:30
We also highly recommend that you use the Omnibus GitLab packages. We
optimize them specifically for GitLab, and we take care of upgrading GitLab
2017-08-17 22:00:37 +05:30
Pages to the latest supported version.
2023-07-09 08:55:56 +05:30
## How GitLab Pages works
2017-08-17 22:00:37 +05:30
2023-07-09 08:55:56 +05:30
GitLab Pages makes use of the [GitLab Pages daemon](https://gitlab.com/gitlab-org/gitlab-pages), a lightweight HTTP server that listens on an external IP address and provides support for
custom domains and certificates. It supports dynamic certificates through
`SNI` and exposes pages using HTTP2 by default.
2020-04-22 19:07:51 +05:30
You are encouraged to read its [README](https://gitlab.com/gitlab-org/gitlab-pages/blob/master/README.md)
to fully understand how it works.
2017-08-17 22:00:37 +05:30
In the case of [custom domains](#custom-domains) (but not
[wildcard domains](#wildcard-domains)), the Pages daemon needs to listen on
ports `80` and/or `443`. For that reason, there is some flexibility in the way
which you can set it up:
2022-03-02 08:16:31 +05:30
- Run the Pages daemon in the same server as GitLab, listening on a secondary
IP.
- Run the Pages daemon in a separate server. In that case, the
[Pages path](#change-storage-path) must also be present in the server that
the Pages daemon is installed, so you must share it through the network.
- Run the Pages daemon in the same server as GitLab, listening on the same IP
but on different ports. In that case, you must proxy the traffic with a load
balancer. If you choose that route, you should use TCP load balancing for
HTTPS. If you use TLS-termination (HTTPS-load balancing), the pages aren't
able to be served with user-provided certificates. For HTTP, you can use HTTP
or TCP load balancing.
2017-08-17 22:00:37 +05:30
2021-03-08 18:12:59 +05:30
In this document, we proceed assuming the first option. If you aren't
supporting custom domains, a secondary IP isn't needed.
2017-08-17 22:00:37 +05:30
## Prerequisites
Before proceeding with the Pages configuration, make sure that:
2022-03-02 08:16:31 +05:30
- You have a separate domain to serve GitLab Pages from. In this document we
assume that to be `example.io`.
- You have configured a **wildcard DNS record** for that domain.
- You have installed the `zip` and `unzip` packages in the same server that
2023-07-09 08:55:56 +05:30
GitLab is installed because they are needed to compress and decompress the
2022-03-02 08:16:31 +05:30
Pages artifacts.
- Optional. You have a **wildcard certificate** for the Pages domain if you
decide to serve Pages (`*.example.io`) under HTTPS.
- Optional but recommended. You have configured and enabled the [shared runners](../../ci/runners/index.md)
so your users don't have to bring their own.
2017-08-17 22:00:37 +05:30
### DNS configuration
GitLab Pages expect to run on their own virtual host. In your DNS server/provider
2022-07-23 23:45:48 +05:30
you need to add a [wildcard DNS `A` record](https://en.wikipedia.org/wiki/Wildcard_DNS_record) pointing to the
2017-08-17 22:00:37 +05:30
host that GitLab runs. For example, an entry would look like this:
2020-03-13 15:44:24 +05:30
```plaintext
2018-11-08 19:23:39 +05:30
*.example.io. 1800 IN A 192.0.2.1
2017-08-17 22:00:37 +05:30
```
2021-03-08 18:12:59 +05:30
Where `example.io` is the domain to serve GitLab Pages from,
2018-11-08 19:23:39 +05:30
and `192.0.2.1` is the IP address of your GitLab instance.
2017-08-17 22:00:37 +05:30
2021-02-22 17:27:13 +05:30
NOTE:
2017-08-17 22:00:37 +05:30
You should not use the GitLab domain to serve user pages. For more information
see the [security section](#security).
## Configuration
Depending on your needs, you can set up GitLab Pages in 4 different ways.
The following options are listed from the easiest setup to the most
advanced one. The absolute minimum requirement is to set up the wildcard DNS
2023-07-09 08:55:56 +05:30
because that is needed in all configurations.
2017-08-17 22:00:37 +05:30
### Wildcard domains
2019-07-07 11:18:12 +05:30
**Requirements:**
- [Wildcard DNS setup](#dns-configuration)
2020-10-24 23:57:45 +05:30
URL scheme: `http://<namespace>.example.io/<project_slug>`
2017-08-17 22:00:37 +05:30
2023-07-09 08:55:56 +05:30
This setup is the minimum you can use Pages with. It is the base for all
2021-03-08 18:12:59 +05:30
other setups as described below. NGINX proxies all requests to the daemon.
2017-08-17 22:00:37 +05:30
The Pages daemon doesn't listen to the outside world.
1. Install the Pages daemon:
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-pages.git
cd gitlab-pages
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make
```
2017-08-17 22:00:37 +05:30
1. Go to the GitLab installation directory:
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
cd /home/git/gitlab
```
2017-08-17 22:00:37 +05:30
1. Edit `gitlab.yml` and under the `pages` setting, set `enabled` to `true` and
2021-03-08 18:12:59 +05:30
the `host` to the FQDN to serve GitLab Pages from:
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
```yaml
## GitLab Pages
pages:
enabled: true
# The location where pages are stored (default: shared/pages).
# path: shared/pages
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
host: example.io
2021-10-27 15:23:28 +05:30
access_control: false
port: 8090
2019-09-30 21:07:59 +05:30
https: false
2021-10-27 15:23:28 +05:30
artifacts_server: false
external_http: ["127.0.0.1:8090"]
2021-12-11 22:18:48 +05:30
secret_file: /home/git/gitlab/gitlab-pages-secret
2021-10-27 15:23:28 +05:30
```
1. Add the following configuration file to
2021-12-11 22:18:48 +05:30
`/home/git/gitlab-pages/gitlab-pages.conf`, and be sure to change
2021-10-27 15:23:28 +05:30
`example.io` to the FQDN from which you want to serve GitLab Pages and
`gitlab.example.com` to the URL of your GitLab instance:
```ini
listen-http=:8090
pages-root=/home/git/gitlab/shared/pages
api-secret-key=/home/git/gitlab/gitlab-pages-secret
pages-domain=example.io
internal-gitlab-server=https://gitlab.example.com
```
You may use an `http` address, when running GitLab Pages and GitLab on the
same host. If you use `https` and use a self-signed certificate, be sure to
2023-07-09 08:55:56 +05:30
make your custom CA available to GitLab Pages. For example, you can do this
by setting the `SSL_CERT_DIR` environment variable.
2021-10-27 15:23:28 +05:30
1. Add the secret API key:
```shell
sudo -u git -H openssl rand -base64 32 > /home/git/gitlab/gitlab-pages-secret
2019-09-30 21:07:59 +05:30
```
2017-08-17 22:00:37 +05:30
2021-12-11 22:18:48 +05:30
1. To enable the pages daemon:
2017-08-17 22:00:37 +05:30
2021-12-11 22:18:48 +05:30
- If your system uses systemd as init, run:
```shell
sudo systemctl edit gitlab.target
```
In the editor that opens, add the following and save the file:
```plaintext
[Unit]
Wants=gitlab-pages.service
```
- If your system uses SysV init instead, edit `/etc/default/gitlab` and set
`gitlab_pages_enabled` to `true`:
```ini
gitlab_pages_enabled=true
```
2017-08-17 22:00:37 +05:30
2019-12-21 20:55:43 +05:30
1. Copy the `gitlab-pages` NGINX configuration file:
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
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
```
2017-08-17 22:00:37 +05:30
1. Restart NGINX
2020-04-22 19:07:51 +05:30
1. [Restart GitLab](../restart_gitlab.md#installations-from-source)
2017-08-17 22:00:37 +05:30
### Wildcard domains with TLS support
2019-10-12 21:52:04 +05:30
**Requirements:**
- [Wildcard DNS setup](#dns-configuration)
- Wildcard TLS certificate
2020-10-24 23:57:45 +05:30
URL scheme: `https://<namespace>.example.io/<project_slug>`
2017-08-17 22:00:37 +05:30
2021-03-08 18:12:59 +05:30
NGINX proxies all requests to the daemon. Pages daemon doesn't listen to the
2017-08-17 22:00:37 +05:30
outside world.
1. Install the Pages daemon:
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-pages.git
cd gitlab-pages
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make
```
2017-08-17 22:00:37 +05:30
1. In `gitlab.yml`, set the port to `443` and https to `true`:
2020-03-13 15:44:24 +05:30
```yaml
2019-09-30 21:07:59 +05:30
## GitLab Pages
pages:
enabled: true
# The location where pages are stored (default: shared/pages).
# path: shared/pages
2018-11-20 20:47:30 +05:30
2019-09-30 21:07:59 +05:30
host: example.io
port: 443
https: true
```
2017-08-17 22:00:37 +05:30
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` must match the `host` setting that you set above.
The `-root-cert` and `-root-key` settings are the wildcard TLS certificates
of the `example.io` domain:
2020-03-13 15:44:24 +05:30
```ini
2019-09-30 21:07:59 +05:30
gitlab_pages_enabled=true
2020-03-13 15:44:24 +05:30
gitlab_pages_options="-pages-domain example.io -pages-root $app_root/shared/pages -listen-proxy 127.0.0.1:8090 -root-cert /path/to/example.io.crt -root-key /path/to/example.io.key"
2019-09-30 21:07:59 +05:30
```
2017-08-17 22:00:37 +05:30
2019-12-21 20:55:43 +05:30
1. Copy the `gitlab-pages-ssl` NGINX configuration file:
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
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-ssl.conf
```
2017-08-17 22:00:37 +05:30
1. Restart NGINX
2020-04-22 19:07:51 +05:30
1. [Restart GitLab](../restart_gitlab.md#installations-from-source)
2017-08-17 22:00:37 +05:30
## Advanced configuration
In addition to the wildcard domains, you can also have the option to configure
GitLab Pages to work with custom domains. Again, there are two options here:
support custom domains with and without TLS certificates. The easiest setup is
that without TLS certificates.
### Custom domains
2019-10-12 21:52:04 +05:30
**Requirements:**
- [Wildcard DNS setup](#dns-configuration)
- Secondary IP
2020-10-24 23:57:45 +05:30
URL scheme: `http://<namespace>.example.io/<project_slug>` and `http://custom-domain.com`
2017-08-17 22:00:37 +05:30
2023-07-09 08:55:56 +05:30
In that case, the pages daemon is running. NGINX still proxies requests to
the daemon, but the daemon is also able to receive requests from the outside
2017-08-17 22:00:37 +05:30
world. Custom domains are supported, but no TLS.
1. Install the Pages daemon:
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-pages.git
cd gitlab-pages
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make
```
2017-08-17 22:00:37 +05:30
1. Edit `gitlab.yml` to look like the example below. You need to change the
2021-03-08 18:12:59 +05:30
`host` to the FQDN to serve GitLab Pages from. Set
`external_http` to the secondary IP on which the pages daemon listens
2017-08-17 22:00:37 +05:30
for connections:
2019-09-30 21:07:59 +05:30
```yaml
pages:
enabled: true
# The location where pages are stored (default: shared/pages).
# path: shared/pages
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
host: example.io
port: 80
https: false
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
external_http: 192.0.2.2:80
```
2017-08-17 22:00:37 +05:30
2023-07-09 08:55:56 +05:30
1. To enable the daemon, edit `/etc/default/gitlab` and set `gitlab_pages_enabled` to `true`.
In `gitlab_pages_options`, the value for `-pages-domain` must match the `host` and `-listen-http` must match
the `external_http`:
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```ini
2019-09-30 21:07:59 +05:30
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 192.0.2.2:80"
```
2017-08-17 22:00:37 +05:30
2019-12-21 20:55:43 +05:30
1. Copy the `gitlab-pages-ssl` NGINX configuration file:
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
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
```
2017-08-17 22:00:37 +05:30
2020-06-23 00:09:42 +05:30
1. Edit all GitLab related configurations in `/etc/nginx/site-available/` and replace
2018-11-08 19:23:39 +05:30
`0.0.0.0` with `192.0.2.1`, where `192.0.2.1` the primary IP where GitLab
2017-08-17 22:00:37 +05:30
listens to.
1. Restart NGINX
2020-04-22 19:07:51 +05:30
1. [Restart GitLab](../restart_gitlab.md#installations-from-source)
2017-08-17 22:00:37 +05:30
### Custom domains with TLS support
2019-10-12 21:52:04 +05:30
**Requirements:**
- [Wildcard DNS setup](#dns-configuration)
- Wildcard TLS certificate
- Secondary IP
2020-10-24 23:57:45 +05:30
URL scheme: `https://<namespace>.example.io/<project_slug>` and `https://custom-domain.com`
2017-08-17 22:00:37 +05:30
2023-07-09 08:55:56 +05:30
In that case, the pages daemon is running. NGINX still proxies requests to
the daemon, but the daemon is also able to receive requests from the outside
2017-08-17 22:00:37 +05:30
world. Custom domains and TLS are supported.
1. Install the Pages daemon:
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-pages.git
cd gitlab-pages
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make
```
2017-08-17 22:00:37 +05:30
1. Edit `gitlab.yml` to look like the example below. You need to change the
2021-03-08 18:12:59 +05:30
`host` to the FQDN to serve GitLab Pages from. Set
2017-08-17 22:00:37 +05:30
`external_http` and `external_https` to the secondary IP on which the pages
2021-03-08 18:12:59 +05:30
daemon listens for connections:
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
```yaml
## GitLab Pages
pages:
enabled: true
# The location where pages are stored (default: shared/pages).
# path: shared/pages
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
host: example.io
port: 443
https: true
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
external_http: 192.0.2.2:80
external_https: 192.0.2.2:443
```
2017-08-17 22:00:37 +05:30
1. Edit `/etc/default/gitlab` and set `gitlab_pages_enabled` to `true` in
2022-10-11 01:57:18 +05:30
order to enable the pages daemon. In `gitlab_pages_options`, you must match the
`-pages-domain` with `host`, `-listen-http` with `external_http`, and `-listen-https` with `external_https` settings.
2017-08-17 22:00:37 +05:30
The `-root-cert` and `-root-key` settings are the wildcard TLS certificates
of the `example.io` domain:
2020-03-13 15:44:24 +05:30
```ini
2019-09-30 21:07:59 +05:30
gitlab_pages_enabled=true
2020-03-13 15:44:24 +05:30
gitlab_pages_options="-pages-domain example.io -pages-root $app_root/shared/pages -listen-proxy 127.0.0.1:8090 -listen-http 192.0.2.2:80 -listen-https 192.0.2.2:443 -root-cert /path/to/example.io.crt -root-key /path/to/example.io.key"
2019-09-30 21:07:59 +05:30
```
2017-08-17 22:00:37 +05:30
2019-12-21 20:55:43 +05:30
1. Copy the `gitlab-pages-ssl` NGINX configuration file:
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```shell
2019-09-30 21:07:59 +05:30
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-ssl.conf
```
2017-08-17 22:00:37 +05:30
2020-06-23 00:09:42 +05:30
1. Edit all GitLab related configurations in `/etc/nginx/site-available/` and replace
2018-11-08 19:23:39 +05:30
`0.0.0.0` with `192.0.2.1`, where `192.0.2.1` the primary IP where GitLab
2017-08-17 22:00:37 +05:30
listens to.
1. Restart NGINX
2020-04-22 19:07:51 +05:30
1. [Restart GitLab](../restart_gitlab.md#installations-from-source)
2017-08-17 22:00:37 +05:30
## NGINX caveats
2021-02-22 17:27:13 +05:30
NOTE:
2017-08-17 22:00:37 +05:30
The following information applies only for installations from source.
2020-06-23 00:09:42 +05:30
Be extra careful when setting up the domain name in the NGINX configuration. You must
2017-08-17 22:00:37 +05:30
not remove the backslashes.
2019-12-21 20:55:43 +05:30
If your GitLab Pages domain is `example.io`, replace:
2017-08-17 22:00:37 +05:30
2020-03-13 15:44:24 +05:30
```nginx
2017-08-17 22:00:37 +05:30
server_name ~^.*\.YOUR_GITLAB_PAGES\.DOMAIN$;
```
with:
2020-03-13 15:44:24 +05:30
```nginx
2017-08-17 22:00:37 +05:30
server_name ~^.*\.example\.io$;
```
If you are using a subdomain, make sure to escape all dots (`.`) except from
the first one with a backslash (\). For example `pages.example.io` would be:
2020-03-13 15:44:24 +05:30
```nginx
2017-08-17 22:00:37 +05:30
server_name ~^.*\.pages\.example\.io$;
```
2018-12-13 13:39:08 +05:30
## Access control
2023-07-09 08:55:56 +05:30
GitLab Pages access control can be configured per project. Access to a Pages
site can be controlled based on a user's membership to that project.
2018-12-13 13:39:08 +05:30
Access control works by registering the Pages daemon as an OAuth application
with GitLab. Whenever a request to access a private Pages site is made by an
unauthenticated user, the Pages daemon redirects the user to GitLab. If
authentication is successful, the user is redirected back to Pages with a token,
which is persisted in a cookie. The cookies are signed with a secret key, so
tampering can be detected.
Each request to view a resource in a private site is authenticated by Pages
using that token. For each request it receives, it makes a request to the GitLab
API to check that the user is authorized to read that site.
2020-04-22 19:07:51 +05:30
From [GitLab 12.8](https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/3689) onward,
2020-03-13 15:44:24 +05:30
Access Control parameters for Pages are set in a configuration file, which
by convention is named `gitlab-pages-config`. The configuration file is passed to
2021-02-22 17:27:13 +05:30
pages using the `-config flag` or `CONFIG` environment variable.
2020-03-13 15:44:24 +05:30
2018-12-13 13:39:08 +05:30
Pages access control is disabled by default. To enable it:
1. Modify your `config/gitlab.yml` file:
2019-09-30 21:07:59 +05:30
```yaml
pages:
access_control: true
```
2018-12-13 13:39:08 +05:30
2020-04-22 19:07:51 +05:30
1. [Restart GitLab](../restart_gitlab.md#installations-from-source).
2023-03-17 16:20:25 +05:30
1. Create a new [system OAuth application](../../integration/oauth_provider.md#create-a-user-owned-application).
2018-12-13 13:39:08 +05:30
This should be called `GitLab Pages` and have a `Redirect URL` of
`https://projects.example.io/auth`. It does not need to be a "trusted"
2019-12-21 20:55:43 +05:30
application, but it does need the `api` scope.
2020-03-13 15:44:24 +05:30
1. Start the Pages daemon by passing a configuration file with the following arguments:
2018-12-13 13:39:08 +05:30
2019-09-30 21:07:59 +05:30
```shell
2020-03-13 15:44:24 +05:30
auth-client-id=<OAuth Application ID generated by GitLab>
auth-client-secret=<OAuth code generated by GitLab>
auth-redirect-uri='http://projects.example.io/auth'
auth-secret=<40 random hex characters>
auth-server=<URL of the GitLab instance>
2019-09-30 21:07:59 +05:30
```
2018-12-13 13:39:08 +05:30
2023-01-13 00:05:48 +05:30
1. Users can now configure it in their [projects' settings](../../user/project/pages/pages_access_control.md).
2018-12-13 13:39:08 +05:30
2017-08-17 22:00:37 +05:30
## Change storage path
Follow the steps below to change the default path where GitLab Pages' contents
are stored.
1. Pages are stored by default in `/home/git/gitlab/shared/pages`.
If you wish to store them in another location you must set it up in
`gitlab.yml` under the `pages` section:
2019-09-30 21:07:59 +05:30
```yaml
pages:
enabled: true
# The location where pages are stored (default: shared/pages).
path: /mnt/storage/pages
```
2017-08-17 22:00:37 +05:30
2020-04-22 19:07:51 +05:30
1. [Restart GitLab](../restart_gitlab.md#installations-from-source)
2017-08-17 22:00:37 +05:30
## Set maximum Pages size
2021-09-30 23:02:18 +05:30
The default for the maximum size of unpacked archives per project is 100 MB.
To change this value:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Admin**.
2021-09-30 23:02:18 +05:30
1. On the left sidebar, select **Settings > Preferences**.
1. Expand **Pages**.
1. Update the value for **Maximum size of pages (MB)**.
2017-08-17 22:00:37 +05:30
## Backup
2020-04-22 19:07:51 +05:30
Pages are part of the [regular backup](../../raketasks/backup_restore.md) so there is nothing to configure.
2017-08-17 22:00:37 +05:30
## Security
2019-12-21 20:55:43 +05:30
You should strongly consider running GitLab Pages under a different hostname
2017-08-17 22:00:37 +05:30
than GitLab to prevent XSS attacks.