Files
org_backend/output/20251109205925-old_nginx_code.html
2025-12-28 20:55:38 +00:00

591 lines
20 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2025-12-28 Sun 20:54 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>old_nginx_code</title>
<meta name="generator" content="Org Mode" />
<style type="text/css">
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }
</style>
<link rel="stylesheet" href="/assets/styles/style.css" />
<link rel="stylesheet" href="/assets/styles/bigger-picture.min.css" />
<link rel="stylesheet" href="/assets/styles/media.css" />
<script src="/assets/scripts/script.js" defer></script>
<script src="/assets/scripts/search.js" defer></script>
<script src="/assets/scripts/bigger-picture.min.js" defer></script>
<script src="/assets/scripts/svg-pan-zoom.min.js" defer></script>
<script src="/assets/scripts/gallery-init.js" defer></script>
</head>
<body>
<div id="preamble" class="status">
<div class="banner-header">
<div class="banner-left">
<a href="/20241210233721-brain_moc.html"> <img src="/assets/gr.png" alt="Site Logo" class="banner-logo" /> </a>
<div id="updated">Updated: 2025-12-28 Sun 19:48</div>
</div>
<div class="banner-search">
<input id="search-box"
type="search"
placeholder="Search notes…"
aria-label="Search notes"
autocomplete="off" />
<div id="search-results"></div>
</div>
<button id="close-all">Close All</button>
</div>
</div>
<div id="stack-root">
<div class="stack-track">
<article class="stack-pane pane-root" data-url="/20251109205925-old_nginx_code.html">
<div id="content" class="content">
<div class="title-section">
<div class="title-controls">
<button class="pane-fullscreen" aria-label="Fullscreen">F</button>
<button class="pane-edit" aria-label="Edit pane">E</button>
<button class="pane-close" aria-label="Close pane">×</button>
</div>
<h1 class="title">old<sub>nginx</sub><sub>code</sub></h1>
<div class="title-metadata">
<span class="metadata-item">
<span class="metadata-label">planted:</span>
<span class="metadata-value">2025-11-09</span>
</span>
<span class="metadata-item">
<span class="metadata-label">last tended to:</span>
<span class="metadata-value">2025-12-28</span>
</span>
</div>
</div>
<p>
-&gt; % cat /etc/nginx/sites-available/zserver
</p>
<p>
server {
server<sub>name</sub> zainezq.com;
</p>
<p>
access<sub>log</sub> /var/log/nginx/zserver.access.log combined;
error<sub>log</sub> /var/log/nginx/zserver.error.log warn;
</p>
<p>
auth<sub>basic</sub> &ldquo;Restricted Access&rdquo;;
auth<sub>basic</sub><sub>user</sub><sub>file</sub> <i>etc/nginx</i>.htpasswd;
</p>
<p>
location / {
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
proxy<sub>redirect</sub> off;
</p>
<p>
root <i>home/zaine/master-folder/org<sub>files</sub>/org<sub>web</sub>/output;
index index.html index.htm;
try<sub>files</sub> $uri $uri</i> =404;
}
</p>
<p>
location /nginx<sub>status</sub> {
stub<sub>status</sub>;
}
</p>
<p>
location <i>dockge</i> {
proxy<sub>pass</sub> <a href="http://127.0.0.1:5021/">http://127.0.0.1:5021/</a>;
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
}
</p>
<p>
location <i>guac</i> {
proxy<sub>pass</sub> <a href="http://127.0.0.1:3003/guacamole/">http://127.0.0.1:3003/guacamole/</a>;
proxy<sub>http</sub><sub>version</sub> 1.1;
</p>
<p>
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
</p>
<p>
proxy<sub>set</sub><sub>header</sub> Upgrade $http<sub>upgrade</sub>;
proxy<sub>set</sub><sub>header</sub> Connection $connection<sub>upgrade</sub>;
}
</p>
<p>
location <i>pgadmin4</i> {
proxy<sub>set</sub><sub>header</sub> X-Script-Name /pgadmin4;
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>pass</sub> <a href="http://127.0.0.1:5050">http://127.0.0.1:5050</a>;
proxy<sub>redirect</sub> off;
}
</p>
<p>
location <i>pdf</i> {
proxy<sub>pass</sub> <a href="http://127.0.0.1:8002/pdf/">http://127.0.0.1:8002/pdf/</a>;
proxy<sub>set</sub><sub>header</sub> X-Script-Name /pdf;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>redirect</sub> off;
}
</p>
<p>
location /calibre {
proxy<sub>bind</sub> $server<sub>addr</sub>;
proxy<sub>pass</sub> <a href="http://127.0.0.1:8083">http://127.0.0.1:8083</a>;
proxy<sub>set</sub><sub>header</sub> Host $http<sub>host</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Scheme $scheme;
proxy<sub>set</sub><sub>header</sub> X-Script-Name /calibre; # IMPORTANT: path has NO trailing slash
</p>
<p>
proxy<sub>redirect</sub> off;
proxy<sub>http</sub><sub>version</sub> 1.1;
client<sub>max</sub><sub>body</sub><sub>size</sub> 100M;
}
</p>
<p>
location <i>codeserver</i> {
proxy<sub>pass</sub> <a href="http://localhost:8441/">http://localhost:8441/</a>;
rewrite ^/codeserver(/.*)$ $1 break;
</p>
<p>
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> Upgrade $http<sub>upgrade</sub>;
proxy<sub>set</sub><sub>header</sub> Connection &ldquo;upgrade&rdquo;;
proxy<sub>set</sub><sub>header</sub> Accept-Encoding gzip;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
}
</p>
<p>
location /filebrowser {
</p>
<p>
proxy<sub>buffers</sub> 8 32k;
proxy<sub>buffer</sub><sub>size</sub> 64k;
</p>
<p>
client<sub>max</sub><sub>body</sub><sub>size</sub> 75M;
</p>
<p>
proxy<sub>pass</sub> <a href="http://127.0.0.1:9991">http://127.0.0.1:9991</a>;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> Host $http<sub>host</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
#proxy<sub>set</sub><sub>header</sub> X-NginX-Proxy true;
</p>
<p>
proxy<sub>http</sub><sub>version</sub> 1.1;
proxy<sub>set</sub><sub>header</sub> Upgrade $http<sub>upgrade</sub>;
proxy<sub>set</sub><sub>header</sub> Connection &ldquo;upgrade&rdquo;;
</p>
<p>
proxy<sub>read</sub><sub>timeout</sub> 999999999;
}
</p>
<p>
location <i>miniflux</i> {
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
proxy<sub>pass</sub> <a href="http://127.0.0.1:9433/miniflux/">http://127.0.0.1:9433/miniflux/</a>;
proxy<sub>redirect</sub> off;
}
</p>
<p>
location <i>jupyter</i> {
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
proxy<sub>pass</sub> <a href="http://127.0.0.1:8888/jupyter/">http://127.0.0.1:8888/jupyter/</a>;
proxy<sub>redirect</sub> off;
</p>
<p>
proxy<sub>http</sub><sub>version</sub> 1.1;
proxy<sub>set</sub><sub>header</sub> Upgrade $http<sub>upgrade</sub>;
proxy<sub>set</sub><sub>header</sub> Connection &ldquo;Upgrade&rdquo;;
}
</p>
<p>
location <i>portainer</i> {
proxy<sub>pass</sub> <a href="https://localhost:9443/">https://localhost:9443/</a>;
proxy<sub>ssl</sub><sub>verify</sub> off; # Because Portainer uses a self-signed cert by default
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
proxy<sub>set</sub><sub>header</sub> Authorization &ldquo;&rdquo;;
</p>
<p>
proxy<sub>http</sub><sub>version</sub> 1.1;
proxy<sub>set</sub><sub>header</sub> Upgrade $http<sub>upgrade</sub>;
proxy<sub>set</sub><sub>header</sub> Connection &ldquo;upgrade&rdquo;;
</p>
<p>
rewrite ^/portainer(/.*)$ $1 break;
}
</p>
<p>
location <i>wireguard</i> {
proxy<sub>pass</sub> <a href="http://127.0.0.1:124/">http://127.0.0.1:124/</a>;
proxy<sub>http</sub><sub>version</sub> 1.1;
proxy<sub>set</sub><sub>header</sub> Upgrade $http<sub>upgrade</sub>;
proxy<sub>set</sub><sub>header</sub> Connection &ldquo;Upgrade&rdquo;;
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
</p>
<p>
proxy<sub>set</sub><sub>header</sub> Accept-Encoding &ldquo;&rdquo;;
sub<sub>filter</sub> &rsquo;href=&ldquo;<i>&rsquo; &rsquo;href="/wireguard</i>&rsquo;;
sub<sub>filter</sub> &rsquo;src=&rdquo;<i>&rsquo; &rsquo;src="/wireguard</i>&rsquo;;
sub<sub>filter</sub><sub>types</sub> text/css application/javascript;
sub<sub>filter</sub><sub>once</sub> off;
}
</p>
<p>
location = <i>password { return 301 /password</i>; }
</p>
<p>
location ^~ <i>password</i> {
auth<sub>basic</sub> off;
</p>
<p>
proxy<sub>http</sub><sub>version</sub> 1.1;
proxy<sub>set</sub><sub>header</sub> Host $host;
proxy<sub>set</sub><sub>header</sub> X-Real-IP $remote<sub>addr</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-For $proxy<sub>add</sub><sub>x</sub><sub>forwarded</sub><sub>for</sub>;
proxy<sub>set</sub><sub>header</sub> X-Forwarded-Proto $scheme;
</p>
<p>
proxy<sub>set</sub><sub>header</sub> Upgrade $http<sub>upgrade</sub>;
proxy<sub>set</sub><sub>header</sub> Connection &ldquo;upgrade&rdquo;;
</p>
<p>
proxy<sub>pass</sub> <a href="http://127.0.0.1:8006">http://127.0.0.1:8006</a>;
}
</p>
<p>
location ^~ /password/notifications/hub {
auth<sub>basic</sub> off;
</p>
<p>
proxy<sub>http</sub><sub>version</sub> 1.1;
proxy<sub>set</sub><sub>header</sub> Upgrade $http<sub>upgrade</sub>;
proxy<sub>set</sub><sub>header</sub> Connection &ldquo;upgrade&rdquo;;
proxy<sub>set</sub><sub>header</sub> Host $host;
</p>
<p>
proxy<sub>pass</sub> <a href="http://127.0.0.1:8006">http://127.0.0.1:8006</a>;
}
</p>
<p>
error<sub>page</sub> 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
</p>
<p>
location ~ /\. {
deny all;
}
</p>
<p>
listen 443 ssl; # managed by Certbot
ssl<sub>certificate</sub> /etc/letsencrypt/live/zainezq.com-0001/fullchain.pem; # managed by Certbot
ssl<sub>certificate</sub><sub>key</sub> /etc/letsencrypt/live/zainezq.com-0001/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl<sub>dhparam</sub> /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
</p>
<p>
}
</p>
<p>
server {
if ($host = zserver.zapto.org) {
return 301 <a href="https://$host$request_uri">https://$host$request_uri</a>;
} # managed by Certbot
</p>
<p>
listen 80;
server<sub>name</sub> zserver.zapto.org;
return 404; # managed by Certbot
}
</p>
<p class="backlinks-section" id="backlinks">
Backlinks
</p>
<ul class="org-ul backlinks-list">
<li><a href="20251019114736-server_moc.html#ID-f09cb4ed-1407-4187-9002-de2c5db13a8f">server<sub>moc</sub></a></li>
</ul>
</div>
</div></article></div></div>
<div id="postamble" class="status">
<footer>
<div class="copyright-container">
<div class="copyright">
Copyright &copy; 2022-2025 Zaine Qayyum. All rights reserved unless otherwise noted.</div></div>
<div class="generated">
Created with <a href="https://www.gnu.org/software/emacs/">Emacs</a> 30.2 (<a href="https://orgmode.org">Org</a> mode 9.7.11) on <a href="https://www.archlinux.org/">Arch</a> <a href="https://www.gnu.org">GNU</a>/<a href="https://www.kernel.org/">Linux</a>
</div>
</footer>
</div>
</body>
</html>