Pular para conteúdo

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.