companion cloud service for automated server garden

forest f94fba1a5a starting to work on usage metrics collection 2 weeks ago
frontend 8620538413 update readme 2 weeks ago
schema_versions 8e4a8db369 finished splitting out services and implemented PKI/CAs 2 weeks ago
.gitignore 98dc5099a0 add images (gitignore for now) 1 month ago
LICENSE.md 799696366e GPL 2 weeks ago
README.md 8620538413 update readme 2 weeks ago
backblaze_b2_service.go f94fba1a5a starting to work on usage metrics collection 2 weeks ago
backend.go f94fba1a5a starting to work on usage metrics collection 2 weeks ago
db_model.go f94fba1a5a starting to work on usage metrics collection 2 weeks ago
digitalocean_service.go f94fba1a5a starting to work on usage metrics collection 2 weeks ago
email_service.go 8f276ea60f untested prototype 2 months ago
frontend.go 15df45420b working on implementing backend for multi-tenant threshold services 1 month ago
greenhouse-arch.drawio 9fd121782a update diagram 2 weeks ago
greenhouse-arch.png 9fd121782a update diagram 2 weeks ago
greenhouse.png 4cd4ba91d9 add logo 2 months ago
main.go f94fba1a5a starting to work on usage metrics collection 2 weeks ago
pki_service.go f94fba1a5a starting to work on usage metrics collection 2 weeks ago
ssh_service.go df6e4a0411 WIP migrating things to thier own services 2 weeks ago
threshold_provisioning_service.go f94fba1a5a starting to work on usage metrics collection 2 weeks ago

README.md

greenhouse

greenhouse logo

Greenhouse is a specialized cloud service designed to make self-hosting your own email, web services, etc, as easy as possible without compromising on privacy and security.

It was designed for use with Automated Server Garden, but it can also be used with yunohost, syncloud, and others.

This was the motivation / initial spark of idea that eventually led to the creation of Greenhouse: https://sequentialread.com/pragmatic-path-towards-non-technical-users-owning-their-own-data/

screenshot

See: https://picopublish.sequentialread.com/files/mockup2.png

setup local environment

Write the config file config.json in the root directory:

{
  "FrontendPort": 8080,
  "FrontendDomain": "localhost",
  "DatabaseConnectionString": "host=/var/run/postgresql port=5432 user=postgres password=dev database=postgres",
  "DatabaseType": "postgres",
  "DatabaseSchema": "public",
  "SMTP": {
    "Host": "<my email server>",
    "Port": <587 (SMTP+STARTTLS) or 465 (SMTPS)>,
    "Username": "<my email address>",
    "Password": "<my email password>",
    "Encryption": "<SMTPS or STARTTLS>"
  }
}

Run the database:

mkdir -p postgres-data
docker run --rm -it -e POSTGRES_PASSWORD=dev -v /var/run/postgresql:/var/run/postgresql -v "$PWD/postgres-data":/var/lib/postgresql/data postgres

Run the app:

go run *.go

Inspect the database:

sudo apt-get install postgresql-client
PGPASSWORD=dev psql --host /var/run/postgresql --port 5432 --username postgres -d postgres -c 'select * from session_cookies'

Architechture:

architechture diagram

Features:

  • Threshold (TCP reverse tunnel) as a service (multi-tenant or dedicated IP address)
  • Object Storage
  • free subdomains (like duckdns / freedns.afraid.org)
  • managed domain names (like njalla)