Goals
The trile cli is a scala native project and gets distributed as a 0 dependencies binary.
On installation commands it will generate a set of different files:
docker-compose.yaml
nginx.conf
.fedvars
- ...
Picking scala native & files generation as an installation process has technical drawbacks, but enables meeting usability goals: standalone cli, minimal pre-requirements, fast & simple installation and enable federations & members to customize their setup.
Standalone cli & minimal pre-requirements
- 1 binary to tool around. Only docker require to be installed.
- As a member: obtain federation credentials.
- As a controller: nothing more complex that setting up any other service on a server: ports, domain names, DNS, etc.
Fast & simple installation
1 single command with minimal settings will get you up & running in matter of minutes.
Users adapt trile to their needs
The default installation process gives you the chance to install trile in a machine with a few steps.
In order to achieve this, trile enforces some pre-requirements and asumes some default values to ease the installation.
However, some use cases might not be able to meet these requirements and some others might prefer to modify their settings.
By transfering all the deployment & configuration state to files, a single source of truth is kept, easing user crafting.
Do you need to modify ports, container names or docker networking? Edit the docker compose, run docker compose up
and make it work for your case.
Do you already have you own SSL certificates? No sweat, nginx configuration folders are mounted into the host, cp
those certs, hot reload and you are back in the game.
Your host networking require tweaking IPFS addresses? etc, etc, etc. You name it, you got it.
Corollary
Dont' burden users with technical details until they require it.