greenhouse

installing the greenhouse client software on linux

table of contents



shell script installer

During the alpha test phase, we're only offering a shell script installer / uninstaller.

curl https://greenhouse-alpha.server.garden/install-linux.sh | sudo sh

⚠️

This installer assumes your operating system uses systemd.
If you aren't sure, you don't have to worry as long as your computer is reasonably up-to-date 😌

If you know for sure that you do NOT use systemd, proceeed to the "installing manually" section below.

If you wish to use greenhouse with docker, see the "using greenhouse with docker" section below.

The install-linux.sh script does four things:

  1. Creates a greenhouse-daemon linux user & group to isolate the greenhouse-daemon for security reasons
  2. Creates the directory /opt/greenhouse and installs the greenhouse-daemon background service there
  3. Registers greenhouse-daemon with your operating system, configured to run as a background service on boot
  4. Adds the greenhouse command to your system; it installs the greenhouse-cli binary file into your /usr/local/bin folder

If you don't want to run the curl ... | sudo sh command, you can simply check out install-linux.sh from the source code repository & review it yourself before running it.



installing the desktop application

greenhouse-desktop is a self-contained graphical user interface (GUI) application for configuring your greenhouse tunnels quickly and easily.

You'll need the greenhouse-daemon to be installed first (via the shell script installer) before the desktop application will function.

greenhouse-desktop is distributed on linux as a TODO: figure out how to do the fbs build

--> Click Here to Download greenhouse-desktop <--

In order to run it, TODO



uninstalling the greenhouse client software

We've created an uninstaller script that undoes everything the installer script did.

curl https://greenhouse-alpha.server.garden/uninstall-linux.sh | sudo sh

  1. Removes the greenhouse command from your system
  2. Removes the greenhouse-daemon background service
  3. Deletes the /opt/greenhouse directory
  4. Removes the greenhouse-daemon linux user & group


using greenhouse with docker

The greenhouse-daemon currently does not have 1st-class support for running inside docker-compose or kubernetes. You can probably make it work if you want, but there are some issues:

  1. The greenhouse-daemon spawns sub-processes: threshold and caddy. This is generally considered a no-no in docker land; you are typically supposed to have one process per container
  2. It doesn't offer any way for your docker-compose file or helm chart to express the tunnel configuration, you will have to somehow configure the tunnels separately
  3. It is opinionated; it only works with a specific forked version of Caddy. If you want to use a different reverse proxy / TLS terminator, things might get awkward

For these reasons, you may not want to run greenhouse-daemon in a container anyway. Hopefully you can simply run greenhouse-daemon on the host and forward traffic to your docker containers from there.

We might build explicit docker support into the greenhouse-daemon in the future , but it's not done yet.

If you really want magic greenhouse stuff in a container, you could also try running threshold as a container instead. threshold will do just the greenhouse network tunneling and leave everything else up to you.

TODO: expiriment with setting up a standalone threshold container with a greenhouse account



installing manually

If your operating system does not use systemd, you will have to complete the installation process manually. You'll want to go through the same four steps:

  1. Create the greenhouse-daemon linux user & group
  2. Install greenhouse-daemon at /opt/greenhouse
  3. Create a service definition for greenhouse-daemon in your init system and enable it
  4. Install the greenhouse-cli somewhere in your $PATH

We recommend using the existing installer as a template. You will only have to change step 3, where it installs the service. How you do this depends on your init system.