Pular para o conteúdo principal

Nginx

O Nginx serve a aplicação Laravel do Rouxinol e faz o TLS (HTTPS) na frente do PHP-FPM. Esta página cobre a instalação, a configuração do site e a emissão de certificado com o Certbot.

Instalando

sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx

Configuração do site

Crie /etc/nginx/sites-available/rouxinol.conf (ajuste server_name e o caminho do projeto):

server {
listen 80;
listen [::]:80;
server_name seu-dominio.com.br;

root /var/www/rouxinol/public;
index index.php;

charset utf-8;

client_max_body_size 20M;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }

# Bloqueia acesso direto a arquivos ocultos (.env, .git, etc.)
location ~ /\. {
deny all;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}

access_log /var/log/nginx/rouxinol-access.log;
error_log /var/log/nginx/rouxinol-error.log;
}

Ative o site e recarregue o Nginx:

sudo ln -s /etc/nginx/sites-available/rouxinol.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
dica

O caminho do socket PHP-FPM (php8.3-fpm.sock) deve corresponder à versão instalada em PHP. Confira com ls /run/php/.

Certificado TLS com Certbot

sudo apt install -y certbot python3-certbot-nginx

Emita o certificado apontando para o mesmo server_name do site — o Certbot ajusta o bloco do Nginx automaticamente para HTTPS:

sudo certbot --nginx -d seu-dominio.com.br

Ele pergunta um e-mail de contato (para avisos de expiração) e se você quer redirecionar HTTP para HTTPS automaticamente — responda "sim".

Renovação automática

O pacote já instala um timer systemd que renova os certificados antes de expirar. Confirme que está ativo:

sudo systemctl status certbot.timer

Teste a renovação sem aplicar de fato:

sudo certbot renew --dry-run

Proxy reverso para o Janus (opcional)

Recursos como Testar Agente e Testar Ligação rodam WebRTC direto no navegador, o que exige contexto seguro (HTTPS/WSS). Se o Janus estiver em outra porta/host, exponha-o atrás do mesmo Nginx com TLS, em vez de abrir as portas HTTP/WS dele diretamente:

server {
listen 443 ssl;
server_name janus.seu-dominio.com.br;

ssl_certificate /etc/letsencrypt/live/janus.seu-dominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/janus.seu-dominio.com.br/privkey.pem;

location / {
proxy_pass http://127.0.0.1:8088;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

location /ws {
proxy_pass http://127.0.0.1:8188;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}

Depois, atualize JANUS_BASE_URL e JANUS_WS_URL no .env do Rouxinol para apontar para https://janus.seu-dominio.com.br e wss://janus.seu-dominio.com.br/ws (veja Configuração).

aviso

A API HTTP do Janus (porta 8088) não tem autenticação por padrão além do api_secret/admin_secret configurados em janus.jcfg. Nunca a exponha publicamente sem TLS e sem esses segredos configurados.

Próximo passo

Continue para Supervisor, responsável por manter os workers de fila e os listeners do Janus sempre rodando.