Executando verificação de segurança...
9

Transformando notebook antigo em SERVIDOR realmente funcional 🧑🏻‍💻


Introdução

Sobre este Dev e motivação para o projeto

Olá pessoal, me chamo Eduardo Ribeiro sou estudante de Bacharel em Ciência da Computação, e sempre fui um cara bastante curioso para entender como as coisas realmente funcionam por baixo dos panos, e com o conhecimento eu posso aplicar a prática, procurando gastar zero reais kkk.

Geralmente o que acontece é que as ferramentas boas são pagas, e na real o problema nem é o custo em si, pois existem soluções baratas que são uma maravilha, o problema é que tudo já vem muito pronto, os Devs se apegaram muito em "Não recriar a roda", e isso é válido quando se trata de produção, mas não se aplica quando falamos de aprendizado, projetar tudo do zero para aprender na prática é uma das melhores formas de aprender, tentando ao máximo não depender de ferramentas de terceiros, com isso eu consigo testar meu limite e o limite da minha máquina.

Sumário

  1. Hardware da máquina.
  2. Instalação minimal da distro.
  3. Conexão Remota com SSH.
  4. Resolvendo problema de IP dinâmico.
    4.1. Alternativa para o problema do IP dinâmico.
  5. Solicitar aberturas de Portas.
  6. Porque usei docker e não VMs.
  7. Considerações finais.

Hardware da minha máquina

Hardware da máquina com neofetch
Bom, essa é minha máquina, basicamente qualquer kit xenon seria bem melhor, pois sabemos que os servidores são projetados a nível de hardware para fazer essas atividades, servir dados, mas aqui só pra nós 2, eu não queria gastar 1 real e tinha esse notebook sobrando, então vamos ver no que dá...
Como podem perceber minha máquina é bastante limitada quando se trata de recursos, mas isso não me impediu de tentar, eu fico me perguntando quantas conexões por segundo essa máquina conseguiria aguentar.

Instalação minimal da distro

Olha que maneiro turma! A gente se apega muito ao visual das distros e suas funcionalidades, mas quando se trata de servidor nada dessas firulas visuais são importantes, aqui nosso intuito é obter o máximo da máquina, extrair até a última gota de processamento dela, esse é o sistema rodando por completo, consumindo APENAS 170M de RAM, isso é sensacional.

Mostrando consumo de recursos de hardware com o htop

Para isso Eu instalei o Debian com o mínimo de coisa possíveis, no momento da instalação eu removi tudo, a única opção que deixei habilitada foi a do SSH, para que eu pudesse me conectar com ele remotamente. APENAS!

Conexão remota com SSH

O que é o SSH? Secure Shell, mais conhecido como SSH é um protocolo de comunicação de rede criptografado, que opera por padrão na porta 22. Com ele nós conseguimos acessar outro computador de qualquer lugar do mundo de uma forma segura.

Mas como nós fazemos isso? Para acessar um computador remotamente é preciso que em ambos os computadores estejam instalados o SSH, no Linux podemos usar os comandos:

sudo apt install ssh -y

Para verificar se o SSH está funcionando basta digitar ssh no terminal que o resultado vai ser parecido com isso:

Testando se o SSH está instalado

Bom, sem mais delongas para se conectar ao servidor você precisa digitar o nome de algum usuário criado no servidor, do jeito que eu estou mostrando a baixo.

ssh [email protected]

No comando a cima podemos perceber que eu não especifiquei nenhuma porta, então por padrão ele vai se conectar na porta 22.

Vai pedir para você confirmar se for o seu primeiro acesso, pois ele irá gerar um token na sua máquina. E depois será necessário colocar a senha do usuário ao qual você está tentando conectar.

Outra coisa muito importante é que se você perceber, eu estou me conectando Localmente e isso não tem graça, queremos poder nos conectar de qualquer lugar do mundo.

Resolvendo problema de IP dinâmico

Se você tem um pouco de noção de rede de computadores, provavelmente você sabe que os nossos provedores de internet fornecem um IP, que é nosso IP externo, se você acessar Meu Ip você vai conseguir ver seu IP externo, o problema é que esse IP na sua grande maioria das vezes é dinâmico, ou seja, de tempos em tempos, ele muda.

Mas qual problema do IP mudar? Digamos que você configurou seu servidor com o IP X e quando você viaja está muito longe de casa, o teu IP muda para um IP Y, como você vai acessar sem saber o teu IP? E o pior, como que suas aplicações vão funcionar!? No final você não pode fazer nada, a não ser solicitar ao seu provedor de internet que seu IP seja estático.

E como o intuito aqui foi gastar o mínimo possível, eu fiz isso, e obvio que eles não queriam liberar, acho que eles acharam que eu não sabia o que estava fazendo, e começaram a me perguntar algumas coisas para saber se eu realmente manjava do assunto, depois de uma pequena conversa, eles consentiram em tornar meu IP estático.

Agora, sim, eu posso acessar minha rede de longe sem a preocupação de que tudo pare de funcionar.

mindmap
      Internet
          Meu IP publico
            Roteador
                Ip local 01
                IP local 02

Solicitar a abertura de portas

Como nem tudo são flores, eu esqueci que algumas portas do meu IP publico estivessem abertas, para fazer o redirecionamento de tráfico de uma porta do meu ip publico para a minha máquina servidora. E adivinha? Não estavam abertas!

Eu não sei outro jeito de fazer tal coisa, se você souber deixa nos comentários.

Então lá vai Eu entrar em contato com o meu provedor de internet novamente, dessa vez para solicitar a abertura de algumas portas, fui informado que só poderiam abrir no máximo 5 portas sem custos adicionais, e isso foi perfeito, pois eu não queria ter que gastar 1 real.

SUPIMPA! IP estático, portas abertas, agora só fazer a configuração no AP, que muitos de vocês chamam de "Roteador", e pronto, conseguia acessar meu computador de qualquer lugar com o SSH.

Alternativa para o problema do IP dinâmico

Em muitos casos o provedor de internet vai te cobrar uma taxa, ou até mesmo vai se negar a fazer isso para ti, em últimos casos podemos pensar em uma ferramenta que já está bastante difundida no mercado de trabalho, que é o NGROK, é uma ferramenta simples de utilizar para baixar é preciso ir ao site: Ngrok e seguir o passo a passo.

Deixem aí nos comentários se vocês querem que eu traga aqui em forma de post como utilizar essa ferramenta massa que é o Ngrok.

Porque usei docker e não VMs.

Foi pensado em uma solução que já é bastante conhecida que são as máquinas virtuais, onde nós temos o Hardware, rodando com um sistema operacional HOST, que tem uma aplicação hypervisor rodando, que encima dela conseguimos instalar outros sistemas operacionais e neles instalar nossas aplicações.

Diagrama de Organização de VMs

Mas será que isso tudo realmente é necessário? Será que essa camada de Hypervisor ela é realmente necessária? Talvez, sim, talvez não, depende!

Aqui eu nem levei em consideração a camada de dependêncais que fica entre a aplicação e o Sistemas Operacionais.

Até pensei em instalar o PROXMOX, mas eu queria usar o mínimo de hardware possível, então fui tentar entender como o docker funciona e acabei gostando.

Como o docker funciona?

Os contêineres funcionam da seguinte maneira: dentro do nosso sistema operacional nós temos diversos contêineres, com diversas aplicações, que estão sendo executadas no nosso sistema operacional. Só que por baixo dos panos eles vão funcionar diretamente como processos dentro do nosso sistema.

Diagrama de organização do docker

Enquanto uma máquina virtual terá toda aquela etapa de virtualização dos sistemas operacionais, dentro do nosso sistema original, os containers vão funcionar diretamente como processos dentro do nosso sistema.

Namespaces

Existe um conceito chamado namespace que vai garantir que cada um desses contêineres consiga se isolar em determinados níveis. ** Mas que níveis são esses?**

Níveis de isolamento de containers

PID → Provê isolamento dos processos rodando dentro do container;
NET → Provê isolamento das interfaces de rede;
IPC → Provê isolamento da comunicação entre processos e memória compartilhada;
MNT → Provê isolamento do sistema de arquivos / ponto de montagem;
UTS → Provê isolamento do kernel. Age como se o container fosse outro host;

O último conceito, o UTS ajuda a responder até a outra pergunta que é frequente quando se trata de docker.

Como o contêiner dentro do SO vai funcionar “sem” um sistema operacional? Bom, graças ao conceito de namespace, nós não precisamos instalar nenhum SO dentro do contêiner, pois ele já vai ter um pedaço do kernel do SO a qual o docker foi instalado, só que de forma isolada. Existe outro conceito chamado CGroups que fazem o gerenciamento de uso do hardware para cada contêiner. Mas isso está fora do escopo desse post.

Considerações finais

E é isso, meu jovem amigo. Até o momento eu não fiz mais nada no servidor, além de prepará-lo para começar a hospedar minhas primeiras aplicações, estou bastante empolgado para poder desenvolver e testar algumas ferramentas, eu acho que todo esse trabalho valeu a pena, pois me deu uma base ótima para algumas coisas, principalmente sobre rede de computadores, recentemente eu escrevi um post bem básico Falando sobre IPs e redes de computadores. Depois dá uma lida lá.

Vou tentar está trazendo aqui de tempos em tempos forma mais detalhada como está sendo o processo de desenvolvimento dessas ferramentas, se você quiser acompanhar mais de perto, tem o meu LinkedIn onde eu irei tentar trazer atualizações com mais frequência, pois lá não precisa de tantos detalhes como os posts aqui.

Enfim, agradeço por dedicar um tempo para esta leitura, deixa nos comentários o que você achou, e o que você faria diferente, abraços!❤️

Carregando publicação patrocinada...
4

Estou desenvolvendo um pdv para o mercadinho do meu pai, estava precisando acessar remotamente o banco de dados que fica na loja sem liberar as portas, a solução que eu encontrei foi utilizar uma vpn. Instalei o OpenVpn em uma Vm da Oracle Cloud com os recursos Always Free, agora consigo acessar o banco de dados remotamente utilizano uma vpn e de graça.

2
2

Se possível traz um post mostrando como ficaria a configuração do NGROK, já utilizei ele, mas para outros fins para um servidor nunca tentei.

Meu provedor não queria mim passar nem a senha de acesso às configurações do roteador kkkkk.

O post ficou top.

2

Muito massa seu post! Nunca tinha ouvido falar de PROXMOX e nem do conceito de namespace do docker (apesar de já usar ele por uns 2 anos).

Tenho bastante interesse em aprender mais a fundo Linux e o que acontece por debaixo dos panos. Seu post me deixou motivado! 🚀

1

É muito bom ler comentários assim, eu sempre fui muito teório, acho que já virou uma mania minha, tentar entender o máximo possível. Queria poder trazer mais conteúdo sobre docker para te ajudar, mas não sou tão experiente.

1

Se tiver curiosidade, você pode montar um container direto no bash usando comandos que criam namespaces, e ver as coisas sendo isoladas do seu sistema real, é um ótimo exercicio pra entender como docker funciona.

E talvez fazer um clone de docker com isso usando uma linguagem que tenha acesso direto as syscalls do linux como go, rust, C ou C++

2
2

Tem toda uma comunidade no mundo, principalmente em inlgês de self-hosting.
Para todo e qualquer tipo de projeto. Alguns são bem grandes e o pessoal vende serviços até para grandes empresas!

Bom projeto!

1

Caraca que massa, eu não sabia disso, vou começar a pesquisar mais sobre isso agora...

Pelo pouco que eu pesquisei já existe muita coisa e várias comunidades com muito conteúdo já, achei sensacional, muito obrigado pela dica!

2

Nos meus PCs velhos eu rodo nós de protocolos web3:

  • Nó do btc + lightning network;
  • Nó da polygon matic;
  • Nó da mysterium network;
  • Nó da chainlink;
2

Excelente post!

Uma outra opção (que é a que eu uso e prefiro) é usar o TrueNas Scale.
A aplicação primária dele é a criação de um NAS, então não funcionaria com notebook pois precisa de pelo menos 2 unidades de armazenamento do mesmo tamanho pra fazer o array de discos com paridade (caso 1 HD falhe não há perda de dados).

Mas além da funcionalidade de NAS, vc também pode criar containers Docker e VMs (isso só na versão TrueNas Scale, se vc usar a versão TrueNas Core não existe suporte para docker e o hypervisor dessa versão é bem ruim).

Também existe o Unraid (esse é pago, mas não é nenhum absurdo, e vc só compra a licença uma vez e usa pra sempre), que tem funcionalidades similares mas é mais facil de usar na minha opinião. A interface é mais intuitiva e amigável.

1

Meu notebook tem suporte a 2 entradas sata, talvez eu acabe fazendo uns testes. Muito massa as alternativas que você trouxe, obrigado por contribuír com o post!

2
1

Muito obrigado! Eu sempre tento trazer algo mais detalhado, perco horas escrevendo um post assim, para que possa agradar tanto as pessoas mais tecnicas, quanto as mais inexperientes, estou tentando fazer 1 post por semana.

2

To com a ideia de montar um servidor de aplicação sendo um cluster de raspberry pi com o sistema operacional freeBSD, mas ai eu quero botar um notebook fraco (like positivo) para servir de interface

1

É um projeto muito massa, espero que você consiga!

Positivo é meio pancada, mas eu acho que dê pra fazer alguma coisa, por isso que eu fiz o meu, eu queria além de testar a capacidade do notebook, também queria testar a minha capacidade, de saber até onde eu consigo chegar.

2
2
2
2
1

Eu não tinha pensado nissso! Na real eu nem lembrava dessa possibilidade, foi muito bom você ter ter trazido aqui, vou procurar me atualizar sobre o conteúdo pois eu só sei o básico.

2
2

Legal! eu ja fiz um projeto parecido mas usei um raspberry pi 4 e funcionou perfeitamente! o custo de eletricidade para manter 24h por dia saía R$ 5/mês.
Mas devido a instabilidade da internet da minha cidade resolvi não usar para nenhum projeto.
Sen dúvida foi um grande aprendizado.

Também nao segui com o projeto por que ter um ip fixo e portas abertas oferece alguns riscos a segurança da minha rede.

arabéns pelo projeto!

2
2

Que maravilha de publicação. Isso me ajudou em alguns planos que tenho, o que inclui ter alguns servidores no meu escritório, afim de não pagar muito por isso. Com certeza esse post não só me ajudou como também vai ajudar outros colegas. Parabéns!

1

Muitissimo obrigado! Eu também segui essa linha de gastar menos possível, e ter o controle dos meus dados em 100%, depender o mínimo de ferramentas de terceiros. O conceito felf-host é muito massa e o quanto mais eu pesquiso mais eu me identifico. Dá uma pesquisada.

2
1

Que provedor é esse que é tão legal? Te deram IP fixo liberaram portas de graça. Passei meses tentando e só consegui pois comprei um plano empresarial. Aliás é ilegal qualquer bloqueio de portas por parte das operadoras. Mas todas elas bloqueiam.

1

Putz como assim eles não podem bloquear as portas? Eu passei uma lista de portas que eu queria, e eles me responderam dizendo que poderiam liberar no máximo 5 portas, e que se eu quisesse mais, eu teria que comprar um plano lá. Vou pequisar sobre e vou entrar em contato, se eu tenho direito eu quero! kk