- monthly-reportZola2022-12-31T00:00:00+00:00https://librepages.org/tags/monthly-report/atom.xmlDecember 2022 Monthly Report2022-12-31T00:00:00+00:002022-12-31T00:00:00+00:00https://librepages.org/blog/december-2022-monthly-report/<p>These past couple of months have been very busy interesting, LibrePages
went from being a simple <code>git pull</code> webhook to fully-fledged platform
that can deploy static sites from <em>any</em> Git forge.</p>
<p>This month, the following things were accomplished:</p>
<h2 id="1-deploy-site-from-dashboard">1. Deploy site from dashboard<a class="zola-anchor" href="#1-deploy-site-from-dashboard" aria-label="Anchor link for: 1-deploy-site-from-dashboard"
><span class="anchor-icon">#</span></a
>
</h2>
<p>It is now possible to deploy and manage websites with log inspection
right from the dashboard. LibrePages will automatically assign a
randomly generated, but friendly-sounding subdomain on a domain that the
LibrePages system manages. It is also possible to inspect deployment
events, like site updates, to troubleshoot errors in the deployment
pipelines.</p>
<p>Custom domain support isn't available at the moment but will be
implemented soon.</p>
<h2 id="2-forms-support">2. Forms support<a class="zola-anchor" href="#2-forms-support" aria-label="Anchor link for: 2-forms-support"
><span class="anchor-icon">#</span></a
>
</h2>
<p>Forms are useful but creating a separate backed or relying on
privacy-invasive tech like Google Forms is very inconvenient. Popular
JAMStack platforms like Netlify provide forms support, so we thought
implementing forms support will be useful.</p>
<p>LibrePages Forms is a <a href="https://git.batsense.net/LibrePages/forms">separate
service</a> that can be
integrated into the system. It accepts form submissions in both JSON and
<code>application/x-www-form-urlencode</code>. Adding it to your
LibrePages-deployed website is very simple, please see
<a href="https://docs.librepages.org/forms/add/">here</a> for instructions.</p>
<h2 id="3-forgejo-and-gitea-integration">3. Forgejo and Gitea integration<a class="zola-anchor" href="#3-forgejo-and-gitea-integration" aria-label="Anchor link for: 3-forgejo-and-gitea-integration"
><span class="anchor-icon">#</span></a
>
</h2>
<p>LibrePages exposes an endpoint which users can call to update their
deployments. This allows us to support all types of Git-based forges. In
addition to the endpoint, we now expose a webhook that is compatible
with Forgejo and Gitea. This way, the deployment will automatically be
updated when a push event is received at the deployed branch, without the
user (or their CI) requiring to call the endpoint.</p>
<h2 id="4-sysadmin-logging-and-debugging">4. Sysadmin: logging and debugging<a class="zola-anchor" href="#4-sysadmin-logging-and-debugging" aria-label="Anchor link for: 4-sysadmin-logging-and-debugging"
><span class="anchor-icon">#</span></a
>
</h2>
<p>LibrePages is complicated system made of multiple services. It also uses
several third-party applications, like Nginx, to serve websites.
Debugging an issue that affecting multiple services used be complicated
but LibrePages now includes instrumentation to monitor with
<a href="https://prometheus.io">Prometheus</a> and provides distributed tracing via
OpenTelemetry-based based utilities like <a href="https://www.jaegertracing.io/">Jagger</a>.</p>
<h2 id="5-nginx-bind-and-let-s-encrypt">5. Nginx, bind and Let's Encrypt<a class="zola-anchor" href="#5-nginx-bind-and-let-s-encrypt" aria-label="Anchor link for: 5-nginx-bind-and-let-s-encrypt"
><span class="anchor-icon">#</span></a
>
</h2>
<p>LibrePages is modular, it can be integrated into any existing system,
like <a href="https://gna.org">Gna!</a> and <a href="https://enough.community/">Enough
Community</a> to provide static site hosting. We
do this using
<a href="https://git.batsense.net/LibrePages/conductor">Conductor</a>, which allows
LibrePages to integrate with multiple DNS servers/providers, reverse
proxies and other third-party applications that LibrePages would depend
on.</p>
<p>Currently, we are working on supporting a system based on Nginx, Bind9 and Let's Encrypt.</p>
<h2 id="6-infrastructure-as-code">6. Infrastructure-as-Code<a class="zola-anchor" href="#6-infrastructure-as-code" aria-label="Anchor link for: 6-infrastructure-as-code"
><span class="anchor-icon">#</span></a
>
</h2>
<p><a href="https://git.batsense.net/LibrePages/Infrastructure-as-Code">Infrastructure as code to deploy the full
system</a> is
being worked on. So far, we've implemented deploying a Debian server
using Terraform and libvirt. Installing and and configuring LibrePages
is being worked on.</p>
<h2 id="thanks">Thanks<a class="zola-anchor" href="#thanks" aria-label="Anchor link for: thanks"
><span class="anchor-icon">#</span></a
>
</h2>
<p>I would like to thank the <a href="https://www.easter-eggs.com/">Easter-eggs</a>
for funding team for funding <a href="https://forum.gna.org/t/5-000-contract-aravinth-manivannan-easter-eggs/58">my work on
LibrePages</a> <3</p>