Skip to content

home-cloud-io/core

Repository files navigation

Home Cloud Core

The easy-to-use solution that enables you to say goodbye to the high-cost, privacy nightmare of Big Tech services so that you can finally take back control over your digital life!

For more info: https://home-cloud.io/

Contents

This repository contains the core components that make up the Home Cloud platform. These include:

  • daemon: a system service that manages a Talos installation and low-level host commands (like reboots)
  • locator: a zero-trust service discovery engine to enable remote access to Home Cloud servers when not at home
  • mdns: a lightweight mDNS server which creates mDNS entries based off of Kubernetes Service annotations
  • operator: a Kubernetes operator which manages the Home Cloud installation itself as well as user installed Apps
  • server: the primary service that manages users, settings, and hosts the Home Cloud web interface
  • tunnel: a small Kubernetes operator which uses the locator to create Wireguard tunnels to mobile devices

Requirements

To work on the Home Cloud core platform you'll need a couple of things installed:

Getting Started

This repository is built on top of the Draft framework for distributed systems. You don't need to be an expert with Draft to work with the Home Cloud core platform, but you'll need at least the dctl CLI tool.

Let's install it now:

go install github.com/steady-bytes/draft/tools/dctl@latest

We'll need to import this project as a context into dctl so it can manage things for us. After cloning the repo run the below command from the root of the repo:

dctl context import

Let's do a quick test of building the Home Cloud API protobufs:

dctl api init
dctl api build

Development

local Talos cluster

You'll need a Talos cluster for development. We'll create one to run in Docker locally:

talosctl cluster create docker --workers 0

Now create the home-cloud-system namespace which will be needed later:

kubectl create namespace home-cloud-system

CRDs

First install the Home Cloud CRDs to the cluster:

cd services/platform/operator
kubectl apply -f services/platform/operator/config/crd/bases/home-cloud.io_apps.yaml
kubectl apply -f services/platform/operator/config/crd/bases/home-cloud.io_installs.yaml
kubectl apply -f services/platform/operator/config/crd/bases/home-cloud.io_wireguards.yaml

server

Before running the server, we need to first build the web client that is hosted by the server:

cd services/platform/server/web-client
npm install
npm run build

Now you can start the server (you may need to change the KUBECONFIG path):

cd ..
KUBECONFIG=~/.kube/config go run main.go

daemon

You can run the daemon with:

cd services/platform/daemon
go run main.go

operator

You can run the operator with:

cd services/platform/operator
go run main.go

web client

If you're developing the web client, you can run it in development mode:

cd services/platform/server/web-client
npm start

This will open your browser to the web client running locally on localhost:3000 and proxying all requests to the home cloud server running on localhost:8000.

About

The easy-to-use solution that enables you to say goodbye to the high-cost, privacy nightmare of Big Tech services so that you can finally take back control over your digital life.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors