2022-02-20 15:15:38 +01:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta http-equiv = "X-UA-Compatible" content = "ie=edge" >
2022-12-17 10:12:40 +01:00
< link rel = "stylesheet" href = "../../../static/styles.css?h=dff0aaad" >
2022-02-20 15:15:38 +01:00
< link rel = "stylesheet" href = "../../../static/pygments.css" >
< link rel = "shortcut icon" href = "../../../static/favicon.png?h=fa09bedd" >
< title > GitLab Pages | Documentation | Lektor Static Content Management System< / title >
< / head >
< body class = "default" >
< nav class = "navbar navbar-inverse navbar-static-top" >
< div class = "container" >
< div class = "navbar-header" >
< button type = "button" class = "navbar-toggle collapsed"
data-toggle="collapse" data-target="#navbar"
aria-expanded="false" aria-controls="navbar">
< span class = "sr-only" > Toggle navigation< / span >
< span class = "icon-bar" > < / span >
< span class = "icon-bar" > < / span >
< span class = "icon-bar" > < / span >
< / button >
< a class = "navbar-brand" href = "../../../" > Lektor< / a >
< / div >
< div id = "navbar" class = "collapse navbar-collapse" >
< ul class = "nav navbar-nav" >
< li > < a href = "../../../downloads/" > Download< / a > < / li >
< li class = "active" > < a href = "../../" > Documentation< / a > < / li >
< li > < a href = "../../../showcase/" > Showcase< / a > < / li >
< li > < a href = "../../../plugins/" > Plugins< / a > < / li >
< li > < a href = "../../../community/" > Community< / a > < / li >
< li > < a href = "../../../blog/" > Blog< / a > < / li >
< / ul >
< / div >
< / div >
< / nav >
< div class = "body-wrapper" >
< div class = "container" >
< div class = "row" >
< div class = "col-sm-3" >
< ul class = "tree-nav nocontent" >
< li > < a href = "../../" > Welcome< / a > < / li >
< li > < a href = "../../what/" > What is Lektor< / a >
< li > < a href = "../../installation/" > Installation< / a >
< li > < a href = "../../quickstart/" > Quickstart< / a >
< li > < a href = "../../project/" > Project< / a >
< li > < a href = "../../content/" > Content< / a >
< li > < a href = "../../templates/" > Templates< / a >
< li > < a href = "../../themes/" > Themes< / a >
< li > < a href = "../../guides/" > Guides< / a >
< li > < a href = "../" > Deployment< / a >
< ul >
< li > < a href = "../ftp/" > FTP< / a >
< li > < a href = "../ghpages/" > GitHub Pages< / a >
< li class = "active" > < a href = "./" > GitLab Pages< / a >
< ul > < / ul >
< li > < a href = "../rsync/" > rsync< / a >
< li > < a href = "../travisci/" > Travis-CI< / a >
< / ul >
< li > < a href = "../../plugins/" > Plugins< / a >
< li > < a href = "../../models/" > Data Modelling< / a >
< li > < a href = "../../cli/" > Command Line< / a >
< li > < a href = "../../api/" > API< / a >
< li > < a href = "../../search/" > Search< / a >
< / ul >
< div class = "visible-md-block visible-lg-block" >
< h4 > This Page< / h4 >
< ul class = "toc" >
< li > < a href = "#create-a-repository" > Create a Repository< / a > < / li >
< li > < a href = "#configuration" > Configuration< / a > < / li >
2022-02-24 00:10:06 +01:00
< li > < a href = "#cache-directory" > Cache directory< / a > < / li >
2022-02-20 15:15:38 +01:00
< li > < a href = "#cname-support" > CNAME Support< / a > < / li >
< li > < a href = "#ssl/tls-support" > SSL/TLS Support< / a > < / li >
< li > < a href = "#404-pages" > 404 Pages< / a > < / li >
< / ul >
< / div >
< / div >
< div class = "col-sm-9 doc-styling" >
< h1 > GitLab Pages< / h1 >
< ul class = page-meta >
< / ul >
2022-03-04 20:32:54 +01:00
< p > < a href = "https://gitlab.com/" > GitLab< / a > supports Lektor on their < a href = "https://docs.gitlab.com/ee/user/project/pages/" > GitLab
2022-02-20 15:15:38 +01:00
Pages< / a > infrastructure. Effectively
GitLab can build your website out of any repository on GitLab and hosts it
up on either a subdomain or a custom domain (including SSL).< / p >
< p > Because this is all supported by the side of GitLab there is nothing you
need to configure in Lektor itself other than adding a GitLab config file.< / p >
< p > There is also an example project on GitLab with a README you can clone:
< a href = "https://gitlab.com/pages/lektor" > pages/lektor< / a > < / p >
< h2 id = "create-a-repository" > Create a Repository< / h2 > < p > What you need to do to start is to create a new repository for the project
on gitlab. There are two types of GitLab pages: user and project pages.
User pages are hosted at < code > < username> .gitlab.io< / code > and project pages at
< code > < username> .gitlab.io/< project> < / code > . There can only be one user page and the
repository for it needs to be named < code > < username> .gitlab.io< / code > .< / p >
< p > The branch does not matter. GitLab scans all branches for a file named
< code > .gitlab-ci.yml< / code > which contains a configuration for gitlab pages.< / p >
< h2 id = "configuration" > Configuration< / h2 > < p > To enable support for Lektor you need to create a < code > .gitlab-ci.yml< / code > config
next to your < code > .lektorproject< / code > file with the following contents:< / p >
2023-01-02 03:39:06 +01:00
< div class = "hll" > < pre > < span > < / span > < span class = "nt" > image< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > python:latest< / span >
2022-02-20 15:15:38 +01:00
2023-01-02 03:39:06 +01:00
< span class = "nt" > pages< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "nt" > script< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > pip install lektor< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > lektor build --output-path public< / span >
< span class = "w" > < / span > < span class = "nt" > artifacts< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "nt" > paths< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > public< / span >
< span class = "w" > < / span > < span class = "nt" > only< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > master< / span >
2022-02-20 15:15:38 +01:00
< / pre > < / div >
< p > It's important that the output path is set to < code > public< / code > as this is what
will be served up. In case you want to use a different branch than < code > master< / code >
just name the branch differently and adjust the < code > only< / code > entry.< / p >
< p > Whenever you commit to the repository now, GitLab will automatically start
a job on the public infrastructure and deploy your website.< / p >
2022-02-24 00:10:06 +01:00
< h2 id = "cache-directory" > Cache directory< / h2 > < p > You can enable caching to reuse build results between compilation.
To do so, you have to:< / p >
< ul >
< li > set the cache directory using the environment variable < code > XDG_CACHE_HOME< / code > ;< / li >
< li > configure Gitlab to cache this directory.< / li >
< / ul >
< p > See the example below.< / p >
2023-01-02 03:39:06 +01:00
< div class = "hll" > < pre > < span > < / span > < span class = "nt" > image< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > python:latest< / span >
2022-02-24 00:10:06 +01:00
2023-01-02 03:39:06 +01:00
< span class = "nt" > default< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "nt" > cache< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "nt" > paths< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > .cache/lektor< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > .cache/pip< / span >
2022-02-24 00:10:06 +01:00
2023-01-02 03:39:06 +01:00
< span class = "nt" > variables< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "nt" > XDG_CACHE_HOME< / span > < span class = "p" > :< / span > < span class = "w" > < / span > < span class = "s" > " $CI_PROJECT_DIR/.cache" < / span >
2022-02-24 00:10:06 +01:00
2023-01-02 03:39:06 +01:00
< span class = "nt" > pages< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "nt" > script< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > pip install lektor< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > lektor build --output-path public< / span >
< span class = "w" > < / span > < span class = "nt" > artifacts< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "nt" > paths< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > public< / span >
< span class = "w" > < / span > < span class = "nt" > only< / span > < span class = "p" > :< / span >
< span class = "w" > < / span > < span class = "p p-Indicator" > -< / span > < span class = "w" > < / span > < span class = "l l-Scalar l-Scalar-Plain" > master< / span >
2022-02-24 00:10:06 +01:00
< / pre > < / div >
2022-02-20 15:15:38 +01:00
< h2 id = "cname-support" > CNAME Support< / h2 > < p > If you want to use a < a href = "https://en.wikipedia.org/wiki/CNAME" class = "ext" > CNAME< / a > with
GitLab pages you can configure it in the GitLab settings:< / p >
< ul >
2022-03-04 20:32:54 +01:00
< li > < a href = "https://docs.gitlab.com/ee/user/project/pages/custom_domains_ssl_tls_certification/#set-up-pages-with-a-custom-domain" > Configure CNAME< / a > < / li >
2022-02-20 15:15:38 +01:00
< / ul >
< h2 id = "ssl/tls-support" > SSL/TLS Support< / h2 > < p > If you have an SSL certificate and a custom domain, you can upload your private
key and certificate to GitLab and SSL will become available on your custom
domain as well.< / p >
< ul >
2022-03-04 20:32:54 +01:00
< li > < a href = "https://docs.gitlab.com/ee/user/project/pages/custom_domains_ssl_tls_certification/#adding-an-ssltls-certificate-to-pages" > Configure SSL/TLS< / a > < / li >
2022-02-20 15:15:38 +01:00
< / ul >
< h2 id = "404-pages" > 404 Pages< / h2 > < p > Per convention the file named < code > 404.html< / code > is used as placeholder if a page
cannot be found. You can create such a page by creating a < code > 404.html/contents.lr< / code >
file.< / p >
< div class = "comment-box" >
< h2 > Comments< / h2 >
< div id = "disqus_thread" > < / div >
< script >
var disqus_config = function() { this.page.identifier = "/docs/deployment/glpages"; this.page.url = "https://www.getlektor.com/docs/deployment/glpages/"; };
(function() {
var d = document, s = d.createElement('script');
s.src = '//lektordocumentation.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
< / script >
< noscript >
Please enable JavaScript to view the < a href = "https://disqus.com/?ref_noscript"
rel="nofollow">comments powered by Disqus.< / a >
< / noscript >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "bottomsummary" >
< div class = "container" >
< / div >
< / div >
< footer >
< div class = "container" >
< div class = "row" >
< div class = "col-sm-4 icon-bar" >
< a href = "https://github.com/lektor/lektor/" title = "Lektor on GitHub"
>< i class = "fa fa-github" > < / i > < / a >
< a href = "https://github.com/lektor/lektor/issues/" title = "Report Issues for Lektor"
>< i class = "fa fa-bug" > < / i > < / a >
< a href = "https://twitter.com/getlektor" title = "Find Lektor on Twitter"
>< i class = "fa fa-twitter" > < / i > < / a >
< a href = "https://gitter.im/lektor/lektor" title = "Chat on Gitter"
>< i class = "fa fa-comment" > < / i > < / a >
< a href = "https://github.com/lektor/lektor-website/tree/master/content/docs/deployment/glpages/contents.lr" title = "View source for this page" > < i class = "fa fa-code" > < / i > < / a >
< / div >
< div class = "col-sm-8" >
< a href = "../../../license/" > License & Copyright< / a > •
< a href = "../../../contact/" > Contact< / a > •
Made with < i class = "fa fa-fw fa-heart" title = "Heart" > < span hidden > Heart< / span > < / i > in Carinthia
< / div >
< / div >
< / div >
< / footer >
2023-07-19 20:30:41 +02:00
< script type = text/javascript src = "../../../static/app.js?h=8b801996" charset = "utf-8" > < / script >
2022-02-20 15:15:38 +01:00
< script >
((window.gitter = {}).chat = {}).options = {
room: 'lektor/lektor',
activationElement: null
};
document.write('< button class = "js-gitter-toggle-chat-button" > Toggle Chat< / button > ');
var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
if (dnt != "1" & & dnt != "yes") {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-70822533-1', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
} else {
console.debug("Respecting Do-Not-Track, not running analytics.");
}
< / script >
< script async src = 'https://www.google-analytics.com/analytics.js' > < / script >
< script async defer id = "github-bjs" src = "https://buttons.github.io/buttons.js" > < / script >
< script > ! function ( d , s , id ) { var js , fjs = d . getElementsByTagName ( s ) [ 0 ] , p = /^http:/ . test ( d . location ) ? 'http' : 'https' ; if ( ! d . getElementById ( id ) ) { js = d . createElement ( s ) ; js . id = id ; js . src = p + '://platform.twitter.com/widgets.js' ; fjs . parentNode . insertBefore ( js , fjs ) ; } } ( document , 'script' , 'twitter-wjs' ) ; < / script >
< script src = "https://sidecar.gitter.im/dist/sidecar.v1.js" async defer > < / script >
< / body >
< / html >