@fluxup/installer 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,154 +1,107 @@
1
- ## Visao geral
1
+ # @fluxup/installer
2
2
 
3
- Este repositório centraliza o processo de instalação da plataforma FluxUp em servidores Docker on-premises.
4
- Contém a CLI de instalação interativa (`npx @fluxup/installer`), o `docker-compose.yml` baseado em imagens pré-publicadas no GHCR, e a configuração de nginx que serve o frontend e faz proxy para os serviços internos.
3
+ CLI interativa para instalação da plataforma **FluxUp** em servidores Docker on-premises.
5
4
 
6
- > Contexto de negócio completo: [github.com/fluxup-platform/profile](https://github.com/fluxup-platform/profile/blob/main/README.md)
5
+ ```bash
6
+ npx @fluxup/installer
7
+ ```
7
8
 
8
- ## Tecnologias
9
+ O wizard coleta as variáveis de configuração e executa automaticamente: login no GHCR, download do `docker-compose.yml` do S3, geração do `.env` e `docker compose up`.
9
10
 
10
- | Tecnologia | Versão mínima | Papel |
11
- |---|---|---|
12
- | Node.js | 18 | Runtime da CLI npx |
13
- | Docker Engine | 20.10 | Execução dos containers |
14
- | Docker Compose | v2 | Orquestração dos serviços |
15
- | AWS SDK for JS | v3 | Download do S3 e acesso ao Secrets Manager |
16
- | nginx | alpine | Reverse proxy e servidor de arquivos estáticos |
11
+ > Visão geral do projeto: [github.com/fluxup-platform/profile](https://github.com/fluxup-platform/profile/blob/main/README.md)
17
12
 
18
13
  ---
19
14
 
20
- ## Arquitetura
15
+ ## Pré-requisitos
21
16
 
22
- O instalador opera em 10 etapas sequenciais:
17
+ ### Sistema
23
18
 
24
- 1. **Preflight** verifica `docker` e `docker compose` v2 no servidor
25
- 2. **Wizard** — coleta variáveis de configuração via prompts interativos (DB, rede, S3, GHCR)
26
- 3. **SSM Parameter Store** ARNs de IAM roles, URLs de filas SQS e nome da tabela DynamoDB via `GetParametersByPath`; nenhuma credencial estática é coletada
27
- 4. **Secrets Manager** busca o token GHCR no AWS Secrets Manager (em memória, nunca em disco)
28
- 5. **GHCR Login** `docker login ghcr.io --password-stdin` com o token obtido
29
- 6. **Download S3** — baixa o `docker-compose.yml` template do bucket S3 via SDK
30
- 7. **Render compose** — substitui os placeholders SSM (`${AWS_STS_BROKER_ROLE_ARN}` etc.) por valores literais no YAML; `${DB_*}`, `${NGINX_*}` permanecem para resolução pelo Docker Compose
31
- 8. **Geração do .env** — cria `<dir>/.env` com permissão `0600` (apenas config do wizard; sem ARNs ou credenciais AWS)
32
- 9. **Pull + Up** — `docker compose pull` seguido de `docker compose up -d`
33
- 10. **Status** — exibe containers ativos e URLs de acesso
19
+ | Ferramenta | Versão mínima | Observação |
20
+ |---|---|---|
21
+ | Docker Engine | 20.10 | Em execução no servidor |
22
+ | Docker Compose | v2 | `docker compose version` deve funcionar |
23
+ | Node.js | 18 | Apenas para o `npx` pode ser removido após instalar |
34
24
 
35
- O nginx embute o build do Angular frontend como imagem GHCR. O servidor on-premises não precisa de código-fonte — apenas Docker.
25
+ ### AWS
36
26
 
37
- ---
27
+ O servidor precisa de uma **IAM instance profile** com permissões para:
28
+
29
+ - `ssm:GetParametersByPath` no prefixo `/fluxup` (ARNs de roles, URLs SQS, tabela DynamoDB)
30
+ - `secretsmanager:GetSecretValue` no secret que armazena o token GHCR
31
+ - `s3:GetObject` no bucket que armazena o `docker-compose.yml`
32
+
33
+ > Nenhuma credencial AWS é coletada. O instalador usa o instance profile da máquina via IMDSv2.
34
+
35
+ ### Secret GHCR no AWS Secrets Manager
36
+
37
+ Crie um secret com valor JSON contendo o token do GitHub Container Registry:
38
+
39
+ ```json
40
+ { "token": "ghp_..." }
41
+ ```
38
42
 
39
- ## Como executar a instalação
43
+ O nome padrão do secret é `fluxup/ghcr-token` (configurável via `GHCR_SECRET_NAME`).
40
44
 
41
- ### Pré-requisitos no servidor
45
+ ---
42
46
 
43
- - Docker Engine ≥ 20.10 instalado e em execução
44
- - Docker Compose v2 disponível (`docker compose version`)
45
- - Node.js ≥ 18 disponível no `PATH` (apenas para o npx — pode ser removido após instalar)
46
- - Acesso à internet: GHCR, bucket S3 e AWS Secrets Manager
47
+ ## Como executar
47
48
 
48
- ### Execução
49
+ ### Modo interativo
49
50
 
50
51
  ```bash
51
52
  npx @fluxup/installer
52
53
  ```
53
54
 
54
- O wizard guiará pela configuração de todas as variáveis necessárias.
55
+ O wizard solicita as variáveis em grupos: GHCR, S3, AWS, banco de dados e rede.
55
56
 
56
57
  ### Flags disponíveis
57
58
 
58
59
  | Flag | Descrição |
59
- |------|-----------|
60
+ |---|---|
60
61
  | `--dir <path>` | Diretório de instalação (padrão: `./fluxup`) |
61
62
  | `--non-interactive` | Lê variáveis já exportadas no shell — útil para CI/automação |
62
63
  | `--no-pull` | Pula o `docker compose pull` |
63
64
 
64
65
  ### Modo não-interativo (CI/automação)
65
66
 
67
+ Exporte as variáveis antes de executar:
68
+
66
69
  ```bash
70
+ # GHCR
67
71
  export GHCR_USERNAME="Fluxup Deploy Bot"
68
72
  export GHCR_SECRET_NAME="fluxup/ghcr-token"
69
- export IMAGE_TAG="1.4.3"
73
+
74
+ # S3
70
75
  export S3_BUCKET="fluxup-installer"
71
76
  export S3_KEY="releases/v1.4.3/docker-compose.yml"
77
+
78
+ # AWS
72
79
  export AWS_REGION="us-east-1"
73
80
  export AWS_SSM_PREFIX="/fluxup"
74
- # DB e rede
81
+
82
+ # Banco de dados
75
83
  export DB_NAME="fluxup"
76
84
  export DB_USERNAME="fluxup"
77
85
  export DB_PASSWORD="..."
78
86
  export DB_PORT="5432"
79
87
  export DB_BIND_HOST="127.0.0.1"
80
88
  export JPA_DDL_AUTO="update"
89
+
90
+ # Rede
81
91
  export NGINX_PORT="80"
82
92
  export BACKEND_API_TIMEOUT="5000"
83
93
 
84
- # Credenciais AWS via instance profile (IMDSv2) — não definir AWS_ACCESS_KEY_ID/SECRET
85
94
  npx @fluxup/installer --non-interactive --dir /opt/fluxup
86
95
  ```
87
96
 
88
97
  ---
89
98
 
90
- ## Configuração do secret GHCR no AWS Secrets Manager
91
-
92
- Crie um secret com valor JSON:
93
-
94
- ```json
95
- { "token": "ghp_..." }
96
- ```
97
-
98
- O nome do secret é configurado via `GHCR_SECRET_NAME` (padrão: `fluxup/ghcr-token`).
99
- O token **nunca** é armazenado em disco — apenas em memória durante o login.
100
-
101
- ---
102
-
103
- ## Estrutura do repositório
104
-
105
- ```
106
- compose/docker-compose.yml — compose baseado em imagens (fonte; CI publica no S3)
107
- nginx/Dockerfile — build nginx + Angular frontend (usado só pelo CI)
108
- nginx/nginx.conf — configuração do nginx (proxy + SPA fallback)
109
- bin/cli.js — entrypoint da CLI
110
- src/
111
- preflight.js — verifica pré-requisitos Docker
112
- wizard.js — prompts interativos agrupados
113
- env.schema.js — definição declarativa de variáveis do wizard
114
- aws-resources.js — lê ARNs e URLs do AWS SSM Parameter Store
115
- compose-renderer.js — substitui valores SSM diretamente no YAML
116
- secrets.js — busca token GHCR no AWS Secrets Manager
117
- ghcr.js — docker login via --password-stdin
118
- s3.js — download do compose do bucket S3
119
- env.js — geração do .env (config do wizard)
120
- docker.js — docker compose pull / up / ps
121
- .github/workflows/
122
- publish-nginx.yml — publica ghcr.io/fluxup-platform/fluxup-nginx:<ver>
123
- upload-compose.yml — sobe compose no S3 em cada release tag
124
- ```
125
-
126
- ---
127
-
128
- ## Release
129
-
130
- Em cada tag `vX.Y.Z`, os workflows CI executam automaticamente:
131
-
132
- 1. `publish-nginx.yml` — builda o nginx com o frontend Angular e publica `ghcr.io/fluxup-platform/fluxup-nginx:X.Y.Z` no GHCR
133
- 2. `upload-compose.yml` — sobe `compose/docker-compose.yml` para `s3://<bucket>/releases/X.Y.Z/docker-compose.yml`
134
-
135
- O instalador então usa `IMAGE_TAG=X.Y.Z` e `S3_KEY=releases/X.Y.Z/docker-compose.yml` para instalar a versão correta.
136
-
137
- ---
138
-
139
99
  ## Contribuição
140
100
 
141
- 1. Leia o [CONTRIBUTING.md](CONTRIBUTING.md) antes de começar.
142
- 2. Crie uma branch de feature: `git checkout -b feature/descricao-curta`.
143
- 3. Valide localmente: `npm install && node bin/cli.js --help`.
144
- 4. Abra um pull request com descrição objetiva das mudanças.
101
+ Leia o [CONTRIBUTING.md](CONTRIBUTING.md) antes de começar.
145
102
 
146
103
  ---
147
104
 
148
- ## Autores
149
-
150
- - [Diovani Motta](https://github.com/diovanibmotta)
151
-
152
105
  ## Contato
153
106
 
154
107
  Dúvidas ou sugestões: [contato@fluxup.com.br](mailto:contato@fluxup.com.br)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluxup/installer",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "FluxUp on-premises Docker installation CLI",
5
5
  "type": "module",
6
6
  "bin": {
package/src/env.schema.js CHANGED
@@ -20,12 +20,6 @@ export const ENV_SCHEMA = [
20
20
  prompt: 'GHCR username (e.g. Fluxup Deploy Bot)',
21
21
  default: 'Fluxup Deploy Bot',
22
22
  },
23
- {
24
- group: 'GHCR (GitHub Container Registry)',
25
- key: 'IMAGE_TAG',
26
- prompt: 'Installer image tag used for the nginx service (e.g. 1.4.3)',
27
- default: 'latest',
28
- },
29
23
  {
30
24
  group: 'GHCR (GitHub Container Registry)',
31
25
  key: 'GHCR_SECRET_NAME',