Instalação¶
Pré-requisito: CT pronto conforme Criar o CT. Nos exemplos, o CT tem o IP 192.168.0.10 e o repositório é SEU-USUARIO/noc-ftth.
1. Dar ao CT acesso de leitura ao repositório (deploy key)¶
Se o repositório for privado, o CT usa uma chave SSH própria, que só lê o repositório.
ssh-keygen -t ed25519 -C "noc-ftth-deploy" -f ~/.ssh/github_noc_ftth -N ""
cat ~/.ssh/github_noc_ftth.pub
No GitHub: repositório → Settings → Deploy keys → Add deploy key. Cole a chave pública, dê um nome (ex.: "CT de produção") e deixe "Allow write access" desmarcado.
cat >> ~/.ssh/config <<'EOF'
Host github.com
IdentityFile ~/.ssh/github_noc_ftth
IdentitiesOnly yes
EOF
ssh -T git@github.com # deve responder "Hi SEU-USUARIO/noc-ftth!"
2. Baixar o código¶
cd /opt
git clone git@github.com:SEU-USUARIO/noc-ftth.git
cd noc-ftth
3. Configurar¶
cp .env.example .env
python3 -c "import secrets; print(secrets.token_urlsafe(50))" # use como DJANGO_SECRET_KEY
python3 -c "import secrets; print(secrets.token_urlsafe(24))" # use como POSTGRES_PASSWORD
python3 -c "import base64,os; print(base64.urlsafe_b64encode(os.urandom(32)).decode())" # use como DJANGO_CHAVE_CRIPTOGRAFIA
nano .env
chmod 600 .env
Preencha pelo menos DJANGO_SECRET_KEY, POSTGRES_PASSWORD, DJANGO_CHAVE_CRIPTOGRAFIA, DJANGO_ALLOWED_HOSTS, DJANGO_CSRF_TRUSTED_ORIGINS e TIME_ZONE. Cada variável está explicada no próprio .env.example.
Guarde a DJANGO_CHAVE_CRIPTOGRAFIA fora do servidor
Ela cifra as credenciais das OLTs no banco (ADR 0013). Sem ela, um backup restaurado não consegue ler essas credenciais (teriam de ser digitadas de novo). Guarde uma cópia num cofre de senhas, junto com as informações do backup.
4. Subir¶
docker compose up -d --build
docker compose ps # todos "running"/"healthy"
curl -s http://localhost/api/saude/ # {"status":"ok","banco":"ok","redis":"ok"}
5. Criar o primeiro usuário¶
docker compose exec web python manage.py createsuperuser
O comando pede e-mail e senha; o login no sistema é sempre por e-mail (ADR 0009). O superusuário já recebe o papel administrador.
Acesse http://IP_DO_CT/admin/ e entre com esse e-mail e senha.
Teste por HTTP antes do HTTPS
Por segurança, os cookies de login só trafegam por HTTPS. Para testar direto pelo IP, antes de publicar no proxy reverso, coloque DJANGO_COOKIES_SEGUROS=false no .env e rode docker compose up -d. Volte para true depois de publicar com HTTPS.
6. Publicar com HTTPS (proxy reverso)¶
Exemplo com o Nginx Proxy Manager. Crie um Proxy Host:
- Domínio: o mesmo de
DJANGO_CSRF_TRUSTED_ORIGINS(ex.:noc.exemplo.com.br) - Destino:
http://IP_DO_CT:80 - SSL: certificado Let's Encrypt e "Force SSL"
7. Agendar o backup diário¶
crontab -e
# adicione:
0 3 * * * cd /opt/noc-ftth && ./scripts/backup_db.sh >> backups/backup.log 2>&1
Detalhes em Backup e restauração.