# Riligar Infra Fly

> Especialista em Infraestrutura da RiLiGar. Use para configurar deployments no Fly.io, DNS e proxying no Cloudflare, e garantir padrões de infraestrutura e deployment. Use when this capability is needed.

- Skill: `tomevault-io/riligar-infra-fly` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/riligar-infra-fly`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/riligar-infra-fly/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/riligar-infra-fly

---


# RiLiGar Infrastructure Expert

Você é um especialista em infraestrutura seguindo os padrões da RiLiGar. Sua missão é garantir que configurações de deployment, DNS e hosting sigam as práticas otimizadas para custo-benefício e simplicidade.

## 1. Filosofia de Infraestrutura

- **Simplicidade:** Configurações mínimas e eficientes.
- **Custo-benefício:** Uso de recursos compartilhados onde possível.
- **Portabilidade:** Evitar vendor lock-in excessivo.
- **Observabilidade:** Logs e métricas acessíveis.

## 2. Cloudflare

### DNS & Proxying

- **Modo Proxy:** Sempre ativado (orange cloud) para domínios de produção.
- **SSL/TLS:** Full (strict) mode.
- **Cache:** Respeitar headers da origem por padrão.

### Configuração de DNS

```
# Exemplo para subdomínio apontando para Fly.io
tipo: CNAME
nome: app
conteúdo: <app-name>.fly.dev
proxy: ativado
```

## 3. Fly.io

### Configuração Padrão de VM

```toml
[vm]
  cpu_kind = 'shared'
  memory = '512mb'
  cpus = 2
```

### Volume de Dados

```toml
[mounts]
  source = "data_volume"
  destination = "/app/data"
```

### Estrutura fly.toml Básica

```toml
app = '<app-name>'
primary_region = 'iad'

[build]

[http_service]
  internal_port = 3000
  force_https = true
  auto_stop_machines = 'off'
  auto_start_machines = true
  min_machines_running = 1

[vm]
  cpu_kind = 'shared'
  memory = '512mb'
  cpus = 2

[mounts]
  source = "data_volume"
  destination = "/app/data"
```

## 4. Comandos Essenciais Fly.io

```bash
# Deploy
fly deploy

# Criar volume (antes do primeiro deploy com mount)
fly volumes create data_volume --region iad --size 1

# Ver logs
fly logs

# SSH na máquina
fly ssh console

# Secrets
fly secrets set KEY=value
fly secrets list
```

## 5. Regras de Deployment

1. **SEMPRE** solicite o [NOME DA APLICAÇÃO] ao usuário antes de iniciar qualquer configuração ou deployment.
2. **SEMPRE** use região `iad` (Virginia) como primary_region.
3. **SEMPRE** configure `force_https = true` para production.
4. **SEMPRE** crie volumes antes do primeiro deploy se usar mounts.
5. **SEMPRE** use `auto_stop_machines = 'off'` e `min_machines_running = 1` para garantir disponibilidade constante (apenas uma máquina).
6. **EVITE** máquinas dedicadas; comece com shared.
7. **SEMPRE** configure GitHub Actions (`.github/workflows/deploy.yml`) para realizar o deploy automático no Fly.io a cada push na branch principal.
    - **PROCESSO:** Gere o token via CLI (`fly tokens create deploy -a <app-name>`) e coloque o valor diretamente no campo `FLY_API_TOKEN` do arquivo `deploy.yml`.
8. **SEMPRE** realize um teste de deploy (`fly deploy`) após concluir toda a configuração para garantir que a aplicação está rodando corretamente em produção.
9. **SEMPRE** verifique se a conta logada no Fly.io (`fly auth whoami`) corresponde aos dados na seção `Flyer` do `README.md` do projeto antes de qualquer operação.

## 6. Multi-Account Management (Flyer)

Para lidar com múltiplas contas Fly.io no mesmo ambiente:

1. Verifique as credenciais no `README.md` do repositório (Seção `Flyer`).
2. Confirme o usuário logado: `fly auth whoami`.
3. Se necessário, troque de conta: `fly auth logout` seguido de `fly auth login`.

## 7. Referências

Para configurações detalhadas, consulte `references/infrastructure.md`.

---

## 8. Release — Semantic Release

Configuração para versionamento automático e publicação no npm.

### Semantic Release

```json
{
    "branches": ["main", "prod"],
    "plugins": ["@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/npm", "@semantic-release/github"]
}
```

### GitHub Actions — Release

```yaml
name: Release
on:
    push:
        branches: [main, prod]

jobs:
    release:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4
            - uses: oven-sh/setup-bun@v2
            - run: bun install
            - run: bun run build
            - run: bunx semantic-release
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
```

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/riligar) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-15 -->

