website/content/blog/2022-12-31-december-2022-monthly-report.md

90 lines
3.5 KiB
Markdown
Raw Normal View History

2022-12-31 02:15:50 +05:30
+++
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