NixOS PBX



Vamos, Testar? Vou considerar o NixOS já instalado, com acesso sudo. Usaremos o Asterisk 22 LTS, pelo módulo nativo do NixOS.

No NixOS, você declara o serviço e seus arquivos de configuração; o nixos-rebuild instala os componentes e aplica as mudanças. O procedimento abaixo foi conferido no código do NixOS 26.05. nixos.org

  1. Confira a versão do sistema

    No terminal do servidor:

    nixos-version

    O exemplo utiliza a configuração convencional em /etc/nixos/configuration.nix. Mais abaixo deixei a observação para instalações com flakes.

  2. Faça uma cópia da configuração atual

    sudo cp -a /etc/nixos "/etc/nixos.backup-$(date +%Y%m%d-%H%M%S)"
  3. Crie um arquivo separado para o Asterisk

    Abra:

    sudo nano /etc/nixos/asterisk.nix

    Coloque este conteúdo:

    { pkgs, ... }:
    
    {
      services.asterisk = {
        enable = true;
    
        # Seleciona a série 22 do Asterisk.
        package = pkgs.asterisk_22;
    
        # Acrescenta opções ao asterisk.conf gerado pelo NixOS.
        extraConfig = ''
          [options]
          verbose = 3
        '';
    
        confFiles = {
          "pjsip.conf" = ''
            [transport-udp]
            type = transport
            protocol = udp
            bind = 127.0.0.1:5060
          '';
    
          "extensions.conf" = ''
            [general]
            static = yes
            writeprotect = yes
    
            [default]
            exten => s,1,Hangup()
          '';
    
          "manager.conf" = ''
            [general]
            enabled = no
          '';
    
          "http.conf" = ''
            [general]
            enabled = no
          '';
        };
      };
    }

    Essa configuração prepara o serviço e um transporte PJSIP disponível somente no próprio servidor, em 127.0.0.1:5060. Ainda não há ramais cadastrados.

    O módulo oficial do NixOS também cria o usuário e grupo asterisk, prepara os diretórios e disponibiliza o comando asterisk. Para esta instalação inicial, mantemos o carregamento padrão de módulos, com autoload=yes.

  4. Importe o arquivo na configuração principal

    Abra:

    sudo nano /etc/nixos/configuration.nix

    Localize a lista imports e acrescente:

    ./asterisk.nix

    Por exemplo:

    imports = [
      ./hardware-configuration.nix
      ./asterisk.nix
    ];

    Preserve os outros arquivos que já estiverem nessa lista e o restante da configuração.

  5. Construa e aplique a configuração

    Primeiro, construa a nova configuração sem ativá-la:

    sudo nixos-rebuild build

    Se terminar sem erro, aplique:

    sudo nixos-rebuild switch

    O NixOS instalará o pacote, disponibilizará os arquivos de configuração e ativará o serviço, incluindo sua inicialização no boot.

    Se sua instalação usa flakes, acrescente aos dois comandos:

    --flake /etc/nixos#NOME_DA_CONFIGURACAO

    Substitua NOME_DA_CONFIGURACAO pela entrada correspondente ao servidor em nixosConfigurations. Se a configuração estiver em um repositório Git, o novo asterisk.nix precisa ser adicionado ao índice para ser incluído na construção. Official NixOS Wiki

  6. Confira o serviço e o PJSIP

    Execute:

    sudo systemctl status asterisk --no-pager

    O resultado esperado é:

    Active: active (running)

    Confira a versão efetivamente instalada:

    sudo asterisk -rx "core show version"

    Confira o módulo de canais PJSIP:

    sudo asterisk -rx "module show like chan_pjsip"

    Confira o transporte:

    sudo asterisk -rx "pjsip show transports"

    Deve aparecer o transporte transport-udp, usando UDP e vinculado a 127.0.0.1:5060.

  7. Entre no console do Asterisk

    sudo asterisk -rvvv

    Dentro dele, experimente:

    core show uptime
    core show settings
    dialplan show default

    Para sair do console, mantendo o serviço funcionando:

    exit
  8. Entenda como aplicar as próximas alterações

    Os arquivos declarados em confFiles são gerenciados pelo NixOS. Faça as alterações em /etc/nixos/asterisk.nix e aplique novamente:

    sudo nixos-rebuild switch

    Para uma alteração apenas no dialplan, recarregue depois:

    sudo asterisk -rx "dialplan reload"

    Para mudanças de pacote ou de transporte que exijam reinicialização:

    sudo systemctl restart asterisk

    O módulo evita reiniciar automaticamente o Asterisk após mudanças. O reinício manual interrompe chamadas em andamento, portanto precisa ser planejado quando o servidor estiver em operação.

Se o serviço não iniciar, consulte:

sudo journalctl -u asterisk -b -n 100 --no-pager

Ao concluir, você terá o Asterisk instalado, iniciado automaticamente e acessível pela CLI, com PJSIP preparado para a configuração dos ramais.

OBS: Um artigo para instalação do NixOS no Proxmox.

OUTRO: Nesse artigo, o foco é a instalação do NixOS no Virtualbox.

Nenhum comentário

“Não importa o método empregado na construção da ponte; o essencial é compreender a engenharia que a sustenta.” — Delphini, 2025.

Tecnologia do Blogger.