From 01b4005e322b0db2c2547940446c07e564a4c9c1 Mon Sep 17 00:00:00 2001 From: Tiago Yamamoto Date: Tue, 17 Feb 2026 15:31:29 -0600 Subject: [PATCH] Atualiza infraestrutura: remove K3s/Apolo/NC1, consolida Redbull como servidor principal - Remove clusters K3s (Zeus, Posseidon) e VPS Apolo/NC1 - Atualiza URL do Coolify para https://redbull.rede5.com.br - Adiciona CONNECTIONS.md com documentacao completa de conexoes - Atualiza SSH config removendo hosts obsoletos - README simplificado com apenas Redbull e Vim --- AGENT.md | 12 +- CONNECTIONS.md | 262 +++++++++++++++++++++++++++++ README.md | 44 ++--- azure-devops/CLUSTER-CONNECTION.md | 165 ------------------ k3s/README.md | 25 --- k3s/architecture.md | 55 ------ k3s/deployment_guide.md | 88 ---------- k3s/roadmap_learning.md | 87 ---------- k3s/services_inventory.md | 29 ---- vps/apolo/README.md | 33 ---- vps/apolo/architecture.md | 137 --------------- vps/apolo/deployment_guide.md | 132 --------------- vps/apolo/services_inventory.md | 56 ------ vps/nc1/README.md | 31 ---- vps/nc1/architecture.md | 157 ----------------- vps/nc1/deployment_guide.md | 145 ---------------- vps/nc1/nc1.md | 246 --------------------------- vps/nc1/services_inventory.md | 53 ------ vps/redbull/README.md | 4 +- vps/redbull/coolify-api.md | 20 +-- vps/redbull/health-check.sh | 2 +- vps/redbull/services_inventory.md | 8 +- 22 files changed, 307 insertions(+), 1484 deletions(-) create mode 100644 CONNECTIONS.md delete mode 100644 azure-devops/CLUSTER-CONNECTION.md delete mode 100644 k3s/README.md delete mode 100644 k3s/architecture.md delete mode 100644 k3s/deployment_guide.md delete mode 100644 k3s/roadmap_learning.md delete mode 100644 k3s/services_inventory.md delete mode 100644 vps/apolo/README.md delete mode 100644 vps/apolo/architecture.md delete mode 100644 vps/apolo/deployment_guide.md delete mode 100644 vps/apolo/services_inventory.md delete mode 100644 vps/nc1/README.md delete mode 100644 vps/nc1/architecture.md delete mode 100644 vps/nc1/deployment_guide.md delete mode 100644 vps/nc1/nc1.md delete mode 100644 vps/nc1/services_inventory.md diff --git a/AGENT.md b/AGENT.md index 9fcdbe9..cdd7741 100644 --- a/AGENT.md +++ b/AGENT.md @@ -11,7 +11,7 @@ Este documento contém os tokens e APIs necessárias para gerenciar a infraestru ### Coolify (Redbull) - **Arquivo**: `~/.ssh/coolify-redbull-token` -- **URL**: http://185.194.141.70:8000/api/v1 +- **URL**: https://redbull.rede5.com.br/api/v1 - **Server UUID**: `m844o4gkwkwcc0k48swgs8c8` ## Comandos Rápidos @@ -60,7 +60,7 @@ curl -s -X DELETE -H "X-Auth-Email: $CF_AUTH_EMAIL" -H "X-Auth-Key: $CF_AUTH_KEY ```bash # Configurar variáveis export COOLIFY_TOKEN="tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9" -export COOLIFY_URL="http://185.194.141.70:8000/api/v1" +export COOLIFY_URL="https://redbull.rede5.com.br/api/v1" # Listar aplicações curl -s -H "Authorization: Bearer $COOLIFY_TOKEN" "$COOLIFY_URL/applications" @@ -149,8 +149,8 @@ curl -s -X PATCH -H "Authorization: Bearer $COOLIFY_TOKEN" \ ```bash # Deploy all -curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "http://185.194.141.70:8000/api/v1/deploy?uuid=ecso4woo4woo0ks84888k8ck" # Backend -curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "http://185.194.141.70:8000/api/v1/deploy?uuid=l4g4cc884gc04kg8s480gs48" # Frontend -curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "http://185.194.141.70:8000/api/v1/deploy?uuid=s4kskw08400wcw8g40ossggo" # Backoffice -curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "http://185.194.141.70:8000/api/v1/deploy?uuid=ko0kkw4kw8g80scksg8sk0wc" # Seeder +curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "https://redbull.rede5.com.br/api/v1/deploy?uuid=ecso4woo4woo0ks84888k8ck" # Backend +curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "https://redbull.rede5.com.br/api/v1/deploy?uuid=l4g4cc884gc04kg8s480gs48" # Frontend +curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "https://redbull.rede5.com.br/api/v1/deploy?uuid=s4kskw08400wcw8g40ossggo" # Backoffice +curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "https://redbull.rede5.com.br/api/v1/deploy?uuid=ko0kkw4kw8g80scksg8sk0wc" # Seeder ``` diff --git a/CONNECTIONS.md b/CONNECTIONS.md new file mode 100644 index 0000000..eb5844e --- /dev/null +++ b/CONNECTIONS.md @@ -0,0 +1,262 @@ +# Guia de Conexoes - Infracloud + +Documentacao completa de todas as conexoes utilizadas na infraestrutura Rede5. + +## Localizacao das Credenciais + +Todas as credenciais estao armazenadas em: `C:\Users\Administrator\.ssh\` + +``` +.ssh/ +├── lh-zeus / lh-zeus.pub # Redbull (antigo NC1) +├── github / github.pub # GitHub +├── ic-ad / ic-ad.pub # Azure DevOps +├── forgejo-gohorsejobs / .pub # Forgejo (Gitea) +├── civo / civo.pub # Civo Cloud +├── bionexo / bionexo.pub # Bionexo +├── cloudflare-token # Cloudflare API Token +├── coolify-redbull-token # Coolify API Token +├── github-token # GitHub PAT +└── absam-db-novo # Absam Database +``` + +--- + +## 1. Cloudflare + +### Token de Autenticacao +**Arquivo:** `C:\Users\Administrator\.ssh\cloudflare-token` + +| Propriedade | Valor | +|-------------|-------| +| Email | yamamoto@rede5.com.br | +| API Key | `5dcfd89a9d4ec330dede0d4074a518f26818e` | + +### Zones Configuradas + +| Zone | Zone ID | Uso | +|------|---------|-----| +| gohorsejobs.com | `5e7e9286849525abf7f30b451b7964ac` | GoHorse Jobs | +| rede5.com.br | `7eb6587a2c867bb9743719a8fabcd455` | Rodizios Daqui | + +### Comandos Uteis + +```bash +# Variaveis +export CF_AUTH_EMAIL="yamamoto@rede5.com.br" +export CF_AUTH_KEY="5dcfd89a9d4ec330dede0d4074a518f26818e" +export CF_ZONE_ID="5e7e9286849525abf7f30b451b7964ac" + +# Listar DNS records +curl -s -H "X-Auth-Email: $CF_AUTH_EMAIL" -H "X-Auth-Key: $CF_AUTH_KEY" \ + "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" + +# Criar DNS record +curl -s -X POST -H "X-Auth-Email: $CF_AUTH_EMAIL" -H "X-Auth-Key: $CF_AUTH_KEY" \ + -H "Content-Type: application/json" \ + "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \ + -d '{"type":"A","name":"novo.gohorsejobs.com","content":"185.194.141.70","proxied":false}' + +# Limpar cache +curl -s -X DELETE -H "X-Auth-Email: $CF_AUTH_EMAIL" -H "X-Auth-Key: $CF_AUTH_KEY" \ + -H "Content-Type: application/json" \ + "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \ + -d '{"purge_everything":true}' +``` + +--- + +## 2. GitHub + +### Personal Access Token +**Arquivo:** `C:\Users\Administrator\.ssh\github-token` + +| Propriedade | Valor | +|-------------|-------| +| Token | `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` | +| User | tiago/yamamoto | +| Permissoes | repo access | + +### Chave SSH +**Arquivos:** `github` / `github.pub` + +``` +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHLdfAs9KFyRJkwl0Gylwkc4JoMRgZU4STC4DwRp9g5j japa@rede5.com.br +``` + +### Comandos Uteis + +```bash +# Clonar repositorio via HTTPS com token +git clone https://tiago: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@github.com/rede5/repo.git + +# Testar conexao SSH +ssh -T git@github.com + +# Usar token na API +curl -H "Authorization: token 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" \ + https://api.github.com/user/repos +``` + +--- + +## 3. Coolify (Redbull) + +### API Token +**Arquivo:** `C:\Users\Administrator\.ssh\coolify-redbull-token` + +| Propriedade | Valor | +|-------------|-------| +| Token | `2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9` | +| URL | `https://redbull.rede5.com.br/api/v1` | + +### Comandos Uteis + +```bash +TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9" +URL="https://redbull.rede5.com.br/api/v1" + +# Listar aplicacoes +curl -s -H "Authorization: Bearer $TOKEN" "$URL/applications" + +# Deploy de uma aplicacao +curl -s -H "Authorization: Bearer $TOKEN" "$URL/deploy?uuid=" + +# Atualizar dominio +curl -s -X PATCH -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + "$URL/applications/" \ + -d '{"domains":"http://novo.dominio.com","instant_deploy":true}' +``` + +--- + +## 4. Redbull (NC1) - Servidor Principal + +### Chave SSH +**Arquivos:** `lh-zeus` / `lh-zeus.pub` + +``` +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDkN14IEDYQYeEWaQ15cyAjyZ4deYBDJgAORN+nLcKA5 tiagoyr@yahoo.com +``` + +### Informacoes do Servidor + +| Propriedade | Valor | +|-------------|-------| +| Hostname | redbull | +| IP | `185.194.141.70` | +| Plataforma | Coolify v4 (PaaS self-hosted) | +| Container Runtime | Docker | +| Proxy Reverso | Traefik | +| Bancos de Dados | PostgreSQL 16 | + +### Comandos de Conexao + +```bash +# Conectar via SSH +ssh -i C:\Users\Administrator\.ssh\lh-zeus root@185.194.141.70 + +# Ou usando alias (apos configurar SSH config) +ssh redbull +``` + +### Configurar SSH Config + +Criar arquivo `C:\Users\Administrator\.ssh\config`: + +``` +Host redbull + HostName 185.194.141.70 + User root + IdentityFile C:/Users/Administrator/.ssh/lh-zeus + IdentitiesOnly yes + +Host vim + HostName 38.19.201.52 + User root + IdentityFile C:/Users/Administrator/.ssh/lh-zeus + IdentitiesOnly yes +``` + +--- + +## 5. Azure DevOps + +### Chave SSH +**Arquivos:** `ic-ad` / `ic-ad.pub` + +``` +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBRd1XRGU6ah8G5ZXo3sDoopEIjnPad/Qr/Pt08tvvnc0MwxZ5J02VQvpSieDzLk7hzsl32RrAAoBWsbk9sl0ASEKkoDGjLd08Y6WW0Z3V61JbKSqgVX06LeZZV2nl14bXG65aP3neBP6brkXRzm+xhYqALF2iVRIQ2bikpxdt+F80MbAQ8PjEv9EY5HjmXmMyV1Psviv/qmi2xaF/EgGOq3Q6Bd9kyKdKCjdP+VzdnshzmqGRcBvcRP0yQELA8I+tFTwEhxsys0B0iX5rLtazjD7QY23beTYPcPzVgNw2/bbws8sTUXR8DmW+AnfnF98ZmQEdLf+oQ5RExwnpjMeAivLaJTDNeLNOUgdK6q2SZpe9H+ZvHSRh1S9XDim3dW4ZrNw5wEqDkembsrz2vS7JJgImo/+d4Iwz3k4INerujFvZ4iLacPjvKXbxvJLZ0UoQPPgrt7MwKQIH0ljQYlAXa7yzt2oBCp+FGx6UXUCKpFth8yQN023ilZ7ZfuCu8X0kb1PC3J3FE2J3/4synRxFzrsYeTStsbnorQUH/fwdlFvBmf0Rpnyrs4fmG0/kcpL/y/3rqhJMf8O9/lpjCJI4rDLjSIC2wtCcU/jZ3h8KdTeAMVjoNvGnsZH6ovmFXymKv48jhnZp9eE/FUnFnJ2M8rsUg+ZKH80tz0nhpDR9+Q== tiago.ribeiro@inventcloud.com.br +``` + +### Organizacao +- **Organization:** CN-Squad +- **Project:** Invista FIDC - Nexus + +### Comandos Uteis + +```bash +# Testar conexao SSH +ssh -T git@ssh.dev.azure.com + +# Clonar via SSH +git clone git@ssh.dev.azure.com:v3/CN-Squad/Invista%20FIDC%20-%20Nexus/ +``` + +> **Nota:** Adicionar chave publica em: Azure DevOps > User Settings > SSH public keys + +--- + +## 6. Forgejo (Gitea) + +### Chave SSH +**Arquivos:** `forgejo-gohorsejobs` / `forgejo-gohorsejobs.pub` + +``` +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII09+OscfSfUisCaeRhCUS9yDm8Bh3fbWGWe6fk/c1hG administrator@gohorse +``` + +--- + +## 7. VPS Direta + +### Redbull (Coolify DEV) +```bash +ssh -i C:\Users\Administrator\.ssh\lh-zeus root@185.194.141.70 +``` + +### Vim (Dokku PROD) +```bash +ssh -i C:\Users\Administrator\.ssh\lh-zeus root@38.19.201.52 +``` + +--- + +## Checklist de Configuracao na Maquina Windows + +1. [ ] Verificar pasta `.ssh` existe em `C:\Users\Administrator\.ssh\` +2. [ ] Criar arquivo `config` com os hosts configurados +3. [ ] Verificar permissoes das chaves privadas (apenas leitura pelo owner) +4. [ ] Testar conexoes SSH para cada servidor +5. [ ] Configurar variaveis de ambiente para tokens + +### Comandos de Verificacao + +```powershell +# Verificar chaves +dir C:\Users\Administrator\.ssh\ + +# Testar conexao SSH +ssh -i C:\Users\Administrator\.ssh\lh-zeus root@185.194.141.70 "echo Conectado ao Redbull" + +# Verificar Cloudflare +curl -s -H "X-Auth-Email: yamamoto@rede5.com.br" -H "X-Auth-Key: 5dcfd89a9d4ec330dede0d4074a518f26818e" "https://api.cloudflare.com/client/v4/user" + +# Verificar Coolify +curl -s -H "Authorization: Bearer 2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9" "https://redbull.rede5.com.br/api/v1/applications" +``` + +--- + +*Documento gerado em: 2026-02-17* diff --git a/README.md b/README.md index a96b32d..87e41e1 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,33 @@ -# Infracloud - Infraestrutura Rede5 - -Este repositorio contem a documentacao e os manifestos de Infraestrutura como Codigo (IaC) da Rede5. - -## Estrutura do Projeto - -### Kubernetes (K3s) - -Clusters Kubernetes gerenciados via K3s (Lightweight Kubernetes). - -- [**Documentacao Geral K3s**](./k3s/README.md) - - [Arquitetura](./k3s/architecture.md) - - [Inventario de Servicos](./k3s/services_inventory.md) - +# Infracloud - Infraestrutura Rede5 + +Este repositorio contem a documentacao e os manifestos de Infraestrutura como Codigo (IaC) da Rede5. + +## Estrutura do Projeto + ### VPS (Virtual Private Servers) Servidores standalone gerenciados individualmente. -- [**Apolo**](./vps/apolo/README.md): Servidor de Producao/Staging (Podman + Systemd). IP: 45.143.7.55 +- [**Redbull**](./vps/redbull/README.md): Servidor DEV (Coolify PaaS). IP: 185.194.141.70 - [**Vim**](./vps/vim/README.md): Servidor de Producao (Dokku PaaS). IP: 38.19.201.52 -- [**NC1**](./vps/nc1/README.md): Servidor de Producao (Podman + Systemd). IP: 185.194.141.70 ### Cloud Databases Bancos de dados gerenciados. - [**Saveinmed DB**](./vps/saveinmed-db/README.md): PostgreSQL 17 (Absam.io). vpsID: 60604 - -### Containers - -Definicoes de containers compartilhados entre servidores. - -- [**Containers**](./containers/): Dockerfiles e configuracoes de containers + +### Conexoes + +- [**Guia de Conexoes**](./CONNECTIONS.md): Cloudflare, GitHub, Coolify, SSH Keys, etc. + +### Azure DevOps + +- [**Azure DevOps**](./azure-devops/CONNECTION.md): CN-Squad Organization +- [**OCI**](./azure-devops/OCI-CONNECTION.md): Oracle Cloud Infrastructure + +### Containers + +Definicoes de containers compartilhados entre servidores. + +- [**Containers**](./containers/): Dockerfiles e configuracoes de containers diff --git a/azure-devops/CLUSTER-CONNECTION.md b/azure-devops/CLUSTER-CONNECTION.md deleted file mode 100644 index 57472cd..0000000 --- a/azure-devops/CLUSTER-CONNECTION.md +++ /dev/null @@ -1,165 +0,0 @@ -# K3s Cluster - Conexão e Configuração - -## Visão Geral - -Documentação de conexão aos clusters Kubernetes baseados em **K3s** (Lightweight Kubernetes). - -## Nós do Cluster - -| Hostname | Função | IP | Utilizador | Chave SSH | -|----------|--------|----|------------|-----------| -| **Zeus** | Control Plane | `45.39.210.92` | root | `lh-zeus` | -| **Posseidon** | Control Plane | `45.39.210.21` | root | `lh-zeus` | -| **Apolo** | Worker Node | `45.143.7.55` | root | `lh-zeus` | - -## Configuração SSH - -### Arquivo de Configuração SSH -**Localização:** `C:\Users\TiagoRibeiro\.ssh\config` - -``` -Host zeus - HostName 45.39.210.92 - User root - IdentityFile C:/Users/TiagoRibeiro/.ssh/lh-zeus - IdentitiesOnly yes - -Host posseidon - HostName 45.39.210.21 - User root - IdentityFile C:/Users/TiagoRibeiro/.ssh/lh-zeus - IdentitiesOnly yes - -Host apolo - HostName 45.143.7.55 - User root - IdentityFile C:/Users/TiagoRibeiro/.ssh/lh-zeus - IdentitiesOnly yes -``` - -### Chaves SSH -- **Chave Privada:** `C:\Users\TiagoRibeiro\.ssh\lh-zeus` -- **Chave Pública:** `C:\Users\TiagoRibeiro\.ssh\lh-zeus.pub` - -## Conexão aos Nós - -### Conectar via SSH -```bash -# Conectar a Zeus (Control Plane) -ssh zeus - -# Conectar a Posseidon -ssh posseidon - -# Conectar a Apolo -ssh apolo - -# Ou diretamente pelo IP -ssh root@45.39.210.92 -ssh root@45.39.210.21 -ssh root@45.143.7.55 -``` - -##ações K Oper3s - -### Verificar Status do Cluster -```bash -# No nó Zeus -kubectl get nodes -kubectl get pods -A -kubectl get services -A - -# Status do K3s -systemctl status k3s -``` - -### Contextos Kubernetes -```bash -# Listar contextos -kubectl config get-contexts - -# Trocar de contexto -kubectl config use-context - -# Ver contexto atual -kubectl config current-context -``` - -### Exemplos de Comandos -```bash -# Ver pods em todos os namespaces -kubectl get pods -A - -# Ver serviços -kubectl get svc -A - -# Ver nós -kubectl get nodes -o wide - -# Ver logs de um pod -kubectl logs -n - -# Ver eventos do cluster -kubectl get events -A --sort-by='.lastTimestamp' -``` - -## Stack Tecnológica - -- **Distro**: K3s (Rancher) -- **Ingress Controller**: Traefik (Built-in) -- **Storage**: Local Path Provisioner -- **OS**: AlmaLinux 9.x - -## Manutenção - -### Reiniciar K3s -```bash -# Reiniciar serviço K3s -systemctl restart k3s - -# Ver logs -journalctl -u k3s -f -``` - -### Backup K3s -```bash -# Backup dos recursos -kubectl get all -A -o yaml > k3s-backup.yaml - -# Backup do etcd (se configurado) -k3s etcd-snapshot save -``` - -## Acesso Remoto (kubeconfig) - -Para acesso remoto ao cluster, copie o kubeconfig de um dos nós: - -```bash -# No nó Zeus -cat /etc/rancher/k3s/k3s.yaml - -# Guardar localmente em ~/.kube/config -``` - -## Troubleshooting - -### Verificar conectividade entre nós -```bash -# Ping entre nós -ping 45.39.210.92 -ping 45.39.210.21 -ping 45.143.7.55 - -# Ver portas abertas -ss -tuln | grep 6443 # API Server -``` - -### Verificar tokens de nó -```bash -# No nó master -cat /var/lib/rancher/k3s/server/node-token -``` - ---- - -*Documento gerado em: 2026-02-17* diff --git a/k3s/README.md b/k3s/README.md deleted file mode 100644 index 72801ae..0000000 --- a/k3s/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Infraestrutura Kubernetes (K3s) - -Documentação dos clusters Kubernetes baseados em **K3s** (Lightweight Kubernetes). - -## 🖥️ Servidores / Nós - -| Hostname | Função | IP | Status Cluster | -|----------|--------|----|----------------| -| **Zeus** | Control Plane (Master) | `45.39.210.92` | ✅ Ativo (Single Node) | -| **Posseidon** | Control Plane (Master)* | `45.39.210.21` | 🔄 Em verificação | - -> (*) Posseidon rodando serviço `k3s` (server), indicando ser um master node. A confirmar se está em cluster com Zeus ou independente. - -## 🛠️ Stack Tecnológico - -- **Distro**: K3s (Rancher). -- **Ingress Controller**: Traefik (Built-in). -- **Storage**: Local Path Provisioner. -- **OS**: AlmaLinux 9.x. - -## 📂 Estrutura da Documentação - -- [Arquitetura e Topologia](./architecture.md) -- [Inventário de Workloads e Services](./services_inventory.md) -- [Guia de Operação e Deploy](./deployment_guide.md) diff --git a/k3s/architecture.md b/k3s/architecture.md deleted file mode 100644 index 7ca802c..0000000 --- a/k3s/architecture.md +++ /dev/null @@ -1,55 +0,0 @@ -# Arquitetura K3s (Zeus & Posseidon) - -Atualmente a infraestrutura conta com **dois clusters K3s independentes** (Single-Node), cada um atuando como Control Plane e Worker simultaneamente. - -## Diagrama da Topologia - -```mermaid -flowchart TB - subgraph ClusterZeus ["Cluster 1: Zeus"] - direction TB - Z_CP(Control Plane) - Z_WK(Worker) - Z_STORE[Local Path Storage] - Z_ING[Traefik Ingress] - - Z_CP --- Z_WK - Z_WK --> Z_ING - Z_WK --> Z_STORE - end - - subgraph ClusterPos ["Cluster 2: Posseidon"] - direction TB - P_CP(Control Plane) - P_WK(Worker) - P_STORE[Local Path Storage] - P_ING[Traefik Ingress] - - P_CP --- P_WK - P_WK --> P_ING - P_WK --> P_STORE - end - - %% Detalhes de Rede - Internet((Internet)) -->|TCP/80/443| Z_ING - Internet -->|TCP/80/443| P_ING -``` - -## Detalhes dos Clusters - -### ⚡ Zeus (45.39.210.92) -- **Versão**: v1.34.3+k3s1 -- **Role**: All-in-one (Master + Agent). -- **Workloads**: Sistema base (Traefik, Metrics, CoreDNS). *Nenhum app de negócio identificado no namespace default.* - -### 🌊 Posseidon (45.39.210.21) -- **Versão**: v1.34.3+k3s1 -- **Role**: All-in-one. -- **Workloads**: *A verificar inventário de pods.* - -## Componentes Nativos -Ambos os clusters utilizam a stack padrão do K3s: -- **Container Runtime**: containerd (Embutido). -- **Ingress**: Traefik (v2/v3). -- **DNS**: CoreDNS. -- **Storage**: Local Path Provisioner (HostPath). diff --git a/k3s/deployment_guide.md b/k3s/deployment_guide.md deleted file mode 100644 index 7de9cbe..0000000 --- a/k3s/deployment_guide.md +++ /dev/null @@ -1,88 +0,0 @@ -# Guia de Operação K3s - -Este guia aborda operações básicas nos clusters **Zeus** e **Posseidon**. Como são instalações K3s, o comando principal é `k3s kubectl`. - -## 📡 Acesso aos Clusters - -Acesso via SSH diretamente no nó master. - -```bash -# Cluster Zeus -ssh zeus -sudo k3s kubectl get nodes - -# Cluster Posseidon -ssh posseidon -sudo k3s kubectl get nodes -``` - -## 📦 Implantando Aplicações (Deploy) - -### 1. Criar um Manifesto YAML -Crie um arquivo `meu-app.yaml`: - -```yaml -apiVersion: v1 -kind: Pod -metadata: - name: meu-nginx - labels: - app: nginx -spec: - containers: - - name: nginx - image: nginx:alpine - ports: - - containerPort: 80 ---- -apiVersion: v1 -kind: Service -metadata: - name: meu-nginx-svc -spec: - selector: - app: nginx - ports: - - port: 80 -``` - -### 2. Aplicar no Cluster -```bash -sudo k3s kubectl apply -f meu-app.yaml -``` - -## 🌐 Expondo via Ingress (Traefik) - -O K3s vem com Traefik habilitado. Para expor um serviço na porta 80/443 do host: - -```yaml -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: meu-nginx-ingress - annotations: - # Não precisa de annotations específicas para Traefik default no K3s -spec: - rules: - - host: meu-app.rede5.com.br - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: meu-nginx-svc - port: - number: 80 -``` - -## 🛠️ Comandos Úteis - -| Ação | Comando | -|------|---------| -| Ver Nós | `sudo k3s kubectl get nodes` | -| Ver Pods (Todos) | `sudo k3s kubectl get pods -A` | -| Ver Logs | `sudo k3s kubectl logs -f -n [namespace] [pod-name]` | -| Descrever Pod | `sudo k3s kubectl describe pod [pod-name]` | -| Reiniciar K3s | `sudo systemctl restart k3s` | -| Desinstalar | `/usr/local/bin/k3s-uninstall.sh` | diff --git a/k3s/roadmap_learning.md b/k3s/roadmap_learning.md deleted file mode 100644 index 8143c69..0000000 --- a/k3s/roadmap_learning.md +++ /dev/null @@ -1,87 +0,0 @@ -# Roadmap: Dominando Kubernetes (K3s) - -Como você já tem dois clusters K3s ativos (**Zeus** e **Posseidon**), este roadmap é focado em prática (Hands-on). O objetivo é sair do "zero" até o deploy profissional. - -## 🏁 Fase 1: Preparando sua Máquina (Local) - -Não gerencie o cluster apenas acessando via SSH (`ssh zeus`). Instale as ferramentas no seu Windows/Computador para pilotar de "fora". - -### O que instalar agora? -1. **Kubectl**: O "controle remoto" oficial. - * *Windows*: `winget install -e --id Kubernetes.kubectl` -2. **K9s**: Interface terminal "visual" (Indispensável para admins). Te economiza horas de digitação. - * *Windows*: `winget install -e --id Derailed.k9s` -3. **Helm**: Gerenciador de pacotes (o "apt/yum" do Kubernetes). - * *Windows*: `winget install -e --id Helm.Helm` - -> **Desafio 1**: Baixe o arquivo `/etc/rancher/k3s/k3s.yaml` do Zeus para sua máquina (em `~/.kube/config`), troque `127.0.0.1` pelo IP do Zeus e tente rodar `k9s` localmente. - ---- - -## 🚀 Fase 2: O Básico deworkloads (Pod & Service) - -Entenda os blocos fundamentais. Esqueça "serviços systemd", aqui tudo é objeto. - -### Conceitos para testar: -1. **Pod**: O menor item. Crie um Nginx simples. -2. **Deployment**: O gerenciador de pods (Replicas, Updates). Delete um pod e veja ele renascer "magicamente". -3. **Service (ClusterIP)**: O IP fixo interno para seus pods conversarem. - -> **Desafio 2**: Crie um arquivo `nginx.yaml` com Deployment + Service e aplique no cluster (`kubectl apply -f nginx.yaml`). - ---- - -## 🌐 Fase 3: Expondo para o Mundo (Ingress & Traefik) - -Seus clusters K3s já vêm com **Traefik**. Você não precisa instalar outro Ingress Controller. - -### O que estudar: -1. **Ingress Route**: Como mapear `meu-site.com` -> `Service do Nginx`. -2. **Certificados**: Como o Traefik lida com HTTPS (no K3s é um pouco diferente via CRDs ou Ingress padrão). - -> **Desafio 3**: Faça seu Nginx do desafio anterior responder em `http://teste.rede5.com.br` (apontando o DNS para o IP do Zeus). - ---- - -## 📦 Fase 4: Persistência (Storage) - -Containers são efêmeros (morrem e perdem dados). Bancos de dados precisam de disco. - -### Conceitos: -1. **PVC (Persistent Volume Claim)**: O "pedido" de disco. -2. **Storage Class**: O K3s usa o `local-path` (salva em `/var/lib/rancher/k3s/storage` no node). - -> **Desafio 4**: Suba um PostgreSQL que, mesmo se você deletar o pod, os dados continuem lá quando ele voltar. - ---- - -## 🛠️ Fase 5: Packagign com Helm - -Parar de escrever YAML na mão para tudo. - -### O que fazer: -1. Adicionar repositórios (Bitnami, etc). -2. Instalar softwares complexos com 1 comando: `helm install meu-redis bitnami/redis`. - ---- - -## 🤖 Fase 6: GitOps (Nível Avançado/Final) - -Aqui é onde brilha. Em vez de rodar `kubectl apply`, você commita no Git e o cluster se atualiza sozinho. - -### Ferramenta recomendada: **ArgoCD**. -É o padrão da indústria. Ele fica monitorando seu GitHub e sincroniza o cluster. - -> **Meta Final**: Ter um repositório git com toda a infra do Zeus/Posseidon definida lá. - ---- - -## Resumo do Kit de Iniciante - -| Ferramenta | Para que serve? | Instalar onde? | -|------------|-----------------|----------------| -| **kubectl** | Comandos básicos | Seu PC | -| **k3s** | O Cluster em si | Servidor (Já tem!) | -| **k9s** | Dashboard Turbo | Seu PC | -| **Traefik** | Porta de entrada (Reverse Proxy) | Servidor (Já vem no K3s) | -| **ArgoCD** | Automação de Deploy | Servidor (Futuro) | diff --git a/k3s/services_inventory.md b/k3s/services_inventory.md deleted file mode 100644 index 9ebfbf4..0000000 --- a/k3s/services_inventory.md +++ /dev/null @@ -1,29 +0,0 @@ -# Inventário de Workloads K3s - -Como ambos os clusters estão em estado "Pristine" (recém-instalados), apenas os workoads de sistema estão ativos. - -## ⚡ Cluster 1: Zeus -**Node**: `zeus.rede5.com.br` (Master) - -| Namespace | Pod Name | Status | Componente | -|-----------|----------|--------|------------| -| `kube-system` | `coredns` | Running | DNS Cluster Interno | -| `kube-system` | `traefik` | Running | Ingress Controller (Porta 80/443) | -| `kube-system` | `metrics-server` | Running | Coletor de métricas (CPU/RAM) | -| `kube-system` | `local-path-provisioner` | Running | Storage Class Default | - -## 🌊 Cluster 2: Posseidon -**Node**: `posseidon.rede5.com.br` (Master) - -| Namespace | Pod Name | Status | Componente | -|-----------|----------|--------|------------| -| `kube-system` | `coredns` | Running | DNS Cluster Interno | -| `kube-system` | `traefik` | Running | Ingress Controller (Porta 80/443) | -| `kube-system` | `metrics-server` | Running | Coletor de métricas (CPU/RAM) | -| `kube-system` | `local-path-provisioner` | Running | Storage Class Default | - -## Ingress Classes -Ambos utilizam `traefik` como Ingress Class padrão. - -## Storage Classes -Ambos possuem `local-path` configurado como default (`/var/lib/rancher/k3s/storage`). diff --git a/vps/apolo/README.md b/vps/apolo/README.md deleted file mode 100644 index 4a25d96..0000000 --- a/vps/apolo/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Infraestrutura Apolo VPS - -Documentação oficial do servidor **Apolo**, responsável por hospedar o ecossistema de produção/staging de diversas aplicações (SaveInMed, ObraMarket, Farmácia, etc.). - -## 🖥️ Acesso Rápido - -- [Arquitetura Detalhada](./architecture.md) - Diagrama de conexões e subsistemas. -- [Inventário de Serviços](./services_inventory.md) - Tabela de containers, portas mapeadas e domínios. -- [Guia de Deploy](./deployment_guide.md) - Padrões para publicação de serviços. - -## 📊 Especificações do Sistema - -| Propriedade | Valor | -|-------------|-------| -| **Hostname** | `apolo.rede5.com.br` | -| **IP Público** | `45.143.7.55` | -| **OS** | AlmaLinux 9.7 (Moss Jungle Cat) | -| **Kernel** | Linux 5.14.0 | -| **CPU** | AMD EPYC (Virtual) | -| **RAM** | 7.5 GB | -| **Disco** | 60 GB (33 GB usado) | - -## 🛠️ Stack Tecnológico - -- **Container Engine**: Podman (Rootless/Root). -- **Service Manager**: Systemd via **Quadlet**. -- **Reverse Proxy**: Traefik v3.0 (Gerencia HTTP/HTTPS e TCP). -- **Databases**: - - PostgreSQL 17 (Main) - - PostgreSQL 16 (Forgejo) - - Redis 7 (GoHorseJobs & Cache) -- **Registry**: Zot (Container Register Privado). -- **CI/CD**: Forgejo Runner. diff --git a/vps/apolo/architecture.md b/vps/apolo/architecture.md deleted file mode 100644 index 783ecac..0000000 --- a/vps/apolo/architecture.md +++ /dev/null @@ -1,137 +0,0 @@ -# Arquitetura do Sistema Apolo - -Diagrama detalhado dos serviços hospedados no servidor Apolo. - -```mermaid -flowchart LR - %% Nós Externos - Internet((Internet)) -->|HTTPS/443| T[Traefik Proxy] - Internet -->|SSH/2323| FG[Forgejo Git] - - %% Core Infra - subgraph Core ["Infraestrutura Core"] - direction TB - FG[Forgejo] - PGADM[pgAdmin] - ZOT[Zot Registry] - GL[Glances Mon] - runner[Forgejo Runner] - end - - %% Databases - subgraph Data ["Camada de Dados"] - PG[(PostgreSQL Main)] - PG_FG[(PostgreSQL Forgejo)] - RD[(Redis GoHorse)] - end - - %% SaveInMed Ecosystem - subgraph SaveInMed ["SaveInMed"] - SIM_BE[Backend API] - SIM_BO[Backoffice] - SIM_MK[Marketplace] - SIM_SD[Seeder] - SIM_WEB[Website] - end - - %% RodiziosDaqui Ecosystem - subgraph Rodizio ["Rodízios Daqui"] - RD_BE[Backend] - RD_BO[Backoffice] - RD_FE[Frontend] - RD_SD[Seeder] - end - - %% ObraMarket Ecosystem - subgraph Obra ["ObraMarket"] - OM_BE[Backend] - OM_BO[Backoffice] - OM_FE[Frontend] - OM_SD[Seeder] - end - - %% Outros Apps - subgraph Apps ["Outras Aplicações"] - FARM_BE[Farmácia Backend] - FARM_FE[Farmácia Frontend] - VEST_BE[Vestuário Backend] - VEST_FE[Vestuário Frontend] - Q1_BE[Q1 Agenda BE] - Q1_FE[Q1 Agenda FE] - end - - %% Roteamento Traefik - T --> FG - T --> PGADM - T --> ZOT - T --> GL - - T --> SIM_BE - T --> SIM_BO - T --> SIM_MK - T --> SIM_SD - T --> SIM_WEB - - T --> RD_BE - T --> RD_BO - T --> RD_FE - T --> RD_SD - - T --> OM_BE - T --> OM_BO - T --> OM_FE - T --> OM_SD - - T --> FARM_BE - T --> FARM_FE - T --> VEST_BE - T --> VEST_FE - T --> Q1_BE - T --> Q1_FE - - %% TCP Routing (Bancos expostos) - T -.->|TCP/27537| PG - T -.->|TCP/26380| RD - - %% Conexões de Dados - FG --> PG_FG - runner --> FG - - SIM_BE --> PG - SIM_BO --> PG - SIM_SD --> PG - - RD_BE --> PG - RD_BO --> PG - RD_SD --> PG - - OM_BE --> PG - OM_BO --> PG - OM_SD --> PG - - FARM_BE --> PG - VEST_BE --> PG - Q1_BE --> PG - - %% Legenda de Estilo - linkStyle default stroke-width:1px,fill:none,stroke:gray; -``` - -## Descrição dos Subsistemas - -### 🌐 Traefik Proxy -O Traefik atua como gateway principal. Além de rotear tráfego HTTP/HTTPS (portas 80/443), ele também expõe serviços TCP como banco de dados (27537) e Redis (26380) para acesso externo controlado. - -### 🏭 Infraestrutura & CI/CD -- **Forgejo**: Servidor Git self-hosted (codeberg fork). Possui banco de dados próprio (`forgejo-db`). -- **Zot**: Registry de containers para imagens privadas. -- **Glances**: Monitoramento de recursos do servidor. - -### 🏥 SaveInMed -Ecossistema completo de saúde, incluindo Backend, Backoffice administrativo, Marketplace e Site institucional. - -### 🏗️ ObraMarket e 🍕 RodíziosDaqui -Plataformas que seguem arquitetura similar: Backend API, Backoffice Admin, Frontend Web e Seeder (para popular dados). - -### 🛒 Farmácia e Vestuário -Lojas/Apps específicos, compostos por pares de Backend/Frontend. diff --git a/vps/apolo/deployment_guide.md b/vps/apolo/deployment_guide.md deleted file mode 100644 index 8924605..0000000 --- a/vps/apolo/deployment_guide.md +++ /dev/null @@ -1,132 +0,0 @@ -# Guia de Deploy e Manutenção - Apolo - -Este guia descreve o processo completo para implantar, atualizar e manter serviços na VPS Apolo utilizando Podman e Quadlet, seguindo o padrão da infraestrutura. - -## 🚀 Adicionando um Novo Serviço - -O **Quadlet** permite declarar containers como serviços `systemd`. Siga estes passos para criar um novo. - -### 1. Preparação -Escolha onde o arquivo ficará: -- **Global (Root)**: `/etc/containers/systemd/` (Padrão para serviços core/produção). -- **Usuário**: `~/.config/containers/systemd/` (Recomendado para experimentos ou serviços pessoais). - -> **Nota:** A maioria dos serviços no Apolo roda como **root** em `/etc/containers/systemd/` para acesso facilitado a portas baixas e volumes globais, mas o modo rootless é suportado. - -### 2. Criar o Arquivo `.container` - -Crie um arquivo com sufixo `.container`, por exemplo, `meu-app.container`. - -```ini -[Unit] -Description=Meu App Exemplo -After=network-online.target - -[Container] -# 1. Imagem Docker -Image=docker.io/minha-empresa/meu-app:latest -AutoUpdate=registry - -# 2. Variáveis de Ambiente -Environment=PORT=3000 -Environment=DB_HOST=postgres-main - -# 3. Persistência (opcional) -Volume=/mnt/data/meu-app:/app:Z -# Explicação: -# - /mnt/data/meu-app : Pasta no Host (Servidor) -# - /app : Pasta dentro do Container -# - :Z : Configura permissão SELinux (Essencial no AlmaLinux) - -# 4. Rede e Exposição (Traefik) -Network=web_proxy -Label=traefik.enable=true - -# Roteamento de Host (URL) -Label=traefik.http.routers.meu-app.rule=Host(`app.rede5.com.br`) -Label=traefik.http.routers.meu-app.entrypoints=websecure -Label=traefik.http.routers.meu-app.tls.certresolver=myresolver - -# Porta Interna do Container (Load Balancer) -Label=traefik.http.services.meu-app.loadbalancer.server.port=3000 - -# Middleware (Ex: Redirect HTTP->HTTPS) - Opcional se entrypoints já for websecure -# Label=traefik.http.middlewares.https-redirect.redirectscheme.scheme=https - -[Install] -WantedBy=multi-user.target -``` - -### 3. Aplicar as Alterações - -O systemd precisa ler o novo arquivo e gerar o serviço correspondente. - -```bash -# Se criado como Root (Padrão Apolo) -sudo systemctl daemon-reload -sudo systemctl start meu-app - -# Se criado como Usuário -systemctl --user daemon-reload -systemctl --user start meu-app -``` - ---- - -## 🔄 Atualizando um Serviço - -Se a imagem estiver configurada com `AutoUpdate=registry`, o Podman pode atualizar automaticamente. Para fazer manual: - -1. **Baixar nova imagem**: `podman pull docker.io/minha-empresa/meu-app:latest` -2. **Reiniciar serviço**: `systemctl restart meu-app` - ---- - -## 🛠️ Troubleshooting - -### Verificar Status do Serviço -```bash -systemctl status meu-app -``` - -### Ver Logs da Aplicação -```bash -# Follow logs em tempo real -journalctl -f -u meu-app - -# Ver logs anteriores -journalctl -u meu-app -n 100 -``` - -### O Container não sobe? -1. Verifique erros de sintaxe no arquivo `.container`: - ```bash - /usr/libexec/podman/quadlet -dryrun - ``` -2. Verifique se a porta está em uso. -3. Verifique se a imagem existe e foi baixada. - -### O domínio não responde (Erro 404/502)? -1. Verifique se o container está na rede `web_proxy`. -2. Confira se a `port` no Label do Traefik bate com a porta que a aplicação escuta internamente. -3. Veja os logs do Traefik: `journalctl -f -u traefik` - ---- - -## 📂 Estrutura de Diretórios Recomendada - -Mantenha os volumes organizados em `/mnt/data/`: - -```text -/mnt/data/ -├── postgres-general/ # Banco de Dados Principal -├── redis-gohorsejobs/ # Redis Dedicado -├── saveinmed/ -│ ├── backend/ -│ │ └── .env -│ ├── marketplace/ -│ └── ... -├── farmacia/ -├── obramarket/ -└── [nome-do-projeto]/ -``` diff --git a/vps/apolo/services_inventory.md b/vps/apolo/services_inventory.md deleted file mode 100644 index d9dc797..0000000 --- a/vps/apolo/services_inventory.md +++ /dev/null @@ -1,56 +0,0 @@ -# Inventário de Serviços Apolo - -## Tabela Geral de Serviços - -| Serviço | Container | Domínio / URL | Porta Interna | Banco de Dados | -|---------|-----------|---------------|:-------------:|----------------| -| **Traefik** | `traefik` | n/a | 80/443 | - | -| **Forgejo Git** | `forgejo` | `forgejo-gru.rede5.com.br` | 3000 | `forgejo-db` | -| **Forgejo SSH** | `forgejo` | `forgejo-gru.rede5.com.br` | 22 (Ext: 2323) | - | -| **Zot Registry** | `zot` | `zot-gru.rede5.com.br` | 5000 | - | -| **pgAdmin** | `pgadmin` | `pgadmin.rede5.com.br` | 80 | - | -| **Glances** | `glances` | `gms1.rede5.com.br` | 61208 | - | -| **Farmácia BE** | `farmacia-backend` | `api.farmacia.rede5.com.br` | 8080 | Postgres Main | -| **Farmácia FE** | `farmacia-frontend` | `farmacia.rede5.com.br` | 3000 | - | -| **ObraMarket BE** | `obramarket-backend` | `api.obramarket.rede5.com.br` | 8158 | Postgres Main | -| **ObraMarket BO** | `obramarket-backoffice` | `admin.obramarket.rede5.com.br` | 3000 | - | -| **ObraMarket FE** | `obramarket-frontend` | `obramarket.rede5.com.br` | 80 | - | -| **Q1Agenda BE** | `q1agenda-backend-dev` | `api-dev.q1agenda.com.br` | 8000 | Postgres Main | -| **Q1Agenda FE** | `q1agenda-frontend-dev` | `dev.q1agenda.com.br` | 3000 | - | -| **Rodízios BE** | `rodiziosdaqui-backend` | `api.rodiziosdaqui.rede5.com.br` | 8080 | Postgres Main | -| **Rodízios BO** | `rodiziosdaqui-backoffice` | `backoffice.rodiziosdaqui...` | 8082 | - | -| **Rodízios FE** | `rodiziosdaqui-frontend` | `rodiziosdaqui.rede5.com.br` | 3000 | - | -| **SaveInMed BE**| `saveinmed-backend-dev` | `api.saveinmed.com.br` | 8214 | Postgres Main | -| **SaveInMed BO**| `saveinmed-backoffice-dev` | `admin.saveinmed.com.br` | 3000 | - | -| **SaveInMed MK**| `saveinmed-marketplace-dev`| `app.saveinmed.com.br` | 3000 | - | -| **SaveInMed Site**| `saveinmed-website-dev` | `saveinmed.com.br` | 8000 | - | -| **Vestuário BE**| `vestuario-backend` | `api.vestuario.rede5.com.br` | 8000 | Postgres Main | -| **Vestuário FE**| `vestuario-frontend` | `vestuario.rede5.com.br` | 3000 | - | - -## Infraestrutura de Dados - -### PostgreSQL Main (`postgres-main`) -- **Versão**: 17-alpine -- **Exposição**: Interna (5432) e Externa via Traefik (TCP 27537). -- **Volume**: `/mnt/data/postgres-general` - -### PostgreSQL Forgejo (`forgejo-db`) -- **Versão**: 16-alpine -- **Uso**: Exclusivo para o Forgejo. -- **Volume**: `/mnt/data/postgres-forgejo` - -### Redis GoHorseJobs (`redis-gohorsejobs`) -- **Config**: Persistência ativada (`appendonly yes`), limite 128MB. -- **Exposição**: Interna (6379) e Externa via Traefik (TCP 26380). -- **Volume**: `/mnt/data/redis-gohorsejobs` - -## Portas Públicas Publicadas (Node Ports) - -Alguns containers publicam portas diretamente no host (além do Traefik), mas o acesso ideal é via domínio. - -- **80/443**: Traefik (Web) -- **2323**: Forgejo SSH -- **12110/12112**: Farmácia -- **12120/12123**: RodíziosDaqui -- **8214**: SaveInMed Backend -- **12111/12113**: Vestuário diff --git a/vps/nc1/README.md b/vps/nc1/README.md deleted file mode 100644 index b3a6e13..0000000 --- a/vps/nc1/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Documentação Infraestrutura NC1 - -Bem-vindo à documentação oficial da VPS **NC1**. A infraestrutura é baseada em containers (Podman) gerenciados via systemd (Quadlet), utilizando Traefik como proxy reverso. - -## 🖥️ Acesso Rápido - -- [Arquitetura do Sistema](./architecture.md) - Diagramas e fluxo de dados. -- [Inventário de Serviços](./services_inventory.md) - Lista de containers, portas e domínios. -- [Guia de Deploy](./deployment_guide.md) - Como publicar novos serviços. - -## 📊 Especificações do Servidor - -| Propriedade | Valor | -|-------------|-------| -| **Hostname** | v2202508247812376908 | -| **IP Público** | 185.194.141.70 | -| **OS** | AlmaLinux 10.1 (Heliotrope) | -| **Kernel** | Linux 5.x x86_64 | -| **CPU** | AMD EPYC-Rome Processor | -| **RAM** | 7.5 GB | -| **Disco** | 254 GB (SSD) | - -## 🛠️ Stack Tecnológico - -- **Runtime**: Podman (compatível com Docker). -- **Orquestração**: Quadlet (Systemd generator). -- **Proxy/LB**: Traefik v3.0. -- **Banco de Dados**: PostgreSQL (Compartilhado). -- **Cache**: Redis. - -> **Nota:** Os arquivos de configuração dos containers (Quadlets) estão localizados em `/etc/containers/systemd/` (root) e `~/.config/containers/systemd/` (usuário). diff --git a/vps/nc1/architecture.md b/vps/nc1/architecture.md deleted file mode 100644 index 235035b..0000000 --- a/vps/nc1/architecture.md +++ /dev/null @@ -1,157 +0,0 @@ -# Arquitetura do Sistema NC1 - -Este documento detalha a topologia dos serviços, fluxo de rede e componentes da infraestrutura. - -## Diagrama de Arquitetura - -O diagrama abaixo ilustra a comunicação entre o proxy reverso (Traefik), serviços de aplicação, bancos de dados e ferramentas de suporte. - -```mermaid -flowchart LR - %% Nós Externos - Internet((Internet)) -->|HTTPS/443| T[Traefik Proxy] - - %% Core Infrastructure - subgraph Support ["Infraestrutura de Suporte"] - direction TB - VW[Vaultwarden] - FG[Forgejo Git] - PG[(PostgreSQL)] - RD[(Redis)] - end - - %% Core Services - subgraph Core ["Core Platform"] - CIG[Identity Gateway] - CPP[Platform Projects] - CDB[Core Dashboard] - end - - %% SaveInMed Ecosystem - subgraph SaveInMed ["Ecosistema SaveInMed"] - SIMB[Backend API] - SIMM[Marketplace] - end - - %% Q1 Connect Ecosystem - subgraph Q1 ["Q1 Connect"] - direction TB - subgraph Q1Apps ["Apps"] - Q1FOOD[Food Backend] - Q1VEST[Vestuário/Store] - Q1ABE[Agenda Backend] - Q1AFE[Agenda Frontend] - end - subgraph Q1Management ["Gestão"] - Q1BE[Total Backend] - Q1DB[Total Dashboard] - end - end - - %% Sextando Ecosystem - subgraph Sextando ["Sextando"] - SXBE[Backend API] - SXFE[Frontend Web] - end - - %% Invent Ecosystem - subgraph Invent ["Invent Finance"] - INVBE[Backend API] - INVFE[Frontend App] - end - - %% Virtual Fashion Ecosystem - subgraph VFashion ["Virtual Fashion"] - VFBE[Backend API] - VFFE[Frontend Web] - VFMIN[MinIO Storage] - end - - %% Invoice Ninja Ecosystem - subgraph InvoiceNinja ["Invoice Ninja"] - INAPP[App FPM] - INWEB[Web Nginx] - INDB[(MariaDB)] - end - - %% Rotas do Traefik - T --> VW - T --> FG - T --> CIG - T --> CPP - T --> CDB - T --> SIMB - T --> SIMM - T --> INVBE - T --> INVFE - T --> Q1BE - T --> Q1DB - T --> Q1FOOD - T --> Q1VEST - T --> Q1ABE - T --> Q1AFE - T --> SXBE - T --> SXBE - T --> SXFE - T --> VFBE - T --> VFFE - T --> VFMIN - T --> INWEB - - %% Conexões de Banco de Dados (Link Styles) - linkStyle default stroke-width:2px,fill:none,stroke:gray; - - %% Dependências de Dados - CIG -.-> PG - CPP -.-> PG - INVBE -.-> PG - Q1BE -.-> PG - Q1FOOD -.-> PG - Q1VEST -.-> PG - Q1ABE -.-> PG - SXBE -.-> PG - SIMB === PG - SIMB === PG - SIMB === RD - VFBE -.-> PG - INAPP === INDB -``` - -## Descrição dos Componentes - -### 🌐 Gateway & Proxy -- **Traefik**: Ponto de entrada único (Entrypoint). Gerencia certificados SSL (Let's Encrypt), roteamento de host e load balancing. Escuta nas portas 80 (Redirect) e 443 (HTTPS). - -### 🔐 Segurança & Identidade -- **Core Identity Gateway**: Responsável pela autenticação centralizada e gestão de tokens. -- **Vaultwarden**: Gerenciador de senhas para a equipe (compatível com Bitwarden). - -### 🏥 SaveInMed -Plataforma principal de gestão médica e marketplace. -- **Backend API**: Serviço core, utiliza Redis para cache de sessões/dados e PostgreSQL para persistência. -- **Marketplace**: Interface de vendas e catálogo. - -### 🛍️ Q1 Connect -Suíte de aplicativos de comércio e agendamento. -- **Total**: Backend administrativo e Dashboard. -- **Setoriais**: APIs específicas para Food, Vestuário/Store e Agenda. - -### 🛒 Sextando & Vestuário -Plataformas de e-commerce. Backend em Go, Frontend em Node.js/React. - -### 💰 Invent Finance -Sistema financeiro com separação clara entre Backend e Frontend. - -### 👗 Virtual Fashion -Plataforma de moda virtual. -- **Backend/Frontend**: Node.js/Next.js. -- **Armazenamento**: MinIO para assets 3D/Imagens. - -### 🧾 Invoice Ninja -Sistema de faturamento e gestão. -- **Stack**: PHP (App), Nginx (Web), MariaDB (Banco Dedicado). - -## Infraestrutura de Dados - -- **PostgreSQL**: Instância única compartilhada entre todos os serviços (exceto Vaultwarden que pode ter seu próprio banco ou schema). -- **Redis**: Sistema de cache em memória, utilizado intensivamente pelo SaveInMed para alta performance. diff --git a/vps/nc1/deployment_guide.md b/vps/nc1/deployment_guide.md deleted file mode 100644 index 3f0a4d7..0000000 --- a/vps/nc1/deployment_guide.md +++ /dev/null @@ -1,145 +0,0 @@ -# Guia de Deploy e Manutenção - NC1 - -Este guia descreve o processo completo para implantar, atualizar e manter serviços na VPS NC1 utilizando Podman e Quadlet. - -## 🚀 Adicionando um Novo Serviço - -O **Quadlet** permite declarar containers como serviços `systemd`. Siga estes passos para criar um novo. - -### 1. Preparação -Escolha onde o arquivo ficará: -- **Global (Root)**: `/etc/containers/systemd/` (Recomendado para infraestrutura core). -- **Usuário**: `~/.config/containers/systemd/` (Recomendado para aplicações). - -### 2. Criar o Arquivo `.container` - -Crie um arquivo com sufixo `.container`, por exemplo, `meu-app.container`. - -```ini -[Unit] -Description=Meu App Exemplo -After=network-online.target - -[Container] -# 1. Imagem Docker -Image=docker.io/minha-empresa/meu-app:latest -AutoUpdate=registry - -# 2. Variáveis de Ambiente -Environment=PORT=3000 -Environment=DB_HOST=postgres-main - -# 3. Persistência (opcional) -Volume=/mnt/data/meu-app:/app:Z -# Explicação: -# - /mnt/data/meu-app : Pasta no Host (Servidor) -# - /app : Pasta dentro do Container -# - :Z : Configura permissão SELinux (Essencial no AlmaLinux) - -# 4. Rede e Exposição (Traefik) -Network=web_proxy -Label=traefik.enable=true - -# Roteamento de Host (URL) -Label=traefik.http.routers.meu-app.rule=Host(`app.rede5.com.br`) -Label=traefik.http.routers.meu-app.entrypoints=websecure -Label=traefik.http.routers.meu-app.tls.certresolver=myresolver - -# Porta Interna do Container (Load Balancer) -Label=traefik.http.services.meu-app.loadbalancer.server.port=3000 - -# Middleware (Ex: Redirect HTTP->HTTPS) - Opcional se entrypoints já for websecure -# Label=traefik.http.middlewares.https-redirect.redirectscheme.scheme=https - -[Install] -WantedBy=multi-user.target -``` - -### 3. Aplicar as Alterações - -O systemd precisa ler o novo arquivo e gerar o serviço correspondente. - -```bash -# Se criado como Root -sudo systemctl daemon-reload -sudo systemctl start meu-app - -# Se criado como Usuário -systemctl --user daemon-reload -systemctl --user start meu-app -``` - ---- - -## 🔄 Atualizando um Serviço - -Se a imagem estiver configurada com `AutoUpdate=registry`, o Podman pode atualizar automaticamente. Para fazer manual: - -1. **Baixar nova imagem**: `podman pull docker.io/minha-empresa/meu-app:latest` -2. **Reiniciar serviço**: `systemctl restart meu-app` - ---- - -## 🛠️ Troubleshooting - -### Verificar Status do Serviço -```bash -systemctl status meu-app -``` - -### Ver Logs da Aplicação -```bash -# Follow logs em tempo real -journalctl -f -u meu-app - -# Ver logs anteriores -journalctl -u meu-app -n 100 -``` - -### O Container não sobe? -1. Verifique erros de sintaxe no arquivo `.container`: - ```bash - /usr/libexec/podman/quadlet -dryrun - ``` -2. Verifique se a porta está em uso. -3. Verifique se a imagem existe e foi baixada. - -### O domínio não responde (Erro 404/502)? -1. Verifique se o container está na rede `web_proxy`. -2. Confira se a `port` no Label do Traefik bate com a porta que a aplicação escuta internamente. -3. Veja os logs do Traefik: `journalctl -f -u traefik` - ---- - -## e 💡 Boas Práticas (Patterns) - -### Resiliência (Restart Policy) -Para garantir que o serviço suba automaticamente após falhas ou reboots: -```ini -[Service] -Restart=always -``` - -### Timeouts para Imagens Grandes -Se a imagem for grande (ex: Invoice Ninja, AI Models) e a rede lenta, aumente o timeout de inicialização para evitar que o systemd mate o processo durante o pull: -```ini -[Service] -TimeoutStartSec=900 -``` - ---- - -## 📂 Estrutura de Diretórios Recomendada - -Mantenha os volumes organizados em `/mnt/data/`: - -```text -/mnt/data/ -├── postgres/ # Dados do Banco -├── redis/ # Dados do Cache -├── saveinmed/ -│ ├── backend/ -│ └── uploads/ -└── [nome-do-projeto]/ - └── [tipo-de-dado]/ -``` diff --git a/vps/nc1/nc1.md b/vps/nc1/nc1.md deleted file mode 100644 index 6b3f78e..0000000 --- a/vps/nc1/nc1.md +++ /dev/null @@ -1,246 +0,0 @@ -# NC1 VPS - Documentação de Infraestrutura - -## Informações do Sistema - -| Propriedade | Valor | -|-------------|-------| -| **Hostname** | v2202508247812376908 | -| **IP Público** | 185.194.141.70 | -| **Sistema Operacional** | AlmaLinux 10.1 (Heliotrope) | -| **Kernel** | Linux 5.x x86_64 | -| **CPU** | AMD EPYC-Rome Processor | -| **Memória RAM** | 7.5 GB | -| **Disco** | 254 GB (31 GB usado, ~13%) | - ---- - -## Arquitetura de Containers - -```mermaid -flowchart LR - T[Traefik] - PG[(PostgreSQL)] - RD[(Redis)] - FG[Forgejo] - VW[Vaultwarden] - - subgraph Core - CIG[Identity Gateway] - CPP[Platform Projects] - CDB[Core Dashboard] - end - - subgraph SaveInMed - SIMB[Backend] - SIMM[Marketplace] - end - - subgraph Invent["Invent Finance"] - INVBE[Backend] - INVFE[Frontend] - end - - subgraph Q1["Q1 Total/Food/Store"] - Q1BE[Total Backend] - Q1DB[Total Dashboard] - Q1FOOD[Food Backend] - Q1VEST[Vestuario Backend] - end - - subgraph Q1Agenda ["Q1 Agenda"] - Q1ABE[Backend] - Q1AFE[Frontend] - end - - subgraph Sextando - SXBE[Backend] - SXFE[Frontend] - end - - subgraph VirtualFashion - VFBE[Backend] - VFFE[Frontend] - VFMIN[MinIO] - end - - subgraph InvoiceNinja - INWEB[Web] - INAPP[App] - INDB[(MariaDB)] - end - - T --> VW - T --> FG - T --> CIG - T --> CPP - T --> CDB - T --> SIMB - T --> SIMM - T --> INVBE - T --> INVFE - T --> Q1BE - T --> Q1DB - T --> Q1FOOD - T --> Q1VEST - T --> Q1ABE - T --> Q1AFE - T --> SXBE - T --> SXFE - T --> VFBE - T --> VFFE - T --> VFMIN - T --> INWEB - - CIG --> PG - CPP --> PG - INVBE --> PG - Q1BE --> PG - Q1FOOD --> PG - Q1VEST --> PG - Q1ABE --> PG - SXBE --> PG - SIMB --> PG - SIMB --> RD - VFBE --> PG - INAPP --> INDB -``` - -> **Nota:** O cluster **Redis** é utilizado principalmente pelo **SaveInMed Backend** e outros serviços que requerem cache. Todos compartilham a mesma instância do **PostgreSQL**. - ---- - -## Mapeamento de Domínios (HML/Dev) - -| Serviço | URL / Domínio | Porta Interna | -|---------|---------------|---------------| -| **Core Identity** | `ig-dev.rede5.com.br` | 4000 | -| **Core Platform** | `platform-projects-core-dev.rede5.com.br` | 8080 | -| **SaveInMed Backend** | `api-dev.saveinmed.com.br` | 8214 | -| **SaveInMed Market** | `marketplace-dev.saveinmed.com.br` | 5173 | -| **Invent Backend** | `invent-api-dev.rede5.com.br` | 4763 | -| **Invent Frontend** | `invent-dev.rede5.com.br` | 3785 | -| **Q1 Total Backend** | `api-dev.q1-total.com.br` | 8000 | -| **Q1 Total Dash** | `dashboard-dev.q1-total.com.br` | 5173 | -| **Q1 Food Backend** | `api-dev.q1food.com` | 8003 | -| **Q1 Store/Vest** | `api-dev.q1store.me` | 8002 | -| **Q1 Agenda Backend** | `api-dev.q1agenda.com.br` | 8000* | -| **Q1 Agenda Frontend**| `dev.q1agenda.com.br` | 3000 | -| **Sextando API** | `api-dev.sextando.com.br` | 8080 | -| **Sextando Web** | `dev.sextando.com.br` | 3001 | -| **Virtual Fashion API** | `api.virtualfashion.com.br` | 8000 | -| **Virtual Fashion Web** | `virtualfashion.com.br` | 3000 | -| **Virtual Fashion MinIO**| `minio.virtualfashion.com.br` | 9000 | -| **Invoice Ninja** | `invoiceninja.nc1.rede5.com.br` | 80 | -| **Vaultwarden** | `vault.rede5.com.br` | 80 | - ---- - -## Containers Podman (Rodando) - -| Container | Descrição | -|-----------|-----------| -| `traefik` | Reverse proxy e load balancer | -| `postgres-main` | Banco de dados PostgreSQL principal | -| `redis-saveinmed` | Cache Redis para SaveInMed | -| `forgejo` | Git server self-hosted | -| `vaultwarden` | Gerenciador de senhas | -| `core-identity-gateway-dev` | Core Identity Gateway (HML) | -| `core-platform-projects-core-dev` | Core Platform Projects (HML) | -| `core-dashboard-dev` | Core Dashboard (HML) | -| `saveinmed-backend-dev` | SaveInMed Backend (HML) | -| `saveinmed-marketplace-dev` | SaveInMed Marketplace (HML) | -| `invent-finance-backend-dev` | Invent Finance Backend (HML) | -| `invent-finance-frontend-dev` | Invent Finance Frontend (HML) | -| `sextando-backend-dev` | Sextando Backend (HML) | -| `sextando-frontend-dev` | Sextando Frontend (HML) | -| `vestuario-backend-dev` | Q1 Store/Vestuário (HML) | -| `food-backend-dev` | Q1 Food Backend (HML) | -| `q1-total-backend-dev` | Q1 Total Backend (HML) | -| `q1-total-dashboard-dev` | Q1 Total Dashboard (HML) | -| `q1agenda-backend-dev` | Q1 Agenda Backend (HML) | -| `q1agenda-frontend-dev` | Q1 Agenda Frontend (HML) | -| `virtual-fashion-backend`| Virtual Fashion Backend | -| `virtual-fashion-frontend`| Virtual Fashion Frontend | -| `virtual-fashion-minio` | Virtual Fashion Object Storage | -| `invoiceninja-app` | Invoice Ninja App (PHP) | -| `invoiceninja-web` | Invoice Ninja Web (Nginx) | -| `invoiceninja-db` | Invoice Ninja Database (MariaDB) | -| `pgadmin` | Administração PostgreSQL | -| `glances` | Monitoramento de sistema | - ---- - -## Quadlet Files (Systemd Units) - -Localização: -- Root: `/etc/containers/systemd/` -- User: `~/.config/containers/systemd/` - ---- - -## Fluxo de Rede - -```mermaid -flowchart LR - Internet((Internet)) -->|443/80| T[Traefik] - - T -->|8080| VW[Vaultwarden] - T -->|3000| FG[Forgejo] - T -->|8214| SIMB[SaveInMed] - T -->|8002| Q1[Q1 Services] - - PG[(PostgreSQL)] - RD[(Redis)] - - SIMB --> PG - SIMB --> RD - Q1 --> PG -``` - ---- - -## Guia - Adicionar Novo Serviço (Quadlet) - -Para adicionar um novo serviço nesta VPS, utilizamos o **Quadlet** (Systemd Generator para Podman). Isso garante que os containers iniciem automaticamente no boot e sejam gerenciados como serviços do sistema. - -### 1. Criar arquivo .container - -Crie um arquivo em `/etc/containers/systemd/` (para root) ou `~/.config/containers/systemd/` (para seu usuário). O nome do arquivo deve ser `seuservico.container`. - -Exemplo: `novo-app-dev.container` -```ini -[Unit] -Description=Meu Novo App Dev -After=network-online.target - -[Container] -Image=docker.io/minha-imagem:latest -# Se precisar declarar variáveis de ambiente -Environment=PORT=8080 -# Conectar à rede do proxy -Network=web_proxy - -# Labels para o Traefik (Expõe o serviço na web) -Label=traefik.enable=true -Label=traefik.http.routers.meu-app-dev.rule=Host(`meu-app-dev.rede5.com.br`) -Label=traefik.http.routers.meu-app-dev.entrypoints=websecure -Label=traefik.http.routers.meu-app-dev.tls.certresolver=myresolver -Label=traefik.http.services.meu-app-dev.loadbalancer.server.port=8080 - -[Install] -WantedBy=multi-user.target -``` - -### 2. Ativar o serviço - -Após criar o arquivo, recarregue o daemon do systemd para gerar o arquivo de serviço, e então inicie: - -```bash -# Se o arquivo estiver em /etc/containers/systemd/ (Root) -sudo systemctl daemon-reload -sudo systemctl start novo-app-dev - -# Se estiver na home do usuário (Rootless) -systemctl --user daemon-reload -systemctl --user start novo-app-dev -``` diff --git a/vps/nc1/services_inventory.md b/vps/nc1/services_inventory.md deleted file mode 100644 index f42fb7b..0000000 --- a/vps/nc1/services_inventory.md +++ /dev/null @@ -1,53 +0,0 @@ -# Inventário de Serviços NC1 - -## Tabela de Serviços e Domínios - -| Container | URL Principal | Porta Interna | Banco de Dados | Linguagem/Stack | -|-----------|---------------|:-------------:|----------------|-----------------| -| **Traefik** | `n/a` | 80/443 | - | Go | -| **Vaultwarden** | `vault.rede5.com.br` | 80 | interna | Rust | -| **Forgejo** | `git.rede5.com.br` | 3000 | Postgres | Go | -| **Core Identity** | `ig-dev.rede5.com.br` | 4000 | Postgres | Node.js | -| **Platform Projects** | `platform-projects-core-dev.rede5.com.br` | 8080 | Postgres | Node.js | -| **Core Dash** | `dashboard-dev.q1-total.com.br`* | 5173 | - | Node.js/React | -| **SaveInMed BE** | `api-dev.saveinmed.com.br` | 8214 | Postgres + Redis | Node.js | -| **SaveInMed Market**| `marketplace-dev.saveinmed.com.br` | 5173 | - | Node.js/React | -| **Q1 Food** | `api-dev.q1food.com` | 8003 | Postgres | Go | -| **Q1 Store** | `api-dev.q1store.me` | 8002 | Postgres | Go | -| **Q1 Agenda BE** | `api-dev.q1agenda.com.br` | 8000 | Postgres | Python | -| **Q1 Agenda FE** | `dev.q1agenda.com.br` | 3000 | - | Node.js/React | -| **Sextando BE** | `api-dev.sextando.com.br` | 8080 | Postgres | Go | -| **Sextando FE** | `dev.sextando.com.br` | 3001 | - | Node.js/React | -| **Invent BE** | `invent-api-dev.rede5.com.br` | 4763 | Postgres | Node.js | -| **Invent FE** | `invent-dev.rede5.com.br` | 3785 | - | Node.js/Next | -| **Virtual Fashion BE** | `api.virtualfashion.com.br` | 8000 | Postgres | Node.js | -| **Virtual Fashion FE** | `virtualfashion.com.br` | 3000 | - | Node.js/Next | -| **Virtual Fashion MinIO** | `minio.virtualfashion.com.br` | 9000 | - | MinIO | -| **Invoice Ninja Web** | `invoiceninja.nc1.rede5.com.br` | 80 | MariaDB | PHP/Nginx | - -> (*) Verificar se este domínio está correto ou compartilhado. - -## Infraestrutura de Dados - -### PostgreSQL -- **Container**: `postgres-main` -- **Versão**: 15 (aprox) -- **Porta**: 5432 (Rede Interna) / 443 (Externo via Traefik TCP) -- **Volumes**: `/mnt/data/postgres:/var/lib/postgresql/data` -- **Acesso Externo**: `db.nc1.rede5.com.br` (SSL/TLS) - -### Redis -- **Container**: `redis-saveinmed` -- **Porta**: 6379 (Rede Interna) -- **Uso Principal**: Cache de sessão SaveInMed. - -## Volumes e Persistência - -A maioria dos serviços utiliza volumes bind-mounted em `/mnt/data/`. - -- **Caminho Base**: `/mnt/data/` -- **Exemplo**: `/mnt/data/saveinmed/backend:/app` - -## Redes Podman - -- **web_proxy**: Rede pública interna onde o Traefik roteia o tráfego. Todos os serviços expostos na web devem estar nesta rede. diff --git a/vps/redbull/README.md b/vps/redbull/README.md index b18102e..687d46d 100644 --- a/vps/redbull/README.md +++ b/vps/redbull/README.md @@ -66,7 +66,7 @@ O servidor Redbull é uma infraestrutura de desenvolvimento que hospeda múltipl ```bash # Token de autenticação TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9" -URL="http://185.194.141.70:8000/api/v1" +URL="https://redbull.rede5.com.br/api/v1" # Deploy de uma aplicação curl -s -H "Authorization: Bearer $TOKEN" \ @@ -114,7 +114,7 @@ curl -s -X DELETE -H "X-Auth-Email: $CF_AUTH_EMAIL" -H "X-Auth-Key: $CF_AUTH_KEY ### CI/CD Automático via Webhook Os webhooks GitHub estão configurados para deploy automático: - Push na branch `dev` → Deploy automático no Coolify -- URL do webhook: `http://185.194.141.70:8000/api/v1/webhook/github?uuid=&secret=` +- URL do webhook: `https://redbull.rede5.com.br/api/v1/webhook/github?uuid=&secret=` ## Acesso SSH diff --git a/vps/redbull/coolify-api.md b/vps/redbull/coolify-api.md index d7a39b1..3108b82 100644 --- a/vps/redbull/coolify-api.md +++ b/vps/redbull/coolify-api.md @@ -2,7 +2,7 @@ ## Base URL ``` -http://185.194.141.70:8000/api/v1 +https://redbull.rede5.com.br/api/v1 ``` ## Authentication @@ -17,33 +17,33 @@ Token: `2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9` ### List all applications ```bash -curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "http://185.194.141.70:8000/api/v1/applications" +curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "https://redbull.rede5.com.br/api/v1/applications" ``` ### Deploy by UUID ```bash # Frontend -curl -s -X GET -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deploy?uuid=ao8g40scws0w4cgo8coc8o40" +curl -s -X GET -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/deploy?uuid=ao8g40scws0w4cgo8coc8o40" # Backend -curl -s -X GET -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deploy?uuid=iw4sow8s0kkg4cccsk08gsoo" +curl -s -X GET -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/deploy?uuid=iw4sow8s0kkg4cccsk08gsoo" ``` ### Check deployment status ```bash -curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deployments/{deployment_uuid}" +curl -s -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/deployments/{deployment_uuid}" ``` ### Start/Stop/Restart application ```bash # Start -curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications/{uuid}/start" +curl -s -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/applications/{uuid}/start" # Stop -curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications/{uuid}/stop" +curl -s -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/applications/{uuid}/stop" # Restart -curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications/{uuid}/restart" +curl -s -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/applications/{uuid}/restart" ``` ## Application UUIDs @@ -66,7 +66,7 @@ curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/app #!/bin/bash TOKEN=$(cat ~/.ssh/coolify-redbull-token | tr -d '\n') echo "=== Coolify Health Check ===" -curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications" | python -c " +curl -s -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/applications" | python -c " import json,sys d = json.load(sys.stdin) for a in d: @@ -92,7 +92,7 @@ UUIDS=( ) for uuid in "${UUIDS[@]}"; do echo "Deploying $uuid..." - curl -s -X GET -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deploy?uuid=$uuid" + curl -s -X GET -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/deploy?uuid=$uuid" done ``` diff --git a/vps/redbull/health-check.sh b/vps/redbull/health-check.sh index eeb59b3..8048a8b 100644 --- a/vps/redbull/health-check.sh +++ b/vps/redbull/health-check.sh @@ -10,7 +10,7 @@ YELLOW='\033[1;33m' NC='\033[0m' TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9" -COOLIFY_URL="http://185.194.141.70:8000" +COOLIFY_URL="https://redbull.rede5.com.br" SSH_HOST="redbull" echo "==============================================" diff --git a/vps/redbull/services_inventory.md b/vps/redbull/services_inventory.md index e263d4d..49aa74a 100644 --- a/vps/redbull/services_inventory.md +++ b/vps/redbull/services_inventory.md @@ -4,7 +4,7 @@ ## Visão Geral -Este documento apresenta o inventário completo de serviços hospedados no servidor Redbull (185.194.141.70), utilizando a plataforma Coolify como camada de gerenciamento de aplicações baseadas em contêineres. +Este documento apresenta o inventario completo de servicos hospedados no servidor Redbull (185.194.141.70), utilizando a plataforma Coolify como camada de gerenciamento de aplicacoes baseadas em containers. ## Tabela de Aplicações @@ -92,14 +92,14 @@ ssh redbull "docker ps -a" ### Health Check via API ```bash TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9" -curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications" +curl -s -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/applications" ``` ### Deploy Application ```bash # Via UUID TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9" -curl -s -X GET -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deploy?uuid={UUID}" +curl -s -X GET -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/deploy?uuid={UUID}" ``` ### View Logs @@ -128,7 +128,7 @@ done echo "" echo "🌐 Aplicações Coolify:" TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9" -curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications" 2>/dev/null | python -c " +curl -s -H "Authorization: Bearer $TOKEN" "https://redbull.rede5.com.br/api/v1/applications" 2>/dev/null | python -c " import json,sys try: d = json.load(sys.stdin)