Expondo meu pequeno servidor na web: estou me arriscando mais que o necessário?

Prezados,

Em 2025, influenciado principalmente pelos vídeos do Dio, comecei a brincar com um mini-pc e criei um pequeno servidor doméstico aqui para casa rodando o Ubuntu Server LTS e hospedando alguns serviços como Nextcloud e Jellyfin. Quebrei um pouco a cabeça para fazer funcionar, pois todo esse processo foi novidade para mim, e fui tentando seguir as documentações, guias e tutoraisi, além da ajuda eventual do ChatGPT quando empacava em alguma coisa.

Nesta última semana tive vontade de começar a organizar uma espécie de documentação para eu usar como referência na hora de fazer os backups, manutenções nas configurações ou uma nova instalação no futuro. Com isso, me bateu a dúvida se minha configuração está seguindo práticas mínimas de segurança para manter meus dados ou se tenho problemas.

De forma resumida, uso o seguinte:

  • Nextcloud AIO rodando na web com um domínio próprio usando o proxy da Cloudflare, certificado como A+ em https://scan.nextcloud.com/. Uso ele para sincronizar os documentos da minha família entre o computador de casa, notebooks e poder acessá-los remotamente no trabalho e apartir de smartphones, além do backup de mídia dos smartphones;
  • Jellyfin, SMB e SSH acessíveis somente por rede local ou via Tailscale.

Ativei o UFW no Ubuntu e deixei com as seguintes regras:

To                              Action      From
[ 1] 443/tcp                    ALLOW IN    Anywhere  
[ 2] 22/tcp                     ALLOW IN    192.168.1.0/24  
[ 3] 137/udp                    ALLOW IN    192.168.1.0/24  
[ 4] 138/udp                    ALLOW IN    192.168.1.0/24  
[ 5] 139/tcp                    ALLOW IN    192.168.1.0/24  
[ 6] 445/tcp                    ALLOW IN    192.168.1.0/24  
[ 7] 137/udp                    DENY IN     Anywhere  
[ 8] 138/udp                    DENY IN     Anywhere  
[ 9] 139/tcp                    DENY IN     Anywhere  
[10] 445/tcp                    DENY IN     Anywhere  
[11] 22/tcp                     DENY IN     Anywhere  
[12] 443/tcp (v6)               ALLOW IN    Anywhere (v6)  
[13] 137/udp (v6)               DENY IN     Anywhere (v6)  
[14] 138/udp (v6)               DENY IN     Anywhere (v6)  
[15] 139/tcp (v6)               DENY IN     Anywhere (v6)  
[16] 445/tcp (v6)               DENY IN     Anywhere (v6)  
[17] 22/tcp (v6)                DENY IN     Anywhere (v6)

Também instalei o Fail2ban.

Tem algo que eu estou deixando passar nessa configuração? Ficaria muito grato se pudessem contribuir com opiniões e sugestões!

Obs: não considerei colocar o Nextcloud para rodar no Tailscale por conta do acesso no trabalho, onde não posso configurar uma VPN e também pela dificuldade adicional para minha mãe usar. Syncthing também não me pareceu ser uma possibilidade à época em razão da impossibiliade de acesso “on-demand” aos arquivos.

2 curtidas

Usando a Cloudflare, eu adicionaria no UFW os ranges de ips da CF como os únicos permitidos para entrada em HTTPS(além da sua rede local, claro). Ainda no tocante a CF, dica: Crie uma regra no WAF bloqueando qualquer trafego HTTP 1.0/1.1. Esses geralmente são bots/crawlers de ia e vão gerar muito tráfego lixo, e de quebra, isso também barra a indexação em serviços de busca. Nenhum dispositivo moderno usa(ou deveria usar) HTTP abaixo da versão 1.2.

5 curtidas

Pelo que estou vendo a única coisa acessível de fora é a porta 443. As demais são acessíveis somente pela sua rede local (192.168.1.0/24) e algumas estão bloqueadas pelo DENY IN, o que é desnecessário, o UFW já usa DENY por padrão, logo tudo o que você não liberar explicitamente vai ser bloqueado.

Você disse que está rodando isso de casa, então imagino que você tem um IP público acessível pela web, se for isso mesmo a sua maior preocupação deveria ser com o firewall do seu roteador, e ai lá você tem que informar o que você permite entrar pela internet.

Aqui na minha casa também possuo um homelab com ip público para expor alguns serviços na internet.

@lucfreitas Boa Noite Amigo minha recomendação seria se você quer facilicar o acesso por terceiros (familia) eu recomendaria você a abrir portas no seu roteador e colocar seu Nextcloud e Jellyfin atras de um proxy reverso com ssl assim sua familia acessaria https://cloud.seudominio.com. Vou deixar aqui em baixo um breve tutorial caso você ou as pessoas que entrarem neste topico tenham interesse em fazer.

  • Primeiro verifique se seu ip é dinamico ou não
  • Caso seu Ip seja dinamico você não conseguira abrir as portas padrão 80 e 443 mais para ter certeza faça o seguinte teste faça a abertura de portas no seu roteador e cheque se as portas estão abertas com este site

Caso não consiga liberar ou encaminhar as portas padrão 80 e 443 tente outras portas alternativas exemplo 8888 e 4444

  • Se deu certo ate o passo acima instale e configure o nginx proxy manager. Na configuração do docker-compose altere as portas para as que você conseguiu abrir
  • Adquira um domínio ou nome host (duckdns) caso seja um domínio aponte para ser gerenciado pela cloudflare.
  • No Nginx Proxy Manager Configure um novo host na aba se ssl que mora o segredo caso esteja utilizando uma porta alternativa o modo de obter um certificado tem que ser desafio dns ai você escolhe na lista cloudflare (dominio pago que comprou) ou duckdns (nome host) e coloque os dados da api. Na aba Avançado ou versões mais recentes botão de engrenagem coloque essas informações caso tenha configurado seu Nginx Proxy Manager com portas alternativas:
  • # — REDIRECIONAMENTO DE PORTA (Sua correção do erro 400) —
    error_page 497 https://$host:4444$request_uri;

Com isso se tudo der certo você deve conseguir acessar seus aplicativos de fora da rede

Observações

O Nextcloud Aio Não é compativel com portas alternativas caso seja seu caso, porem a migração de instancia para a versâo docker normal ou snap e instalação manual é facil onde basicamente você tem que exportar e importar seu banco de dados e configurações e alterar sua pasta de dados.

Vantagens

  • Sem Limitações Cloudflare Tunel (Nextcloud
  • Sem Aplicativos extras