Peixoto Garden

Home Categoria: Tecnologia Como comprar dois thinkpads antigos, resultou em eu criar um servidor caseiro. Conheçam o Hermes!

Como comprar dois thinkpads antigos, resultou em eu criar um servidor caseiro. Conheçam o Hermes!


Tudo começou quando em um belo dia, acabei caindo em um vídeo do youtube onde o tema era sobre esses notebooks que tiveram sua criação no anos 90 e que tinham por objetivo serem destinados para uso empresarial, eles eram modulares e robustos, o que facilitava seu uso e manutenção no ambiente de trabalho. O nome desses notebooks era Thinkpad e desde que vi esse vídeo acabei caindo num rabbit hole e comecei a pesquisar sobre diversas coisas relacionadas a esses notebooks, não sei o que mais me intrigava, se era a estética de alguns, principalmente da geração do x220 para trás ou se era como eles eram bem construídos e tão diferentes do que vemos hoje no mundo do hardware onde cada vez mais recebemos menos. Só sei que os thinkpads me pegaram e eu não pude escapar, eu PRECISAVA ter um.

A escolha que eu fiz foi baseada em algumas coisas, a primeira é, talvez, memória afetiva, minha irmã teve um notebook, ou melhor, como chamavam na época: "netbooks", que eram notebooks pequenos que cabiam basicamente em qualquer mochila, eram leves e você podia levar para qualquer lugar, eu sempre quis ter um igual a esse, mas por motivos de basicamente serem raros hoje em dia, já que grande parte dos notebooks que existem hoje são relativamente grandes, (grandes digo de 15-16 polegadas pra cima), nunca realizei esse desejo.

Com isso em mente, o primeiro thinkpad que chamou minha atenção foi o x220, que foi lançado em 2011 e que tinha essa pegada de "netbook", sua tela tinha suas 12,5 polegadas, era leve e pequeno e pra época um excelente notebook, tinha versões com i5 ou i7 de 2ª geração e vinham com 4gb de ram ddr3 sendo expansível até 8gb, além disso esteticamente era lindo, com um teclado de 7 linhas muito bonito, sinceramente, acho que esse é o notebook mais bonito já feito, junto com o panasonic lets note cf-sx2 japonês, outro sonho de consumo que possivelmente nunca vou realizar.

TKp91ruybg-700
(thinkpad x220)

oATJTXw5xl-700
(panasonic lets note cf-sx2)

Eu estava decidido que iria atrás de um x220, procurei, procurei e procurei e infelizmente não obtive sucesso, cruzei com vários x240, com varios T410, T420, porém a linha T foge um pouco dessa ideia de notebook pequeno, o que não me cativou tanto.

A alternativa que encontrei para a falta de x220 no mercado foi ir atrás dos seus irmãos mais velhos, o x200 ou x201, que esteticamente são bem parecidos com o x220, porém em desempenho são piores. Você pode me perguntar "ah, mas, Thiago, porque você não foi atrás de um x230 ou posterior?", simples, não fui porque a partir dessa geração do x230, o teclado nesse estilo de 7 linhas foi abandonado dando lugar ao teclado que chamam de chiclete.

Pasted image 20261007200659
(thinkpad x240)

E temos que ser sinceros, eles mataram toda a estética dos thinkpads anteriores, quando olho pra isso não sinto nada, obvio, ainda é um thinkpad, mas não era isso que eu queria, se eu tivesse atrás apenas de desempenho eu poderia muito bem só usar o notebook que já tenho e que uso quando viajo, eu queria algo que me deixasse feliz só de olhar e que eu nunca vou sequer pensar em vender de tão legal que eu acho, é o mesmo caso do meu ps3, tive diversos consoles que eventualmente acabei vendendo, porém meu ps3 é intocavel, não o vendo por nada, justamente por ser esse pedaço de hardware que tenho um imenso apego.

Mas como você não tinha nenhum thinkpad e acabou com dois thinkpads na mão?

tá, calma.

Minha missão agora era ir atrás de um x200 ou x201, o 201 não encontrei, o 200 encontrei, porém por algum motivo, as pessoas anunciam esse notebook muito caro sobre a desculpa de ser "relíquia", e quando você vai ver é só o notebook padrão sem nenhum upgrade, logo qualquer um em sã consciência não vai pagar 1000-1200 reais num notebook de 2008.

Depois de muito procurar, achei um x200 num preço bom, ele não vinha com nenhum upgrade, ou seja não tinha ssd, nem ram adicional e a bateria já estava ruim, mas decidi comprar mesmo assim, estava barato, então comprei. Pronto, e assim termina a saga da busca pelo thinkpad, certo?....

Não, porque dias depois na olx apareceu um x201 mais caro pouca coisa que esse x200, mas com um detalhe: ele estava completamente renovado e com upgrades, ao invés do hd ele já vinha com ssd, com upgrade de ram, veio com 6gb, e uma bateria nova. Uma bateria nova!!!

Fiquei pensando se comprava ou não, até porque tinha acabado de comprar o x200, mas pensei bem e cheguei a conclusão que valia a pena, pois se eu fosse fazer upgrades no x200 eu acabaria gastando com ssd, ram e uma bateria nova, e acabaria saindo basicamente o preço desse outro thinkpad que já vinha com tudo isso.

Então, foi assim que acabei com dois thinkpads na mão.

Apesar de ser o melhor, o x201 não será a estrela do dia

Com a chegada do x201, não havia muito sentido em eu manter o x200 também, não vou mentir que pensei em simplesmente alegar arrependimento e devolver o notebook ou só anunciar na olx e tentar pegar a grana que gastei de volta, mas eu realmente não queria me desfazer do notebook, é tão bonito, e é algo tão foda de se ter, então pensei sobre quais usos poderia aplicar a ele e cheguei a conclusão que eu queria usá-lo como servidor caseiro, sempre quis ter um mas nunca tive a oportunidade e acho que o destino acabou de me dar uma chance ao comprar esses dois thinkpads, então, aqui começa a saga do nosso servidor caseiro no thinkpad, o nosso querido HERMES!

Sobre o x201, estou escrevendo essa nota nele inclusive, talvez seja um dos melhores notebooks para escrever coisas, o teclado é muito foda e ele veio com windows 10, eu formatei ele e coloquei linux mint xfce e o notebook roda muito bem com esse SO, até agora não fiz nada de muito complexo com ele, além de usar obsidian e rodar uns games antigos, mas estou usando ele como daily driver e tem sido uma experiência sensacional.

_Ndkt6FH7N-700
(meu thinkpad x201 rodando a nova versão desse site que será lançada em breve)

O que precisamos para nosso server

o x200 veio com um hd de 500gb, apesar de ser uma quantidade boa de memória, sinto que para nosso uso como servidor não vai ser tão daora assim, então o que eu resolvi fazer foi sacrificar o hd de 1tb que uso no meu desktop, e acho que não vou ter problemas até porque dos 1tb, eu estava usando apenas 200 e pouco gigas, ou seja, tranquilo. Vou colocar esse hd de 1tb no x200 e formatar ele para usar Debian Server, nunca fiz nada com debian na minha vida então creio que vou cometer algumas gafes, mas é isso.

Antes de formatar eu queria dizer que achei muito engraçado que o x201 é um pc muito melhor e veio com windows 10, enquanto o x200 veio com windows 11, eu não faço ideia de como o cara que usava antes conseguia usar windows 11 num notebook de 2008, mas tudo bem. E outro detalhe também é que ele veio com aqueles programas antigos que tinha em cd que você comprava em banca de jornal que tinha 400 jogos de flash, achei daora.

o94PEoWI9f-700
(um thinkpad x200 + 404 jogos de flash)

2UPHLjB6-t-700
(A familia toda reunida: Meu Desktop + thinkpad x201 + thinkpad x200)

Agora podemos dar ínicio a instalação e configuração dos serviços do servidor.

Instalando o Debian Server

Para instalar o Debian server, primeiro eu tinha que pegar o hd de 1tb, que estava no meu computador desktop, como citei anteriormente.

Depois de feito isso, era hora de instalar o debian no notebook. Porém nessa parte já enfrentei problemas, eu estava enfrentando um erro na mídia de instalação, eu uso ventoy para guardar ISOs e formatar meus pcs, porém acredito que isso está dando conflito com o x200, então tentei instalar através do rufus e realmente o problema era o ventoy, após mudar o pendrive bootavel para o rufus tudo funcionou perfeitamente.

Após fazer com que tudo funcionasse, foi hora de fazer a instalação, foi o processo padrão de instalar um sistema operacional, ou seja, escolher disco rígido, colocar nome, timezone, etc.

Depois de tudo isso, chegou a hora de escolher os softwares que eu vou usar, marquei apenas SSH server e system standard utilities, ou seja, não usaremos interface gráfica, o servidor vai ser apenas no terminal. (vou omitir o fato que eu errei nessa hora e acabei instalando interface gŕafica e tive que instalar tudo denovo.)

cTgwrUxZW--700
(instalando o debian)

Configurando o Debian Server

Agora nós estamos oficialmente com o servidor, ele ainda está na planta mas ele existe. Primeira coisa que fiz foi ver se tinha algo para atualizar, então rodei um apt update, depois disso, rodei ip addr, para descobrir o ip do servidor.

P2WTJJuNMQ-700
(e ele disse "haja terminal, e houve terminal")

Talvez aqui foi onde encontrei o maior problema que o servidor pode passar a longo prazo. Para explicar qual o problema e o porquê disso, vou explicar mais ou menos o que é DHCP e como um roteador distribui IPs. (ou como eu acho que é, pelo ou menos)

Você, na sua casa, tem vários aparelhos que se conectam a sua rede através do roteador, e ele tem um protocolo chamado DHCP, esse protocolo é responsável por distribuir os endereços de ip de maneira automática na rede da sua casa, ou seja, seu celular vai receber um, seu pc outro e assim sucessivamente, mas como isso é feito de maneira automática, o ip dado para um aparelho pode mudar se assim o roteador decidir. Para resolver isso seria necessário entrar no painel do roteador e separar um endereço de ip especifico para o meu servidor, porém eu não tenho acesso a esse painel e nem posso, pois minha provedora de internet não permite, portanto a solução que encontrei foi achar uma porta que não tivesse nada conectado e colocar meu servidor lá, porém como não modifiquei isso diretamente no roteador, nada o impede de em um dia qualquer ele dar esse endereço para outro dispositivo e o ip do meu servidor mudar e eu ter que reconfigurar algumas coisas novamente. Então, basicamente estamos rodando em fé e esperança que meu roteador não vai fazer uma trollagi do zoio.

Mas com isso do IP deixado para trás, chegou a hora de configurar o ssh para que eu consiga acessar o servidor através do meu desktop ou até do meu outro thinkpad. A única coisa que precisei fazer foi ligar o openssh do meu servidor e pronto, já era possível acessar o meu servidor através do meu desktop pelo cmd.

Depois disso para finalmente deixar o x200 quietinho, tive que configurar ele para que ao fechar a tampa ele não desligasse, para fazer isso só tive que mudar essas três configurações abaixo de suspend para ignore.

HandleLidSwitch=ignore

HandleLidSwitchExternalPower=ignore

HandleLidSwitchDocked=ignore

Agora sim, podemos começar a fazer o servidor funcionar de verdade

Com isso configurado, agora podemos começar a instalar os programas necessários para nosso servidor ser um servidor. Comecei instalando coisas básicas como git, curl, etc. Depois instalei alguns programas que vão me ajudar a ter um feedback de como está o pc, ou seja, ver temperatura, saúde do HD entre outras coisas que são importantes acompanhar para ter certeza que o pc não está morrendo. Para poder rodar nossos serviços, precisei instalar o Docker, foi algo bem simples e que ocorreu tranquilamente. Depois disso parti para a instalação do CasaOS que será a interface que vou usar para administrar o servidor, ele roda no navegador e nele posso administrar programas e extensões.

FNc3n85mU--700
(interface do CasaOS com alguns spoilers)

A minha grande preocupação com esse servidor é também se o x200 vai conseguir aguentar a carga de trabalho, até agora com o CasaOS e o docker rodando, dos 4gb de ram, tenho disponível 2.8, o que é suficiente mas que vai me obrigar a fazer um bom gerenciamento de recursos, se eu quiser continuar com o servidor vou provavelmente precisar investir em mais memória ram para ele num futuro próximo.

Dito isso, chegou a hora de instalar os serviços.

NEXTCLOUD e TAILSCALE

O primeiro serviço que quis instalar foi o nextcloud, porque quero guardar arquivos em um lugar que não me limite igual o google drive e que garante privacidade.

Eu pensei que seria fácil, porém DEMOROU MUITO, o nextcloud estava dando problema, eu não conseguia criar uma conta, pois para criar era necessário colocar um banco de dados, eu fui usar o MariaDB e simplesmente ele não tava funcionando no docker, demorei muito tempo e, depois de muito papo com o gepeto, finalmente o nextcloud estava funcional, eu nunca tomei tanto gap como agora.

No fim, acabei tendo que desistir do nextcloud, ele estava ocupando 100% da CPU mesmo sem rodar nada nele, então, obviamente estava inutilizável. Portanto, decidi ir para uma alternativa mais leve, decidi usar o file browser, ele funciona igual o nextcloud mas tem menos funções, mas para meu objetivo ele serviu.

Com o file browser configurado, era hora de configurar o tailscale, ele é que vai permitir a gente conectar no servidor de fora da nossa rede local, assim vou conseguir acessar o servidor quando estiver fora de casa e no caso do server de minecraft e outro serviços que quero compartilhar com pessoas, ele vai ser necessário para que elas consigam acessar algumas portas do meu servidor.

Configurar o tailscale foi tranquilo também, sem problemas.

SERVER DE MINECRAFT

Para o servidor de minecraft eu instalei o itzg/minecraft-server, é uma imagem do docker que já configura um servidor de mine de maneira automática, como estou usando um notebook antigo, decidi rodar o server numa versão antiga, então o servidor está rodando no minecraft 1.8.9 vanilla, sinceramente, é minha versão favorita do mine e nem ligo de estar jogando nela, configurei para que o server ocupasse no máximo 1.25gb de ram.

Basicamente foi só rodar esse comando abaixo e pronto, meu server estava rodando na porta 25565.

docker run -d \ --name minecraft \ --restart unless-stopped \ -p 25565:25565 \ -e EULA=TRUE \ -e TYPE=VANILLA \ -e VERSION=1.8.9 \ -e MEMORY=1.25G \ -v /srv/minecraft:/data \ itzg/minecraft-server:java8

Agora o que faltava era configurar para que, através do tailscale, meus amigos conseguissem jogar junto comigo, a grande questão aqui é que para isso tenho que adicionar eles a minha rede, porém isso significa que eles terão acesso a tudo do meu servidor, o que não é meu objetivo, portanto tive que configurar ACLs no meu tailscale, para que os meus amigos só consigam ver o server do mine ao se conectar a minha tailnet, os outros serviços ficam inacessíveis.

Para isso tive que reconfigurar as Grants, criei uma regra para que somente o owner, no caso eu, pudesse acessar todas as portas, já para todas as pessoas que entram após mim, eles automaticamente são limitados pelo tailscale e somente a porta do server é que fica acessivel para eles. Com isso, agora era hora de testar se o servidor aguentava muita gente.

O teste foi um sucesso, o máximo de CPU consumida foi 48%.

1Y-fLRyewS-700
(eu e meu mano ruan testando o server)

Eu ainda não havia configurado o server, então depois de testar, resolvi configurar, isso pode ser feito facilmente alterando o arquivo server.properties, as mudanças que fiz foram: nome do mundo, seed, view-distance, max-players e o nome do servidor, nomeei de Hermes Garden. O view-distance foi o principal, diminuindo isso o mundo fica mais leve, porque a geração vai ser menor, pesando menos para a CPU.

Com o server de minecraft feito, é hora de partir para o próximo servidor que quero rodar no meu x200, o server de CS:SOURCE.

SERVER DE CS:SOURCE

Primeiramente, por óbvia limitações de hardware, eu tenho uma regra comigo mesmo de que: ou o servidor de minecraft fica rodando ou o de cs source, meu plano é deixar o server de minecraft aberto 24/7 e o de cs:source abrir só quando eu e meus amigos formos jogar realmente, com isso sempre que o server de cs abrir, o de mine se fecha e vice versa, pretendo automatizar isso, mas antes preciso fazer o server de cs:source funcionar.

Para fazer o server de cs foi o mesmo esquema, fiz pull de uma imagem do docker que configura um server de cs source, estranhamente achei até bem igual ao do minecraft, a única coisa que mudou foi que eu e meus amigos costumamos jogar com os mapas do cs:go, então para isso tive que upar os mapas no meu file browser e dele fazer um copypaste para o container que tinha meu server de cs, foi bem fácil, o único erro que estava enfrentando era problema de permissão da pasta onde os mapas estavam, mas depois que coloquei as permissões na pasta, o servidor começou a conseguir acessa-la e tudo funcionou perfeitamente, então para adicionar os mapas na rotação do servidor eu coloco o nome deles num arquivo chamado map_cycle.txt, com isso quando formos jogar, não precisamos ficar mudando manualmente, só se quisermos, para mudar o mapa é só rodar um comando no console do próprio jogo.

Então assim estava aberto mais um serviço do meu servidor: o server de cs:source

FXlnci3udU-700
(eu e meu mano ryan testando o server de cs:source)

qRFEe-_ebc-700
(banner foda do meu server de cs:source)

JELLYFIN

Com o server de mine, de cs e o sistema de arquivos funcionando, agora chegou a hora de ajustar o jellyfin, sendo esse o ultimo serviço que pretendo colocar no meu servidor no momento.

O jellyfin é um programa onde podemos colocar arquivos de mídia, como filmes, séries, músicas e livros, e através dele fazer a reprodução desses arquivos.

Eu não vou explicar como foi para instalar, porque foi basicamente igual ao servers de mine e cs, só foi puxar um container e configurar algumas nuances dele.

O grande ponto aqui foi como fiz para acessar, esses filmes e etc. Tudo o que precisei fazer foi criar uma pasta dentro do file browser, onde lá eu upo os filmes através do meu pc ou outro dispositivo, o jellyfin scaneia essas pastas e exibe os arquivos deixando eles prontos para a gente só assistir.

6Hk-OQR8rB-647
(séries que adicionei no jellyfin)

O grande problema que eu enfrentei foi a questão de transcoding, que é basicamente quando para exibir uma mídia, o dispositivo faz a transcodificação dela, por exemplo um filme em 2k e .mkv, que através do transcoding fica em 1080p e .mp4 para rodar em um dispositivo especifico. Se meu servidor tivesse mais cpu e ram, esse processo seria simples, mas como estou usando um notebook de 2008, fazer esse processo no lado do servidor é muito custoso, quando tentei rodar filme com transcoding ativado, o jellyfin consumiu 80% da cpu e muita ram.

Para contornar isso tive que primeiramente desativar o transcoding no jellyfin, ou seja, se for depender de transcoding ele não vai exibir o filme/série, isso pode ser um problema, por exemplo, quando desativei o transcoding e fui tentar ver o filme que eu havia adicionado novamente, o filme não carregava, ficava no loading infinito, mas eu descobri que para contornar isso, as pessoas usam front-ends específicos onde você conecta seu jellyfin e esse front-end que você usa fica responsável pela transcodificação, com isso, foi possível rodar filmes e séries sem consumir nada da cpu e da ram, é como se meu servidor só estivesse entregando o arquivo e o cliente que se vire para exibir esse arquivo.

Para assistir filmes e séries no pc usei o programa próprio do jellyfin (Jellyfin Media Player) e no android usei findroid.

J13nVF7fmI-700
(findroid)

Agora, a parte que mais achei daora do jellyfin foi fazer stream de musicas através do servidor, o esquema é o mesmo dos filmes/séries, mas aqui é especial, porque posso usar players diferentes de música. Eu costumo usar o youtube music, então fiz um script em python (você pode encontrar aqui, caso te interesse) para converter e baixar essas músicas dessas playlists, além de adicionar metadados nelas se possível, a questão de pegar metadados de músicas do youtube music sempre é meio ruim, porque as vezes as musicas se misturam com vídeos e os metadados não chegam da maneira certa, então boa parte tive que ajeitar na mão mesmo, mas o resultado valeu a pena, ficou muito daora.Como front para ouvir músicas direto do meu jellyfin no pc estou usando o feishin e no celular estou usando finamp.

NMj0NK3aZp-700
(Gostei muito da interface do feishin, ele tem aqueles visualizers pique windows 7, além de conseguirmos ver as letras da músicas, recomendo muito!)

E além disso, obvio que não podia faltar, baixei um plugin do last.fm para conseguir dar scrobbles nas músicas que tocam no meu servidor. Dito isso, estou muito feliz com meu servidor de mídia 100% configurado e funcional, e cara, acredito que configurar o jellyfin foi a parte mais daora desse projeto, sinceramente, é muito satisfatório ver tudo funcionando e lembrar que tudo está rodando no seu servidor.

O fim do começo

Com tudo isso que foi feito, estou satisfeito com o meu servidor por enquanto, consegui rodar tudo o que eu tinha em mente de início e tudo rodou bem, meu principal medo era relacionado ao desempenho do x200 e agora isso é passado, vi que ele aguenta bem. Não sei quais são os próximos passos do servidor, mas claro que tenho em mente de melhorar o hardware para suportar mais serviços e fazer coisas mais legais ainda, porém para um começo já sinto que está de bom tamanho.

Sinceramente, foi bem cansativo, o que pra vocês foi uma leitura de minutos, pra mim foram uns 3-4 dias trabalhando várias horas e conversando mais com o GPT do que com minha namorada todo dia, mas agora me sinto satisfeito com o resultado, pretendo ir atualizando por aqui mesmo as mudanças que fizer no futuro, então continuem acompanhando o site.

Um abraço direto do HERMES.