Homelab para biblioteca virtual escolar: dicas?

Meu nome é Matheus, sou professor de uma escola pública do estado do RS e estou desenvolvendo um projeto de cultura digital na minha escola criando uma biblioteca virtual auto-hospedada com meus alunos.

Conseguimos garimpar um PC antigo Itautec da escola e mais umas peças e montar uma máquina com 12GB de DDR3, 256GB de SSD para o sistema e mais um HD de 1TB e um de 500GB.

Ficou assim:

Aí instalei o Ubuntu Servidor e o CasaOS e mais esses aplicativos da loja do CasaOS:

  • O Tailscale pra acesso remoto.
  • O Nextcloud para nuvem.
  • O Komga para a biblioteca de livros e HQ’s (Tentei o Calibre Web e o Kavita mas só o Komga funcionou sem dor de cabeça).
  • O Jellyfin pra filmes e séries.
  • O Transmission pra se eu quiser baixar alguma coisa direto no servidor por Torrent.

Os alunos já adicionaram alguns livros e estou adicionando filmes para testar o Jellyfin, mas tem algumas coisas a mais que eu gostaria de fazer:

  • Vi que dá pra adicionar uma homepage personalizada para que quando eles acessarem o servidor não aparece as coisas mais técnicas e sim um site bonitinho com a cara da escola e interface acessível (são adolescentes com pouco letramento digital em computadores). Consegui com IA um HTML básico para a página já mas não sei como configurar para poder aplicar (na rede interna por enquanto).
  • No futuro quero que essa homepage seja acessível de casa por eles ao entrarem num domínio nosso da escola (quero ver pra escola comprar um nome .com.br para isso). O google me respondeu sobre um serviço chamado Cloudfare Tunnels mas sinto que por enquanto é muito avançado para mim mexer nisso.
  • Além disso, quero conseguir um sistema de usuários para que os alunos possam entrar com senha para acessar todos os serviços da biblioteca virtual, para que fique seguro.

É isso! Quis fazer algo legal para as crianças e no fim estou me divertindo horrores com eles mexendo nesse projeto. Gosto muito da comunidade do Dio e fico feliz de compartilhar que mexer em Linux me inspirou pra caramba a fazer um monte de coisa que nunca achei que faria, obrigado para a comunidade!

Pô, muito bacana o projeto, parabéns.

Sobre os seus pontos:

1. Homepage

Pra servir os arquivos HTML você vai precisar de algum programa que escute na porta 80 e/ou 443. Tem algumas opções como Caddy ou nginx. Pela simplicidade eu recomendo o Caddy, vai ficar a configuração tipo:

servidor.escola.com {
    root * /var/www/homepage
    file_server
}

(ou servidor.escola.com:80 se ainda não configurou certificado/ip publico)

Aí você joga o index.html em /var/www/homepage/index.html. Quando qualquer pessoa acessar http://<IP ou dominio> (importante, se for :80 é http. Se for :443 é https) vai cair no html que você fez.

Futuramente você pode aumentar a configuração pra ter servidor.escola.com apontando pra homepage, filmes.escola.com apontando pro jellyfin, etc

Mais cedo ou mais tarde você vai precisar lidar com certificado SSL. Como lidar com SSL depende um pouco do segundo ponto.

2. Homepage acessivel de casa

Aqui você tem algumas opções. O caminho mais fácil é IPv6. Se as estrelas se alinharem é só configurar o domínio e correr pro abraço. Mas IPv6 é bem frágil por que precisa que a ISP da escola e dos alunos permitam. Na pratica eu coloquei aqui só pra saber que existe

No geral vc vai precisar de um IP público. Se a escola tiver um IPv4 publico da pra ver se eles suportam Port Forward pra encaminhar o tráfego pro seu server. E por fim a opção que vai dar menos dor de cabeça é Cloudflare Tunnel mesmo, nesse caso a cloudflare faz um túnel entre seu servidor e algum ipv4 publico.

O mais importante é: qualquer método que você use pra expor o servidor na internet publica precisa ter autenticação e SSL no minimo. Não leva 5 minutos pra expor alguma coisa na internet e os bots começarem a tentar acessar.

3. Autenticação

Vou ser honesto que o caminho mais fácil é escolher um serviço que já suporta autenticação. Jellyfin por exemplo já suporta, então você cria as contas (ou uma conta compartilhada) entre os alunos e ta resolvido.

Outra coisa é que você vai precisar de SSL (https). Autenticação em http na prática é a mesma coisa que nada

No futuro você pode olhar pra OIDC, e aí cada aluno faz login usando o email institucional deles (tipo o login com google, mas especifico pra escola)


Por fim, você vai precisar comprar um domínio (ou se a escola já tiver um, pegar algum subdominio tipo biblioteca.escola.com) e configurar o DNS pra apontar pro ip publico. Depois disso configurar certificados. O caddy por padrão suporta gerar o certificado automático pro domínio.

Se tivesse no seu lugar o que eu faria: Compra um domínio (direto na cloudflare se tiver um preço bom), aponta os nameservers pra cloudflare, configura o tunel e o DNS. Aí configura o caddy no servidor e voilá.

Se você ainda não quiser ter o IP publico mas já tiver o domínio (servidor.escola.com só funcionando na rede da escola) Aí você precisa do caddy com o plugin da cloudflare que gera certificado sem IP publico (eu uso no meu homelab pra coisa privada)

Como não sei seu nível técnico, tentei dar um overview mais alto nível. Se vc já tiver mais familiaridade com algumas partes dessas fica bem mais tranquilo, e qualquer coisa to livre pra trocar uma ideia.

qual proc. desse pc antigo?

com 12Gb de mem da para brincar bastante :goblin:

Tem como acessar fora usando o duckdns apontando para o gateway da escola e para segurança usa o servidor nginx proximanager e abre somente uma porta para ele dai vc adficiona um domain gratis da duckdns para cada serviço e adiciona eles no npm.
uso nextcloud e jellifin e onlyoffice assim, claudflare bloqueia streaming de video pelo q vi.

Bah valeu demais! Vou dar uma pesquisada sobre o que tu falou para ver como aplicar, e estou vendo com a escola a questão da compra do domínio mesmo para o quanto antes botarmos o projeto no ar. Valeu mesmo!

Interessante isso do cloudfare, valeu pelo aviso! Vou pesquisar pra ver como se faz.

Mínima ideia, vou tentar descobrir