new deploy: 2022-12-30T20:46:13+00:00

This commit is contained in:
Aravinth Manivannan 2022-12-30 20:46:13 +00:00 committed by realaravinth
parent aa37d8e2ef
commit 46df2b86c9
12 changed files with 1245 additions and 10 deletions

View file

@ -4,8 +4,95 @@
<link href="https://librepages.org/blog/atom.xml" rel="self" type="application/atom+xml"/> <link href="https://librepages.org/blog/atom.xml" rel="self" type="application/atom+xml"/>
<link href="https://librepages.org/blog/"/> <link href="https://librepages.org/blog/"/>
<generator uri="https://www.getzola.org/">Zola</generator> <generator uri="https://www.getzola.org/">Zola</generator>
<updated>2022-09-10T00:00:00+00:00</updated> <updated>2022-12-31T00:00:00+00:00</updated>
<id>https://librepages.org/blog/atom.xml</id> <id>https://librepages.org/blog/atom.xml</id>
<entry xml:lang="en">
<title>December 2022 Monthly Report</title>
<published>2022-12-31T00:00:00+00:00</published>
<updated>2022-12-31T00:00:00+00:00</updated>
<link href="https://librepages.org/blog/december-2022-monthly-report/" type="text/html"/>
<id>https://librepages.org/blog/december-2022-monthly-report/</id>
<content type="html">&lt;p&gt;These past couple of months have been very busy interesting, LibrePages
went from being a simple &lt;code&gt;git pull&lt;&#x2F;code&gt; webhook to fully-fledged platform
that can deploy static sites from &lt;em&gt;any&lt;&#x2F;em&gt; Git forge.&lt;&#x2F;p&gt;
&lt;p&gt;This month, the following things were accomplished:&lt;&#x2F;p&gt;
&lt;h2 id=&quot;1-deploy-site-from-dashboard&quot;&gt;1. Deploy site from dashboard&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-deploy-site-from-dashboard&quot; aria-label=&quot;Anchor link for: 1-deploy-site-from-dashboard&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;p&gt;Custom domain support isn&#x27;t available at the moment but will be
implemented soon.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2-forms-support&quot;&gt;2. Forms support&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-forms-support&quot; aria-label=&quot;Anchor link for: 2-forms-support&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;p&gt;LibrePages Forms is a &lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;forms&quot;&gt;separate
service&lt;&#x2F;a&gt; that can be
integrated into the system. It accepts form submissions in both JSON and
&lt;code&gt;application&#x2F;x-www-form-urlencode&lt;&#x2F;code&gt;. Adding it to your
LibrePages-deployed website is very simple, please see
&lt;a href=&quot;https:&#x2F;&#x2F;docs.librepages.org&#x2F;forms&#x2F;add&#x2F;&quot;&gt;here&lt;&#x2F;a&gt; for instructions.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;3-forgejo-and-gitea-integration&quot;&gt;3. Forgejo and Gitea integration&lt;a class=&quot;zola-anchor&quot; href=&quot;#3-forgejo-and-gitea-integration&quot; aria-label=&quot;Anchor link for: 3-forgejo-and-gitea-integration&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;4-sysadmin-logging-and-debugging&quot;&gt;4. Sysadmin: logging and debugging&lt;a class=&quot;zola-anchor&quot; href=&quot;#4-sysadmin-logging-and-debugging&quot; aria-label=&quot;Anchor link for: 4-sysadmin-logging-and-debugging&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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
&lt;a href=&quot;https:&#x2F;&#x2F;prometheus.io&quot;&gt;Prometheus&lt;&#x2F;a&gt; and provides distributed tracing via
OpenTelemetry-based based utilities like &lt;a href=&quot;https:&#x2F;&#x2F;www.jaegertracing.io&#x2F;&quot;&gt;Jagger&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;5-nginx-bind-and-let-s-encrypt&quot;&gt;5. Nginx, bind and Let&#x27;s Encrypt&lt;a class=&quot;zola-anchor&quot; href=&quot;#5-nginx-bind-and-let-s-encrypt&quot; aria-label=&quot;Anchor link for: 5-nginx-bind-and-let-s-encrypt&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;LibrePages is modular, it can be integrated into any existing system,
like &lt;a href=&quot;https:&#x2F;&#x2F;gna.org&quot;&gt;Gna!&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;enough.community&#x2F;&quot;&gt;Enough
Community&lt;&#x2F;a&gt; to provide static site hosting. We
do this using
&lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;conductor&quot;&gt;Conductor&lt;&#x2F;a&gt;, which allows
LibrePages to integrate with multiple DNS servers&#x2F;providers, reverse
proxies and other third-party applications that LibrePages would depend
on.&lt;&#x2F;p&gt;
&lt;p&gt;Currently, we are working on supporting a system based on Nginx, Bind9 and Let&#x27;s Encrypt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;6-infrastructure-as-code&quot;&gt;6. Infrastructure-as-Code&lt;a class=&quot;zola-anchor&quot; href=&quot;#6-infrastructure-as-code&quot; aria-label=&quot;Anchor link for: 6-infrastructure-as-code&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;Infrastructure-as-Code&quot;&gt;Infrastructure as code to deploy the full
system&lt;&#x2F;a&gt; is
being worked on. So far, we&#x27;ve implemented deploying a Debian server
using Terraform and libvirt. Installing and and configuring LibrePages
is being worked on.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;thanks&quot;&gt;Thanks&lt;a class=&quot;zola-anchor&quot; href=&quot;#thanks&quot; aria-label=&quot;Anchor link for: thanks&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;I would like to thank the &lt;a href=&quot;https:&#x2F;&#x2F;www.easter-eggs.com&#x2F;&quot;&gt;Easter-eggs&lt;&#x2F;a&gt;
for funding team for funding &lt;a href=&quot;https:&#x2F;&#x2F;forum.gna.org&#x2F;t&#x2F;5-000-contract-aravinth-manivannan-easter-eggs&#x2F;58&quot;&gt;my work on
LibrePages&lt;&#x2F;a&gt; &amp;lt;3&lt;&#x2F;p&gt;
</content>
</entry>
<entry xml:lang="en"> <entry xml:lang="en">
<title>How to deploy a website WITHOUT LibrePages</title> <title>How to deploy a website WITHOUT LibrePages</title>
<published>2022-09-10T00:00:00+00:00</published> <published>2022-09-10T00:00:00+00:00</published>

View file

@ -0,0 +1,439 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="me" href="https://gts.batsense.net.net/@librepages" />
<link rel="stylesheet" href="https://librepages.org/main.css" />
<link
rel="stylesheet"
media="screen and (max-width: 1300px)"
href="https://librepages.org/mobile.css"
/>
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://librepages.org/main.css" />
<link
rel="stylesheet"
media="screen and (max-width: 1300px)"
href="https://librepages.org/mobile.css"
/>
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>December 2022 Monthly Report | LibrePages: JAMstack platform with focus on privacy and speed</title>
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Towards MVP: deploy sites with forms with Forgejo and Gitea integration. Infrastructure-as-Code to deploy full system is WIP" />
<meta property="og:title" content="December 2022 Monthly Report | LibrePages: JAMstack platform with focus on privacy and speed" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https:&#x2F;&#x2F;librepages.org" />
<meta property="og:description" content="Towards MVP: deploy sites with forms with Forgejo and Gitea integration. Infrastructure-as-Code to deploy full system is WIP" />
<meta
property="og:site_name"
content="December 2022 Monthly Report | LibrePages: JAMstack platform with focus on privacy and speed"
/>
<link
rel="apple-touch-icon"
sizes="57x57"
href="https://librepages.org/apple-icon-57x57.png?h=aa7556c6917e2715fc5cd91b0f71abf54c25fb3f4596b83938485bd339b3ee5c"
/>
<link
rel="apple-touch-icon"
sizes="60x60"
href="https://librepages.org/apple-icon-60x60.png?h=3c65021633e27b12573a4d95ee104960edeeb8448d016cc4a3a8c009956f455b"
/>
<link
rel="apple-touch-icon"
sizes="72x72"
href="https://librepages.org/apple-icon-72x72.png?h=7e6ea650d40b0c229eb8991d4bdaaeaf3a4fdc37b4c91c7e0f6705f4ccbd4823"
/>
<link
rel="apple-touch-icon"
sizes="76x76"
href="https://librepages.org/apple-icon-76x76.png?h=14cc3b66876cc79fe49f4bdf43cfa342dd12249fb32ebb4bf5895cac9fd2eaba"
/>
<link
rel="apple-touch-icon"
sizes="114x114"
href="https://librepages.org/apple-icon-114x114.png?h=a7e320f87a86aa0e037e78635c5f5042e02bf3adaf5c7a3163a108b004f1874e"
/>
<link
rel="apple-touch-icon"
sizes="120x120"
href="https://librepages.org/apple-icon-120x120.png?h=0555c76525ad4b8e974217be648c2691643b0ae09c1447bee571bdf51d324e5a"
/>
<link
rel="apple-touch-icon"
sizes="144x144"
href="https://librepages.org/apple-icon-144x144.png?h=3c6dcd632f3eca17cf7cc6153e9b372183518168754e2d8adb6bc549cfc89694"
/>
<link
rel="apple-touch-icon"
sizes="152x152"
href="https://librepages.org/apple-icon-152x152.png?h=0de6ee6daa86c4800faa71c0ba940a749b025c83f1150b19f7817bac9558344e"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="https://librepages.org/apple-icon-180x180.png?h=4015bdb0896669f24d0be4e93fc9625c771a746060906dd94ed07ed2b3a88ede"
/>
<link
rel="icon"
type="image/png"
sizes="192x192"
href="https://librepages.org/android-icon-192x192.png?h=4065738be7277800667ab5dab97c610d8b76f7c9d7835266ecf440a1336b179a"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="https://librepages.org/favicon-32x32.png?h=19f5fc89580c10a37da127a18cb6d18427f8604617fe3c1d163a5528c4832094"
/>
<link
rel="icon"
type="image/png"
sizes="96x96"
href="https://librepages.org/favicon-96x96.png?h=f1dbc55e44179d839832093c008b0bedea79c3b21b1af68adb6d70c3e21227f5"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="https://librepages.org/favicon-16x16.png?h=a7056d65f8aa73fbaf9e97dcd2e685ac67489a76c0b8e715936970b118d74700"
/>
<link
rel="manifest"
href="https://librepages.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
/>
<meta name="msapplication-TileColor" content="#ffffff" />
<meta
name="msapplication-TileImage"
content="https://librepages.org/ms-icon-144x144.png?h=3c6dcd632f3eca17cf7cc6153e9b372183518168754e2d8adb6bc549cfc89694"
/>
<meta name="theme-color" content="#ffffff" />
</head>
<!-- Matomo -->
<script>
var _paq = (window._paq = window._paq || []);
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setCookieDomain", "*.librepages.org"]);
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function () {
var u = "//matomo.librepages.org/";
_paq.push(["setTrackerUrl", u + "matomo.php"]);
_paq.push(["setSiteId", "3"]);
var d = document,
g = d.createElement("script"),
s = d.getElementsByTagName("script")[0];
g.async = true;
g.src = u + "matomo.js";
s.parentNode.insertBefore(g, s);
})();
</script>
<noscript
><p>
<img
src="//matomo.librepages.org/matomo.php?idsite=3&amp;rec=1"
style="border: 0"
alt=""
/></p
></noscript>
<!-- End Matomo Code -->
</head>
<body class="base">
<div id="check-icon" data-check="https://librepages.org/icons/check.svg?h=376636abc0ddb30b4748ab5d4416d64ec96862f6c4acf04ef3bf9a7f8f323238"></div>
<div id="clipboard-icon" data-clipboard="https://librepages.org/icons/clipboard.svg?h=202bedb305272a2e2a87ca77aae6e8c61403fc33fb8d8b3cda98df7226ddba84"></div>
<header><nav class="nav__container">
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
<div class="nav__header">
<a class="nav__logo-container" href="/">
<p class="nav__home-btn">LibrePages</p>
</a>
<label class="nav__hamburger-menu" for="nav__toggle">
<span class="nav__hamburger-inner"></span>
</label>
</div>
<div class="nav__spacer--small"></div>
<div class="nav__link-group">
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="&#x2F;about&#x2F;">About</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="&#x2F;blog&#x2F;">Blog</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#librepages:matrix.batsense.net">Chat</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;docs.librepages.org">Docs</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;gts.batsense.net&#x2F;@librepages">Fediverse</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages">Source Code</a>
</div>
</div>
<div class="nav__spacer"></div>
<div class="nav__link-group--small">
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;demo.librepages.org&#x2F;">Demo</a>
</div>
</div>
</nav>
</header>
<!-- See ../sass/main.scss. Required for pushing footer to the very
bottom of the page -->
<div class="main__content-container">
<main>
<div class="page__container">
<h1 class="page__group-title">December 2022 Monthly Report</h1>
<p class="blog__post-meta">
<a href="https:&#x2F;&#x2F;batsense.net" class="post__author">Aravinth Manivannan</a>
&middot; 31
December
,
2022 &middot; <b>3 min read</b>
</p>
<div class="blog__content">
<aside class="toc">
<h2>Table of Contents</h2>
<ul>
<li>
<a href="https://librepages.org/blog/december-2022-monthly-report/#1-deploy-site-from-dashboard">1. Deploy site from dashboard</a>
</li>
<li>
<a href="https://librepages.org/blog/december-2022-monthly-report/#2-forms-support">2. Forms support</a>
</li>
<li>
<a href="https://librepages.org/blog/december-2022-monthly-report/#3-forgejo-and-gitea-integration">3. Forgejo and Gitea integration</a>
</li>
<li>
<a href="https://librepages.org/blog/december-2022-monthly-report/#4-sysadmin-logging-and-debugging">4. Sysadmin: logging and debugging</a>
</li>
<li>
<a href="https://librepages.org/blog/december-2022-monthly-report/#5-nginx-bind-and-let-s-encrypt">5. Nginx, bind and Let&#x27;s Encrypt</a>
</li>
<li>
<a href="https://librepages.org/blog/december-2022-monthly-report/#6-infrastructure-as-code">6. Infrastructure-as-Code</a>
</li>
<li>
<a href="https://librepages.org/blog/december-2022-monthly-report/#thanks">Thanks</a>
</li>
</ul>
</aside>
<p>These past couple of months have been very busy interesting, LibrePages
went from being a simple <code>git pull</code> webhook to fully-fledged platform
that can deploy static sites from <em>any</em> Git forge.</p>
<p>This month, the following things were accomplished:</p>
<h2 id="1-deploy-site-from-dashboard">1. Deploy site from dashboard<a class="zola-anchor" href="#1-deploy-site-from-dashboard" aria-label="Anchor link for: 1-deploy-site-from-dashboard"
><span class="anchor-icon">#</span></a
>
</h2>
<p>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.</p>
<p>Custom domain support isn't available at the moment but will be
implemented soon.</p>
<h2 id="2-forms-support">2. Forms support<a class="zola-anchor" href="#2-forms-support" aria-label="Anchor link for: 2-forms-support"
><span class="anchor-icon">#</span></a
>
</h2>
<p>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.</p>
<p>LibrePages Forms is a <a href="https://git.batsense.net/LibrePages/forms">separate
service</a> that can be
integrated into the system. It accepts form submissions in both JSON and
<code>application/x-www-form-urlencode</code>. Adding it to your
LibrePages-deployed website is very simple, please see
<a href="https://docs.librepages.org/forms/add/">here</a> for instructions.</p>
<h2 id="3-forgejo-and-gitea-integration">3. Forgejo and Gitea integration<a class="zola-anchor" href="#3-forgejo-and-gitea-integration" aria-label="Anchor link for: 3-forgejo-and-gitea-integration"
><span class="anchor-icon">#</span></a
>
</h2>
<p>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.</p>
<h2 id="4-sysadmin-logging-and-debugging">4. Sysadmin: logging and debugging<a class="zola-anchor" href="#4-sysadmin-logging-and-debugging" aria-label="Anchor link for: 4-sysadmin-logging-and-debugging"
><span class="anchor-icon">#</span></a
>
</h2>
<p>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
<a href="https://prometheus.io">Prometheus</a> and provides distributed tracing via
OpenTelemetry-based based utilities like <a href="https://www.jaegertracing.io/">Jagger</a>.</p>
<h2 id="5-nginx-bind-and-let-s-encrypt">5. Nginx, bind and Let's Encrypt<a class="zola-anchor" href="#5-nginx-bind-and-let-s-encrypt" aria-label="Anchor link for: 5-nginx-bind-and-let-s-encrypt"
><span class="anchor-icon">#</span></a
>
</h2>
<p>LibrePages is modular, it can be integrated into any existing system,
like <a href="https://gna.org">Gna!</a> and <a href="https://enough.community/">Enough
Community</a> to provide static site hosting. We
do this using
<a href="https://git.batsense.net/LibrePages/conductor">Conductor</a>, which allows
LibrePages to integrate with multiple DNS servers/providers, reverse
proxies and other third-party applications that LibrePages would depend
on.</p>
<p>Currently, we are working on supporting a system based on Nginx, Bind9 and Let's Encrypt.</p>
<h2 id="6-infrastructure-as-code">6. Infrastructure-as-Code<a class="zola-anchor" href="#6-infrastructure-as-code" aria-label="Anchor link for: 6-infrastructure-as-code"
><span class="anchor-icon">#</span></a
>
</h2>
<p><a href="https://git.batsense.net/LibrePages/Infrastructure-as-Code">Infrastructure as code to deploy the full
system</a> 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.</p>
<h2 id="thanks">Thanks<a class="zola-anchor" href="#thanks" aria-label="Anchor link for: thanks"
><span class="anchor-icon">#</span></a
>
</h2>
<p>I would like to thank the <a href="https://www.easter-eggs.com/">Easter-eggs</a>
for funding team for funding <a href="https://forum.gna.org/t/5-000-contract-aravinth-manivannan-easter-eggs/58">my work on
LibrePages</a> &lt;3</p>
</div>
<br />
<br />
<div class="blog__post-tag-container">
<a class="blog__post-tag" href="/tags/monthly-report">#monthly-report</a>
<a class="blog__post-tag" href="/tags/jamstack">#JAMStack</a>
<a class="blog__post-tag" href="/tags/self-hosting">#self-hosting</a>
</div>
</div>
<script src="https://librepages.org/js/copy.js?h=983f829c3d114fd1d3a08ffab2982a2884dec7fe62b8aedb545c1a4145a3c4f5"></script>
</main>
<footer>
<div class="footer__container">
<!-- <div class="footer__column"> --->
<p class="footer__column license__conatiner">
All text <a
class="license__link"
rel="noreferrer"
href="http://creativecommons.org/licenses/by-sa/4.0/"
target="_blank"
>&nbsp;CC-BY-SA&nbsp;</a
>
&amp; code
<a
class="license__link"
rel="noreferrer"
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
target="_blank"
>&nbsp;AGPL&nbsp;</a
>
</p>
<!-- </div> -->
<div class="footer__column--center">
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
<img
src="https://librepages.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
class="footer__icon"
alt="Email icon"
/>
</a>
</div>
<div class="footer__column">
<a href="/about" title="About">About</a>
<a href="/coc" title="Code of Conduct">CoC</a>
<span class="footer__column-divider--mobile-only">|</span>
<a href="/legalese" title="Legalese">Legalese</a>
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
<span class="footer__column-divider--mobile-only">|</span>
<a
href="https://git.batsense.net/LibrePages"
rel="noreferrer"
target="_blank"
title="Status"
>Source Code</a
>
<!--
<a href="/tos" title="Terms of Service">ToS</a>
-->
</div>
</div>
</footer>
</div>
</body>
</html>

View file

@ -230,6 +230,47 @@ general development ecosystem" />
<ul class="blog__list"> <ul class="blog__list">
<li class="blog__post-item">
<a href="https://librepages.org/blog/december-2022-monthly-report/" class="blog__post-link">
<h2 class="blog__post-title">December 2022 Monthly Report</h2>
<p class="blog__post-meta">
<a href="https:&#x2F;&#x2F;batsense.net" class="post__author">Aravinth Manivannan</a>
&middot; 31
December
,
2022 &middot; <b>3 min read</b>
</p>
<p class="blog__post-description">
Towards MVP: deploy sites with forms with Forgejo and Gitea integration. Infrastructure-as-Code to deploy full system is WIP
</p>
</a>
<div class="blog__post-tag-container">
<a class="blog__post-tag" href="/tags/monthly-report"
>#monthly-report</a
>
<a class="blog__post-tag" href="/tags/jamstack"
>#JAMStack</a
>
<a class="blog__post-tag" href="/tags/self-hosting"
>#self-hosting</a
>
</div>
</li>
<li class="blog__post-item"> <li class="blog__post-item">
<a href="https://librepages.org/blog/2022-09-10-how-to-publish-website-without-librepages/" class="blog__post-link"> <a href="https://librepages.org/blog/2022-09-10-how-to-publish-website-without-librepages/" class="blog__post-link">
<h2 class="blog__post-title">How to deploy a website WITHOUT LibrePages</h2> <h2 class="blog__post-title">How to deploy a website WITHOUT LibrePages</h2>

File diff suppressed because one or more lines are too long

View file

@ -13,6 +13,10 @@
<loc>https://librepages.org/blog/2022-09-10-how-to-publish-website-without-librepages/</loc> <loc>https://librepages.org/blog/2022-09-10-how-to-publish-website-without-librepages/</loc>
<lastmod>2022-09-10</lastmod> <lastmod>2022-09-10</lastmod>
</url> </url>
<url>
<loc>https://librepages.org/blog/december-2022-monthly-report/</loc>
<lastmod>2022-12-31</lastmod>
</url>
<url> <url>
<loc>https://librepages.org/coc/</loc> <loc>https://librepages.org/coc/</loc>
</url> </url>
@ -34,6 +38,9 @@
<url> <url>
<loc>https://librepages.org/tags/lets-encrypt/</loc> <loc>https://librepages.org/tags/lets-encrypt/</loc>
</url> </url>
<url>
<loc>https://librepages.org/tags/monthly-report/</loc>
</url>
<url> <url>
<loc>https://librepages.org/tags/nginx/</loc> <loc>https://librepages.org/tags/nginx/</loc>
</url> </url>

View file

@ -261,9 +261,7 @@
<span class="tag__meta">2 entries</span>
<span class="tag__meta">1 entry</span>
</a> </a>
<a class="tag__rss-link" href="https:&#x2F;&#x2F;librepages.org&#x2F;tags&#x2F;jamstack&#x2F;atom.xml" target="_blank" rel="noopener" title="RSS"> <a class="tag__rss-link" href="https:&#x2F;&#x2F;librepages.org&#x2F;tags&#x2F;jamstack&#x2F;atom.xml" target="_blank" rel="noopener" title="RSS">
<img <img
@ -295,6 +293,26 @@
</li> </li>
</a> </a>
<li class="tag__item">
<a href="https://librepages.org/tags/monthly-report/" class="tag__item-link">
<h2 class="tag__item-title">#monthly-report</h2>
<span class="tag__meta">1 entry</span>
</a>
<a class="tag__rss-link" href="https:&#x2F;&#x2F;librepages.org&#x2F;tags&#x2F;monthly-report&#x2F;atom.xml" target="_blank" rel="noopener" title="RSS">
<img
src="https://librepages.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
class="tag__rss-icon"
alt="RSS icon"
/>
</a>
</li>
</a>
<li class="tag__item"> <li class="tag__item">
<a href="https://librepages.org/tags/nginx/" class="tag__item-link"> <a href="https://librepages.org/tags/nginx/" class="tag__item-link">
<h2 class="tag__item-title">#nginx</h2> <h2 class="tag__item-title">#nginx</h2>
@ -321,9 +339,7 @@
<span class="tag__meta">2 entries</span>
<span class="tag__meta">1 entry</span>
</a> </a>
<a class="tag__rss-link" href="https:&#x2F;&#x2F;librepages.org&#x2F;tags&#x2F;self-hosting&#x2F;atom.xml" target="_blank" rel="noopener" title="RSS"> <a class="tag__rss-link" href="https:&#x2F;&#x2F;librepages.org&#x2F;tags&#x2F;self-hosting&#x2F;atom.xml" target="_blank" rel="noopener" title="RSS">
<img <img

View file

@ -4,8 +4,95 @@
<link href="https://librepages.org/tags/jamstack/atom.xml" rel="self" type="application/atom+xml"/> <link href="https://librepages.org/tags/jamstack/atom.xml" rel="self" type="application/atom+xml"/>
<link href="https://librepages.org"/> <link href="https://librepages.org"/>
<generator uri="https://www.getzola.org/">Zola</generator> <generator uri="https://www.getzola.org/">Zola</generator>
<updated>2022-09-10T00:00:00+00:00</updated> <updated>2022-12-31T00:00:00+00:00</updated>
<id>https://librepages.org/tags/jamstack/atom.xml</id> <id>https://librepages.org/tags/jamstack/atom.xml</id>
<entry xml:lang="en">
<title>December 2022 Monthly Report</title>
<published>2022-12-31T00:00:00+00:00</published>
<updated>2022-12-31T00:00:00+00:00</updated>
<link href="https://librepages.org/blog/december-2022-monthly-report/" type="text/html"/>
<id>https://librepages.org/blog/december-2022-monthly-report/</id>
<content type="html">&lt;p&gt;These past couple of months have been very busy interesting, LibrePages
went from being a simple &lt;code&gt;git pull&lt;&#x2F;code&gt; webhook to fully-fledged platform
that can deploy static sites from &lt;em&gt;any&lt;&#x2F;em&gt; Git forge.&lt;&#x2F;p&gt;
&lt;p&gt;This month, the following things were accomplished:&lt;&#x2F;p&gt;
&lt;h2 id=&quot;1-deploy-site-from-dashboard&quot;&gt;1. Deploy site from dashboard&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-deploy-site-from-dashboard&quot; aria-label=&quot;Anchor link for: 1-deploy-site-from-dashboard&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;p&gt;Custom domain support isn&#x27;t available at the moment but will be
implemented soon.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2-forms-support&quot;&gt;2. Forms support&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-forms-support&quot; aria-label=&quot;Anchor link for: 2-forms-support&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;p&gt;LibrePages Forms is a &lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;forms&quot;&gt;separate
service&lt;&#x2F;a&gt; that can be
integrated into the system. It accepts form submissions in both JSON and
&lt;code&gt;application&#x2F;x-www-form-urlencode&lt;&#x2F;code&gt;. Adding it to your
LibrePages-deployed website is very simple, please see
&lt;a href=&quot;https:&#x2F;&#x2F;docs.librepages.org&#x2F;forms&#x2F;add&#x2F;&quot;&gt;here&lt;&#x2F;a&gt; for instructions.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;3-forgejo-and-gitea-integration&quot;&gt;3. Forgejo and Gitea integration&lt;a class=&quot;zola-anchor&quot; href=&quot;#3-forgejo-and-gitea-integration&quot; aria-label=&quot;Anchor link for: 3-forgejo-and-gitea-integration&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;4-sysadmin-logging-and-debugging&quot;&gt;4. Sysadmin: logging and debugging&lt;a class=&quot;zola-anchor&quot; href=&quot;#4-sysadmin-logging-and-debugging&quot; aria-label=&quot;Anchor link for: 4-sysadmin-logging-and-debugging&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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
&lt;a href=&quot;https:&#x2F;&#x2F;prometheus.io&quot;&gt;Prometheus&lt;&#x2F;a&gt; and provides distributed tracing via
OpenTelemetry-based based utilities like &lt;a href=&quot;https:&#x2F;&#x2F;www.jaegertracing.io&#x2F;&quot;&gt;Jagger&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;5-nginx-bind-and-let-s-encrypt&quot;&gt;5. Nginx, bind and Let&#x27;s Encrypt&lt;a class=&quot;zola-anchor&quot; href=&quot;#5-nginx-bind-and-let-s-encrypt&quot; aria-label=&quot;Anchor link for: 5-nginx-bind-and-let-s-encrypt&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;LibrePages is modular, it can be integrated into any existing system,
like &lt;a href=&quot;https:&#x2F;&#x2F;gna.org&quot;&gt;Gna!&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;enough.community&#x2F;&quot;&gt;Enough
Community&lt;&#x2F;a&gt; to provide static site hosting. We
do this using
&lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;conductor&quot;&gt;Conductor&lt;&#x2F;a&gt;, which allows
LibrePages to integrate with multiple DNS servers&#x2F;providers, reverse
proxies and other third-party applications that LibrePages would depend
on.&lt;&#x2F;p&gt;
&lt;p&gt;Currently, we are working on supporting a system based on Nginx, Bind9 and Let&#x27;s Encrypt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;6-infrastructure-as-code&quot;&gt;6. Infrastructure-as-Code&lt;a class=&quot;zola-anchor&quot; href=&quot;#6-infrastructure-as-code&quot; aria-label=&quot;Anchor link for: 6-infrastructure-as-code&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;Infrastructure-as-Code&quot;&gt;Infrastructure as code to deploy the full
system&lt;&#x2F;a&gt; is
being worked on. So far, we&#x27;ve implemented deploying a Debian server
using Terraform and libvirt. Installing and and configuring LibrePages
is being worked on.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;thanks&quot;&gt;Thanks&lt;a class=&quot;zola-anchor&quot; href=&quot;#thanks&quot; aria-label=&quot;Anchor link for: thanks&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;I would like to thank the &lt;a href=&quot;https:&#x2F;&#x2F;www.easter-eggs.com&#x2F;&quot;&gt;Easter-eggs&lt;&#x2F;a&gt;
for funding team for funding &lt;a href=&quot;https:&#x2F;&#x2F;forum.gna.org&#x2F;t&#x2F;5-000-contract-aravinth-manivannan-easter-eggs&#x2F;58&quot;&gt;my work on
LibrePages&lt;&#x2F;a&gt; &amp;lt;3&lt;&#x2F;p&gt;
</content>
</entry>
<entry xml:lang="en"> <entry xml:lang="en">
<title>How to deploy a website WITHOUT LibrePages</title> <title>How to deploy a website WITHOUT LibrePages</title>
<published>2022-09-10T00:00:00+00:00</published> <published>2022-09-10T00:00:00+00:00</published>

View file

@ -241,6 +241,30 @@
</a></div> </a></div>
<ul class="blog__list"> <ul class="blog__list">
<li class="blog__post-item">
<a href="https://librepages.org/blog/december-2022-monthly-report/" class="blog__post-link">
<h2 class="blog__post-title">December 2022 Monthly Report</h2>
<p class="blog__post-meta">
31
December
,
2022 &middot; <b>3 min read</b>
</p>
<p class="blog__post-description">Towards MVP: deploy sites with forms with Forgejo and Gitea integration. Infrastructure-as-Code to deploy full system is WIP </p>
</a>
<div class="blog__post-tag-container">
<a class="blog__post-tag" href="/tags/monthly-report">#monthly-report</a>
<a class="blog__post-tag" href="/tags/JAMStack">#JAMStack</a>
<a class="blog__post-tag" href="/tags/self-hosting">#self-hosting</a>
</div>
</li>
<li class="blog__post-item"> <li class="blog__post-item">
<a href="https://librepages.org/blog/2022-09-10-how-to-publish-website-without-librepages/" class="blog__post-link"> <a href="https://librepages.org/blog/2022-09-10-how-to-publish-website-without-librepages/" class="blog__post-link">
<h2 class="blog__post-title">How to deploy a website WITHOUT LibrePages</h2> <h2 class="blog__post-title">How to deploy a website WITHOUT LibrePages</h2>

View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<title> - monthly-report</title>
<link href="https://librepages.org/tags/monthly-report/atom.xml" rel="self" type="application/atom+xml"/>
<link href="https://librepages.org"/>
<generator uri="https://www.getzola.org/">Zola</generator>
<updated>2022-12-31T00:00:00+00:00</updated>
<id>https://librepages.org/tags/monthly-report/atom.xml</id>
<entry xml:lang="en">
<title>December 2022 Monthly Report</title>
<published>2022-12-31T00:00:00+00:00</published>
<updated>2022-12-31T00:00:00+00:00</updated>
<link href="https://librepages.org/blog/december-2022-monthly-report/" type="text/html"/>
<id>https://librepages.org/blog/december-2022-monthly-report/</id>
<content type="html">&lt;p&gt;These past couple of months have been very busy interesting, LibrePages
went from being a simple &lt;code&gt;git pull&lt;&#x2F;code&gt; webhook to fully-fledged platform
that can deploy static sites from &lt;em&gt;any&lt;&#x2F;em&gt; Git forge.&lt;&#x2F;p&gt;
&lt;p&gt;This month, the following things were accomplished:&lt;&#x2F;p&gt;
&lt;h2 id=&quot;1-deploy-site-from-dashboard&quot;&gt;1. Deploy site from dashboard&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-deploy-site-from-dashboard&quot; aria-label=&quot;Anchor link for: 1-deploy-site-from-dashboard&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;p&gt;Custom domain support isn&#x27;t available at the moment but will be
implemented soon.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2-forms-support&quot;&gt;2. Forms support&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-forms-support&quot; aria-label=&quot;Anchor link for: 2-forms-support&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;p&gt;LibrePages Forms is a &lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;forms&quot;&gt;separate
service&lt;&#x2F;a&gt; that can be
integrated into the system. It accepts form submissions in both JSON and
&lt;code&gt;application&#x2F;x-www-form-urlencode&lt;&#x2F;code&gt;. Adding it to your
LibrePages-deployed website is very simple, please see
&lt;a href=&quot;https:&#x2F;&#x2F;docs.librepages.org&#x2F;forms&#x2F;add&#x2F;&quot;&gt;here&lt;&#x2F;a&gt; for instructions.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;3-forgejo-and-gitea-integration&quot;&gt;3. Forgejo and Gitea integration&lt;a class=&quot;zola-anchor&quot; href=&quot;#3-forgejo-and-gitea-integration&quot; aria-label=&quot;Anchor link for: 3-forgejo-and-gitea-integration&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;4-sysadmin-logging-and-debugging&quot;&gt;4. Sysadmin: logging and debugging&lt;a class=&quot;zola-anchor&quot; href=&quot;#4-sysadmin-logging-and-debugging&quot; aria-label=&quot;Anchor link for: 4-sysadmin-logging-and-debugging&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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
&lt;a href=&quot;https:&#x2F;&#x2F;prometheus.io&quot;&gt;Prometheus&lt;&#x2F;a&gt; and provides distributed tracing via
OpenTelemetry-based based utilities like &lt;a href=&quot;https:&#x2F;&#x2F;www.jaegertracing.io&#x2F;&quot;&gt;Jagger&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;5-nginx-bind-and-let-s-encrypt&quot;&gt;5. Nginx, bind and Let&#x27;s Encrypt&lt;a class=&quot;zola-anchor&quot; href=&quot;#5-nginx-bind-and-let-s-encrypt&quot; aria-label=&quot;Anchor link for: 5-nginx-bind-and-let-s-encrypt&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;LibrePages is modular, it can be integrated into any existing system,
like &lt;a href=&quot;https:&#x2F;&#x2F;gna.org&quot;&gt;Gna!&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;enough.community&#x2F;&quot;&gt;Enough
Community&lt;&#x2F;a&gt; to provide static site hosting. We
do this using
&lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;conductor&quot;&gt;Conductor&lt;&#x2F;a&gt;, which allows
LibrePages to integrate with multiple DNS servers&#x2F;providers, reverse
proxies and other third-party applications that LibrePages would depend
on.&lt;&#x2F;p&gt;
&lt;p&gt;Currently, we are working on supporting a system based on Nginx, Bind9 and Let&#x27;s Encrypt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;6-infrastructure-as-code&quot;&gt;6. Infrastructure-as-Code&lt;a class=&quot;zola-anchor&quot; href=&quot;#6-infrastructure-as-code&quot; aria-label=&quot;Anchor link for: 6-infrastructure-as-code&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;Infrastructure-as-Code&quot;&gt;Infrastructure as code to deploy the full
system&lt;&#x2F;a&gt; is
being worked on. So far, we&#x27;ve implemented deploying a Debian server
using Terraform and libvirt. Installing and and configuring LibrePages
is being worked on.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;thanks&quot;&gt;Thanks&lt;a class=&quot;zola-anchor&quot; href=&quot;#thanks&quot; aria-label=&quot;Anchor link for: thanks&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;I would like to thank the &lt;a href=&quot;https:&#x2F;&#x2F;www.easter-eggs.com&#x2F;&quot;&gt;Easter-eggs&lt;&#x2F;a&gt;
for funding team for funding &lt;a href=&quot;https:&#x2F;&#x2F;forum.gna.org&#x2F;t&#x2F;5-000-contract-aravinth-manivannan-easter-eggs&#x2F;58&quot;&gt;my work on
LibrePages&lt;&#x2F;a&gt; &amp;lt;3&lt;&#x2F;p&gt;
</content>
</entry>
</feed>

View file

@ -0,0 +1,327 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="manifest" href="/site.webmanifest" />
<link rel="me" href="https://gts.batsense.net.net/@librepages" />
<link rel="stylesheet" href="https://librepages.org/main.css" />
<link
rel="stylesheet"
media="screen and (max-width: 1300px)"
href="https://librepages.org/mobile.css"
/>
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://librepages.org/main.css" />
<link
rel="stylesheet"
media="screen and (max-width: 1300px)"
href="https://librepages.org/mobile.css"
/>
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>monthly-report | LibrePages: JAMstack platform with focus on privacy and speed</title>
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="monthly-report" />
<meta property="og:title" content="monthly-report | LibrePages: JAMstack platform with focus on privacy and speed" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https:&#x2F;&#x2F;librepages.org" />
<meta property="og:description" content="monthly-report" />
<meta
property="og:site_name"
content="monthly-report | LibrePages: JAMstack platform with focus on privacy and speed"
/>
<link
rel="apple-touch-icon"
sizes="57x57"
href="https://librepages.org/apple-icon-57x57.png?h=aa7556c6917e2715fc5cd91b0f71abf54c25fb3f4596b83938485bd339b3ee5c"
/>
<link
rel="apple-touch-icon"
sizes="60x60"
href="https://librepages.org/apple-icon-60x60.png?h=3c65021633e27b12573a4d95ee104960edeeb8448d016cc4a3a8c009956f455b"
/>
<link
rel="apple-touch-icon"
sizes="72x72"
href="https://librepages.org/apple-icon-72x72.png?h=7e6ea650d40b0c229eb8991d4bdaaeaf3a4fdc37b4c91c7e0f6705f4ccbd4823"
/>
<link
rel="apple-touch-icon"
sizes="76x76"
href="https://librepages.org/apple-icon-76x76.png?h=14cc3b66876cc79fe49f4bdf43cfa342dd12249fb32ebb4bf5895cac9fd2eaba"
/>
<link
rel="apple-touch-icon"
sizes="114x114"
href="https://librepages.org/apple-icon-114x114.png?h=a7e320f87a86aa0e037e78635c5f5042e02bf3adaf5c7a3163a108b004f1874e"
/>
<link
rel="apple-touch-icon"
sizes="120x120"
href="https://librepages.org/apple-icon-120x120.png?h=0555c76525ad4b8e974217be648c2691643b0ae09c1447bee571bdf51d324e5a"
/>
<link
rel="apple-touch-icon"
sizes="144x144"
href="https://librepages.org/apple-icon-144x144.png?h=3c6dcd632f3eca17cf7cc6153e9b372183518168754e2d8adb6bc549cfc89694"
/>
<link
rel="apple-touch-icon"
sizes="152x152"
href="https://librepages.org/apple-icon-152x152.png?h=0de6ee6daa86c4800faa71c0ba940a749b025c83f1150b19f7817bac9558344e"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="https://librepages.org/apple-icon-180x180.png?h=4015bdb0896669f24d0be4e93fc9625c771a746060906dd94ed07ed2b3a88ede"
/>
<link
rel="icon"
type="image/png"
sizes="192x192"
href="https://librepages.org/android-icon-192x192.png?h=4065738be7277800667ab5dab97c610d8b76f7c9d7835266ecf440a1336b179a"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="https://librepages.org/favicon-32x32.png?h=19f5fc89580c10a37da127a18cb6d18427f8604617fe3c1d163a5528c4832094"
/>
<link
rel="icon"
type="image/png"
sizes="96x96"
href="https://librepages.org/favicon-96x96.png?h=f1dbc55e44179d839832093c008b0bedea79c3b21b1af68adb6d70c3e21227f5"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="https://librepages.org/favicon-16x16.png?h=a7056d65f8aa73fbaf9e97dcd2e685ac67489a76c0b8e715936970b118d74700"
/>
<link
rel="manifest"
href="https://librepages.org/manifest.json?h=27eca3e8297eb7ff340deb3849b210185a459b3845456aa4d0036f6d966b3518"
/>
<meta name="msapplication-TileColor" content="#ffffff" />
<meta
name="msapplication-TileImage"
content="https://librepages.org/ms-icon-144x144.png?h=3c6dcd632f3eca17cf7cc6153e9b372183518168754e2d8adb6bc549cfc89694"
/>
<meta name="theme-color" content="#ffffff" />
</head>
<!-- Matomo -->
<script>
var _paq = (window._paq = window._paq || []);
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["setCookieDomain", "*.librepages.org"]);
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function () {
var u = "//matomo.librepages.org/";
_paq.push(["setTrackerUrl", u + "matomo.php"]);
_paq.push(["setSiteId", "3"]);
var d = document,
g = d.createElement("script"),
s = d.getElementsByTagName("script")[0];
g.async = true;
g.src = u + "matomo.js";
s.parentNode.insertBefore(g, s);
})();
</script>
<noscript
><p>
<img
src="//matomo.librepages.org/matomo.php?idsite=3&amp;rec=1"
style="border: 0"
alt=""
/></p
></noscript>
<!-- End Matomo Code -->
</head>
<body class="base">
<div id="check-icon" data-check="https://librepages.org/icons/check.svg?h=376636abc0ddb30b4748ab5d4416d64ec96862f6c4acf04ef3bf9a7f8f323238"></div>
<div id="clipboard-icon" data-clipboard="https://librepages.org/icons/clipboard.svg?h=202bedb305272a2e2a87ca77aae6e8c61403fc33fb8d8b3cda98df7226ddba84"></div>
<header><nav class="nav__container">
<input type="checkbox" class="nav__toggle" id="nav__toggle" />
<div class="nav__header">
<a class="nav__logo-container" href="/">
<p class="nav__home-btn">LibrePages</p>
</a>
<label class="nav__hamburger-menu" for="nav__toggle">
<span class="nav__hamburger-inner"></span>
</label>
</div>
<div class="nav__spacer--small"></div>
<div class="nav__link-group">
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="&#x2F;about&#x2F;">About</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="&#x2F;blog&#x2F;">Blog</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;matrix.to&#x2F;#&#x2F;#librepages:matrix.batsense.net">Chat</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;docs.librepages.org">Docs</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;gts.batsense.net&#x2F;@librepages">Fediverse</a>
</div>
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages">Source Code</a>
</div>
</div>
<div class="nav__spacer"></div>
<div class="nav__link-group--small">
<div class="nav__link-container">
<a class="nav__link" rel="noreferrer" href="https:&#x2F;&#x2F;demo.librepages.org&#x2F;">Demo</a>
</div>
</div>
</nav>
</header>
<!-- See ../sass/main.scss. Required for pushing footer to the very
bottom of the page -->
<div class="main__content-container">
<main>
<div class="blog__container">
<div class="tag__title-container">
<h1 class="tag__title">#monthly-report</h1>
<a class="tag__rss-link--single" href="https:&#x2F;&#x2F;librepages.org&#x2F;tags&#x2F;monthly-report&#x2F;atom.xml" target="_blank" rel="noopener" title="RSS">
<img
src="https://librepages.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
class="tag__rss-icon--single"
alt="RSS icon"
/>
</a></div>
<ul class="blog__list">
<li class="blog__post-item">
<a href="https://librepages.org/blog/december-2022-monthly-report/" class="blog__post-link">
<h2 class="blog__post-title">December 2022 Monthly Report</h2>
<p class="blog__post-meta">
31
December
,
2022 &middot; <b>3 min read</b>
</p>
<p class="blog__post-description">Towards MVP: deploy sites with forms with Forgejo and Gitea integration. Infrastructure-as-Code to deploy full system is WIP </p>
</a>
<div class="blog__post-tag-container">
<a class="blog__post-tag" href="/tags/monthly-report">#monthly-report</a>
<a class="blog__post-tag" href="/tags/JAMStack">#JAMStack</a>
<a class="blog__post-tag" href="/tags/self-hosting">#self-hosting</a>
</div>
</li>
</ul>
</div>
<link rel="alternate" type="application/rss+xml" title="RSS" href="https://librepages.org/rss.xml">
</main>
<footer>
<div class="footer__container">
<!-- <div class="footer__column"> --->
<p class="footer__column license__conatiner">
All text <a
class="license__link"
rel="noreferrer"
href="http://creativecommons.org/licenses/by-sa/4.0/"
target="_blank"
>&nbsp;CC-BY-SA&nbsp;</a
>
&amp; code
<a
class="license__link"
rel="noreferrer"
href="https://www.gnu.org/licenses/agpl-3.0.en.html"
target="_blank"
>&nbsp;AGPL&nbsp;</a
>
</p>
<!-- </div> -->
<div class="footer__column--center">
<a href="/blog/atom.xml" target="_blank" rel="noopener" title="RSS">
<img
src="https://librepages.org/icons/rss.svg?h=f6cd584bdbcd2eb4d1b8b84c9cf083ef45f772167c33fdcee754b35ae8ff4c7d"
class="footer__icon"
alt="Email icon"
/>
</a>
</div>
<div class="footer__column">
<a href="/about" title="About">About</a>
<a href="/coc" title="Code of Conduct">CoC</a>
<span class="footer__column-divider--mobile-only">|</span>
<a href="/legalese" title="Legalese">Legalese</a>
<a href="/privacy-policy" title="Privacy Policy">Privacy</a>
<span class="footer__column-divider--mobile-only">|</span>
<a
href="https://git.batsense.net/LibrePages"
rel="noreferrer"
target="_blank"
title="Status"
>Source Code</a
>
<!--
<a href="/tos" title="Terms of Service">ToS</a>
-->
</div>
</div>
</footer>
</div>
</body>
</html>

View file

@ -4,8 +4,95 @@
<link href="https://librepages.org/tags/self-hosting/atom.xml" rel="self" type="application/atom+xml"/> <link href="https://librepages.org/tags/self-hosting/atom.xml" rel="self" type="application/atom+xml"/>
<link href="https://librepages.org"/> <link href="https://librepages.org"/>
<generator uri="https://www.getzola.org/">Zola</generator> <generator uri="https://www.getzola.org/">Zola</generator>
<updated>2022-09-10T00:00:00+00:00</updated> <updated>2022-12-31T00:00:00+00:00</updated>
<id>https://librepages.org/tags/self-hosting/atom.xml</id> <id>https://librepages.org/tags/self-hosting/atom.xml</id>
<entry xml:lang="en">
<title>December 2022 Monthly Report</title>
<published>2022-12-31T00:00:00+00:00</published>
<updated>2022-12-31T00:00:00+00:00</updated>
<link href="https://librepages.org/blog/december-2022-monthly-report/" type="text/html"/>
<id>https://librepages.org/blog/december-2022-monthly-report/</id>
<content type="html">&lt;p&gt;These past couple of months have been very busy interesting, LibrePages
went from being a simple &lt;code&gt;git pull&lt;&#x2F;code&gt; webhook to fully-fledged platform
that can deploy static sites from &lt;em&gt;any&lt;&#x2F;em&gt; Git forge.&lt;&#x2F;p&gt;
&lt;p&gt;This month, the following things were accomplished:&lt;&#x2F;p&gt;
&lt;h2 id=&quot;1-deploy-site-from-dashboard&quot;&gt;1. Deploy site from dashboard&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-deploy-site-from-dashboard&quot; aria-label=&quot;Anchor link for: 1-deploy-site-from-dashboard&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;p&gt;Custom domain support isn&#x27;t available at the moment but will be
implemented soon.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;2-forms-support&quot;&gt;2. Forms support&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-forms-support&quot; aria-label=&quot;Anchor link for: 2-forms-support&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;p&gt;LibrePages Forms is a &lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;forms&quot;&gt;separate
service&lt;&#x2F;a&gt; that can be
integrated into the system. It accepts form submissions in both JSON and
&lt;code&gt;application&#x2F;x-www-form-urlencode&lt;&#x2F;code&gt;. Adding it to your
LibrePages-deployed website is very simple, please see
&lt;a href=&quot;https:&#x2F;&#x2F;docs.librepages.org&#x2F;forms&#x2F;add&#x2F;&quot;&gt;here&lt;&#x2F;a&gt; for instructions.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;3-forgejo-and-gitea-integration&quot;&gt;3. Forgejo and Gitea integration&lt;a class=&quot;zola-anchor&quot; href=&quot;#3-forgejo-and-gitea-integration&quot; aria-label=&quot;Anchor link for: 3-forgejo-and-gitea-integration&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;4-sysadmin-logging-and-debugging&quot;&gt;4. Sysadmin: logging and debugging&lt;a class=&quot;zola-anchor&quot; href=&quot;#4-sysadmin-logging-and-debugging&quot; aria-label=&quot;Anchor link for: 4-sysadmin-logging-and-debugging&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;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
&lt;a href=&quot;https:&#x2F;&#x2F;prometheus.io&quot;&gt;Prometheus&lt;&#x2F;a&gt; and provides distributed tracing via
OpenTelemetry-based based utilities like &lt;a href=&quot;https:&#x2F;&#x2F;www.jaegertracing.io&#x2F;&quot;&gt;Jagger&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;5-nginx-bind-and-let-s-encrypt&quot;&gt;5. Nginx, bind and Let&#x27;s Encrypt&lt;a class=&quot;zola-anchor&quot; href=&quot;#5-nginx-bind-and-let-s-encrypt&quot; aria-label=&quot;Anchor link for: 5-nginx-bind-and-let-s-encrypt&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;LibrePages is modular, it can be integrated into any existing system,
like &lt;a href=&quot;https:&#x2F;&#x2F;gna.org&quot;&gt;Gna!&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;enough.community&#x2F;&quot;&gt;Enough
Community&lt;&#x2F;a&gt; to provide static site hosting. We
do this using
&lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;conductor&quot;&gt;Conductor&lt;&#x2F;a&gt;, which allows
LibrePages to integrate with multiple DNS servers&#x2F;providers, reverse
proxies and other third-party applications that LibrePages would depend
on.&lt;&#x2F;p&gt;
&lt;p&gt;Currently, we are working on supporting a system based on Nginx, Bind9 and Let&#x27;s Encrypt.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;6-infrastructure-as-code&quot;&gt;6. Infrastructure-as-Code&lt;a class=&quot;zola-anchor&quot; href=&quot;#6-infrastructure-as-code&quot; aria-label=&quot;Anchor link for: 6-infrastructure-as-code&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;git.batsense.net&#x2F;LibrePages&#x2F;Infrastructure-as-Code&quot;&gt;Infrastructure as code to deploy the full
system&lt;&#x2F;a&gt; is
being worked on. So far, we&#x27;ve implemented deploying a Debian server
using Terraform and libvirt. Installing and and configuring LibrePages
is being worked on.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;thanks&quot;&gt;Thanks&lt;a class=&quot;zola-anchor&quot; href=&quot;#thanks&quot; aria-label=&quot;Anchor link for: thanks&quot;
&gt;&lt;span class=&quot;anchor-icon&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a
&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;I would like to thank the &lt;a href=&quot;https:&#x2F;&#x2F;www.easter-eggs.com&#x2F;&quot;&gt;Easter-eggs&lt;&#x2F;a&gt;
for funding team for funding &lt;a href=&quot;https:&#x2F;&#x2F;forum.gna.org&#x2F;t&#x2F;5-000-contract-aravinth-manivannan-easter-eggs&#x2F;58&quot;&gt;my work on
LibrePages&lt;&#x2F;a&gt; &amp;lt;3&lt;&#x2F;p&gt;
</content>
</entry>
<entry xml:lang="en"> <entry xml:lang="en">
<title>How to deploy a website WITHOUT LibrePages</title> <title>How to deploy a website WITHOUT LibrePages</title>
<published>2022-09-10T00:00:00+00:00</published> <published>2022-09-10T00:00:00+00:00</published>

View file

@ -241,6 +241,30 @@
</a></div> </a></div>
<ul class="blog__list"> <ul class="blog__list">
<li class="blog__post-item">
<a href="https://librepages.org/blog/december-2022-monthly-report/" class="blog__post-link">
<h2 class="blog__post-title">December 2022 Monthly Report</h2>
<p class="blog__post-meta">
31
December
,
2022 &middot; <b>3 min read</b>
</p>
<p class="blog__post-description">Towards MVP: deploy sites with forms with Forgejo and Gitea integration. Infrastructure-as-Code to deploy full system is WIP </p>
</a>
<div class="blog__post-tag-container">
<a class="blog__post-tag" href="/tags/monthly-report">#monthly-report</a>
<a class="blog__post-tag" href="/tags/JAMStack">#JAMStack</a>
<a class="blog__post-tag" href="/tags/self-hosting">#self-hosting</a>
</div>
</li>
<li class="blog__post-item"> <li class="blog__post-item">
<a href="https://librepages.org/blog/2022-09-10-how-to-publish-website-without-librepages/" class="blog__post-link"> <a href="https://librepages.org/blog/2022-09-10-how-to-publish-website-without-librepages/" class="blog__post-link">
<h2 class="blog__post-title">How to deploy a website WITHOUT LibrePages</h2> <h2 class="blog__post-title">How to deploy a website WITHOUT LibrePages</h2>