Controlador Unifi é um software obrigatório se você tiver qualquer equipamento Unifi, como os famosos Pontos de Acesso Wi-Fi. Você pode ter o controlador rodando em hardware dedicado, como Unifi Cloud Key ou Dream Machine Pro. No entanto, neste post vamos instalar o Controlador Unifi em um container Docker no NAS Synology!
Antes de iniciar
Instale o Docker no NAS
Em primeiro lugar, certifique-se de que o Synology NAS suporta Docker. Depois de fazer login na interface web do DSM, abra Centro de Pacotes >> Todos os pacotes e procure o Docker na lista. Se não estiver instalado, instale agora! Se você não encontrar o pacote Docker na lista, ele provavelmente não é suportado. Acesse o site da Synology e verifique na página de especificação do seu NAS!
Crie uma pasta de configuração
Vamos usar uma pasta no seu NAS para manter todas configurações do Controlador dentro do container Docker. A vantagem dessa abordagem é facilitar o backup e eventuais atualizações na imagem do Docker.
Abra a Estação de Arquivos e encontre uma pasta chamada docker (ou qualquer outra pasta de sua preferência). Na pasta escolhida, crie uma subpasta chamada controlador-unifi . Esta pasta terá todas as informações importantes do seu controlador, como configuração, logs, certificados, etc. Com esta pasta, você pode excluir/atualizar e recriar o recipiente em minutos sem perder nenhuma configuração!
Instalar o Controlador Unifi
Instalando a imagem do Docker
Uma vez que Docker está funcionando, precisamos baixar a imagem do Docker que precisamos para executar o controlador. Há muitos imagens por aí, mas eu gosto da versão jacobalterty/unifi.
Abra o Docker e faça o seguinte:
- Clique em Registro no menu do lado esquerdo
- Digite ‘unifi’ na caixa de pesquisa na parte superior do painel direito e pressione Pesquisa
- Selecione jacobalberty/unifi e clique no botão Baixar
- Selecione ‘mais recente‘ (ou latest) como tag na caixa de diálogo que será exibida e clique em Selecionar
- Você pode acompanhar o progresso do download na guia Imagem
Configuração do contêiner Docker
Uma vez terminado o download, vá para a guia Imagem e clique no botão Iniciar para criar uma instância de container usando jacobalberty/unifi como imagem base. Um assistente de configuração será exibido. A tabela abaixo mostra como o o container deve ser configurado:
- Nome do container: Qualquer nome que você goste
- Executar container usando alto privilégio: desmarcado
- Habilitar limitação de recursos: verificado
- Prioridade da CPU: Média
- Limite de memória: 1024 (talvez 512)
- Clique no botão Configurações Avançadas e uma nova caixa de diálogo aparecerá
- Na guia Configurações Avançadas
- Habilite reinicialização automática: verificada. Importante para executá-lo 24 horas por dia, 7 dias por semana!
- Em seguida, vá para a guia Volumes
- Clique em Adicionar pasta e selecione a que você acabou de criar (também conhecida como docker/controlador-unifi) e pressione Selecionar
- Digite ‘/unifi’ como Caminho de Montagem
- Em seguida, vá para a guia Rede
- Na parte inferior do diálogo, selecione a rede Usar a mesma rede que o host do Docker
- Pular configurações da porta e guias links
- Por fim, vá para a guia Ambiente
- Haverá muitas variáveis ambientais para o container
- Certifique-se de que tanto BIND_PRIV quanto RUNAS_UID0 estão definidos como false
- Na guia Configurações Avançadas
Na parte inferior da janela do assistente, pressione Aplicar seguido pelo Próximo e revise suas configurações. Termine pressionando Aplicar uma última vez..
Em seguida, o assistente será fechado e seu Controlador Unifi começará a funcionar na porta 8443. Você pode abrir seu navegador e visitar em https://<your_nas_ip>:8443. Certifique-se de usar https na frente da URL, caso contrário a página não será carregada.
(Opcional) Configure seu firewall
Caso você use firewall no seu Synology e a página do controlador Unifi não abrir, você precisa abrir algumas portas.
Clique no Painel de Controle >> Segurança >> Firewall e faça o seguinte:
- Clique no botão Editar regras e uma nova caixa de diálogo aparecerá
- Clique em Criar para adicionar uma regra de firewall
- Na seção Portas , selecione a opção Personalizado seguida de um clique no botão Personalizado. Um novo diálogo aparecerá
- Tipo: Porta de destino
- Protocolo: TCP
- Portos: 8080.8443,8843.8880.6789
- Clique em Ok
- IP de origem: Todos
- Ação: Permitir
- Clique em Ok para criar a regra
- Na seção Portas , selecione a opção Personalizado seguida de um clique no botão Personalizado. Um novo diálogo aparecerá
- Clique em Criar novamente para criar uma segunda regra
- Na seção Portas , selecione a opção Personalizado seguida de um clique no botão Personalizado. Como antes, um novo diálogo aparecerá
- Tipo: Porta de destino
- Protocolo: UDP
- Portos: 3478.10001
- Clique em Ok
- IP de origem: Todos
- Ação: Permitir
- Clique em Ok para criar a regra
- Na seção Portas , selecione a opção Personalizado seguida de um clique no botão Personalizado. Como antes, um novo diálogo aparecerá
- Clique em Criar para adicionar uma regra de firewall
- Clique em Ok para concluir a configuração do firewall
Neste ponto, a página do controlador Unifi deve ser acessível. Se você ainda tiver problemas, tente reiniciar seu NAS e tente novamente
(Opcional) Atualizando o container do Controlador Unifi
De tempos em tempos, uma nova versão da Imagem será publicada no Docker Hub. É uma boa prática atualizar a imagem para a mais recente disponível para garantir o software está seguro e outros problemas críticos sejam corrigidos no seu ambiente. Como usamos um volume mapeado em nossa configuração, o upgrade é rápido e simples!
No entanto, antes de começar com a atualização, você sempre deve salvar fazer backup do seu Controlador Unifi. Faça login no controlador, vá para Configurações >> Configurações do controlador >> Backup. Role até a seção Backup/Restauração e baixe o arquivo de backup.
Atualizando a Imagem
O processo é idêntico à primeira vez que você baixou a imagem jacobalberty/unifi. Na verdade, por favor, siga os passos de lá e volte aqui quando terminar 🙂
Atualizando o Container
Agora que temos a nova imagem, precisamos atualizar o container existente. Clique no menu Container, selecione o o container do controlador e faça o seguinte:
- Clique em Ação >> Parar ou clique no ícone do interruptor no lado direito. Quando um container está rodando, o interruptor mostra “0”. Depois de clicar nele, ele deve mostrar “1”
- Com o container parado, selecione-o novamente e clique em Ação >> Limpar
- Um diálogo de confirmação aparecerá. Clique em Sim para confirmar
- Clique em Ação >> Iniciar ou clique no interruptor novamente para religar o Controlador. espere que ele se torne “0” mais uma vez e o container agora est;a rodando com a versão mais recente – sem perder nenhuma configuração!
(Opcional) Instale certificados Let’s Encrypt SSL
Usar https é ótimo, mas às vezes esses avisos sobre certificados inválidos ou auto-assinados são irritantes. Em posts anteriores descrevi como emitir certificados SSL Let’s Encrypt no seu pfSense e como instalá-los em seu NAS Synology. Neste post vamos estender essa ideia e instalar o certificado Let’s Encrypt emitido pelo pfSense no seu container controlador Unifi, que está sendo executado no Synology. Muito legal!
A ideia geral é criar uma tarefa periódica que copie o certificado do pfSense em uma ação local, ajuste-o um pouco e, em seguida, copie-o para a pasta de container, onde será lido pelo Controlador da Unifi.
Antes de iniciar
Você pode reutilizar o mesmo certificado das postagens acima mencionadas ou criar outro com um nome de domínio personalizado, como unifi.mydomain.com.
Para este passo a passo, presumo que siga meu post sobre como emitir certificados Let’s Encrypt no seu pfSense. Eu também vou assumir SSH está habilitado em seu pfSense.
Abra a Estação de Arquivos no Synology e navegue até Docker >> Controlador de Unifi ou onde quer que a pasta você tenha escolhido antes. Clique em Criar >> Criar pasta e digitar cert como o nome da pasta e pressione Ok.
Baixe e salve https://github.com/stevejenkins/unifi-linux-utils/blob/master/unifi_ssl_import.sh no seu computador. Abra-o em um editor de arquivos e faça as seguintes alterações:
- Altere UNIFI_HOSTNAME para a URL do seu NAS
- UNIFI_HOSTNAME=synology.mydomain.com
- Mude LE_MODE
- LE_MODE=sim
Salve as alterações e usando Estação de Arquivo, carregue-as em docker/controlador-unifi no NAS Synology.
Automatize cópia de Certificado do pfSense
Crie uma pasta de compartilhamento em Synology
Se você ainda não fez isso, siga os passos do post como criar um compartilhamento LetsEncrypt no seu NAS Synology
Copiando o certificado Let’s Encrypt para a pasta compartilhada do Synology periodicamente
A partir do mesmo post, siga esses passos para criar uma tarefa agendada para copiar certificados do pfSense em seu NAS. A única diferença aqui é que você deve copiar os certificados em uma subpasta com o nome exato do domínio completo do seu certificado. Em outras palavras, se sua pasta compartilhada é LetsEncrypt (assumindo volume1 aqui) e seu certificado for emitido para synology.mydomain.com, você terá que copiar os certificados para /volume1/LetsEncrypt/synology.mydomain.com/. Isso é requisito do script que usaremos nos próximos passos.
Instalando os certificados em seu container usando agendador de tarefas
Os certificados Let’s Encrypt expiram a cada 90 dias, então pfSense continuará emitindo novos certificados periodicamente. É por isso que precisamos criar um cronograma para esta parte!
Vá para Painel de Controle >> Programador de Tarefas >> Criar >> Tarefa programada >> Script definido pelo usuário e faça o seguinte:
Geral
- Tarefa: Instalar certificado no Controlador Unifi
- Usuário: root
Agenda
- Executar nos seguintes dias: Escolha o mesmo dia da tarefa anterior
- Hora da primeira execução: Escolha um tempo 5 minutos após a tarefa anterior
- Frequência: Todos os dias
Configurações de tarefas
Script definido pelo usuário: use o seguinte modelo. Mude de caminho de acordo!
# Certificado deve ser mapeado como volume em /unifi/cert inside de docker
# 1. Copiar certificados com o nome e permissões certos
SOURCE_CERT_ALL=/volume1/LetsEncrypt/synology.mydomain.com/synology.mydomain.com.all.pem
SOURCE_CERT=/volume1/LetsEncrypt/synology.mydomain.com/synology.mydomain.comcrt
SOURCE_KEY=/volume1/LetsEncrypt/synology.mydomain.com/synology.mydomain.com.key
SOURCE_CHAIN=/volume1/LetsEncrypt/synology.mydomain.com/synology.mydomain.com.fullchain
# Copiando certificado para pasta do controlador unifi
DEST_CERT_DIR="/volume1/docker/controlador-unifi/cert/synology.mydomain.com"
DEST_CERT_ALL="${DEST_CERT_DIR}/cert.all.pem"
DEST_CERT="${DEST_CERT_DIR}/cert.pem"
DEST_KEY="${DEST_CERT_DIR}/privkey.pem"
DEST_CHAIN="${DEST_CERT_DIR}/fullchain.pem"
echo "Copiando certificado ${SOURCE_CERT_ALL} para ${DEST_CERT_ALL} no container Controlador Unifi"
echo "Copiando certificado ${SOURCE_CERT} para ${DEST_CERT} no container Controlador Unifi"
echo "Copiando certificado ${SOURCE_KEY} para ${DEST_KEY} no container Controlador Unifi"
echo "Copiando certificado ${SOURCE_CHAIN} para ${DEST_CHAIN} no container Controlador Unifi"
cp -fv ${SOURCE_CERT_ALL} ${DEST_CERT_ALL}
cp -fv ${SOURCE_CERT} ${DEST_CERT}
cp -fv ${SOURCE_KEY} ${DEST_KEY}
cp -fv ${SOURCE_CHAIN} ${DEST_CHAIN}
chmod 600 ${DEST_CERT_DIR}/*
chown 999:999 ${DEST_CERT_DIR}/*
# 2. Importar certs para o controlador unifi
# Modificado de https://github.com/stevejenkins/unifi-linux-utils/blob/master/unifi_ssl_import.sh
docker exec unifi-controller bash /unifi/unifi_ssl_import.sh
Clique em OK para criar a tarefa agendada. Por fim, clique em Executar para instalar os certificados que foram copiados anteriormente do pfSense em uma pasta compartilhada local do Synology. É isso! Seu Controlador Unifi agora usará certificados Let’s Encrypt e não terá mais avisos irritantes quando acessar a interface via HTTPS!