Configurando o controlador UniFi com Docker e Caddy

Última atualização: 27/06/2022

Se estiver com dificuldade para encontrar uma chave ou um equipamento de controlador UniFi, ou se quiser usar outro hardware para gerenciar seus pontos de acesso UniFi, você pode usar uma imagem Docker. Este tutorial também explica como usar o Caddy para hospedar o controlador em um IP público com um certificado TLS válido.

Instalando Docker e Docker Compose ​

Pesquise na web; há muitos tutoriais disponíveis. Estes são os links oficiais na data em que o artigo foi escrito:

Criando o arquivo docker-compose.yml ​

Usaremos a imagem https://hub.docker.com/r/linuxserver/unifi-controller.

Sugiro criar uma pasta para manter juntos todos os arquivos relacionados.

Execute todos os comandos como root ou com sudo.

bash
useradd -r unifi
id unifi
# Take a note of the ids shown up, below an example
# uid=1000(unifi) gid=1000(unifi) groups=1000(unifi)
cd /home/unifi

Crie um arquivo chamado docker-compose.yml.

yml
# Create this file at /home/unifi/docker-compose.yml
# Check all options at the official repository:
# https://hub.docker.com/r/linuxserver/unifi-controller
version: "2.1"
services:
  unifi-controller:
    image: lscr.io/linuxserver/unifi-controller:latest
    container_name: unifi-controller
    environment:
      - PUID=1000 # Replace here the User ID from id Command
      - PGID=1000 # Replace here the Group ID from id Command
      - MEM_LIMIT=1024 #optional
      - MEM_STARTUP=1024 #optional
    volumes:
      # Persist all the configs at the folder below
      - ./config:/config
    ports:
      # If you are not using Caddy, use the ports below
      #- 8443:8443
      #- 8080:8080
      #- 3478:3478/udp
      #- 10001:10001/udp

      # If you are using Caddy, use the ports below
      - 7443:8443
      - 7080:8080
      #- 3478:3478/udp
      #- 10001:10001/udp

      # These ports are optional; check the repository for more details
      #- 1900:1900/udp #optional
      #- 8843:8843 #optional
      #- 8880:8880 #optional
      #- 6789:6789 #optional
      #- 5514:5514/udp #optional
    restart: unless-stopped

Iniciando o contêiner ​

Inicie o contêiner e confira o resultado:

bash
docker-compose up -d

O novo contêiner deverá aparecer ao executar docker ps -a.

Configurando o Caddy ​

Não é necessário instalar o Caddy se o servidor estiver na sua rede local. O TLS automático não funcionará sem um IP público e as portas 80 e 443 abertas para que o Let's Encrypt valide seu domínio. Pule esta etapa se você não tiver um IP/DNS público configurado.

Consulte as instruções oficiais de instalação do Caddy: https://caddyserver.com/docs/install.

Após instalar, configure /etc/caddy/Caddyfile (o local padrão na maioria das distribuições).

conf
# This configuration assumes that you have set up a DNS A record pointing to your server
# Replace the domain below
yourDomain.com:8443 {
    # Note the port 8443 is the port exposed and 7443 is the internal port, used at the docker-compose.yml
    reverse_proxy 127.0.0.1:7443 {
        transport http {
            tls
            tls_insecure_skip_verify
        }
    }
}

Em sistemas baseados em Debian, recarregue a configuração do Caddy com service caddy restart.

Conectando os pontos de acesso UniFi ao controlador ​

Acesse https://yourDomain.com:8443.

Sem o Caddy, o navegador exibirá um aviso de segurança. Você pode continuar, pois ainda não há um certificado configurado.

Na primeira visita, o UniFi solicitará os dados da rede e a criação de usuários. Conclua essas etapas e clique no ícone da lista de pontos de acesso no menu à esquerda. O ícone se parece com um roteador UniFi.

Em cada ponto de acesso, entre com o usuário e a senha padrão, ubnt:

bash
ssh ubnt@192.168.0.5 # Considering 192.168.0.5 is your AP IP
# Then point your AP to your controller
# Note the port here might be 8080 or 7080
set-inform http://yourDomain.com:7080/inform

Observações de segurança ​

Se o controlador UniFi estiver exposto à internet, configure um firewall para permitir a comunicação apenas dos pontos de acesso da sua rede. Caso contrário, pontos de acesso não autorizados ou usuários mal-intencionados poderão abusar das portas UniFi abertas.