+++ title = "December 2022 Monthly Report" date = "2022-12-31" description = "Towards MVP: deploy sites with forms with Forgejo and Gitea integration. Infrastructure-as-Code to deploy full system is WIP" draft=false [taxonomies] tags = ['monthly-report', 'JAMStack', 'self-hosting'] [extra] author = 'realaravinth' +++ 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](https://git.batsense.net/LibrePages/forms) 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](https://docs.librepages.org/forms/add/) 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](https://prometheus.io) and provides distributed tracing via OpenTelemetry-based based utilities like [Jagger](https://www.jaegertracing.io/). ## 5. Nginx, bind and Let's Encrypt LibrePages is modular, it can be integrated into any existing system, like [Gna!](https://gna.org) and [Enough Community](https://enough.community/) to provide static site hosting. We do this using [Conductor](https://git.batsense.net/LibrePages/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](https://git.batsense.net/LibrePages/Infrastructure-as-Code) 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. ## Thanks I would like to thank the [Easter-eggs](https://www.easter-eggs.com/) for funding team for funding [my work on LibrePages](https://forum.gna.org/t/5-000-contract-aravinth-manivannan-easter-eggs/58) <3