<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Aleksander Palamar</title>
    <description>The latest articles on Forem by Aleksander Palamar (@aleksanderpalamar).</description>
    <link>https://forem.com/aleksanderpalamar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1031102%2F3455eb79-a704-4e78-928e-dea72ab2fd1b.jpg</url>
      <title>Forem: Aleksander Palamar</title>
      <link>https://forem.com/aleksanderpalamar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aleksanderpalamar"/>
    <language>en</language>
    <item>
      <title>Como montei meu próprio servidor dedicado em casa (e parei de pagar por VPS)</title>
      <dc:creator>Aleksander Palamar</dc:creator>
      <pubDate>Mon, 14 Apr 2025 13:46:50 +0000</pubDate>
      <link>https://forem.com/aleksanderpalamar/como-montei-meu-proprio-servidor-dedicado-em-casa-e-parei-de-pagar-por-vps-3l2a</link>
      <guid>https://forem.com/aleksanderpalamar/como-montei-meu-proprio-servidor-dedicado-em-casa-e-parei-de-pagar-por-vps-3l2a</guid>
      <description>&lt;p&gt;Recentemente, compartilhei em uma publicação que montei meu próprio servidor dedicado em casa para hospedar meus projetos, automatizar deploys e ter controle total da infraestrutura — tudo isso com custo praticamente zero, já que eu já tinha as peças aqui. Isso despertou o interesse de outras pessoas e decidi escrever esse post para explicar com mais detalhes como planejei, montei e mantenho esse servidor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que montar um servidor próprio?
&lt;/h2&gt;

&lt;p&gt;Sempre gostei de entender as nuances do que está por trás dos bastidores de uma aplicação em produção. Embora serviços como Vercel, Heroku ou VPS tradicionais sejam práticos, eles também têm limitações e custos recorrentes. Montar um servidor próprio foi uma forma de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduzir custos&lt;/li&gt;
&lt;li&gt;Aprender com DevOps, redes e infraestrutura.&lt;/li&gt;
&lt;li&gt;Ter liberdade para experimentar configurações personalizadas&lt;/li&gt;
&lt;li&gt;Centralizar vários projetos e serviços&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hardware e conexão de internet
&lt;/h2&gt;

&lt;p&gt;Meu servidor é montado com peças que já possuía:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Processador: Ryzen 5 3400G&lt;/li&gt;
&lt;li&gt;Memória RAM: 16GB DDR4 3200Mhz&lt;/li&gt;
&lt;li&gt;Armazenamento: 120GB SSD
Minha internet é de &lt;strong&gt;600 Mbps de download e 30 Mbps de upload&lt;/strong&gt;, com &lt;strong&gt;IP fixo&lt;/strong&gt;, o que foi fundamental para viabilizar a hospedagem local com acesso externo. Caso sua operadora não ofereça IP fixo ou você esteja &lt;strong&gt;atrás de um CGNAT&lt;/strong&gt;, dá para contornar com serviços como &lt;strong&gt;No-IP&lt;/strong&gt; ou &lt;strong&gt;DuckDNS&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sobre CGNAT e IP fixo
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;*Para verificar se você está atrás de um CGNAT, você pode conferir o IP atribuído ao seu modem. Se ele começar com algo como &lt;code&gt;100.x.x.x&lt;/code&gt;, há grandes chances de você estar dentro de um CGNAT.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Como sair do CGNAT&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Entre em contato com sua operadora de internet e pergunte se é possível obter um IP público (dedicado ou dinâmico). Algumas operadoras disponibilizam isso mediante solicitação ou pagamento de uma pequena taxa.&lt;/li&gt;
&lt;li&gt;Explique que você precisa de acesso externo à sua rede, para rodar serviços próprios como um servidor ou câmera IP.&lt;/li&gt;
&lt;li&gt;Caso a operadora não ofereça essa opção, &lt;strong&gt;considere trocar para um provedor regional&lt;/strong&gt; que ofereça IP público ou suporte a IP fixo.&lt;/li&gt;
&lt;li&gt;Como alternativa, você pode utilizar serviços de VPN reversa como &lt;strong&gt;Tailscale&lt;/strong&gt; ou &lt;strong&gt;Ngrok&lt;/strong&gt; para expor serviços internos com segurança, mesmo estando atrás de um CGNAT.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Sistema operacional e segurança
&lt;/h2&gt;

&lt;p&gt;Instalei o &lt;strong&gt;Ubuntu Server&lt;/strong&gt;, uma distro linux leve e confiavel, ideal para servidores.&lt;br&gt;
Algumas boas práticas que segui:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desabilitei login senha no SSH e configurei login com chave pública&lt;/li&gt;
&lt;li&gt;Ativei o firewall com &lt;code&gt;ufw&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Habilitei o Ubuntu Pro, e a Canonical oferece 5 licenças gratuitas para você usar.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deploy automatizados com Coolify
&lt;/h2&gt;

&lt;p&gt;Escolhi o Coolify para facilitar o deploy das minhas aplicações. Ele é uma alternativa self-hosted ao Heroku e Vercel, com uma interface intuitiva e suporte a projetos Node.js, Next.js, Docker, entre outros. Com ele, consigo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fazer deploy diretamente a partir do GitHub (push na branch).&lt;/li&gt;
&lt;li&gt;Gerenciar containers Docker&lt;/li&gt;
&lt;li&gt;Acompanhar logs, status e health checks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Um dos meus projetos em Next.js, por exemplo, é feito o deploy automaticamente quando faço o push na &lt;code&gt;main&lt;/code&gt; , e o Coolify cuida de todo o ciclo com Docker + SSL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integração com Cloudflare e domínio próprio
&lt;/h2&gt;

&lt;p&gt;Uso o meu próprio domínio que está configurado na cloudflare. A vantagem disso é:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gerenciamento de DNS fácil e rapido.&lt;/li&gt;
&lt;li&gt;Proteção contra DDoS e firewall (WAF)&lt;/li&gt;
&lt;li&gt;SSL automático com proxy reverso HTTPS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No Claudflare, criei os registros A e CNAME apontando para o meu IP fixo.&lt;br&gt;
Também ativei o proxy da Cloudflare, que ajuda a esconder meu IP real e ainda fornece caching e compressão.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoramento backups e boas praticas
&lt;/h2&gt;

&lt;p&gt;Ainda estou evoluindo essa parte, mas já deixei configurado:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitoramento com (&lt;a href="https://uptime.kuma.pet/" rel="noopener noreferrer"&gt;Uptime Kuma&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Backups diários com scripts &lt;code&gt;rsync&lt;/code&gt; + cron&lt;/li&gt;
&lt;li&gt;Alertas via Telegram para falhas criticas&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Desafios e aprendizados
&lt;/h2&gt;

&lt;p&gt;No começo, tive que lidar com questões como redirecionamento de portas no roteador, configuração de DNS reverso e até a instabilidade causada por picos de energias. Isso me ensinou muito sobre resiliência de infraestrutura e automação de manutenção.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recomendações para quem quer seguir esse caminho
&lt;/h2&gt;

&lt;p&gt;Se você também que montar seu servidor caseiro, recomendo estudar sobre:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redes (port forwarding, IP fixo, NAT, DNS)
&lt;/li&gt;
&lt;li&gt;Segurança (firewall, SSH, fail2ban)
&lt;/li&gt;
&lt;li&gt;Docker e orquestração com Docker Compose
&lt;/li&gt;
&lt;li&gt;GitOps (deploys automáticos via GitHub Actions, Coolify, etc)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Fontes que me ajudaram:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Documentação do Ubuntu Server&lt;/li&gt;
&lt;li&gt;Documentação do Coolify&lt;/li&gt;
&lt;li&gt;E um vídeo especifico sobre Coolify do &lt;a href="[A%20Melhor%20Alternativa%20GRATUITA%20ao%20Heroku,%20Vercel%20e%20Netlify!](https://www.youtube.com/watch?v=6z33Ov5i-90)"&gt;Erick Wendel&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>devops</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
    <item>
      <title>O Caminho Definitivo para Desenvolvedores Iniciantes: Como a Programação e o Linux Podem Transformar Sua Carreira</title>
      <dc:creator>Aleksander Palamar</dc:creator>
      <pubDate>Thu, 26 Dec 2024 14:30:18 +0000</pubDate>
      <link>https://forem.com/aleksanderpalamar/o-caminho-definitivo-para-desenvolvedores-iniciantes-como-a-programacao-e-o-linux-podem-586n</link>
      <guid>https://forem.com/aleksanderpalamar/o-caminho-definitivo-para-desenvolvedores-iniciantes-como-a-programacao-e-o-linux-podem-586n</guid>
      <description>&lt;p&gt;Se você está começando agora no mundo da programação, tenho algo muito importante para compartilhar com você. Este artigo é para todos os iniciantes que sonham em se tornar desenvolvedores, especialmente aqueles que acreditam que programar é fácil, que vão ganhar muito dinheiro e ficar ricos da noite para o dia. Antes de tudo, vou ser direto: não é bem assim. Mas isso não significa que o caminho seja impossível, longe disso. Com dedicação, aprendizado estratégico e a mentalidade certa, você pode alcançar o sucesso. Vamos explorar isso juntos.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Base de Tudo: Os Fundamentos da Programação
&lt;/h2&gt;

&lt;p&gt;Antes de se aventurar em qualquer linguagem de programação ou ferramentas avançadas, é crucial construir uma base sólida. Pense na programação como uma língua: você precisa entender a gramática antes de começar a formar frases. E essa "gramática" no mundo da tecnologia é composta por lógica de programação e algoritmos. Esses conceitos são o coração de qualquer linguagem de programação e são indispensáveis para resolver problemas de forma eficiente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que isso é importante?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A lógica e os algoritmos são como um mapa que orienta você na criação de soluções. Sem esses fundamentos, é como tentar construir uma casa sem saber como funciona uma fundação. Portanto, invista um tempo para dominar esses conceitos antes de seguir para o próximo passo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Escolha a Linguagem que Combina com Você
&lt;/h2&gt;

&lt;p&gt;No início, é fácil se sentir sobrecarregado pela quantidade de linguagens disponíveis: Python, JavaScript, Java, C#, entre outras. Mas aqui vai o segredo: não existe uma linguagem perfeita. A melhor linguagem para começar é aquela com a qual você se sente mais confortável ou aquela que se alinha com seus objetivos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quer aprender rápido e entrar no mercado? Python pode ser uma excelente escolha.&lt;/li&gt;
&lt;li&gt;Sonha em criar sites incríveis? Vá de JavaScript.&lt;/li&gt;
&lt;li&gt;Quer trabalhar com sistemas robustos e complexos? Considere Java ou C#.&lt;/li&gt;
&lt;li&gt;Quer trabalhar com mobile? Vá de Kotlin.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Lembre-se, você não precisa saber tudo de uma vez. Escolha uma e aprofunde-se nela antes de expandir para outras.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Linux: O Alicerce dos Desenvolvedores
&lt;/h2&gt;

&lt;p&gt;Independentemente de você escolher ser um desenvolvedor backend ou frontend, uma coisa é certa: aprender Linux é indispensável. Você sabia que grande parte dos servidores do mundo e dispositivos IoT (Internet das Coisas) utilizam Linux? Isso significa que, mesmo que você não esteja diretamente trabalhando com servidores, ter conhecimentos de Linux vai abrir muitas portas para sua carreira.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comece do Básico
&lt;/h3&gt;

&lt;p&gt;Não se preocupe se você nunca usou Linux antes. Comece aprendendo os comandos mais simples, como &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cd&lt;/code&gt; e &lt;code&gt;mkdir&lt;/code&gt;. Depois, aprofunde-se em conceitos como permissões de arquivos, processos e gerenciamento de pacotes. Com o tempo, você perceberá que o Linux não é apenas útil, mas também muito poderoso.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chegue ao Avançado
&lt;/h3&gt;

&lt;p&gt;Se você deseja se destacar no mercado, vá além. Aprenda sobre segurança no Linux, &lt;strong&gt;gerenciamento de servidores&lt;/strong&gt; e &lt;strong&gt;automação com scripts shell&lt;/strong&gt;. Quanto mais você souber, mais valioso será para empresas que buscam desenvolvedores com esse diferencial.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Mentalidade do Resolvedor de Problemas
&lt;/h2&gt;

&lt;p&gt;Agora, quero falar sobre algo que vai além de linguagens e sistemas operacionais. Como desenvolvedor, você deve adotar a mentalidade de resolvedor de problemas. O que isso significa? Significa que seu trabalho não é apenas escrever código, mas sim encontrar soluções criativas e eficazes para os desafios que surgirem. Essa mentalidade é o que diferencia um programador comum de um excelente desenvolvedor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pense nisso&lt;/strong&gt;: se as empresas contratam desenvolvedores, é porque elas têm problemas para resolver. Você é a peça-chave para transformar esses problemas em soluções que geram valor. Então, cultive uma curiosidade constante, busque entender os problemas a fundo e esteja sempre disposto a aprender algo novo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Um Presente Especial: O Roadmap do Linux
&lt;/h2&gt;

&lt;p&gt;Para ajudar você nessa jornada, preparei um roadmap básico e prático para aprender Linux. Ele é simples, direto e vai guiá-lo desde os primeiros passos até conhecimentos mais avançados. Não importa se você está começando ou já tem alguma experiência, este roadmap vai ser seu guia para dominar o sistema operacional que é a base da tecnologia.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── 🔹 Fundamentos
│   ├── 🔸 Conceitos Básicos de Linux
│   │   ├── 📂 Hierarquia do Sistema de Arquivos
│   │   ├── 🔑 Permissões e Propriedade
│   │   ├── 🔄 Processos e Daemons
│   │   └── 🖥️ Comandos Básicos (ls, cd, cp, mv, rm, etc.)
│   ├── 🔸 Shell e Scripts
│   │   ├── 📝 Scripts Bash
│   │   ├── 🔧 Automação Básica
│   │   └── 🛠️ Comandos Comuns do Shell (grep, awk, sed)
│   ├── 🔸 Fundamentos de Redes
│   │   ├── 🌐 Pilha TCP/IP
│   │   ├── 🌍 Configuração de DNS
│   │   ├── 🔌 Interfaces de Rede
│   │   └── 🛠️ Solução Básica de Problemas de Rede (ping, traceroute, netstat)
│   └── 🔸 Instalação e Configuração do Sistema
│       ├── 💿 Métodos de Instalação (ISO, PXE)
│       ├── 🗂️ Particionamento de Disco e Sistemas de Arquivos
│       └── 🔒 Configuração Inicial e Endurecimento
├── 🔹 Administração de Sistemas
│   ├── 🔸 Gerenciamento de Usuários e Grupos
│   │   ├── 👤 Contas de Usuário
│   │   ├── 👥 Políticas de Grupo
│   │   └── 🔑 Configuração do sudo
│   ├── 🔸 Gerenciamento de Pacotes
│   │   ├── 📦 RPM e YUM (RHEL/CentOS)
│   │   ├── 📦 APT (Debian/Ubuntu)
│   │   └── 🔧 Compilação a partir do Código-Fonte
│   ├── 🔸 Gerenciamento de Processos
│   │   ├── 🔄 Systemd e Init
│   │   ├── 👀 Monitoramento e Controle de Processos
│   │   └── 🕒 Crontab e Tarefas Agendadas
│   ├── 🔸 Gerenciamento de Sistemas de Arquivos
│   │   ├── 🗂️ Montagem e Desmontagem de Sistemas de Arquivos
│   │   ├── 📁 NFS e Samba
│   │   └── 📊 Cotas de Disco
│   └── 🔸 Segurança
│       ├── 🔥 Firewalls (iptables, firewalld)
│       ├── 🛡️ SELinux e AppArmor
│       ├── 🔒 Configuração do SSH
│       └── 📝 Auditoria e Logs
├── 🔹 Redes e Serviços
│   ├── 🔸 Configuração de Rede
│   │   ├── 🌐 Endereçamento IP Estático e Dinâmico
│   │   ├── 🔌 Agregação e Ponteamento de Redes
│   │   └── 📶 VLANs
│   ├── 🔸 Serviços Web
│   │   ├── 🌐 Apache e Nginx
│   │   ├── 🔐 HTTPS e SSL/TLS
│   │   ├── ↔️ Proxies Reversos
│   │   └── 🛡️ Firewalls de Aplicações Web (WAF)
│   ├── 🔸 Gerenciamento de Banco de Dados
│   │   ├── 💾 MySQL/MariaDB
│   │   ├── 💾 PostgreSQL
│   │   ├── 📂 Bancos de Dados NoSQL (ex.: MongoDB)
│   │   └── 🔄 Backup e Restauração
│   ├── 🔸 Serviços de E-mail
│   │   ├── ✉️ Postfix e Sendmail
│   │   └── 🚫 Filtro de Spam
│   └── 🔸 Serviços de Arquivos e Impressão
│       ├── 📁 Samba
│       ├── 📁 NFS
│       └── 🖨️ CUPS
├── 🔹 Administração Avançada
│   ├── 🔸 Virtualização
│   │   ├── 💻 KVM e QEMU
│   │   ├── 📦 VirtualBox
│   │   └── 🔧 Libvirt
│   ├── 🔸 Containerização
│   │   ├── 🐳 Docker
│   │   ├── ☸️ Kubernetes
│   │   └── 🔧 Podman
│   ├── 🔸 Computação em Nuvem
│   │   ├── ☁️ AWS
│   │   ├── ☁️ Azure
│   │   ├── ☁️ OpenStack
│   │   └── ☁️ GCP (Google Cloud Platform)
│   ├── 🔸 Gerenciamento de Configuração
│   │   ├── 🤖 Ansible
│   │   ├── 🎭 Puppet
│   │   ├── 🍴 Chef
│   │   └── 🧂 SaltStack
│   └── 🔸 Alta Disponibilidade
│       ├── 🔗 Clusterização (Pacemaker, Corosync)
│       ├── ⚖️ Balanceamento de Carga (HAProxy, Nginx)
│       └── 🔄 Backup e Recuperação de Desastres
├── 🔹 Monitoramento e Desempenho
│   ├── 🔸 Monitoramento do Sistema
│   │   ├── 🔧 Ferramentas (Nagios, Zabbix, Prometheus, Grafana)
│   │   └── 📝 Gerenciamento de Logs (ELK Stack, Graylog)
│   ├── 🔸 Ajuste de Desempenho
│   │   ├── 🧠 Otimização de CPU e Memória
│   │   ├── 💾 Desempenho de I/O de Disco
│   │   └── 🌐 Desempenho de Rede
│   └── 🔸 Solução de Problemas
│       ├── 📝 Análise de Logs
│       ├── 🔍 Problemas Comuns e Soluções
│       ├── 🚧 Gargalos de Desempenho
│       └── 🔧 Ajuste do Kernel
├── 🔹 Scripts e Automação
│   ├── 🔸 Scripts Avançados
│   │   ├── 📜 Scripts de Shell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusão:
&lt;/h2&gt;

&lt;p&gt;Se tornar um desenvolvedor não é um caminho fácil, mas é uma jornada incrivelmente recompensadora. Com uma base sólida em lógica e algoritmos, a escolha certa de linguagem e um domínio do Linux, você estará muito bem preparado para os desafios que virão. Mais do que isso, com a mentalidade de resolver problemas, você se tornará um profissional indispensável no mercado. Então, pegue esse roadmap, coloque as mãos na massa e comece a construir sua carreira agora mesmo. O futuro é seu!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
