December 2022 Monthly Report

These past couple of months have been very busy interesting, LibrePages went from being a simple git pull webhook to fully-fledged platform that can deploy static sites from any Git forge.

This month, the following things were accomplished:

1. Deploy site from dashboard#

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.

Custom domain support isn't available at the moment but will be implemented soon.

2. Forms support#

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.

LibrePages Forms is a separate service that can be integrated into the system. It accepts form submissions in both JSON and application/x-www-form-urlencode. Adding it to your LibrePages-deployed website is very simple, please see here for instructions.

3. Forgejo and Gitea integration#

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.

4. Sysadmin: logging and debugging#

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 Prometheus and provides distributed tracing via OpenTelemetry-based based utilities like Jagger.

5. Nginx, bind and Let's Encrypt#

LibrePages is modular, it can be integrated into any existing system, like Gna! and Enough Community to provide static site hosting. We do this using Conductor, which allows LibrePages to integrate with multiple DNS servers/providers, reverse proxies and other third-party applications that LibrePages would depend on.

Currently, we are working on supporting a system based on Nginx, Bind9 and Let's Encrypt.

6. Infrastructure-as-Code#

Infrastructure as code to deploy the full system 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.


I would like to thank the Easter-eggs for funding team for funding my work on LibrePages <3