Code Monkey home page Code Monkey logo

mesh-services's Introduction

Mesh Services

We use Terraform to provision self-hosted applications that are accessible over our meshnet and the Internet. At the moment, we provision services to Digital Ocean VMs and our meshnet is virtualized on cjdns.

Our community relies on these services to organize day-to-day activities and develop our meshnet. By keeping configuration as code and automating provisioning of these shared infrastructures, we hope to distribute infrastructure management knowledge among Toronto Mesh, and share this with other groups organizing their local meshnet efforts.

Toronto Mesh Services

At the moment, the following services are deployed from this repositiory:

Service Mesh link Internet link
Matrix https://h.matrix.tomesh.net https://matrix.tomesh.net
Riot https://h.chat.tomesh.net https://chat.tomesh.net

Hopes & Dreams

NOW

+------------------+
| Digital Ocean VM |
|                  +--> Meshnet over cjdns IPv6 tunneled over Internet
| +--------------+ |
| | Self-hosted  | |
| | Applications | +--> Internet over public IPv4 and IPv6
| +--------------+ |
+------------------+

SHORT-TERM

+------------------+
| Home Server VM   |
|                  +--> Meshnet over cjdns IPv6 tunneled over Internet
| +--------------+ |
| | Federated    | |
| | Applications | +--> Internet over public IPv4 and IPv6 (hopefully)
| +--------------+ |
+------------------+

LONG-TERM

+------------------+
| Low-cost Devices |
|                  +--> Meshnet over cjdns IPv6 over community links
| +--------------+ |
| | Peer-to-peer | |
| | Applications | +--> Internet over public IPv4 and IPv6 (maybe)
| +--------------+ |
+------------------+

Questions

. . . but isn't Digital Ocean just another centralized cloud provider?

A centralized cloud provider solves two problems for us: reachability and reliability, which our meshnet is not yet able to produce. Once our meshnet can route network traffic without public IP addresses and service availability derives from protocol-level guarantees rather than expectations of always-on physical hardware, we can start provisioning on local targets and the transition will be smooth if we are already familiar with a virtualized version of a meshnet.

. . . but isn't the future peer-to-peer?

The applications we provision are self-hosted, but most expect having multiple users share a single instance. Some examples are Matrix and Loomio. Server outage usually means the users of that instance are unable to use the service, whereas truly peer-to-peer applications usually are designed expecting ubiquitous node outages. As we adopt more production-ready peer-to-peer applications, we can imagine targeting deployment to local devices like Raspberry Pis with less demand on reliability.

. . . but why Terraform instead of X?

The group in Toronto became familiar with Terraform and the primary use of this repository is for us to redeploy our own shared infrastructure. If you already have a favourite provisioner it should be relatively trivial to port since much of the complexity is in each bootstrap.sh.

mesh-services's People

Contributors

asotnetworks avatar benhylau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mesh-services's Issues

Debian repository

We are increasingly using .deb as package format, some of them are custom built for our armhf boards. Now they are published to GitHub Releases and installed via wget then dpkg -i, but it'd be nice to have features like dependency resolution via apt-get and have a central URL to get signed software.

I have not hosted a public debian repo, but here are some resources on a quick search:

In the future we can:

  • Mirror repositories and make accessible over the meshnet (cjdns, yggdrasil, etc.)
  • Make available over p2p fs such as ipfs

Internet gateway node

Configure an Internet exit gateway:

  • run cjdns
  • assign IPs to clients with something like elvisp
  • maybe in-mesh web UI for clients to register

Synapse DB Maintanace

DB is big

image

 select schemaname as table_schema,
       relname as table_name,
       pg_size_pretty(pg_relation_size(relid)) as data_size
from pg_catalog.pg_statio_user_tables
order by pg_relation_size(relid) desc;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.