89 lines
3.1 KiB
Markdown
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.
|