text: Como transformar um Raspberry Pi em um sistema de vigilância com ZoneMinder
  ZoneMinder é um software de circuito fechado de televisão gratuito e de código aberto que podemos instalar em nosso Raspberry Pi (ou qualquer outro sistema Linux) para monitorar e proteger nossa casa, ou qualquer coisa que consideremos valiosa. ZoneMinder é fácil de instalar, suporta uma vasta seleção de câmeras e também possui APIs para integração de software de terceiros.
  Neste tutorial instalamos o ZoneMinder na versão mais recente do Raspberry Pi OS e aprendemos como transformar nosso RPI em um sistema de vigilância usando uma simples webcam USB.
  Neste tutorial você aprenderá:
  - Como instalar o ZoneMinder no sistema operacional RaspberryPi
  - Como definir um monitor e adicionar uma fonte de vídeo
  ZoneMinder está disponível no repositório oficial do Debian 12 Bookworm e, portanto, também na versão mais recente do Raspberry Pi OS, que é baseado nele. O comando abaixo instala o pacote “zoneminder” e todas as suas dependências, que incluem Apache e MariaDB:
  $ sudo apt-get update && sudo apt-get -y install zoneminder
  Durante este tutorial, assumirei que estamos configurando o ZoneMinder dentro de uma rede local (LAN) protegida por um firewall de roteador: esta é a configuração doméstica típica. Se você deseja acessar o ZoneMinder externamente, você deve instalar e configurar uma VPN (Virtual Private Network) como o Wireguard.
  Configurando o banco de dados
  Assim que a instalação do ZoneMinder for concluída, podemos criar o banco de dados. ZoneMinder vem com um script SQL que podemos usar para gerar o banco de dados e todas as suas tabelas: /usr/share/zoneminder/db/zm_create.sql
  . Para executar as instruções SQL no script, precisamos fazer login como usuário root do banco de dados:
  $ sudo mysql
  Executamos o comando “mysql” como root porque o Debian vem com o plugin MariaDB unix_activation_socket ativo por padrão. Este plugin permite o uso de credenciais do sistema operacional para fazer login no banco de dados. Ou seja, se o usuário como executamos o comando “mysql” corresponder a um usuário de banco de dados, é permitido efetuar login sem fornecer senha. Isso é considerado bom para a segurança, pois elimina a necessidade de armazenar um segredo e depende da força de acesso do usuário Unix.
  No console MariaDB, obtemos o script SQL:
  MariaDB [(none)]> source /usr/share/zoneminder/db/zm_create.sql
  Por padrão, ZoneMinder tenta acessar o banco de dados como usuário “zmuser”, com “zmpass” como senha. Esses valores são definidos no arquivo de configuração /etc/zm/zm.conf
  e podem ser alterados através das variáveis ZM_DB_USER e ZM_DB_PASS. Aqui, por uma questão de simplicidade, nos limitamos aos valores padrão. Para criar o usuário e conceder-lhe privilégios totais no banco de dados, executamos:
  MariaDB [zm]> GRANT ALL PRIVILEGES ON zm.* TO 'zmuser'@'localhost' IDENTIFIED BY 'zmpass';
  Tudo feito. Na próxima etapa, configuramos Apache e PHP.
  Configurando Apache e PHP
  Como parte da instalação do ZoneMinder, uma configuração do Apache é instalada automaticamente como /etc/apache2/conf-available/zoneminder.conf
  . Para ativá-lo, executamos:
  $ sudo a2enconf zoneminder.conf
  Também devemos habilitar os módulos necessários:
  $ sudo a2enmod rewrite headers expires cgi
  Finalmente, devemos garantir que o servidor web Apache seja capaz de ler o arquivo de configuração do ZoneMinder, alterando a propriedade do grupo de arquivos para “www-data” (o usuário e grupo primário do servidor web Apache):
  $ sudo chgrp www-data /etc/zm/zm.conf
  Para garantir que o fuso horário do PHP seja o mesmo utilizado pelo sistema, que no meu caso é “Europa/Roma”, editamos o arquivo /etc/php/8.2/apache2/php.ini
  e, na linha 979, adicionamos a entrada apropriada:
  ; Defines the default timezone used by the date functions
  date.timezone = Europe/Rome
  Finalmente, reiniciamos o Apache:
  $ sudo systemctl restart apache2
  Iniciando o serviço zoneminder
  Neste artigo, usaremos uma webcam USB local como fonte de vídeo. Para que isso funcione, precisamos adicionar o usuário www-data ao grupo “video”, que possui o dispositivo /dev/video0
  $ sudo usermod -aG video www-data
  Finalmente, podemos iniciar e habilitar o serviço “zoneminder”:
  $ sudo systemctl enable --now zoneminder.service
  Acessando a interface web
  Assim que o serviço “zoneminder” estiver instalado e funcionando, poderemos acessar sua interface web abrindo nosso navegador e navegando até o endereço
  O projeto é de código aberto e não coleta imagens de câmeras. De qualquer forma, se não quisermos aceitar a telemetria, podemos selecionar “recusar” no menu suspenso na parte inferior da página. Para confirmar a nossa escolha, clicamos no botão “APLICAR” à direita:
  Assim que fizermos isso, seremos redirecionados para o painel do ZoneMinder:
  Definir um monitor e adicionar uma fonte de vídeo
  Não vamos nos aprofundar nos detalhes do aplicativo ZoneMinder aqui; veremos apenas como adicionar uma fonte de vídeo local. Para configurar um “monitor”, clicamos no botão “ADD” no painel do ZoneMinder; no formulário da página “Geral”, definimos o “Tipo de Fonte” como “Local”:
  ZoneMinder pode funcionar em diferentes modos. Neste caso, escolhemos a função “Gravar”: permite-nos transmitir o vídeo e gravá-lo em disco, sem ativar a detecção de movimento. Para conhecer os demais modos do ZoneMinder, dê uma olhada na documentação oficial.
  Agora, para configurar a fonte de vídeo, clicamos em “Fonte” no menu vertical esquerdo. No formulário “Método de Captura” fornecemos o caminho do dispositivo de vídeo, seu formato e resolução. Quando estiver pronto, clicamos no botão “Salvar”:
  Seremos redirecionados para o painel. Se tudo correr conforme o esperado, o processo de captura deverá ser iniciado. Deveremos ser capazes de visualizar uma miniatura da cena atual:
  Ao clicar nele, podemos acessar a página do stream:
  ZoneMinder é um software de circuito fechado de televisão gratuito e de código aberto. Neste tutorial, aprendemos como instalá-lo na versão mais recente do Raspberry Pi OS e como criar um sistema de vigilância usando uma simples webcam USB. No artigo, presumi o uso do ZoneMinder em uma LAN protegida; para acessar o stream de vídeo externamente, é altamente recomendável configurar uma VPN. Desencorajo absolutamente a exposição direta do serviço web neste caso, mesmo utilizando criptografia SSL, pois, para acessar a fonte de vídeo local, o usuário www-data passa a fazer parte do grupo “vídeo”, portanto tem acesso adicional ao sistema recursos.