CLI para automacao de setup e hardening de servidores Ubuntu Server.
Project description
Raijin Server
CLI em Python para automatizar setup e hardening de servidores Ubuntu Server. Orquestra rede, firewall, Kubernetes, observabilidade e backups de forma segura e idempotente.
Índice
Requisitos
- Ubuntu Server 20.04+
- Python 3.9+
- 4GB RAM mínimo (8GB recomendado)
- 20GB disco livre
# Instalar dependências Python (se necessário)
sudo apt update && sudo apt install -y python3 python3-venv python3-pip
Instalação
⚠️ Importante: Sempre use um ambiente virtual (venv) para isolar dependências.
1. Criar ambiente virtual
# Criar venv chamado "midgard"
python3 -m venv ~/.venvs/midgard
# Ativar o venv
source ~/.venvs/midgard/bin/activate
# Atualizar pip
pip install -U pip setuptools
2. Instalar Raijin Server
# Instalar do PyPI (substitua X.X.X pela versão desejada)
pip install raijin-server==X.X.X
3. Executar com sudo
O Raijin precisa de permissões root. Use -E para preservar o venv:
# Verificar instalação
sudo -E ~/.venvs/midgard/bin/raijin-server --version
# Abrir menu interativo
sudo -E ~/.venvs/midgard/bin/raijin-server menu
4. Desativar venv (quando terminar)
deactivate
💡 Dica: Para reinstalar, remova o venv (
rm -rf ~/.venvs/midgard) e repita os passos.
Primeiros Passos
Validar Sistema
Verifica se o sistema atende aos pré-requisitos:
sudo -E ~/.venvs/midgard/bin/raijin-server validate
Menu Interativo
Forma mais fácil de usar - navegue pelos módulos visualmente:
sudo -E ~/.venvs/midgard/bin/raijin-server menu
Instalação Completa Automatizada
Instala tudo de uma vez, na ordem correta:
sudo -E ~/.venvs/midgard/bin/raijin-server full-install
Opções úteis:
| Opção | Descrição |
|---|---|
--select-steps |
Escolher módulos antes de executar |
--confirm-each |
Confirmar cada módulo |
--dry-run |
Simular sem aplicar mudanças |
--steps "a,b,c" |
Executar módulos específicos |
Executar Módulo Específico
# Exemplo: instalar apenas Kubernetes
sudo -E ~/.venvs/midgard/bin/raijin-server kubernetes
# Modo dry-run (apenas simula)
sudo -E ~/.venvs/midgard/bin/raijin-server --dry-run kubernetes
Módulos Disponíveis
🔧 Base do Sistema
| Módulo | Descrição |
|---|---|
sanitize |
Remove instalações antigas do Kubernetes |
bootstrap |
Instala helm, kubectl, containerd |
essentials |
Pacotes básicos (curl, git, jq, etc.) |
hardening |
Fail2ban, sysctl, unattended-upgrades |
network |
IP estático via Netplan (opcional) |
firewall |
Regras UFW para SSH/HTTP/HTTPS/K8s |
☸️ Kubernetes
| Módulo | Descrição |
|---|---|
kubernetes |
Inicializa cluster com kubeadm |
calico |
CNI com network policies |
metallb |
LoadBalancer para bare metal |
secrets |
Sealed-secrets + external-secrets |
cert-manager |
Certificados TLS automáticos |
🌐 Ingress (escolha um)
| Módulo | Descrição |
|---|---|
traefik |
Ingress controller com TLS/ACME |
kong |
API Gateway avançado |
📊 Observabilidade
| Módulo | Descrição |
|---|---|
prometheus |
Métricas e alertas |
grafana |
Dashboards de visualização |
loki |
Agregação de logs |
observability-ingress |
Ingress seguro para dashboards |
observability-dashboards |
Dashboards pré-configurados |
💾 Storage e Backup
| Módulo | Descrição |
|---|---|
minio |
Object storage S3-compatível |
velero |
Backup e restore do cluster |
🌐 Landing Page
| Módulo | Descrição |
|---|---|
landing |
Landing page de teste para verificar acesso público |
🔒 VPN e Segurança
| Módulo | Descrição |
|---|---|
vpn |
Servidor WireGuard + cliente inicial |
vpn-client |
Gerenciar clientes VPN (adicionar/remover) |
ssh-hardening |
Políticas seguras de SSH |
internal-dns |
DNS interno (*.asgard.internal) |
🚀 Service Mesh
| Módulo | Descrição |
|---|---|
istio |
Service mesh completo |
Acesso Remoto Seguro
O Raijin prioriza segurança. Dashboards administrativos não são expostos publicamente por padrão.
Opção 1: VPN (Recomendado)
# 1. Configurar servidor VPN
sudo -E ~/.venvs/midgard/bin/raijin-server vpn
# 2. Adicionar clientes
sudo -E ~/.venvs/midgard/bin/raijin-server vpn-client
# 3. Configurar DNS interno (opcional, mas muito útil!)
sudo -E ~/.venvs/midgard/bin/raijin-server internal-dns
Após conectar à VPN, acesse diretamente:
http://grafana.asgard.internalhttp://prometheus.asgard.internalhttp://minio.asgard.internal
Opção 2: Port-Forward via SSH
# Grafana
ssh -L 3000:localhost:3000 usuario@servidor
kubectl port-forward svc/grafana -n observability 3000:80
# Acesse: http://localhost:3000
Opção 3: Script Automatizado
# Iniciar todos os port-forwards
~/raijin-server/scripts/port-forward-all.sh start
# Parar
~/raijin-server/scripts/port-forward-all.sh stop
Documentação
| Documento | Descrição |
|---|---|
| ARCHITECTURE.md | Arquitetura técnica do ambiente |
| SECURITY.md | Políticas de segurança |
| AUDIT.md | Relatório de auditoria |
| docs/VERSIONING.md | Versionamento e tags |
| docs/INFRASTRUCTURE_GUIDE.md | Guia completo de infraestrutura |
| docs/VPN_REMOTE_ACCESS.md | Configuração de VPN |
| docs/INTERNAL_DNS.md | DNS interno para domínios privados |
| docs/VISUAL_TOOLS.md | Ferramentas visuais (Lens, K9s) |
| docs/SSH_WINDOWS.md | Acesso SSH do Windows |
| docs/MINIO_OPERATIONS.md | Operações do MinIO |
Comandos Úteis
# Atalho para o comando (após ativar venv)
alias raijin='sudo -E ~/.venvs/midgard/bin/raijin-server'
# Exemplos
raijin --version
raijin validate
raijin menu
raijin --dry-run kubernetes
Logs e Debug
# Ver logs do CLI
raijin debug logs --lines 200
# Seguir logs em tempo real
raijin debug logs --follow
# Snapshot do cluster
raijin debug kube --events 100
Desenvolvimento
Instalar em modo dev
# Clonar repositório
git clone https://github.com/rafaelluisdacostacoelho/raijin-server
cd raijin-server
# Criar venv de desenvolvimento
python3 -m venv .venv
source .venv/bin/activate
# Instalar em modo editável
pip install -e ".[dev]"
# Rodar testes
pytest
Publicar no PyPI
# 1. Configurar credenciais PyPI
# Crie o arquivo ~/.pypirc com seu token:
cat > ~/.pypirc << 'EOF'
[pypi]
username = __token__
password = pypi-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
EOF
chmod 600 ~/.pypirc
# 2. Criar venv limpo para publicação
python3 -m venv ~/.venvs/publish
source ~/.venvs/publish/bin/activate
pip install -U pip build twine
# 3. Build e publicar
./release.sh X.X.X
Destaques
- ✅ Validações automáticas de pré-requisitos
- ✅ Health checks após cada instalação
- ✅ Retry inteligente com backoff exponencial
- ✅ Logging estruturado com rotação
- ✅ Modo dry-run para simular mudanças
- ✅ Idempotente - re-execução segura
- ✅ VPN-first - dashboards seguros por padrão
Licença
MIT License - veja LICENSE para detalhes.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file raijin_server-1.2.0.tar.gz.
File metadata
- Download URL: raijin_server-1.2.0.tar.gz
- Upload date:
- Size: 161.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca3fd2dcd5ddb500f780d5a6cfdba1c08914ba1126ea5e6c0a55fb88e2a88f0e
|
|
| MD5 |
6d4669edc9979808a2f0a59dfe877813
|
|
| BLAKE2b-256 |
99c484d624d941079b8d4b0f64b6d61cf1318dbf01fbcc42246056383d593e17
|
File details
Details for the file raijin_server-1.2.0-py3-none-any.whl.
File metadata
- Download URL: raijin_server-1.2.0-py3-none-any.whl
- Upload date:
- Size: 188.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
764411d318da7691838da4c4ffb523c1a0ece021125ff8b6db0743850aa070bf
|
|
| MD5 |
04d83757353149a905f3c04ab7fbeaae
|
|
| BLAKE2b-256 |
89a75df3116fbc4250d6580f8e522399ee18698d7803f382f3463f03110f2efb
|