Add: Service filter buttons

This commit is contained in:
2026-03-20 19:50:55 +00:00
commit 8ae7fe8e57
6 changed files with 4497 additions and 0 deletions

20
Caddyfile Normal file
View File

@@ -0,0 +1,20 @@
key.reifonas.cloud:80 {
root * /usr/share/caddy
basic_auth /* {
tracksteel $2a$14$FrvxlSG4K58bnTitHVU.4OF8BGBKoedoF0a22LyzAMxuTjlrjKD8S
}
file_server {
browse
}
encode gzip
header {
X-Content-Type-Options nosniff
X-Frame-Options DENY
X-XSS-Protection "1; mode=block"
Referrer-Policy strict-origin-when-cross-origin
}
}

92
README.md Normal file
View File

@@ -0,0 +1,92 @@
# VaultUI - Gerenciador de Credenciais
Sistema web para administração segura de todas as suas credenciais, chaves, tokens, APIs e senhas.
## Acesso
- **URL:** https://key.reifonas.cloud
- **Usuário:** `tracksteel`
- **Senha:** `@@@Ke03Br;;;`
## Estrutura
```
keys/
├── keys.html # Interface do aplicativo
├── keys.json # Banco de dados das credenciais
├── Caddyfile # Configuração do servidor web
└── README.md # Este arquivo
```
## Funcionalidades
- Autenticação segura (HTTP Basic Auth)
- Busca em tempo real
- Filtros por categoria e tipo de dado
- Botão de copiar para cada valor
- Toggle mostrar/ocultar valores
- CRUD completo (create, read, update, delete)
- Gerenciamento de credenciais pagas
- Lembrete de expiração (7 dias antes)
- Exportação de backup JSON
- Interface responsiva (mobile-friendly)
- API REST para integração com outros apps
## Deploy no Coolify
1. Crie um novo projeto no Coolify
2. Adicione um novo recurso "Static" ou "Docker"
3. Configure o repositório Git:
```
https://git.reifonas.cloud/tracksteel/keys.git
```
4. Configure a build command (se necessário)
5. Configure as variáveis de ambiente
6. Deploy!
## Configuração do Caddy (Manual)
Se precisar configurar manualmente:
```bash
# Copie o Caddyfile para /etc/caddy/Caddyfile
# Edite as credenciais de autenticação se necessário
# Reinicie o Caddy
sudo systemctl reload caddy
```
## Atualização de Credenciais
Para adicionar/editar/remover credenciais:
1. Faça login em https://key.reifonas.cloud
2. Use o botão "Novo" para adicionar
3. Use os ícones no card para editar ou excluir
## API REST
Outros apps podem acessar os dados via API:
```bash
# Listar todas (precisa autenticação)
curl -u tracksteel:@@@Ke03Br;;; https://key.reifonas.cloud/keys.json
# Buscar no arquivo JSON
curl -u tracksteel:@@@Ke03Br;;; https://key.reifonas.cloud/keys.json | jq '.credentials[] | select(.category == "api-externa")'
```
## Backup
Clique no ícone de download no canto superior direito para exportar um backup JSON.
## Segurança
- Todos os dados são protegidos por autenticação HTTP Basic
- Credenciais nunca são expostas por padrão (mascaradas)
- O arquivo JSON pode ser lido/escrito por apps autorizados
- Mantenha suas credenciais de acesso seguras!
---
Desenvolvido para a VPS TrackSteel

22
docker-compose.yml Normal file
View File

@@ -0,0 +1,22 @@
services:
keys:
image: caddy:alpine
container_name: keys-app
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.keys.entrypoints=https"
- "traefik.http.routers.keys.rule=Host(`key.reifonas.cloud`)"
- "traefik.http.routers.keys.tls.certresolver=letsencrypt"
- "traefik.http.services.keys.loadbalancer.server.port=80"
volumes:
- ./keys.html:/usr/share/caddy/index.html:ro
- ./keys.json:/usr/share/caddy/keys.json:ro
- ./Caddyfile:/etc/caddy/Caddyfile:ro
networks:
- coolify
networks:
coolify:
name: coolify
external: true

1895
index.html Normal file

File diff suppressed because one or more lines are too long

1895
keys.html Normal file

File diff suppressed because one or more lines are too long

573
keys.json Normal file
View File

@@ -0,0 +1,573 @@
{
"version": "1.0",
"lastUpdated": "2026-03-20T14:30:00Z",
"credentials": [
{
"id": "coolify-001",
"name": "Coolify - App Key",
"category": "infraestrutura",
"subCategory": "orchestrator",
"dataType": "key",
"value": "base64:b47bUe7FBv1cGpzW5zSIEfTVsfXqw+wDg37p6BIOCVE=",
"url": "https://coolify.reifonas.cloud",
"notes": "Usada para criptografia de sessões do Coolify",
"tags": ["coolify", "criptografia"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Coolify",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "coolify-002",
"name": "Coolify - Database Password (PostgreSQL)",
"category": "infraestrutura",
"subCategory": "database",
"dataType": "password",
"value": "IbPDBCzJPeinra5tCfCZaDz9QOkIHBFofOSpnr626/s=",
"url": "https://coolify.reifonas.cloud",
"notes": "Senha do banco PostgreSQL interno do Coolify",
"tags": ["coolify", "postgresql", "database"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Coolify",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "coolify-003",
"name": "Coolify - Redis Password",
"category": "infraestrutura",
"subCategory": "cache",
"dataType": "secret",
"value": "kkMadIcUAkDM1oUrcY3tCC+r9Uw9RWBpt+terc5TfMU=",
"url": "https://coolify.reifonas.cloud",
"notes": "Senha do Redis para cache do Coolify",
"tags": ["coolify", "redis", "cache"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Coolify",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "coolify-004",
"name": "Coolify - Pusher App ID",
"category": "infraestrutura",
"subCategory": "websocket",
"dataType": "key",
"value": "9874b73ff9652e5327b5b70952929f4abdc67589802a6efc1665a2652ed0696b",
"url": "https://coolify.reifonas.cloud",
"notes": "App ID do Pusher para WebSocket em tempo real",
"tags": ["coolify", "pusher", "websocket"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Coolify",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "coolify-005",
"name": "Coolify - Pusher App Key",
"category": "infraestrutura",
"subCategory": "websocket",
"dataType": "key",
"value": "7a4125c71f34f83bf2ee722434a596f135f53021d72d7513b58c6e1aa1b9ed5e",
"url": "https://coolify.reifonas.cloud",
"notes": "App Key do Pusher para WebSocket em tempo real",
"tags": ["coolify", "pusher", "websocket"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Coolify",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "coolify-006",
"name": "Coolify - Pusher App Secret",
"category": "infraestrutura",
"subCategory": "websocket",
"dataType": "secret",
"value": "2244c9076f690153e7400179fb6fb429020a74801d61644fa29ede5ae17b7523",
"url": "https://coolify.reifonas.cloud",
"notes": "App Secret do Pusher para autenticação",
"tags": ["coolify", "pusher", "websocket", "secret"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Coolify",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-001",
"name": "Supabase - Dashboard Studio User",
"category": "api-externa",
"subCategory": "dashboard",
"dataType": "username",
"value": "2FfdSSoPDostr0wA",
"url": "https://supabase.reifonas.cloud/dashboard",
"notes": "Usuário do painel administrativo do Supabase Studio",
"tags": ["supabase", "admin", "studio"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-002",
"name": "Supabase - Dashboard Studio Password",
"category": "api-externa",
"subCategory": "dashboard",
"dataType": "password",
"value": "Mg0WcYG7XPXA0oWf4SOUfIFmkW5Bs5Cr",
"url": "https://supabase.reifonas.cloud/dashboard",
"notes": "Senha do painel administrativo do Supabase Studio",
"tags": ["supabase", "admin", "studio"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-003",
"name": "Supabase - Database Credentials",
"category": "banco-de-dados",
"subCategory": "postgresql",
"dataType": "credentials",
"value": "postgresql://supabase_admin:Xz0oyb6ArGYG5uAVTVwcvJxRrMuT7EIJ@localhost:5432/postgres",
"url": "https://supabase.reifonas.cloud/dashboard/project/_/database/tables",
"notes": "Credenciais completas do banco PostgreSQL. Porta: 5432",
"tags": ["supabase", "postgresql", "database"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-004",
"name": "Supabase - Service Role Key",
"category": "api-externa",
"subCategory": "api-keys",
"dataType": "api-key",
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoic2VydmljZV9yb2xlIn0._n2Kj2f29z1u0pOYUGqAr-1Xjt-xQpK9KDhhhGvOIro",
"url": "https://supabase.reifonas.cloud/dashboard/project/_/settings/api",
"notes": "Chave admin para operações no servidor. NUNCA expor no frontend!",
"tags": ["supabase", "api", "admin", "service-role"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-005",
"name": "Supabase - Anon Key",
"category": "api-externa",
"subCategory": "api-keys",
"dataType": "api-key",
"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc3Mjk5NTUwMCwiZXhwIjo0OTI4NjY5MTAwLCJyb2xlIjoiYW5vbiJ9.kOAYmQJlNd3LsssUHaNyvWZpa2sunfpLj24F_X-PRNY",
"url": "https://supabase.reifonas.cloud/dashboard/project/_/settings/api",
"notes": "Chave pública para uso no frontend (nível anon)",
"tags": ["supabase", "api", "public", "anon"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-006",
"name": "Supabase - JWT Secret",
"category": "api-externa",
"subCategory": "auth",
"dataType": "jwt-secret",
"value": "BJTT52gbXWcUeWMgGGQ90I2ei80RDCZ0",
"url": "https://supabase.reifonas.cloud/dashboard/project/_/auth/providers",
"notes": "Secret para validar tokens JWT do Supabase Auth",
"tags": ["supabase", "auth", "jwt"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-007",
"name": "Supabase - MinIO Access Key",
"category": "storage",
"subCategory": "s3",
"dataType": "key",
"value": "JcIIUSqslL5JCG3y",
"url": "https://supabase.reifonas.cloud/dashboard/project/_/storage",
"notes": "Access Key para MinIO (storage S3-compatible)",
"tags": ["supabase", "storage", "minio", "s3"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-008",
"name": "Supabase - MinIO Secret Key",
"category": "storage",
"subCategory": "s3",
"dataType": "secret",
"value": "pR8v6UUvVDcCxTitjVQkqgdaHcsQ8vCv",
"url": "https://supabase.reifonas.cloud/dashboard/project/_/storage",
"notes": "Secret Key para MinIO (storage S3-compatible)",
"tags": ["supabase", "storage", "minio", "s3", "secret"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-009",
"name": "Supabase - Vault Encryption Key",
"category": "api-externa",
"subCategory": "security",
"dataType": "key",
"value": "IgDixpOtM6uhRL2LaarNwnSrZmanUtvc",
"url": "https://supabase.reifonas.cloud/dashboard/project/_/vault",
"notes": "Chave de criptografia para o Vault do Supabase",
"tags": ["supabase", "vault", "encryption", "security"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "supabase-010",
"name": "Supabase - Logflare API Key",
"category": "api-externa",
"subCategory": "analytics",
"dataType": "api-key",
"value": "s5tbGFZV0rCoA8OZpP5Eg8rZnBlykvOr",
"url": "https://supabase.reifonas.cloud/dashboard/project/_/logs",
"notes": "API Key para integração com Logflare (logs analytics)",
"tags": ["supabase", "logs", "analytics", "logflare"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Supabase",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "logto-001",
"name": "Logto - Database Credentials",
"category": "banco-de-dados",
"subCategory": "postgresql",
"dataType": "credentials",
"value": "postgresql://bhWbMdkltdZej1RG:Szt31khElk0RczDuk0CJq2eDMsp6oo0e@localhost:5432/logto",
"url": "https://logto.reifonas.cloud",
"notes": "Credenciais do banco PostgreSQL do Logto. DB Name: logto",
"tags": ["logto", "auth", "postgresql", "database"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Logto",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "logto-002",
"name": "Logto - Admin Endpoint",
"category": "autenticacao",
"subCategory": "oauth",
"dataType": "url",
"value": "https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io",
"url": "https://logto-admin-bzlued1boxl3t8ewsyn99an9.187.77.227.172.sslip.io",
"notes": "Endpoint administrativo do Logto (SSLip.io temporário)",
"tags": ["logto", "auth", "admin", "oauth"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Logto",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gitea-001",
"name": "Gitea - Admin Credentials",
"category": "git",
"subCategory": "git-server",
"dataType": "credentials",
"value": "Usuário: admtracksteel / Marcos | Senha: @@Gi05Br;;;",
"url": "https://git.reifonas.cloud",
"notes": "Credenciais de admin para Gitea (usar para ambos usuários)",
"tags": ["gitea", "git", "admin"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Gitea",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gitea-002",
"name": "Gitea - Internal Token",
"category": "git",
"subCategory": "git-server",
"dataType": "token",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NzMxMDg3Mjl9.beKMVnmwBwdIyBhApfihXHMxvIMc3mXjJJQ0gLuwPAo",
"url": "https://git.reifonas.cloud",
"notes": "Token interno para autenticação API do Gitea",
"tags": ["gitea", "git", "api", "token"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Gitea",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gitea-003",
"name": "Gitea - OAuth2 JWT Secret",
"category": "git",
"subCategory": "oauth",
"dataType": "jwt-secret",
"value": "hfHyav79UnnuhN0x9cVHvgedRVS6Y_xumnRW62d0Xk8",
"url": "https://git.reifonas.cloud",
"notes": "JWT Secret para OAuth2 do Gitea",
"tags": ["gitea", "oauth", "jwt"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Gitea",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gitea-004",
"name": "Gitea - LFS JWT Secret",
"category": "git",
"subCategory": "lfs",
"dataType": "jwt-secret",
"value": "gvasUkABbQ9scDHYdKRwsIEURWsbFBXUnOFD91Gf8A4",
"url": "https://git.reifonas.cloud",
"notes": "JWT Secret para Git LFS do Gitea",
"tags": ["gitea", "lfs", "jwt"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Gitea",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "telegram-001",
"name": "Telegram Bot - Bot Token",
"category": "bot",
"subCategory": "telegram",
"dataType": "bot-token",
"value": "8272877120:AAEKPhLGZPyj8XL9HGSowGLAFzXZPtXHMa4",
"url": "https://t.me/AdmTrackSteelBot",
"notes": "Token do bot Telegram para integração com VPS",
"tags": ["telegram", "bot", "notification"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Telegram Bot",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "telegram-002",
"name": "Telegram Bot - Chat ID Admin",
"category": "bot",
"subCategory": "telegram",
"dataType": "key",
"value": "8768212834",
"url": "https://t.me/AdmTrackSteelBot",
"notes": "Chat ID do usuário admin (Marcos) autorizado",
"tags": ["telegram", "bot", "admin"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Telegram Bot",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gpi-001",
"name": "GPI Local - MongoDB URI",
"category": "banco-de-dados",
"subCategory": "mongodb",
"dataType": "uri",
"value": "mongodb+srv://admtracksteel:29OHAHpKTI8XcCNt@cluster0.a4xiilu.mongodb.net/ts_gpi?retryWrites=true&w=majority&appName=Cluster0",
"url": null,
"notes": "URI do MongoDB Atlas para o projeto GPI local",
"tags": ["gpi", "mongodb", "atlas", "database"],
"isPaid": true,
"paidInfo": {
"cancellationDate": null,
"reminderDays": 7,
"cost": "Free tier (500MB)",
"billingCycle": "monthly"
},
"associatedService": "GPI Local",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gpi-002",
"name": "GPI Local - Clerk Publishable Key",
"category": "api-externa",
"subCategory": "auth",
"dataType": "key",
"value": "pk_live_Y2xlcmsucmVpZm9uYXMuY2xvdWQk",
"url": "https://dashboard.clerk.com",
"notes": "Chave pública do Clerk para autenticação",
"tags": ["gpi", "clerk", "auth", "frontend"],
"isPaid": false,
"paidInfo": null,
"associatedService": "GPI Local",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gpi-003",
"name": "GPI Local - JWT Secret",
"category": "api-externa",
"subCategory": "auth",
"dataType": "jwt-secret",
"value": "kd6wmHgnOk5xLy2ybtUiGPaPtVEwv/L4m3vFkIvSYrE=",
"url": "https://dashboard.clerk.com",
"notes": "JWT Secret para validar tokens localmente",
"tags": ["gpi", "jwt", "auth"],
"isPaid": false,
"paidInfo": null,
"associatedService": "GPI Local",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gpi-004",
"name": "GPI Local - Database Local (Postgres)",
"category": "banco-de-dados",
"subCategory": "postgresql",
"dataType": "uri",
"value": "postgresql://postgres:postgres@localhost:5432/pintura_db?schema=public",
"url": null,
"notes": "URI do banco PostgreSQL local para desenvolvimento",
"tags": ["gpi", "postgresql", "local", "development"],
"isPaid": false,
"paidInfo": null,
"associatedService": "GPI Local",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "anthropic-001",
"name": "Anthropic - API Key",
"category": "api-externa",
"subCategory": "llm",
"dataType": "api-key",
"value": "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",
"url": "https://console.anthropic.com",
"notes": "API Key para Claude API. Cuidado: valor muito longo!",
"tags": ["anthropic", "claude", "llm", "api"],
"isPaid": true,
"paidInfo": {
"cancellationDate": null,
"reminderDays": 7,
"cost": "Pay-as-you-go",
"billingCycle": "monthly"
},
"associatedService": "Anthropic",
"lastRotated": null,
"createdAt": "2026-03-20",
"updatedAt": "2026-03-20"
},
{
"id": "ssh-001",
"name": "SSH - Public Key",
"category": "ssh",
"subCategory": "authentication",
"dataType": "chave-publica",
"value": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILXuodcZ2QF/nmNZaBBiSZIF3t1kU8F7oDI4BgSBibDZ admtracksteel@gmail.com",
"url": null,
"notes": "Chave pública SSH para autenticação em servidores. Usuário: root",
"tags": ["ssh", "ed25519", "authentication", "server"],
"isPaid": false,
"paidInfo": null,
"associatedService": "SSH",
"lastRotated": null,
"createdAt": "2026-03-18",
"updatedAt": "2026-03-20"
},
{
"id": "gitea-token-001",
"name": "Token Gitea Coolify",
"category": "deploy",
"subCategory": "ci-cd",
"dataType": "token",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3NDU...",
"url": "https://git.reifonas.cloud",
"notes": "Token para integração do Coolify com Gitea",
"tags": ["coolify", "gitea", "deploy", "token"],
"isPaid": false,
"paidInfo": null,
"associatedService": "Coolify-Gitea",
"lastRotated": null,
"createdAt": "2026-03-10",
"updatedAt": "2026-03-10"
}
],
"metadata": {
"categories": {
"destino": [
"infraestrutura",
"banco-de-dados",
"api-externa",
"deploy",
"ssh",
"autenticacao",
"storage",
"git",
"bot"
],
"tipo-dado": [
"key",
"token",
"senha",
"url",
"chave-publica",
"api-key",
"jwt-secret",
"uri",
"secret",
"password",
"bot-token",
"credentials",
"username"
]
}
}
}