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