working title / scratchy draft
Go to file
forest 22df434cf7 readme new --> new-protocol 2022-12-08 15:41:14 -06:00
ReadMe.md readme new --> new-protocol 2022-12-08 15:41:14 -06:00

ReadMe.md

weborbits

Weborbits is a new homebrew server platform project. Currently the project is in the idea/proof-of-concept phase.

Weborbits is all about server & web infrastructure:

  • HTTP server
  • Networking / NAT Traversal (VPN / Reverse Tunnel)
  • Domain Name Record Management
  • Containerization of applications
  • Data storage / backup / replication
  • Access control

Weborbits has a unique set of design goals which distinguish it from currently existing infrastructure-oriented projects:

  1. Weborbits eschews "selfhosting" in favor of something new, hosting communities

    • One or more server operators
    • Many publishers / webmasters
    • You don't have to operate a server to use it, you just have to know a friend who does
      • This is somewhat similar to the "Fediverse" model
  2. Weborbits is designed for backup, data portability, and "high-avaliability" (replication and failover)

    • Multiple servers
    • Multiple locations (multiple home networks)
    • Accounts and content are not tied to one specific domain name or server
      • Servers & admins can disappear without users losing everything or going through a migration process
    • Imperfect but reliable replication and failover is built in 🤯
      • Works for any application, no modification or customization required
      • Every few minutes, requests will hang for a few seconds while the application's data is being snapshotted
        • (The application must turn off and on again)
      • Data integrity is the top priority: The app is always guaranteed to start up and run w/ no data corruption
        • A couple minutes of writes can be lost if a failover occurs while a user is writing data
    • Weborbits will also support a framework for better, more application-specific replication and failover
  3. Weborbits offers ease of use / accessibility to everyone involved: server operators, publishers, and end-users

    • Weborbits is not Proxmox or Kubernetes. It is designed to be as simple as possible to install, use, and maintain
    • Weborbits is not a new-protocol "web3" or P2P network project. It supports HTTP-based websites and apps first and foremost

Through these three design goals, weborbits aims to enable "community clouds" that can be hosted either on physical servers such as single board computers (SBCs) in friends and family's living rooms and basements, or on virtual private servers (VPSes) on a public cloud, or both.

How it works

Weborbits will offer a user interface similar to public cloud platforms such as Digital Ocean, Amazon Web Services, and Google Cloud. Like the "big names", Weborbits will offer a few different kinds of services. For example, AWS has EC2 (compute), S3 (object storage), and ELB (load balancer) just to name a few.

In fact, this is where the "Weborbits" name comes from: Each different type of service is an "orbit", and each "orbit" is composed of a set of server nodes that participate in that orbit. Technically each orbit is a "cluster" in computing terms.

Your server doesn't have to participate in all different types of orbits, it can participate in just one. It can also participate in multiple orbits of the same type.

Orbit Types:

  • Rendezvous / Discovery
  • DNS Record Management
  • Networking / Network Gateway
  • Object Storage / Static Site Hosting
  • Compute & Data Snapshot Replication (Linux containers or VMs)
  • Relational Database
  • Consensus
    • (for leader elections and stuff like that, like Raft protocol / Consul / ZooKeeper)
  • SMTP Server (yes, email is so "special" it gets its own orbit 😵💫)
  • Direct Hardware Access (SSH)

The different functions are separated in to different orbits like this to enable the Principle of least privilege. This is a sort of compromise meant to maximize individuals' agency and self-determination while also supporting the parts of web infrastructure which require explicit trust.

Questions

Why not just use YunoHost / Syncloud / NextCloud / Freedombox?

They are only designed for selfhosting (no such thing as multiple "publisher" accounts) and they don't support replication and failover.

What about Co-op Cloud? Aren't you duplicating thier efforts?

Maybe I am. I do worry about that. However I think that their project has slightly different goals: They are less homebrew-focused and more professional-focused. More datacenter-focused and less SBC-friendly. They also do not intend to support replication and failover by design.

What if I don't have any tech-savvy friends? What if I just want to self-host?

Sure, you can do that. Weborbits might still benefit you in that case if you want to manage multiple servers for replication and failover.

Why not just use Kubernetes?

See federation-vs-clustering-self-hosting#kubernetes

Why not just use IPFS / TOR / cjdns / Yggdrasil?

See federation-vs-clustering-self-hosting#honorablementionp2pnetworks