a cloud service to enable your own web server (owned by you and running on your computer) to be accessible on the internet in seconds, no credit card required
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 b8a188ca6a undo change package name 1 month ago
frontend add method for generating an API Token 1 month ago
pki generate json threshold configs and make pkiservice reusable 1 month ago
schema_versions add method for generating an API Token 1 month ago
threshold got ports 80 and 443 working for admin tenant tunnel 1 month ago
.gitignore greenhouse's first time hosting itself! 1 month ago
LICENSE.md GPL 3 months ago
README.md update to golang 16 and got digitalocean instance spawner working 1 month ago
backblaze_b2_service.go update to golang 16 and got digitalocean instance spawner working 1 month ago
backend.go undo change package name 1 month ago
db_model.go add public API w/ getThresholdConfig 1 month ago
digitalocean_service.go got buttons working on admin panel and rebalance is no longer throwing 1 month ago
docker-compose.yml greenhouse's first time hosting itself! 1 month ago
easypki_db_adapter.go undo change package name 1 month ago
email_service.go update to golang 16 and got digitalocean instance spawner working 1 month ago
frontend.go add method for generating an API Token 1 month ago
gandi_service.go got Gandi free subdomains working 1 month ago
go.mod undo change package name 1 month ago
go.sum add method for generating an API Token 1 month ago
greenhouse-arch.drawio update diagram 3 months ago
greenhouse-arch.png update diagram 3 months ago
greenhouse.png add logo 4 months ago
main.go undo change package name 1 month ago
public_api.go generate json threshold configs and make pkiservice reusable 1 month ago
ssh_service.go update to golang 16 and got digitalocean instance spawner working 1 month ago
threshold_provisioning_service.go undo change package name 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 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

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)