@fluxup/installer 1.3.1 → 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 +48 -95
- package/package.json +1 -1
- package/src/env.schema.js +0 -6
package/README.md
CHANGED
|
@@ -1,154 +1,107 @@
|
|
|
1
|
-
|
|
1
|
+
# @fluxup/installer
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
5
|
+
```bash
|
|
6
|
+
npx @fluxup/installer
|
|
7
|
+
```
|
|
7
8
|
|
|
8
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
15
|
+
## Pré-requisitos
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
### Sistema
|
|
23
18
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
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
|
-
|
|
43
|
+
O nome padrão do secret é `fluxup/ghcr-token` (configurável via `GHCR_SECRET_NAME`).
|
|
40
44
|
|
|
41
|
-
|
|
45
|
+
---
|
|
42
46
|
|
|
43
|
-
|
|
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
|
-
###
|
|
49
|
+
### Modo interativo
|
|
49
50
|
|
|
50
51
|
```bash
|
|
51
52
|
npx @fluxup/installer
|
|
52
53
|
```
|
|
53
54
|
|
|
54
|
-
O wizard
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
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',
|