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:
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.
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.
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.
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.
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.
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.