Imos configurar um proxy inverso com Apache, e como exemplo, imos fazer que a instalaçom que fixemos de Jellyfin seja accesível como se de umha web normal se trata-se, escrevendo um nome de domínio. Ademais, aplicaremos umha capa de seguridade estabelecendo que todos o tráfico seja cifrado utilizando os certificados que nos proporciona Let’s Encrypt.
O domínio a usar neste exemplo vai ser jellyfin.exemplo.com, que haveria que mudar polo dominio real.
A configuraçom de Apache vem explicada na documentaçom oficial.
Bem, começamos, a prática é para um servidor Ubuntu 18.04.
Instalamos apache:
sudo apt install apache2 -y
Habilitamos os módulos que nos indicam na documentaçom oficial:
sudo a2enmod proxy proxy_http proxy_wstunnel ssl
Agora, diriximo-nos ao diretório /etc/apache2/sites-available e criamos o ficheiro jellyfin.conf co nosso editor de texto preferido e co seguinte conteúdo (mudar domínios e IP’s polas que corrspondam):
<VirtualHost *:80> ServerName jellyfin.exemplo.com ServerAlias www.jellyfin.exemplo.com ProxyPreserveHost on ProxyPass "/embywebsocket" "ws://192.168.0.160:8096/embywebsocket" ProxyPassReverse "/embywebsocket" "ws://192.168.0.160:8096/embywebsocket" ProxyPass "/" "http://192.168.0.160:8096/" ProxyPassReverse "/" "http://192.168.0.160:8096/" </VirtualHost>
Habilitamos o sítio com
sudo a2ensite jellyfin.conf
E recarregamos o serviço de apache
sudo systemctl reload apache2.service
Estes dous passos repetimo-los sempre que modifiquemos ou criemos algum ficheiro de configuraçom de um Host Virtual em apache.
E com isto já teriamos o jellyfin accesível para o domínio jellyfin.exemplo.com polo porto 80, polo que, abrindo esse porto no nosso router, poderiamos acceder diretamente desde qualquer lugar com acceso a internet.
Se fora para um servidor web, creariamos outro ficheiro, por exemplo web.conf, co conteúdo que poderia ficar como segue:
<VirtualHost *:80> ServerName web.exemplo.com ServerAlias www.web.exemplo.com ProxyPreserveHost on ProxyPass "/" "http://192.168.0.160/" ProxyPassReverse "/" "http://192.168.0.160/" </VirtualHost>
Ou se a página web estivera por exemplo no diretório var/www/html/blogue/ e escoitando polo porto 5000, ficaria:
<VirtualHost *:80> ServerName web.exemplo.com ServerAlias www.web.exemplo.com ProxyPreserveHost on ProxyPass "/blogue/" "http://192.168.0.160:5000/" ProxyPassReverse "/blogue/" "http://192.168.0.160:5000/" </VirtualHost>
Mas ainda ficaria a parte da encriptaçom, já que com esta configuraçom as nossas senhas, usuários e conteúdos viajariam em plano para o mundo todo. Entom, imos dar accesso por https com Let’s encrypt, para facilitar o processo o máximo possível e ademais dispor de um certificado reconhecido por todos os navegadores.
Isto sería válido tanto para o Jellyfin coma para as webs que tiveramos no nosso servidor, ou noutro servidor mas reencaminhadas polo proxy inverso.
Instalando o certificado de Let’s Encrypt com certbot
Novamente seguimos a documentaçom oficial desde a página de certbot:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt update
E agora instalamos com:
sudo apt install certbot
Agora que o temos instalado, por meio do comando
sudo certbot --apache
Abrirá-se um processo onde podemos escolher a que domínios lhe queremos criar um certificado e umha opçom para que, por defecto, todo o tráfico se redireccione por https.
Para que o processo remate com sucesso, deveremos ter o porto 443 do nosso router aberto.