90 lines
3.5 KiB
Markdown
90 lines
3.5 KiB
Markdown
|
+++
|
||
|
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
|