🌱🏠 a cloud service to enable your own server (owned by you and running on your computer) to be accessible on the internet in seconds, no credit card required https://greenhouse.server.garden/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
forest 378419c767 fix link 1 day ago
frontend remove unused file 1 day ago
greenhouse-daemon ingress service / integrate greenhouse daemon, multiple api tokens 5 months ago
pki splitting out pki into separate module 1 month ago
readme cpu support display, more mascots, client sw -> self-hosting sw, readme 1 day ago
schema_versions implementing external domain support for alpha version 3 weeks ago
threshold got ports 80 and 443 working for admin tenant tunnel 6 months ago
.gitignore webp images and using-your-own-domain-name-with-greenhouse page 2 weeks ago
LICENSE.md GPL 8 months ago
README.md fix link 1 day ago
backblaze_b2_service.go update to golang 16 and got digitalocean instance spawner working 7 months ago
backend.go rebalance -> reallocate and implement lite version for user changes 3 weeks ago
db_model.go implementing external domain support for alpha version 3 weeks ago
digitalocean_service.go got buttons working on admin panel and rebalance is no longer throwing 7 months ago
docker-compose.yml greenhouse's first time hosting itself! 6 months ago
easypki_db_adapter.go debugging desktop app registration stuff 6 months ago
email_service.go update to golang 16 and got digitalocean instance spawner working 7 months ago
frontend.go small fixes and working on install ui 2 weeks ago
frontend_admin_panel.go rebalance -> reallocate and implement lite version for user changes 3 weeks ago
frontend_howto.go more mascot and remove mac shell script installer 3 days ago
frontend_login.go clean up frontend.go, split out into categories 1 month ago
frontend_profile.go small fixes and working on install ui 2 weeks ago
gandi_service.go add wildcard dns on free subdomain 5 months ago
go.mod small fixes and working on install ui 2 weeks ago
go.sum small fixes and working on install ui 2 weeks ago
ingress_service.go implementing external domain support for alpha version 3 weeks ago
main.go implementing external domain support for alpha version 3 weeks ago
public_api.go implementing external domain support for alpha version 3 weeks ago
scheduled_tasks.go rebalance -> reallocate and implement lite version for user changes 3 weeks ago
ssh_service.go debugging desktop app registration stuff 6 months ago
threshold_provisioning_service.go changes to facilitate easier testing of greenhouse 1 month 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 originally concieved as a companion cloud service for my Automated Server Garden project,
but I ended up deciding to give up on Automated Server Garden for now and just focus on greenhouse instead.

In the future, Greenhouse will be easy to use with existing self-hosting solutions like yunohost, syncloud, and others.

For more information about greenhouse, see my blog post about it: The "Pragmatic Path" 4-Year Update: Introducing Greenhouse!

This repository only houses the web application for the cloud service. There are many other processes involved in making greenhouse work, and making it easy for anyone to use.

screenshot

a screenshot of the alpha version of the greenhouse admin panel with "choose your greenhouseusers.com subdomain" feature, a bandwidth usage graph, and cross platform self-hosting software installation options

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

This diagram was created with https://app.diagrams.net/. To edit it, download the diagram file and edit it with the https://app.diagrams.net/ web application, or you may run the application from source if you wish.

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)