100 lines
6.6 KiB
HTML
100 lines
6.6 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="color-scheme" content="light dark">
|
|
<link rel="stylesheet" href="css/pico.jade.min.css">
|
|
<link rel="stylesheet" href="site-styles/style.css">
|
|
<title>Keyboard Vagabond - About</title>
|
|
</head>
|
|
<body>
|
|
<header class="container">
|
|
<nav>
|
|
<!-- Desktop Navigation -->
|
|
<ul class="desktop-nav">
|
|
<li><a target="_blank" href="https://mastodon.keyboardvagabond.com/public">Mastodon</a></li>
|
|
<li><a target="_blank" href="https://piefed.keyboardvagabond.com">Piefed</a></li>
|
|
<li><a target="_blank" href="https://pixelfed.keyboardvagabond.com">Pixelfed</a></li>
|
|
<li><a target="_blank" href="https://bookwyrm.keyboardvagabond.com">Bookwyrm</a></li>
|
|
<li><a target="_blank" href="https://blog.keyboardvagabond.com">Write Freely</a></li>
|
|
<li><a target="_blank" href="https://picsur.keyboardvagabond.com">Picsur</a></li>
|
|
</ul>
|
|
|
|
<!-- Mobile Navigation -->
|
|
<ul class="mobile-nav">
|
|
<li>
|
|
<details class="dropdown">
|
|
<summary role="button" class="secondary">Sites</summary>
|
|
<ul>
|
|
<li><a target="_blank" href="https://mastodon.keyboardvagabond.com/public">Mastodon</a></li>
|
|
<li><a target="_blank" href="https://piefed.keyboardvagabond.com">Piefed</a></li>
|
|
<li><a target="_blank" href="https://pixelfed.keyboardvagabond.com">Pixelfed</a></li>
|
|
<li><a target="_blank" href="https://bookwyrm.keyboardvagabond.com">Bookwyrm</a></li>
|
|
<li><a target="_blank" href="https://blog.keyboardvagabond.com">Write Freely</a></li>
|
|
<li><a target="_blank" href="https://picsur.keyboardvagabond.com">Picsur</a></li>
|
|
</ul>
|
|
</details>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li><a href="index.html">Home</a></li>
|
|
<li>
|
|
<button id="theme-toggle" class="outline secondary" role="switch" aria-label="Toggle theme">
|
|
<span id="theme-icon">🌙</span>
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</header>
|
|
|
|
|
|
<main class="container">
|
|
<h1>About Keyboard Vagabond</h1>
|
|
<p>Keyboard Vagabond is a place where nomads, travelers, backpacker, whoever, can come together in a digital space that is free of advertising and the attention economy to share information and experiences. It is a place of mutual respect, courtesy, and understanding not just for the members who join, but also for those people and places we encounter on our journeys.</p>
|
|
|
|
<h4>Why Keyboard Vagabond</h4>
|
|
<p>Keyboard Vagabond was made because I saw multiple instances of people saying that, while there are travel communities on different instances, there was not a space specifically for nomads, so I thought I would make it.</p>
|
|
|
|
<h2>What to expect and commitments</h2>
|
|
<p><strong>Moderation style</strong> -
|
|
An online community of respect and courtesy that is simultaneously light on moderation and banning, yet firm on not tolerating bigotry, hatred, etc. Be kind and we'll all have a good time.</p>
|
|
<p><strong>Sign ups</strong> -
|
|
Sign ups require manual approval to prevent spam.</p>
|
|
<p><strong>Data protection</strong> -
|
|
Your data is yours and you can download it at any time through the apps.
|
|
The servers are run in a cluster with data redundancy across nodes + nightly and weekly backups to offline storage.</p>
|
|
<p><strong>Should shutdown happen</strong> -
|
|
There will be a 3 month announcement in advance, in accordance with the <a href="https://joinmastodon.org/covenant">Mastodon Server Covenant</a>.</p>
|
|
<p><strong>Funding</strong> -
|
|
Keyboard Mastodon is currently funded by the admin, for a cost of ~$40 - $45 per month. Donations may be opened in the future, but have not been set up at this time.</p>
|
|
<h1>The Dirty Technicals</h1>
|
|
<p>If you're not a mega-nerd, turn back now.</p>
|
|
<p>I warned you.</p>
|
|
<p>Keyboard Vagabond is run on a 3 node Kubernetes cluster running on 3x Arm VPSs hosted by NetCup in Amsterdam. I chose Amsterdam because I thought that Europe would be more centrally located for people who are traveling the world.</p>
|
|
<h4>The Specs</h4>
|
|
<p><strong>Servers</strong> - 3x 10 ARM vCPUs, 16GB Ram, 500GB (~50GB for Talos and the rest for Longhorn) storage running <a href="https://www.talos.dev">Talos</a> and Kubernetes.
|
|
<p><strong>Storage</strong> - Longhorn ensures that there are at least 2 copies across the nodes.</p>
|
|
<p><strong>Backups and Content</strong> - Backups and content are stored in S3 storage hosted by BackBlaze with CloudFlare providing CDN. I've already run through disaster recovery and restored database backups from S3.</p>
|
|
<p><strong>CDN</strong> - CloudFlare provides CDN and special rules have been set up to be sure that as much as possible is cached.</p>
|
|
<p><strong>Security</strong> - ports are closed off to the world and secured with CloudFlare tunnels and TailScale as the only means of access outside of website access.</p>
|
|
<p><strong>Observability and Logging</strong> - OpenObserve dashboards and log aggregation.</p>
|
|
<p><strong>Domain</strong> - domain is provided by CloudFlare</p>
|
|
<p><strong>Services</strong> - Typical arrangement for services is that web services get 2 instances and workers get 1 instance with autoscaling. Web pods scale horizontally and workers scale vertically, then horizontally.</p>
|
|
<p><strong>Source Code</strong> - If I get the source code to where I'm comfortable sharing, I'll post a link here. And if you're experienced in k8s, I'd always appreciate a review. :)</p>
|
|
<p><strong>Costs</strong><br />
|
|
VPS servers - 3x ~$13 / mth = $40/mth<br />
|
|
Domain name - $12/year<br />
|
|
Backblaze - $6/TB/mth = ~$2/mth<br />
|
|
Total: ~$45/mth</p>
|
|
</main>
|
|
|
|
<footer class="container">
|
|
<p>Contact: <a href="mailto:admin@keyboardvagabond.com">admin@keyboardvagabond.com</a>, any of the @sysadmin accounts on the instances</p>
|
|
<p></p>
|
|
<p>Copyright 2025 Keyboard Vagabond</p>
|
|
</footer>
|
|
|
|
<script src="scripts/bundle.js"></script>
|
|
</body>
|
|
</html> |