🌱🏠 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 cbbdc0e93a splitting out pki into separate module 3 weeks ago
frontend bogus commit 1 month ago
greenhouse-daemon ingress service / integrate greenhouse daemon, multiple api tokens 4 months ago
pki splitting out pki into separate module 3 weeks ago
readme updating the architechture diagram 1 month ago
schema_versions ingress service / integrate greenhouse daemon, multiple api tokens 4 months ago
threshold got ports 80 and 443 working for admin tenant tunnel 5 months ago
.gitignore ingress service / integrate greenhouse daemon, multiple api tokens 4 months ago
LICENSE.md GPL 7 months ago
README.md emojis to readme 1 month ago
backblaze_b2_service.go update to golang 16 and got digitalocean instance spawner working 6 months ago
backend.go ingress service / integrate greenhouse daemon, multiple api tokens 4 months ago
db_model.go changes to facilitate easier testing of greenhouse 1 month ago
digitalocean_service.go got buttons working on admin panel and rebalance is no longer throwing 6 months ago
docker-compose.yml greenhouse's first time hosting itself! 5 months ago
easypki_db_adapter.go debugging desktop app registration stuff 5 months ago
email_service.go update to golang 16 and got digitalocean instance spawner working 6 months ago
frontend.go clean up frontend.go, split out into categories 1 month ago
frontend_admin_panel.go clean up frontend.go, split out into categories 1 month ago
frontend_login.go clean up frontend.go, split out into categories 1 month ago
frontend_profile.go clean up frontend.go, split out into categories 1 month ago
gandi_service.go add wildcard dns on free subdomain 4 months ago
go.mod splitting out pki into separate module 3 weeks ago
go.sum splitting out pki into separate module 3 weeks ago
ingress_service.go changes to facilitate easier testing of greenhouse 1 month ago
main.go changes to facilitate easier testing of greenhouse 1 month ago
public_api.go cleaning up authorizedDomains & serving out tenantInfo for desktop app 4 months ago
ssh_service.go debugging desktop app registration stuff 5 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 convieved 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!

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)