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_sinapse2. 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\activate3. Instale as Dependências
# Atualize pip
pip install --upgrade pip
# Instale as dependências
pip install -r requirements.txt4. 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 .envConfiguraçõ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=true6. Execute as Migrações
# Execute as migrações do banco
alembic upgrade head7. Crie os Dados Iniciais
# Execute o script de dados iniciais
python scripts/create_initial_data.py8. 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:8000Verificação da Instalação
1. Teste o Endpoint de Saúde
curl http://localhost:8000/api/v1/healthResposta 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/0Configuraçã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.targetSoluçã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_dbErro de Permissões
# Certifique-se que o usuário tem permissões
chmod +x scripts/create_initial_data.pyPorta já em Uso
# Encontre o processo usando a porta
lsof -i :8000
# Ou use outra porta
uvicorn main:app --port 8001Próximos Passos
- Configure o monitoramento [Em breve]
- Implemente backups automáticos [Em breve]
- Configure HTTPS com certificado SSL