Auto-hospedagem e ip público parte 3

From Wiki Coolab
Jump to navigation Jump to search

VPS

Essa parte supõe que você tem acesso a uma VPS pública, ou seja, uma máquina virtual rodando um sistema linux na internet, que você pode acessar por ssh. Além disso, você precisa de um domínio próprio que possa apontar para essa máquina. Ou seja, você vai editar os registros DNS do domínio para que os pedidos que chegam nele sejam direcionados para o IP da VPS (como com qualquer serviço web). Faça isso agora, antes de começar.

Zerotier

Também é necessário instalar o zerotier na sua raspi, conforme descrito na parte 2. Anote o ip "managed" da raspi, que será usado na configuração do nginx.

O que vamos fazer na VPS é instalar o zerotier e um servidor nginx e configurar esse como proxy reverso. Assim, todo o tráfego que chegar nele, que seja destinado ao teu domínio (digamos raspi.meudominio.net) vai ser direcionado para o ip da raspi da tua rede zerotier.

Comece instalando o zerotier na VPS, conforme as instruções da parte 2. Autorize o seu acesso no menu em https://my.zerotier.com.

Nginx

Agora instale o nginx na VPS, caso ainda não tenha. As instruções são para Ubuntu, mas não será muito diferente em outros sistemas Debian.

sudo apt update
sudo apt install nginx
sudo systemctl enable nginx

Agora vem o truque principal, que é a configuração do proxy reverso. Vamos usar o editor pico para criar uma nova configuração de site:

sudo pico /etc/nginx/sites-available/raspi.meudominio.net.conf

(Substituindo o nome de domínio pelo teu).

Agora faça paste das configurações, substituindo o IPRASPI na linha que começa com "proxy_pass" pelo "managed ip" da Raspi, anotado no passo anterior.

server {
listen 80;
listen [::]:80;
server_name raspi.meudominio.net; add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always; access_log /var/log/nginx/raspi.meudominio.net/access.log; error_log /var/log/nginx/raspi.meudominio.net/error.log; location / {
proxy_pass https://IPRASPI;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_redirect off;
proxy_read_timeout 5m;
}
client_max_body_size 200M; }

Se você for subir arquivos muito grandes (maiores que 200 megabytes), não deixe de alterar a última linha, substituindo o 200M pelo limite que preferir.

Agora habilite a página:

sudo ln -s /etc/nginx/sites-available/raspi.meudominio.net /etc/nginx/sites-enabled/raspi.meudominio.net
sudo systemctl restart nginx

Uma observação: sua raspi pode necessitar de domínios diferentes para serviços diferentes. Se quiser acrescentar outro domínio como funkwhale.meudominio.net, basta repetir os passos, criando outro arquivo de configuração.

SSL

Em princípio o acesso já está funcionando, mas o serviço vai exigir uma conexão com certificado SSL. Portanto vamos instalar o letsencrypt:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

Agora é só criptografar os sites criados:

certbot --nginx -d raspi.meudominio.net
certbot --nginx -d funkwhale.meudominio.net

E pronto! Tua Raspi já está acessível de qualquer parte da Internet :)