Show HN: Cloud Seeder - Self Host with a Click on Your Home PC – Golang

https://github.com/ipv6rslimited/cloudseeder

Cloud Seeder by IPv6rs

Easy One-click server appliances opening up self hosting to everyone.

Cloud Seeder by IPv6rs is a one-click server appliance wizard. It takes a highly opinionated approach to using container technology by deploying fat containers as isolated server appliances.

Of course it's open source.

Cloud Seeder Preview

Preface

After conducting a survey, we discovered a much larger number of people wish to self-host than the current self-hosting base today.

Through a series of person-to-person interviews, we established two cohorts - the "too hard to setup" and "don't have IP addresses" groups.

IPv6rs is the answer to the latter, but the former left us curious.

Self-Hostathon

We proceeded to conduct a self-hostathon of sorts. Our participants ranged in expertise - with some having worked as computer repair specialists and others with web development experience. There were also musicians and many other professional backgrounds not so directly related to the computer world. While all of the participants were able to setup their IPv6rs and DNS, few were able to completely setup a self-hosted server (in this case, the options were Wordpress, Ghost or Mastodon).

We reviewed the actions taken by interviewing the partipants, individually, and found peculiar, yet understandable, errors abound; from typos to situations where the VM needed to be wiped.

The State of Server and Open Source Server Type Software Projects

It was surprising to us as we figured the install process was much simpler. When we look at the open source server softwares out there, they look amazing -- well polished, complete enterprise worthy software applications used by the most popular websites in the world, and built, free and open source, by kind and beautiful contributors.

However, the multi-faceted, multi step and manual setup process proves to be a significant obstacle.

Our Solution: Cloud Seeder by IPv6rs

Since we already solve the external IP issue with our service, we decided to solve the setup issue. We'd like to introduce you to Cloud Seeder by IPv6rs which provides a simple graphical user interface to setup appliances with just a click.

Cloud Seeder by IPv6rs was built using GoLang with its GUI powered by Fyne, which helps us to enable cross platform compatibility with a single, slim and descriptively readable, codebase. Under the hood, it relies on the amazing Podman, which of course is open source.

Now, with one-click, you can have your software server appliance running from your own home computer in it's own encapsulated container.

The friction with self hosting is gone.

The decentralized era of self ownership is here.

Own your own data, and be happy. After all, trust is not security; everytime you trust an entity with your data, you increase your attack surface area by the size of that entity.

Current Supported Appliances

There will be many more appliances supported in the future. The current list is below:

Current Supported Architectures

Cloud Seeders by IPv6rs will instantly setup a server appliance for you on:

  • MacOS (x86 or ARM)
  • Windows 10, 11 (x86 only)
  • Linux (GUI) (x86 or ARM)

Podman must be installed first.

How to Install

It's best to download the binaries from our Releases page. These follow the typical install scheme for each OS (installer for windows, dmg for MacOS and a folder for Linux)

If you'd like to compile yourself, you'll need Golang 1.21.0+ and then follow these instructions:

cd cloudseeder
cd src && go mod tidy
make

The unsigned binaries should be in a folder called cloudseeder/dist upon completion.

All of this has only been tested on MacOS but the build should work fine in Linux.

Core Details

  • simple, completely non-interactive installs

  • unattended security updates enabled by default for security

  • using battle hardened and stable ubuntu 22.04 LTS for security and compatibility

  • automated updates provided via tray menu

  • sshd disabled by default for security

  • syslog disabled by default for storage

  • CAP_NET_ADMIN, /dev/net/tun ro access to cgroups are the only permissions required [1][2]

[1] SELinux is disabled.

[2] With the exception, as of writing, of bluesky which requires privileged access. Only run if you trust bluesky!

Frequently Asked Questions (FAQ)

Why Open Source?

All of the appliances we support are open source, so of course we're open source too. Further, you need to know what you are installing and what that installed software is doing for that matter -- our transparency in this process is our way of showing you our commitment to you.

Why did you use Go and not Electron?

We chose GoLang as the programming language to benefit from its cross-platform ability as well as small binary form factor versus, for example, nodeJS.

Additionally, we built a Configurator which automatically generates a user-interface from a JSON file to run a script. We felt this would be useful to other developers, so this has been separated as its own module which you can build and distribute with your own application subject to the open source license. This will improve over time.

We also built Tray which generates a task tray from a JSON file. You can feel free to use it in your projects.

Why a fat container? Why not VM?

We initially built Cloud Seeder by IPv6rs as a VM launcher -- powered by Multipass. We made the pivot after researching extensive CVEs and other container escapes and cross referenced against those relating to QEMU and virtualization/hypervisors, generally. It is not 2016 anymore. Containers have come a long way.

The biggest benefit is not needing to reserve RAM and CPU for each individual appliance allowing you to deploy several appliances versus a few.

We run the containers with NET_ADMIN and read-only access to cgroups. The assumption is that you're not running untrusted appliances, but if you are, they still need to escape the container in a meaningful way.

The exception is the appliances that run privileged for Cinch (Container IN Container Hierarchy).

How do I get the syslog?

Type journalctl or to get the end of the file, journalctl -e or tail with journactl -f

Can I install other stuff on my appliance?

You can, but we don't recommend it. When we release updates/upgrades these changes may conflict. Instead, launch another container or recommend an appliance to us if we don't have a package for it already!

When will more appliances come?

We are always working on more and they should arrive soon! :-)

How do we donate? This is great for decentralization and the self-hosting movement.

Please donate to the respective projects! These are awesome platforms built by great people who deserve these funds.

And when you're looking for an external IP, definitely give IPv6rs (us) a look.

Contributing

We are always looking for help! All contributions are subject to the Contributor Licensing Agreement found in our CONTRIBUTIONS.md document.

License

Copyright (c) 2024 IPv6rs Limited https://ipv6.rs

All Rights Reserved.

COOLER License.

{
"by": "chadsix",
"descendants": 1,
"id": 40217891,
"kids": [
40217910
],
"score": 7,
"time": 1714521120,
"title": "Show HN: Cloud Seeder - Self Host with a Click on Your Home PC – Golang",
"type": "story",
"url": "https://github.com/ipv6rslimited/cloudseeder"
}
{
"author": "ipv6rslimited",
"date": null,
"description": "One-click install internet appliances that operate on your terms. Transform your home computer into a sovereign and secure cloud. - ipv6rslimited/cloudseeder",
"image": "https://opengraph.githubassets.com/6591fe407e61c4fdbc821907803eff81e2d70cef0bf6172b44bcfd46c0acbbaa/ipv6rslimited/cloudseeder",
"logo": "https://logo.clearbit.com/github.com",
"publisher": "GitHub",
"title": "GitHub - ipv6rslimited/cloudseeder: One-click install internet appliances that operate on your terms. Transform your home computer into a sovereign and secure cloud.",
"url": "https://github.com/ipv6rslimited/cloudseeder"
}
{
"url": "https://github.com/ipv6rslimited/cloudseeder",
"title": "GitHub - ipv6rslimited/cloudseeder: One-click install internet appliances that operate on your terms. Transform your home computer into a sovereign and secure cloud.",
"description": "Cloud Seeder by IPv6rs Easy One-click server appliances opening up self hosting to everyone. Cloud Seeder by IPv6rs is a one-click server appliance wizard. It takes a highly opinionated approach to using...",
"links": [
"https://github.com/ipv6rslimited/cloudseeder"
],
"image": "https://opengraph.githubassets.com/6591fe407e61c4fdbc821907803eff81e2d70cef0bf6172b44bcfd46c0acbbaa/ipv6rslimited/cloudseeder",
"content": "<div><article><p></p><h2>Cloud Seeder by IPv6rs</h2><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#cloud-seeder-by-ipv6rs\"></a><p></p>\n<p></p><h3>Easy One-click server appliances opening up self hosting to everyone.</h3><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#easy-one-click-server-appliances-opening-up-self-hosting-to-everyone\"></a><p></p>\n<p><a target=\"_blank\" href=\"https://ipv6.rs/cloudseeder/\">Cloud Seeder</a> by IPv6rs is a one-click server appliance wizard. It takes a highly opinionated approach to using container technology by deploying fat containers as isolated server appliances.</p>\n<p><strong>Of course it's open source.</strong></p>\n<p><a target=\"_blank\" href=\"https://raw.githubusercontent.com/ipv6rslimited/cloudseeder/main/preview.png\"><img src=\"https://raw.githubusercontent.com/ipv6rslimited/cloudseeder/main/preview.png\" alt=\"Cloud Seeder Preview\" /></a></p>\n<p></p><h4>Preface</h4><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#preface\"></a><p></p>\n<p>After conducting a survey, we discovered a much larger number of people wish to self-host than the current self-hosting base today.</p>\n<p>Through a series of person-to-person interviews, we established two cohorts - the \"too hard to setup\" and \"don't have IP addresses\" groups.</p>\n<p><a target=\"_blank\" href=\"https://ipv6.rs/\">IPv6rs</a> is the answer to the latter, but the former left us curious.</p>\n<p></p><h4>Self-Hostathon</h4><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#self-hostathon\"></a><p></p>\n<p>We proceeded to conduct a self-hostathon of sorts. Our participants ranged in expertise - with some having worked as computer repair specialists and others with web development experience.\nThere were also musicians and many other professional backgrounds not so directly related to the computer world. While all of the participants were able to setup their IPv6rs and DNS, few\nwere able to completely setup a self-hosted server (in this case, the options were Wordpress, Ghost or Mastodon).</p>\n<p>We reviewed the actions taken by interviewing the partipants, individually, and found peculiar, yet understandable, errors abound; from typos to situations where the VM needed to be wiped.</p>\n<p></p><h4>The State of Server and Open Source Server Type Software Projects</h4><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#the-state-of-server-and-open-source-server-type-software-projects\"></a><p></p>\n<p>It was surprising to us as we figured the install process was much simpler. When we look at the open source server softwares out there, they look amazing -- well polished, complete enterprise\nworthy software applications used by the most popular websites in the world, and built, free and open source, by kind and beautiful contributors.</p>\n<p>However, the multi-faceted, multi step and manual setup process proves to be a significant obstacle.</p>\n<p></p><h2>Our Solution: Cloud Seeder by IPv6rs</h2><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#our-solution-cloud-seeder-by-ipv6rs\"></a><p></p>\n<p>Since we already solve the external IP issue with our <a target=\"_blank\" href=\"https://ipv6.rs/\">service</a>, we decided to solve the setup issue. We'd like to introduce you to Cloud Seeder by IPv6rs which provides a simple graphical user interface to setup\nappliances with just a click.</p>\n<p>Cloud Seeder by IPv6rs was built using GoLang with its GUI powered by Fyne, which helps us to enable cross platform compatibility with a single, slim and descriptively readable, codebase.\nUnder the hood, it relies on the amazing <a target=\"_blank\" href=\"https://podman.io/\">Podman</a>, which of course is open source.</p>\n<p>Now, with one-click, you can have your software server appliance running from your own home computer in it's own encapsulated container.</p>\n<p>The friction with self hosting is gone.</p>\n<p>The decentralized era of self ownership is here.</p>\n<p>Own your own data, and be happy. After all, <strong>trust is not security</strong>; everytime you trust an entity with your data, you increase your attack surface area by the size of that entity.</p>\n<p></p><h4>Current Supported Appliances</h4><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#current-supported-appliances\"></a><p></p>\n<p>There will be many more appliances supported in the future. The current list is below:</p>\n<ul>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/mastodon/mastodon\">Mastodon</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/open-webui/open-webui\">OpenWeb-UI</a> powered by <a target=\"_blank\" href=\"https://ollama.com/\">Ollama</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/nextcloud\">Nextcloud</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/coder/code-server\">code-server</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/WordPress/wordpress-develop\">Wordpress</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/TryGhost/Ghost\">Ghost</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://docs.paperless-ngx.com/\">Paperless-NGX</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/shrimp\">shrimp</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://misskey-hub.net/\">Misskey</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://join-lemmy.org/\">Lemmy</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://pixelfed.org/\">Pixelfed</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://rocket.chat/\">RocketChat</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/dani-garcia/vaultwarden\">Vaultwarden</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://github.com/bluesky-social/pds\">Bluesky</a></p>\n</li>\n<li>\n<p>Mail Server by <a target=\"_blank\" href=\"https://postfix.org/\">PostFix</a> and <a target=\"_blank\" href=\"https://dovecot.org/\">Dovecot</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://stalw.art/\">Stalwart</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://jellyfin.org/\">Jellyfin</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://joinpeertube.org/\">PeerTube</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://immich.app/\">Immich</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://planka.app/\">Planka</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://thelounge.chat/\">TheLounge</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://xmpp.org/\">XMPP</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://yacy.net/\">YaCy</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://gitea.com/\">Gitea</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://gitlab.com/gitlab-org/gitlab\">Gitlab</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://www.minecraft.net/en-us\">Minecraft</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://funkwhale.audio/\">Funkwhale</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://www.navidrome.org/\">Navidrome</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://issues.apache.org/\">LAMP Server</a></p>\n</li>\n<li>\n<p>Base <a target=\"_blank\" href=\"https://ubuntu.com/\">Ubuntu 22.04</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://wiki.servarr.com/\">*Arr</a> and <a target=\"_blank\" href=\"https://qbittorrent.org/\">QBittorrent</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://miniflux.app/\">Miniflux</a></p>\n</li>\n<li>\n<p><a target=\"_blank\" href=\"https://sr.ht/~gheartsfield/nostr-rs-relay/\">Nostr</a></p>\n</li>\n</ul>\n<p></p><h4>Current Supported Architectures</h4><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#current-supported-architectures\"></a><p></p>\n<p>Cloud Seeders by IPv6rs will instantly setup a server appliance for you on:</p>\n<ul>\n<li>MacOS (x86 or ARM)</li>\n<li>Windows 10, 11 (x86 only)</li>\n<li>Linux (GUI) (x86 or ARM)</li>\n</ul>\n<p>Podman must be installed first.</p>\n<p></p><h3>How to Install</h3><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#how-to-install\"></a><p></p>\n<p>It's best to download the binaries from our Releases page. These follow the typical install scheme for each OS (installer for windows, dmg for MacOS and a folder for Linux)</p>\n<p>If you'd like to compile yourself, you'll need Golang 1.21.0+ and then follow these instructions:</p>\n<div><pre><code>cd cloudseeder\ncd src &amp;&amp; go mod tidy\nmake\n</code></pre></div>\n<p>The unsigned binaries should be in a folder called cloudseeder/dist upon completion.</p>\n<p>All of this has only been tested on MacOS but the build should work fine in Linux.</p>\n<p></p><h3>Core Details</h3><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#core-details\"></a><p></p>\n<ul>\n<li>\n<p>simple, completely non-interactive installs</p>\n</li>\n<li>\n<p>unattended security updates enabled by default for security</p>\n</li>\n<li>\n<p>using battle hardened and stable ubuntu 22.04 LTS for security and compatibility</p>\n</li>\n<li>\n<p>automated updates provided via tray menu</p>\n</li>\n<li>\n<p>sshd disabled by default for security</p>\n</li>\n<li>\n<p>syslog disabled by default for storage</p>\n</li>\n<li>\n<p><code>CAP_NET_ADMIN</code>, <code>/dev/net/tun</code> <code>ro</code> access to <code>cgroups</code> are the only permissions required [1][2]</p>\n</li>\n</ul>\n<p>[1] SELinux is disabled.</p>\n<p>[2] With the exception, as of writing, of bluesky which requires <code>privileged</code> access. Only run if you trust bluesky!</p>\n<p></p><h3>Frequently Asked Questions (FAQ)</h3><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#frequently-asked-questions-faq\"></a><p></p>\n<p></p><h5>Why Open Source?</h5><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#why-open-source\"></a><p></p>\n<p>All of the appliances we support are open source, so of course we're open source too. Further, you need to know what you are installing and what that installed\nsoftware is doing for that matter -- our transparency in this process is our way of showing you our commitment to <strong>you</strong>.</p>\n<p></p><h5>Why did you use Go and not Electron?</h5><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#why-did-you-use-go-and-not-electron\"></a><p></p>\n<p>We chose GoLang as the programming language to benefit from its cross-platform ability as well as small binary form factor versus, for example, nodeJS.</p>\n<p>Additionally, we built a <a target=\"_blank\" href=\"https://github.com/ipv6rslimited/configurator\">Configurator</a> which automatically generates a user-interface from a JSON file to run a script. We felt this would\nbe useful to other developers, so this has been separated as its own module which you can build and distribute with your own application subject to the open source license. This will\nimprove over time.</p>\n<p>We also built <a target=\"_blank\" href=\"https://github.com/ipv6rslimited/tray\">Tray</a> which generates a task tray from a JSON file. You can feel free to use it in your projects.</p>\n<p></p><h5>Why a fat container? Why not VM?</h5><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#why-a-fat-container-why-not-vm\"></a><p></p>\n<p>We initially built Cloud Seeder by IPv6rs as a VM launcher -- powered by Multipass. We made the pivot after researching extensive CVEs and other container escapes and cross\nreferenced against those relating to QEMU and virtualization/hypervisors, generally. It is not 2016 anymore. Containers have come a long way.</p>\n<p>The biggest benefit is not needing to reserve RAM and CPU for each individual appliance allowing you to deploy several appliances versus a few.</p>\n<p>We run the containers with NET_ADMIN and read-only access to cgroups. The assumption is that you're not running untrusted appliances, but if you are, they still need to escape the container in a meaningful way.</p>\n<p>The exception is the appliances that run privileged for Cinch (Container IN Container Hierarchy).</p>\n<p></p><h5>How do I get the syslog?</h5><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#how-do-i-get-the-syslog\"></a><p></p>\n<p>Type <code>journalctl</code> or to get the end of the file, <code>journalctl -e</code> or tail with <code>journactl -f</code></p>\n<p></p><h5>Can I install other stuff on my appliance?</h5><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#can-i-install-other-stuff-on-my-appliance\"></a><p></p>\n<p>You can, but we don't recommend it. When we release updates/upgrades these changes may conflict. Instead, launch another container or recommend an appliance to us if we don't have a package for it already!</p>\n<p></p><h5>When will more appliances come?</h5><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#when-will-more-appliances-come\"></a><p></p>\n<p>We are always working on more and they should arrive soon! :-)</p>\n<p></p><h5>How do we donate? This is great for decentralization and the self-hosting movement.</h5><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#how-do-we-donate-this-is-great-for-decentralization-and-the-self-hosting-movement\"></a><p></p>\n<p>Please donate to the respective projects! These are awesome platforms built by great people who deserve these funds.</p>\n<p>And when you're looking for an external IP, definitely give <a target=\"_blank\" href=\"https://ipv6.rs/\">IPv6rs</a> (us) a look.</p>\n<p></p><h3>Contributing</h3><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#contributing\"></a><p></p>\n<p>We are always looking for help! All contributions are subject to the Contributor Licensing Agreement found in our CONTRIBUTIONS.md document.</p>\n<p></p><h3>License</h3><a target=\"_blank\" href=\"https://github.com/ipv6rslimited/cloudseeder#license\"></a><p></p>\n<p>Copyright (c) 2024 <a target=\"_blank\" href=\"https://ipv6.rs/\">IPv6rs Limited </a><a target=\"_blank\" href=\"https://ipv6.rs/\">https://ipv6.rs</a></p>\n<p>All Rights Reserved.</p>\n<p>COOLER License.</p>\n</article></div>",
"author": "",
"favicon": "https://github.githubassets.com/favicons/favicon.svg",
"source": "github.com",
"published": "",
"ttr": 236,
"type": "object"
}