summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fonts/KawkabMono-Bold.woff2bin0 -> 102704 bytes
-rw-r--r--fonts/KawkabMono-Regular.woff2bin0 -> 106884 bytes
-rw-r--r--irc.gumx.cc/index.html52
-rw-r--r--mail.gumx.cc/index.html57
-rw-r--r--mail.gumx.cc/list/index.html56
-rw-r--r--pgp.gumx.cc/index.html52
-rw-r--r--vpn.gumx.cc/index.html65
-rw-r--r--wk.fo/index.html66
8 files changed, 348 insertions, 0 deletions
diff --git a/fonts/KawkabMono-Bold.woff2 b/fonts/KawkabMono-Bold.woff2
new file mode 100644
index 0000000..f8f61f7
--- /dev/null
+++ b/fonts/KawkabMono-Bold.woff2
Binary files differ
diff --git a/fonts/KawkabMono-Regular.woff2 b/fonts/KawkabMono-Regular.woff2
new file mode 100644
index 0000000..92d4d15
--- /dev/null
+++ b/fonts/KawkabMono-Regular.woff2
Binary files differ
diff --git a/irc.gumx.cc/index.html b/irc.gumx.cc/index.html
new file mode 100644
index 0000000..a18a309
--- /dev/null
+++ b/irc.gumx.cc/index.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<title>irc.gumx.cc</title>
+<style>
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Regular.woff2); font-weight: normal; }
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Bold.woff2); font-weight: bold; }
+* { unicode-bidi: plaintext; box-sizing: border-box; }
+html { color: black; background-color: white; }
+body { font-family: "Kawkab Mono"; font-size: 16px; line-height: 1.4; margin: 0; padding: 4rem 0; min-height: 100%; overflow-wrap: break-word; }
+main, header, footer { max-width: 800px; margin-inline: auto; padding: 0 2rem; }
+h1, header, footer { text-align: center; }
+main { text-align: justify; }
+p, h2, h3, h4 { margin: 1em 0 0 0; }
+table { margin: auto; border-collapse: collapse; }
+th, td { border: 1px solid; padding: 0.3em 0.8em; }
+code { font-size: 85%; }
+header { margin-bottom: 1em; }
+footer { margin-top: 3em; }
+a { color: inherit; }
+@media (max-width: 600px) { body { font-size: 0.9em; } h1 { font-size: 1.8em; } }
+@media (max-width: 400px) { body { font-size: 0.8em; } h1 { font-size: 1.6em; } }
+@media (prefers-color-scheme: dark) { html { filter: invert(1); } img { filter: invert(1); } }
+</style>
+</head>
+<body>
+<header>
+<h1><a href="https://gumx.cc">gumx</a> / irc</h1>
+</header>
+<main>
+<p>Personal IRC server running <a href="https://ngircd.barton.de/">ngircd</a>, fronted by a <a href="https://soju.im/">Soju</a> bouncer. Access is by invitation.</p>
+<h2>connect</h2>
+<table>
+<tr><th>server</th><td>wk.fo:6697 (TLS)</td></tr>
+</table>
+<h2>request access</h2>
+<p>Send a message to <a href="mailto:hi@gumx.cc">hi@gumx.cc</a> with your nick and preferred IRC client.</p>
+</main>
+<footer>
+<hr>
+<a href="https://gumx.cc">gumx.cc</a> /
+<a href="https://git.gumx.cc">git</a> /
+<a href="https://mail.gumx.cc">mail</a> /
+<a href="https://irc.gumx.cc">irc</a> /
+<a href="https://vpn.gumx.cc">vpn</a> /
+<a href="https://pgp.gumx.cc">pgp</a> /
+<a href="https://wk.fo">wk.fo</a>
+</footer>
+</body>
+</html>
diff --git a/mail.gumx.cc/index.html b/mail.gumx.cc/index.html
new file mode 100644
index 0000000..9e5597c
--- /dev/null
+++ b/mail.gumx.cc/index.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<title>mail.gumx.cc</title>
+<style>
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Regular.woff2); font-weight: normal; }
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Bold.woff2); font-weight: bold; }
+* { unicode-bidi: plaintext; box-sizing: border-box; }
+html { color: black; background-color: white; }
+body { font-family: "Kawkab Mono"; font-size: 16px; line-height: 1.4; margin: 0; padding: 4rem 0; min-height: 100%; overflow-wrap: break-word; }
+main, header, footer { max-width: 800px; margin-inline: auto; padding: 0 2rem; }
+h1, header, footer { text-align: center; }
+main { text-align: justify; }
+p, h2, h3, h4 { margin: 1em 0 0 0; }
+table { margin: auto; border-collapse: collapse; }
+th, td { border: 1px solid; padding: 0.3em 0.8em; }
+code { font-size: 85%; }
+header { margin-bottom: 1em; }
+footer { margin-top: 3em; }
+a { color: inherit; }
+@media (max-width: 600px) { body { font-size: 0.9em; } h1 { font-size: 1.8em; } }
+@media (max-width: 400px) { body { font-size: 0.8em; } h1 { font-size: 1.6em; } }
+@media (prefers-color-scheme: dark) { html { filter: invert(1); } img { filter: invert(1); } }
+</style>
+</head>
+<body>
+<header>
+<h1><a href="https://gumx.cc">gumx</a> / mail</h1>
+</header>
+<main>
+<p>Self-hosted mail running <a href="http://www.postfix.org/">Postfix</a> and <a href="https://www.dovecot.org/">Dovecot</a>.</p>
+<h2>contact</h2>
+<p><a href="mailto:hi@gumx.cc">hi@gumx.cc</a></p>
+<h2>IMAP / SMTP</h2>
+<table>
+<tr><th>IMAP</th><td>mail.gumx.cc:993 (TLS)</td></tr>
+<tr><th>SMTP</th><td>mail.gumx.cc:587 (STARTTLS)</td></tr>
+</table>
+<h2>CalDAV / CardDAV</h2>
+<p>Available at <code><a href="https://mail.gumx.cc/dav/">/dav/</a></code> via <a href="https://www.xandikos.org/">Xandikos</a>. Credentials on request.</p>
+<h2>mailing list</h2>
+<p>Site updates and discussion: <a href="/list">gumx.cc mailing list</a>.</p>
+</main>
+<footer>
+<hr>
+<a href="https://gumx.cc">gumx.cc</a> /
+<a href="https://git.gumx.cc">git</a> /
+<a href="https://mail.gumx.cc">mail</a> /
+<a href="https://irc.gumx.cc">irc</a> /
+<a href="https://vpn.gumx.cc">vpn</a> /
+<a href="https://pgp.gumx.cc">pgp</a> /
+<a href="https://wk.fo">wk.fo</a>
+</footer>
+</body>
+</html>
diff --git a/mail.gumx.cc/list/index.html b/mail.gumx.cc/list/index.html
new file mode 100644
index 0000000..4bec0e1
--- /dev/null
+++ b/mail.gumx.cc/list/index.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<title>mail.gumx.cc / list</title>
+<style>
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Regular.woff2); font-weight: normal; }
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Bold.woff2); font-weight: bold; }
+* { unicode-bidi: plaintext; box-sizing: border-box; }
+html { color: black; background-color: white; }
+body { font-family: "Kawkab Mono"; font-size: 16px; line-height: 1.4; margin: 0; padding: 4rem 0; min-height: 100%; overflow-wrap: break-word; }
+main, header, footer { max-width: 800px; margin-inline: auto; padding: 0 2rem; }
+h1, header, footer { text-align: center; }
+main { text-align: justify; }
+p, h2, h3, h4 { margin: 1em 0 0 0; }
+pre { margin: 1em 0; }
+pre code { border: thin solid; padding: 1em; display: block; text-align: start; overflow-x: scroll; }
+code { font-size: 85%; }
+header { margin-bottom: 1em; }
+footer { margin-top: 3em; }
+a { color: inherit; }
+@media (max-width: 600px) { body { font-size: 0.9em; } h1 { font-size: 1.8em; } }
+@media (max-width: 400px) { body { font-size: 0.8em; } h1 { font-size: 1.6em; } }
+@media (prefers-color-scheme: dark) { html { filter: invert(1); } img { filter: invert(1); } }
+</style>
+</head>
+<body>
+<header>
+<h1><a href="https://gumx.cc">gumx</a> / list</h1>
+</header>
+<main>
+<p>Site updates and general discussion. Low volume.</p>
+<h2>subscribe</h2>
+<p>Send an empty email to:</p>
+<pre><code>list+subscribe@gumx.cc</code></pre>
+<h2>unsubscribe</h2>
+<pre><code>list+unsubscribe@gumx.cc</code></pre>
+<h2>post</h2>
+<p>Subscribers only:</p>
+<pre><code>list@gumx.cc</code></pre>
+<h2>archive</h2>
+<p>Browse past messages at <a href="/list/archive/">/list/archive/</a>.</p>
+</main>
+<footer>
+<hr>
+<a href="https://gumx.cc">gumx.cc</a> /
+<a href="https://git.gumx.cc">git</a> /
+<a href="https://mail.gumx.cc">mail</a> /
+<a href="https://irc.gumx.cc">irc</a> /
+<a href="https://vpn.gumx.cc">vpn</a> /
+<a href="https://pgp.gumx.cc">pgp</a> /
+<a href="https://wk.fo">wk.fo</a>
+</footer>
+</body>
+</html>
diff --git a/pgp.gumx.cc/index.html b/pgp.gumx.cc/index.html
new file mode 100644
index 0000000..7c3db3b
--- /dev/null
+++ b/pgp.gumx.cc/index.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<title>pgp.gumx.cc</title>
+<style>
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Regular.woff2); font-weight: normal; }
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Bold.woff2); font-weight: bold; }
+* { unicode-bidi: plaintext; box-sizing: border-box; }
+html { color: black; background-color: white; }
+body { font-family: "Kawkab Mono"; font-size: 16px; line-height: 1.4; margin: 0; padding: 4rem 0; min-height: 100%; overflow-wrap: break-word; }
+main, header, footer { max-width: 800px; margin-inline: auto; padding: 0 2rem; }
+h1, header, footer { text-align: center; }
+main { text-align: justify; }
+p, h2, h3, h4 { margin: 1em 0 0 0; }
+pre { margin: 1em 0; }
+pre code { border: thin solid; padding: 1em; display: block; text-align: start; overflow-x: scroll; }
+code { font-size: 85%; }
+header { margin-bottom: 1em; }
+footer { margin-top: 3em; }
+a { color: inherit; }
+@media (max-width: 600px) { body { font-size: 0.9em; } h1 { font-size: 1.8em; } }
+@media (max-width: 400px) { body { font-size: 0.8em; } h1 { font-size: 1.6em; } }
+@media (prefers-color-scheme: dark) { html { filter: invert(1); } img { filter: invert(1); } }
+</style>
+</head>
+<body>
+<header>
+<h1><a href="https://gumx.cc">gumx</a> / pgp</h1>
+</header>
+<main>
+<p>Curated HKP keyserver. Keys are added after in-person verification only.</p>
+<h2>lookup</h2>
+<pre><code>gpg --keyserver hkps://pgp.gumx.cc --recv-keys &lt;fingerprint&gt;</code></pre>
+<p>Or via HTTPS:</p>
+<pre><code>curl "https://pgp.gumx.cc/pks/lookup?op=get&search=0x&lt;fingerprint&gt;"</code></pre>
+<h2>submit</h2>
+<p>Keys are not accepted without prior arrangement. Contact <a href="mailto:hi@gumx.cc">hi@gumx.cc</a>.</p>
+</main>
+<footer>
+<hr>
+<a href="https://gumx.cc">gumx.cc</a> /
+<a href="https://git.gumx.cc">git</a> /
+<a href="https://mail.gumx.cc">mail</a> /
+<a href="https://irc.gumx.cc">irc</a> /
+<a href="https://vpn.gumx.cc">vpn</a> /
+<a href="https://pgp.gumx.cc">pgp</a> /
+<a href="https://wk.fo">wk.fo</a>
+</footer>
+</body>
+</html>
diff --git a/vpn.gumx.cc/index.html b/vpn.gumx.cc/index.html
new file mode 100644
index 0000000..c2a3ce3
--- /dev/null
+++ b/vpn.gumx.cc/index.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<title>vpn.gumx.cc</title>
+<style>
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Regular.woff2); font-weight: normal; }
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Bold.woff2); font-weight: bold; }
+* { unicode-bidi: plaintext; box-sizing: border-box; }
+html { color: black; background-color: white; }
+body { font-family: "Kawkab Mono"; font-size: 16px; line-height: 1.4; margin: 0; padding: 4rem 0; min-height: 100%; overflow-wrap: break-word; }
+main, header, footer { max-width: 800px; margin-inline: auto; padding: 0 2rem; }
+h1, header, footer { text-align: center; }
+main { text-align: justify; }
+p, h2, h3, h4 { margin: 1em 0 0 0; }
+ol { margin: 0.5em 0 0 0; }
+pre { margin: 1em 0; }
+pre code { border: thin solid; padding: 1em; display: block; text-align: start; overflow-x: scroll; }
+code { font-size: 85%; }
+header { margin-bottom: 1em; }
+footer { margin-top: 3em; }
+a { color: inherit; }
+@media (max-width: 600px) { body { font-size: 0.9em; } h1 { font-size: 1.8em; } }
+@media (max-width: 400px) { body { font-size: 0.8em; } h1 { font-size: 1.6em; } }
+@media (prefers-color-scheme: dark) { html { filter: invert(1); } img { filter: invert(1); } }
+</style>
+</head>
+<body>
+<header>
+<h1><a href="https://gumx.cc">gumx</a> / vpn</h1>
+</header>
+<main>
+<p><a href="https://www.wireguard.com/">WireGuard</a> VPN. Endpoint: <code>wk.fo:51820</code>. Access is by invitation.</p>
+<h2>setup</h2>
+<ol>
+<li>Generate a keypair: <code>wg genkey | tee private.key | wg pubkey &gt; public.key</code></li>
+<li>Send your public key to <a href="mailto:hi@gumx.cc">hi@gumx.cc</a></li>
+<li>Receive your assigned IP (<code>10.0.0.x/32</code>) and the server public key</li>
+<li>Create <code>/etc/wireguard/wg0.conf</code> and bring it up with <code>wg-quick up wg0</code></li>
+</ol>
+<h2>example client config</h2>
+<pre><code>[Interface]
+PrivateKey = &lt;your private key&gt;
+Address = 10.0.0.x/32
+DNS = 1.1.1.1
+
+[Peer]
+PublicKey = &lt;server public key&gt;
+Endpoint = wk.fo:51820
+AllowedIPs = 0.0.0.0/0
+PersistentKeepalive = 25</code></pre>
+</main>
+<footer>
+<hr>
+<a href="https://gumx.cc">gumx.cc</a> /
+<a href="https://git.gumx.cc">git</a> /
+<a href="https://mail.gumx.cc">mail</a> /
+<a href="https://irc.gumx.cc">irc</a> /
+<a href="https://vpn.gumx.cc">vpn</a> /
+<a href="https://pgp.gumx.cc">pgp</a> /
+<a href="https://wk.fo">wk.fo</a>
+</footer>
+</body>
+</html>
diff --git a/wk.fo/index.html b/wk.fo/index.html
new file mode 100644
index 0000000..c79d706
--- /dev/null
+++ b/wk.fo/index.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<title>wk.fo</title>
+<style>
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Regular.woff2); font-weight: normal; }
+@font-face { font-family: "Kawkab Mono"; src: url(/fonts/KawkabMono-Bold.woff2); font-weight: bold; }
+* { unicode-bidi: plaintext; box-sizing: border-box; }
+html { color: black; background-color: white; }
+body { font-family: "Kawkab Mono"; font-size: 16px; line-height: 1.4; margin: 0; padding: 4rem 0; min-height: 100%; overflow-wrap: break-word; }
+main, header, footer { max-width: 800px; margin-inline: auto; padding: 0 2rem; }
+h1, header, footer { text-align: center; }
+main { text-align: justify; }
+p, h2, h3, h4 { margin: 1em 0 0 0; }
+pre { margin: 1em 0; }
+pre code { border: thin solid; padding: 1em; display: block; text-align: start; overflow-x: scroll; }
+table { margin: auto; border-collapse: collapse; }
+th, td { border: 1px solid; padding: 0.3em 0.8em; }
+code { font-size: 85%; }
+header { margin-bottom: 1em; }
+footer { margin-top: 3em; }
+a { color: inherit; }
+@media (max-width: 600px) { body { font-size: 0.9em; } h1 { font-size: 1.8em; } }
+@media (max-width: 400px) { body { font-size: 0.8em; } h1 { font-size: 1.6em; } }
+@media (prefers-color-scheme: dark) { html { filter: invert(1); } img { filter: invert(1); } }
+</style>
+</head>
+<body>
+<header>
+<h1>wk.fo</h1>
+</header>
+<main>
+<p>File sharing, IRC bouncer, and VPN for friends. All services require an invitation.</p>
+<h2>file sharing</h2>
+<p>Upload via HTTPS (token required):</p>
+<pre><code>curl -F "file=@photo.jpg" -H "Authorization: YOUR_TOKEN" https://wk.fo/</code></pre>
+<p>Files expire after 24 hours by default (max 48h with <code>expires</code> param). Max 256 MB.</p>
+<h2>irc</h2>
+<table>
+<tr><th>server</th><td>wk.fo:6697 (TLS)</td></tr>
+<tr><th>type</th><td>Soju bouncer</td></tr>
+</table>
+<p>Use the credentials provided to you on invite. Works with any IRC client that supports SASL PLAIN.</p>
+<h2>vpn</h2>
+<table>
+<tr><th>server</th><td>wk.fo:51820 (UDP)</td></tr>
+<tr><th>type</th><td>WireGuard</td></tr>
+</table>
+<p>A config file is provided to you on invite. Import it into any WireGuard client.</p>
+<h2>access</h2>
+<p>Contact <a href="mailto:hi@gumx.cc">hi@gumx.cc</a>.</p>
+</main>
+<footer>
+<hr>
+<a href="https://gumx.cc">gumx.cc</a> /
+<a href="https://git.gumx.cc">git</a> /
+<a href="https://mail.gumx.cc">mail</a> /
+<a href="https://irc.gumx.cc">irc</a> /
+<a href="https://vpn.gumx.cc">vpn</a> /
+<a href="https://pgp.gumx.cc">pgp</a> /
+<a href="https://wk.fo">wk.fo</a>
+</footer>
+</body>
+</html>