zola/documentation/deployment/sourcehut/index.html
2025-01-19 09:40:50 +00:00

315 lines
17 KiB
HTML

<!DOCTYPE html>
<html lang="en-gb">
<head>
<meta charset="UTF-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Everything you need to make a static site engine in one binary.">
<meta name="author" content="Vincent Prouillet">
<title>Sourcehut Pages | Zola </title>
<link rel="stylesheet" href="https://www.getzola.org/site.css">
<link rel="icon" href="https://www.getzola.org/favicon.ico">
</head>
<body>
<header>
<a class="header__logo white" href="https:&#x2F;&#x2F;www.getzola.org&#x2F;">Zola</a>
<nav>
<ul>
<li><a class="white" href="https://www.getzola.org/documentation/" class="nav-link">Docs</a></li>
<li><a class="white" href="https://www.getzola.org/themes/" class="nav-link">Themes</a></li>
<li><a class="white" href="https://zola.discourse.group/" class="nav-link">Forum</a></li>
<li><a class="white" href="https://github.com/getzola/zola" class="nav-link">GitHub</a></li>
</ul>
<div class="search-container">
<input id="search" type="search" placeholder="🔎 Search the docs">
<div class="search-results">
<div class="search-results__items"></div>
</div>
</div>
</nav>
</header>
<div class="content content--reversed">
<div class="documentation">
<aside class="documentation__sidebar">
<ul>
<li>
<span class="documentation__sidebar__title">Getting Started</span>
<ul>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;getting-started&#x2F;overview&#x2F;">Overview</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;getting-started&#x2F;installation&#x2F;">Installation</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;getting-started&#x2F;cli-usage&#x2F;">CLI usage</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;getting-started&#x2F;directory-structure&#x2F;">Directory structure</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;getting-started&#x2F;configuration&#x2F;">Configuration</a>
</li>
</ul>
</li>
<li>
<span class="documentation__sidebar__title">Content</span>
<ul>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;overview&#x2F;">Overview</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;section&#x2F;">Section</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;page&#x2F;">Page</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;shortcodes&#x2F;">Shortcodes</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;linking&#x2F;">Internal links &amp; deep linking</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;table-of-contents&#x2F;">Table of Contents</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;syntax-highlighting&#x2F;">Syntax Highlighting</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;taxonomies&#x2F;">Taxonomies</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;search&#x2F;">Search</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;sass&#x2F;">Sass</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;image-processing&#x2F;">Image processing</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;content&#x2F;multilingual&#x2F;">Multilingual sites</a>
</li>
</ul>
</li>
<li>
<span class="documentation__sidebar__title">Templates</span>
<ul>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;overview&#x2F;">Overview</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;pages-sections&#x2F;">Sections and Pages</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;pagination&#x2F;">Pagination</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;taxonomies&#x2F;">Taxonomies</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;feeds&#x2F;">Feeds</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;sitemap&#x2F;">Sitemap</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;robots&#x2F;">Robots.txt</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;404&#x2F;">404 error page</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;templates&#x2F;archive&#x2F;">Archive</a>
</li>
</ul>
</li>
<li>
<span class="documentation__sidebar__title">Themes</span>
<ul>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;themes&#x2F;overview&#x2F;">Overview</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;themes&#x2F;installing-and-using-themes&#x2F;">Installing &amp; using themes</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;themes&#x2F;creating-a-theme&#x2F;">Creating a theme</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;themes&#x2F;extending-a-theme&#x2F;">Customizing a theme</a>
</li>
</ul>
</li>
<li>
<span class="documentation__sidebar__title">Deployment</span>
<ul>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;overview&#x2F;">Overview</a>
</li>
<li class="active">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;sourcehut&#x2F;">Sourcehut Pages</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;netlify&#x2F;">Netlify</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;github-pages&#x2F;">GitHub Pages</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;gitlab-pages&#x2F;">GitLab Pages</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;codeberg-pages&#x2F;">Codeberg Pages</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;edgio&#x2F;">Edgio</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;vercel&#x2F;">Vercel</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;zeabur&#x2F;">Zeabur</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;cloudflare-pages&#x2F;">Cloudflare Pages</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;flyio&#x2F;">Fly.io</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;aws-s3&#x2F;">AWS S3 Bucket</a>
</li>
<li class="">
<a href="https:&#x2F;&#x2F;www.getzola.org&#x2F;documentation&#x2F;deployment&#x2F;docker-image&#x2F;">Docker image</a>
</li>
</ul>
</li>
</ul>
</aside>
<div class="documentation__content">
<h1>Sourcehut Pages</h1>
<p>Deploying your static Zola website on <a href="https://srht.site">Sourcehut Pages</a> is very simple.</p>
<p>You need to create a <code>.build.yml</code> manifest file in the root folder of your Zola project and push your changes to the
Sourcehut git/hg repository.
To create your <code>.build.yml</code> file you can start with <a href="https://git.sr.ht/~sircmpwn/pages.sr.ht-examples">a template</a> or use the following example:</p>
<pre data-lang="yaml" style="background-color:#383838;color:#e6e1dc;" class="language-yaml "><code class="language-yaml" data-lang="yaml"><span style="color:#e8bf6a;">image</span><span>: </span><span style="color:#a5c261;">alpine/edge
</span><span style="color:#e8bf6a;">packages</span><span>:
</span><span> - </span><span style="color:#a5c261;">hut
</span><span> - </span><span style="color:#a5c261;">zola
</span><span style="color:#e8bf6a;">oauth</span><span>: </span><span style="color:#a5c261;">pages.sr.ht/PAGES:RW
</span><span style="color:#e8bf6a;">environment</span><span>:
</span><span> </span><span style="color:#e8bf6a;">site</span><span>: </span><span style="color:#a5c261;">your_username.srht.site
</span><span style="color:#e8bf6a;">sources</span><span>:
</span><span> - </span><span style="color:#a5c261;">https://git.sr.ht/~your_username/my-website
</span><span style="color:#e8bf6a;">tasks</span><span>:
</span><span> - </span><span style="color:#e8bf6a;">build</span><span>: </span><span style="color:#cc7833;">|
</span><span style="color:#a5c261;"> cd my-website
</span><span style="color:#a5c261;"> zola build
</span><span> - </span><span style="color:#e8bf6a;">package</span><span>: </span><span style="color:#cc7833;">|
</span><span style="color:#a5c261;"> cd my-website
</span><span style="color:#a5c261;"> tar -C public -cvz . &gt; ../site.tar.gz
</span><span> - </span><span style="color:#e8bf6a;">upload</span><span>: </span><span style="color:#cc7833;">|
</span><span style="color:#a5c261;"> hut pages publish -d $site site.tar.gz
</span></code></pre>
<p>This manifest will clone your source code, build the website and upload the generated static files to the domain
you specified in <code>site</code>.
For publishing the website, the build manifest uses <code>hut</code>, a commandline tool which takes care of automatically
generating authentication tokens, so there is nothing else you need to do.</p>
<p>From this template you need to customize the variable <code>site</code> with the domain that will host your website and
<code>sources</code> to point to your Sourcehut git/hg public URL (in this example <code>my-website</code> is the name of the repository).</p>
<p>Then commit and push your changes:</p>
<pre data-lang="sh" style="background-color:#383838;color:#e6e1dc;" class="language-sh "><code class="language-sh" data-lang="sh"><span>$ git push
</span><span>Enumerating objects: 5, done.
</span><span>...
</span><span>remote: Build started:
</span><span>remote: https://builds.sr.ht/</span><span style="color:#d0d0ff;">~</span><span>your_username/job/430625 </span><span style="color:#cc7833;">[</span><span>.build.yml</span><span style="color:#cc7833;">]
</span><span>To git.sr.ht:</span><span style="color:#d0d0ff;">~</span><span>your_username/www
</span><span> fbe9afa..59ae556 master -</span><span style="color:#cc7833;">&gt;</span><span> master
</span></code></pre>
<p>The build job will be automatically triggered.
Notice that Sourcehut returns a direct link to the build page, where you can check the progress and success status.</p>
<p>By default you can use a subdomain of Sourcehut Pages to host your static website - <code>your_username.srht.site</code>.
If you want to use a custom domain (e.g. "blog.mydomain.org"), you will need to configure a DNS record to point to
the Sourcehut server.
Instructions on how to do this are available on <a href="https://srht.site/custom-domains">Sourcehut</a>.</p>
</div>
</div>
</div>
<footer>
©2017-2025 — <a class="white" href="https://www.vincentprouillet.com">Vincent Prouillet</a> and <a class="white" href="https://github.com/getzola/zola/graphs/contributors">contributors</a>
</footer>
<script type="text/javascript" src="https://www.getzola.org/elasticlunr.min.js"></script>
<script type="text/javascript" src="https://www.getzola.org/search.js"></script>
</body>
</html>