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
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).
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.