Need help with GitLab-Pages?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

207 Stars 30 Forks MIT License 33 Commits 14 Opened issues


:eyes: GitHub Pages, for GitLab.

Services available


Need anything else?

Contributors list

GitLab Pages

GitHub Pages, for GitLab.



Glavin Wiechert (Glavin001) - Twitter @GlavinW - LinkedIn



It requires Jekyll to be installed. GitLab Pages will build Jekyll sites or simply copy content from non-jekyll sites to


Step 1) Create your deploy key pair

Create a SSH key pair for GitLab to use as deploy keys.

ssh-keygen -t rsa -C "[email protected]" -f "$(pwd)/keys/id_rsa"

They should be in path


Step 2) Configure GitLab Pages server

Clone this repo and install it's necessary dependencies:

# Already cloned repo
npm install
bower install

Copy default config to custom config file.

cp default_config.js _config.js

Edit your new _config.js file for your setup.

Step 3) Start your GitLab Pages server

And start the server!

npm start

Deploy with Docker

Docker support is also available and the following env vars are used to configure the installation: * GITLABURL - Url to your gitlab server * DEPLOYBRANCH - Specific branch that will be deployed when pushed * DEPLOYPAGEDIR - Public directory of GitLab Pages * SERVERURL - The public gitlab-pages server url

The /app/keys directory SHOULD be mount using docker volumes, this will allow you to use leave the ssh key outside of the docker. If the rsa key doesn't exist the script will generate it.


Login using your GitLab User Token at http://localhost:1337.

How It Works

  1. User logs into Web UI, which authenticates against GitLab with node-gitlab and retrieves a private key for subsequent requests.
  2. Select the Project to enable GitLab Pages support for it. Available Projects list is pulled from GitLab with node-gitlab.
  3. The selected project will setup a Deploy Key and Webhook for GitLab Pages. (Note: when adding a Deploy Key, type "GitLab Pages" as a Title)
  4. When the user pushes to GitLab, a webhook event is sent to GitLab Pages server.
  5. The Webhook is handled by gitlab-webhook and the project is pulled (or cloned) with nodegit to the GitLab Pages configured clones install directory.
  6. The
    branch is checked out with nodegit. (This can optionally be configured to be
    branch to work on both GitHub and GitLab).
  7. The public content, a GitLab Page, is served using Expressjs. Each project will be served from a different subdirectory in the form of
    /pages/:username/:projectName/. It is recommended that the
    be served using Nginx or Apache.

Libraries & Tools

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.