Logo

Instalação Manual

Guia para instalação sem containers

Este guia descreve como instalar o Sinapse manualmente em seu ambiente, sem usar Docker.

A instalação manual é recomendada apenas para ambientes de desenvolvimento ou casos específicos. Para produção, use Docker ou Kubernetes.

Pré-requisitos

  • Python 3.11 ou superior
  • PostgreSQL 15 ou superior
  • Redis 7 ou superior (opcional, para cache)
  • Git

Instalação Passo a Passo

1. Clone o Repositório

git clone https://github.com/InstitutoTodosPelaSaude/core_sinapse.git
cd core_sinapse

2. Configure o Ambiente Virtual

# Crie o ambiente virtual
python -m venv venv

# Ative o ambiente virtual
# Linux/macOS
source venv/bin/activate

# Windows
venv\Scripts\activate

3. Instale as Dependências

# Atualize pip
pip install --upgrade pip

# Instale as dependências
pip install -r requirements.txt

4. Configure o Banco de Dados

-- Conecte ao PostgreSQL como superusuário
CREATE DATABASE sinapse_db;
CREATE USER sinapse_user WITH PASSWORD 'sua_senha_segura';
GRANT ALL PRIVILEGES ON DATABASE sinapse_db TO sinapse_user;

5. Configure as Variáveis de Ambiente

# Copie o arquivo de exemplo
cp .env.example .env

# Edite o arquivo .env com suas configurações
nano .env

Configurações mínimas necessárias:

# Banco de Dados
DATABASE_URL=postgresql+asyncpg://sinapse_user:sua_senha_segura@localhost:5432/sinapse_db

# Segurança
SECRET_KEY=sua_chave_secreta_muito_segura
MASTER_KEY=sua_master_key_para_primeiro_admin

# Configurações da API
API_HOST=0.0.0.0
API_PORT=8000
API_RELOAD=true

6. Execute as Migrações

# Execute as migrações do banco
alembic upgrade head

7. Crie os Dados Iniciais

# Execute o script de dados iniciais
python scripts/create_initial_data.py

8. Inicie o Servidor

# Para desenvolvimento
uvicorn main:app --reload --host 0.0.0.0 --port 8000

# Para produção
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000

Verificação da Instalação

1. Teste o Endpoint de Saúde

curl http://localhost:8000/api/v1/health

Resposta esperada:

{
  "status": "healthy",
  "version": "1.0.0",
  "timestamp": "2025-07-29T10:00:00Z"
}

2. Teste de Autenticação

# Login com usuário padrão
curl -X POST http://localhost:8000/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "senha": "admin123"}'

Configuração do Redis (Opcional)

Se você quiser usar Redis para cache:

# Instale o Redis (Ubuntu/Debian)
sudo apt-get install redis-server

# Inicie o serviço
sudo systemctl start redis-server
sudo systemctl enable redis-server

# Adicione ao .env
REDIS_URL=redis://localhost:6379/0

Configuração do Proxy Reverso (Opcional)

# traefik.yml
entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"

providers:
  file:
    directory: /etc/traefik/dynamic

# /etc/traefik/dynamic/sinapse.yml
http:
  routers:
    api:
      rule: "Host(`api.sinapse.org.br`)"
      service: api
      tls:
        certResolver: letsencrypt
  
  services:
    api:
      loadBalancer:
        servers:
          - url: "http://localhost:8000"
server {
    listen 80;
    server_name api.sinapse.org.br;

    location / {
        proxy_pass http://localhost:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Systemd Service (Opcional)

Crie um serviço para iniciar automaticamente:

# /etc/systemd/system/sinapse.service
[Unit]
Description=Sinapse API
After=network.target

[Service]
Type=exec
User=sinapse
WorkingDirectory=/opt/sinapse
Environment="PATH=/opt/sinapse/venv/bin"
ExecStart=/opt/sinapse/venv/bin/gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000

[Install]
WantedBy=multi-user.target

Solução de Problemas

Erro de Conexão com Banco

# Verifique se o PostgreSQL está rodando
sudo systemctl status postgresql

# Teste a conexão
psql -h localhost -U sinapse_user -d sinapse_db

Erro de Permissões

# Certifique-se que o usuário tem permissões
chmod +x scripts/create_initial_data.py

Porta já em Uso

# Encontre o processo usando a porta
lsof -i :8000

# Ou use outra porta
uvicorn main:app --port 8001

Próximos Passos

Referências

On this page