GitLab Pages
Free static site hosting built into GitLab.com, deploying via GitLab CI from any public project with automatic HTTPS and custom domains.
Use Cases
Free Tier
Free static hosting for public projects, 10 GiB storage per project, 400 CI minutes/month, 5 users
How to Maximize the Free Tier
GitLab Pages is free for public projects — make your repo public unless you need privacy. The 400 CI minutes/month shared across your namespace are the real constraint: use a lightweight image (e.g. a plain `image: alpine` or busybox) and cache dependencies so rebuilds are fast and cheap, and only rebuild on merge (not every push). Keep your site under the 10 GiB per-project storage quota — exclude node_modules and build artifacts from the repo. Add a custom domain under Deploy → Pages and GitLab provisions Let's Encrypt HTTPS automatically. Combine with GitLab's free CI for a complete docs-and-deploy workflow, and pair with a free CDN like Cloudflare if you need caching beyond gitlab.io.
Getting Started
Create a free GitLab.com account → push your static site to a public project → add a .gitlab-ci.yml with a `pages` job that publishes to `public/` → push → your site is live at username.gitlab.io/project → enable custom domain under Deploy → Pages.
Pros
- Tight CI integration: Pages deploys ride the same pipeline as your code — every merge can build and publish automatically
- Generous storage: 10 GiB per project (repo + LFS) is far more than GitHub Pages' 1 GB
- Built-in HTTPS: Free automatic TLS on gitlab.io subdomains and custom domains via Let's Encrypt
Cons
- Public-only on free: Free tier Pages requires public projects — private repos need a paid plan
- CI minute limits: 400 CI minutes/month per namespace runs out fast if every push triggers a full build
- Build config required: No zero-config deploys — you must write a .gitlab-ci.yml pages job yourself