Files
matrix/cygnus-installer/README.md

89 lines
3.1 KiB
Markdown

# Technobee Service Installer
One Swing-based Java installer supports Matrix and Cygnus through an external
INI product profile. It never connects to PostgreSQL or Redis. The selected
product cloud service validates the activation key and registers the
installation.
## Build and run
```bash
mvn -pl cygnus-installer -am package
TECHNOBEE_INSTALLER_CONFIG=cygnus-installer/config/matrix-installer.ini \
java -jar cygnus-installer/target/technobee-service-installer-1.0.0-SNAPSHOT.jar
```
Use `config/cygnus-installer.ini` for Cygnus. Before production use, set the
cloud URL and the cloud assertion-encryption public-key path in the selected
INI. Both profiles use these cloud endpoints by default:
- `POST /api/v1/installations/activation/validate`
- `POST /api/v1/installations/register`
The desktop wizard is the default. It checks Docker, collects activation and
installation details, asks for the Docker registry, image, username, and
password, lets the user choose an output directory, and reports installation
progress. It authenticates with `docker login --password-stdin`; the registry
password is never written into generated files or command arguments. For
servers without a desktop or for automation, append `--cli` to retain the
interactive terminal workflow:
```bash
TECHNOBEE_INSTALLER_CONFIG=cygnus-installer/config/matrix-installer.ini \
java -jar cygnus-installer/target/technobee-service-installer-1.0.0-SNAPSHOT.jar --cli
```
## Configuration
```ini
[installer]
product=matrix
cloud_service_url=https://cloud.example.com
installer_api_base_path=/api/v1/installations
environment=production
output_directory=./matrix-installation
[profile.matrix]
display_name=Matrix
service_name=matrix-onprem
image_environment_variable=MATRIX_IMAGE
configuration_root=matrix
configuration_file_name=installation.yml
installation_config_environment_variable=MATRIX_INSTALLATION_CONFIG
container_configuration_path=/opt/matrix/config/installation.yml
port_mapping=8080:8080
token_path=/oauth2/token
assertion_encryption_public_key=/secure/cloud-assertion-public.pem
optional_fields=
```
The installer validates the product, URL, API path, environment, profile
values, and public-key file before asking installation questions.
## Generated output
```text
.env
compose.yml
config/
installation.yml
machine-assertion.jwt
keys/
client-signing-private.pem
client-signing-public.pem
```
The installer asks for the product Docker image, validates it, and stores it
under the profile's image variable in `.env`. Docker Compose loads this file
automatically, so no separate `export MATRIX_IMAGE` or `export CYGNUS_IMAGE`
step is required. Docker stores successful login state using its configured
credential store; the installer does not persist the registry password.
The RSA-3072 pair is generated locally. Only the public key is sent during
registration. The private key and encrypted machine assertion remain on
premises and receive owner-only permissions on POSIX systems. The activation
key is never written to disk.
`scripts/setup-local-communication.sh` remains a development/provisioning
utility; it is not used by this installer.