🌱🏠 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 a1fcde92fb oops i broke tcp 8 months ago
frontend adding more known issues 8 months ago
greenhouse-daemon ingress service / integrate greenhouse daemon, multiple api tokens 1 year ago
pki splitting out pki into separate module 10 months ago
readme oops i broke tcp 8 months ago
schema_versions implementing external domain support for alpha version 9 months ago
threshold fix broken threshold version 🤮 8 months ago
.dockerignore docker deployment and telemetry 8 months ago
.gitignore docker deployment and telemetry 8 months ago
Dockerfile got alpha home page working 8 months ago
LICENSE.md GPL 1 year ago
README.md oops forgot linux arch diagram 8 months ago
backblaze_b2_service.go update to golang 16 and got digitalocean instance spawner working 1 year ago
backend.go peparing for alpha release and changes based on initial usability test 8 months ago
build-docker.sh adding more known issues 8 months ago
db_model.go implementing external domain support for alpha version 9 months ago
digitalocean_service.go got buttons working on admin panel and rebalance is no longer throwing 1 year ago
easypki_db_adapter.go debugging desktop app registration stuff 1 year ago
email_service.go update to golang 16 and got digitalocean instance spawner working 1 year ago
example_config.json adding telemetry to the user profile page 8 months ago
frontend.go adding mac and windows install pages, ready for pre-alpha testing 8 months ago
frontend_admin_panel.go docker deployment and telemetry 8 months ago
frontend_howto.go adding mac and windows install pages, ready for pre-alpha testing 8 months ago
frontend_login.go bump to release candidate 2 8 months ago
frontend_profile.go more telemetry for sub services 1st draft 8 months ago
gandi_service.go docker deployment and telemetry 8 months ago
go.mod got alpha home page working 8 months ago
go.sum got alpha home page working 8 months ago
ingress_service.go docker deployment and telemetry 8 months ago
main.go more telemetry for sub services 1st draft 8 months ago
public_api.go docker deployment and telemetry 8 months ago
scheduled_tasks.go more telemetry for sub services 1st draft 8 months ago
ssh_service.go debugging desktop app registration stuff 1 year ago
telemetry.go more telemetry for sub services 1st draft 8 months ago
threshold_provisioning_service.go fix broken threshold version 🤮 8 months ago

README.md

greenhouse

greenhouse logo

Greenhouse is a new cloud service designed to break down barriers to entry & make real ownership and production of The Internet accessible to more people.

greenhouse.server.garden

It enables you to self-host internet services / websites on your own computer easily, while retaining exlusive ownership of your processes, data, and your user's data as well.

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

For more information about the motivation behind 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)