<?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>DEV Community: Abdallah Othman</title>
    <description>The latest articles on DEV Community by Abdallah Othman (@abdallahaho).</description>
    <link>https://dev.to/abdallahaho</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%2F2767724%2Fdf4667e8-41ac-448e-b017-f8e831809c95.jpg</url>
      <title>DEV Community: Abdallah Othman</title>
      <link>https://dev.to/abdallahaho</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abdallahaho"/>
    <language>en</language>
    <item>
      <title>From VPS to Home: How I Built My €90 Development Server That's Been Running for Almost a Year</title>
      <dc:creator>Abdallah Othman</dc:creator>
      <pubDate>Fri, 11 Jul 2025 21:58:31 +0000</pubDate>
      <link>https://dev.to/abdallahaho/from-vps-to-home-how-i-built-my-eu90-development-server-thats-been-running-for-almost-a-year-c8a</link>
      <guid>https://dev.to/abdallahaho/from-vps-to-home-how-i-built-my-eu90-development-server-thats-been-running-for-almost-a-year-c8a</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post was originally published first time on my &lt;a href="https://abdallahaho.com/blog/self-hosting-hetzner-coolify" rel="noopener noreferrer"&gt;personal blog&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A practical guide to building a home lab with a refurbished ThinkCentre M720Q, Coolify, and Cloudflare Tunnels - saving money while gaining complete control&lt;/p&gt;

&lt;h2&gt;
  
  
  The €150/Year Wake-Up Call
&lt;/h2&gt;

&lt;p&gt;So I was sitting with my coffee one morning, looking at my Hetzner invoice, when it hit me. I was paying around &lt;a href="https://www.hetzner.com/cloud" rel="noopener noreferrer"&gt;€150 per year for a VPS&lt;/a&gt; that was... fine. Just fine. But here's the thing - for the same money, I could own actual hardware that would be way more powerful.&lt;/p&gt;

&lt;p&gt;You know that moment when you realize you've been solving the wrong problem? Yeah, that was me with cloud hosting for personal projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Black Friday Hunt
&lt;/h2&gt;

&lt;p&gt;Back in November, Black Friday rolled around, and I did what any self-respecting engineer does - I went bargain hunting on Amazon. And there it was: a &lt;a href="https://psref.lenovo.com/syspool/Sys/PDF/ThinkCentre/ThinkCentre_M720_Tiny/ThinkCentre_M720_Tiny_Spec.pdf" rel="noopener noreferrer"&gt;Lenovo ThinkCentre M720Q Tiny Mini PC&lt;/a&gt; for €90. Originally priced around €150, this little beast came with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.intel.com/content/www/us/en/products/sku/129941/intel-core-i58500t-processor-9m-cache-up-to-3-50-ghz/specifications.html" rel="noopener noreferrer"&gt;Intel Core i5-8500T processor&lt;/a&gt; (6 cores!)&lt;/li&gt;
&lt;li&gt;8GB RAM (officially supports up to 32GB)&lt;/li&gt;
&lt;li&gt;128GB SSD with room for another&lt;/li&gt;
&lt;li&gt;Two RAM slots for future upgrades&lt;/li&gt;
&lt;li&gt;Smaller than my coffee maker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To be honest, I was worried it would be broken. Used electronics from Amazon? That's a gamble. But when it arrived, it was surprisingly well-maintained - cleaned up, functioning SSD, and ready to go. The refurbishment was solid.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Upgrade Dance
&lt;/h3&gt;

&lt;p&gt;Here's where it gets interesting. The RAM was on sale during Black Friday - €50 for 32GB. So for a total of €140, I had a machine that would cost me years of Hetzner hosting. The math was simple: one-time €140 investment versus €150 every single year.&lt;/p&gt;

&lt;p&gt;The upgrade process? Dead simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pop open the case (no tools needed - Lenovo knows what they're doing)&lt;/li&gt;
&lt;li&gt;Slide in the RAM - took maybe 10 minutes&lt;/li&gt;
&lt;li&gt;Add a second SSD for redundancy&lt;/li&gt;
&lt;li&gt;Done in under 30 minutes&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Setting Up: A Weekend Well Spent
&lt;/h2&gt;

&lt;p&gt;The whole setup took me a weekend, tops. Let me break it down:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hardware Assembly&lt;/strong&gt;: Less than 2 hours&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unboxing and inspection: 20 minutes&lt;/li&gt;
&lt;li&gt;RAM upgrade: 10 minutes
&lt;/li&gt;
&lt;li&gt;SSD installation: 10 minutes&lt;/li&gt;
&lt;li&gt;Cable management (just Ethernet + power): 5 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Software Setup&lt;/strong&gt;: Around 1.5 hours&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://ubuntu.com/tutorials/install-ubuntu-server" rel="noopener noreferrer"&gt;Ubuntu Server installation&lt;/a&gt; via USB: 30 minutes&lt;/li&gt;
&lt;li&gt;Initial configuration and updates: 30 minutes&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://coolify.io/" rel="noopener noreferrer"&gt;Coolify&lt;/a&gt; installation with setup tunnels and all: 20 minutes&lt;/li&gt;
&lt;li&gt;First containers running: 10 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The beauty? You only need two cables - Ethernet and power. HDMI is optional unless you're troubleshooting. I went with Ethernet over WiFi because, let's be frank, stability matters more than cable aesthetics when you're running services 24/7.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Coolify: My Personal Heroku
&lt;/h2&gt;

&lt;p&gt;If you haven't heard of &lt;a href="https://coolify.io/" rel="noopener noreferrer"&gt;Coolify&lt;/a&gt;, think of it as your own personal Heroku. It's been a game changer for me. Here's what it handles out of the box:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.docker.com/engine/install/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt; orchestration&lt;/li&gt;
&lt;li&gt;Automatic SSL certificates (&lt;a href="https://letsencrypt.org/getting-started/" rel="noopener noreferrer"&gt;Let's Encrypt&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Service discovery&lt;/li&gt;
&lt;li&gt;One-click deployments&lt;/li&gt;
&lt;li&gt;Git integration with push-to-deploy&lt;/li&gt;
&lt;li&gt;Automatic security updates (they just added this!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The SSH setup? Already secured out of the box with key-based authentication. No passwords, no nonsense. And the recent update that adds automatic patching from the UI? That's peace of mind right there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Security Dilemma (And My Solution)
&lt;/h2&gt;

&lt;p&gt;Here's where I hit my first real challenge. My server is sitting in my home network behind my router. How do I expose services to the internet without turning my home into a hacker's playground?&lt;/p&gt;

&lt;p&gt;Port forwarding on my router? That's basically putting a "hack me" sign on ports 80 and 443. No thanks.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;&lt;a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/" rel="noopener noreferrer"&gt;Cloudflare Tunnels&lt;/a&gt;&lt;/strong&gt;. This was the game changer for me. Instead of exposing my home IP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The tunnel creates a secure connection FROM my server TO Cloudflare&lt;/li&gt;
&lt;li&gt;Only the services I explicitly expose are accessible&lt;/li&gt;
&lt;li&gt;DDoS protection included (for free!)&lt;/li&gt;
&lt;li&gt;I can kill access instantly from the Cloudflare dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And yes, it's completely free. Cloudflare is basically subsidizing my entire security infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Nuclear Option
&lt;/h3&gt;

&lt;p&gt;One fun thing I did - I installed a &lt;a href="https://www.ikea.com/de/de/p/tretakt-steckdose-smart-80540349/" rel="noopener noreferrer"&gt;smart plug&lt;/a&gt; on the server's power cord. Cost me €8, but now if someone decides to have fun with my services while I'm away from home, I can literally pull the plug from my phone. Physical security at its finest!&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Actually Running After a Year?
&lt;/h2&gt;

&lt;p&gt;Almost a year later, here's my stack:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Development Tools&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://mailpit.axllent.org/" rel="noopener noreferrer"&gt;Mailpit&lt;/a&gt;&lt;/strong&gt;: Mailpit - email &amp;amp; SMTP testing tool with API for developers (no more console.log debugging!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.browserless.io" rel="noopener noreferrer"&gt;Browserless&lt;/a&gt;&lt;/strong&gt;: Headless Chrome API for automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://hoppscotch.io/" rel="noopener noreferrer"&gt;Hoppscotch&lt;/a&gt;&lt;/strong&gt;: Self-hosted API testing (think Postman, but mine)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-webui/open-webui" rel="noopener noreferrer"&gt;OpenWebUI&lt;/a&gt;&lt;/strong&gt;: My own ChatGPT interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Productivity Apps&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/excalidraw/excalidraw" rel="noopener noreferrer"&gt;Excalidraw&lt;/a&gt;&lt;/strong&gt;: Whiteboard for architecture diagrams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://karakeep.app/" rel="noopener noreferrer"&gt;Karakeep&lt;/a&gt;&lt;/strong&gt;: Very smart OSS Bookmark manager (goodbye Raindrop.io subscription!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://pi-hole.net/" rel="noopener noreferrer"&gt;Pi-hole&lt;/a&gt;&lt;/strong&gt;: Network-wide ad blocking (this alone is worth it)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Monitoring &amp;amp; Management&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.portainer.io/" rel="noopener noreferrer"&gt;Portainer&lt;/a&gt;&lt;/strong&gt;: When I need to dig deeper than Coolify allows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nicolargo/glances" rel="noopener noreferrer"&gt;Glances&lt;/a&gt;&lt;/strong&gt;: Think htop but with a web UI - shows CPU, RAM, and crucially, temperature&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dozzle.dev/" rel="noopener noreferrer"&gt;Dazzle&lt;/a&gt;&lt;/strong&gt;: Container log aggregation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/alexjustesen/speedtest-tracker" rel="noopener noreferrer"&gt;Speedtest Tracker&lt;/a&gt;&lt;/strong&gt;: Runs every 30 minutes, gives me charts to argue with my ISP about the quality of their service&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Reality Check
&lt;/h2&gt;

&lt;p&gt;Let me be honest about the downsides:&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fan Noise
&lt;/h3&gt;

&lt;p&gt;There's a fan. It makes noise. In winter, with CPU temps under 50°C, it's a subtle hum you can barely hear. In summer, when I'm running more containers, it gets more noticeable. My solution? I moved it from my bedroom to the living room bookshelf. Problem solved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Power Consumption
&lt;/h3&gt;

&lt;p&gt;Based on my calculations (10-15W idle, up to 35W under load), running 24/7 costs about €3/month in electricity. That's €36/year - still way cheaper than cloud hosting.&lt;/p&gt;

&lt;h3&gt;
  
  
  No CPU Upgrades
&lt;/h3&gt;

&lt;p&gt;Once you buy it, that's your CPU forever. The i5-8500T has been more than enough for my needs (I'm running 20+ containers), but if you're planning to run AI workloads locally, look at newer models with better specs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote Management That Actually Works
&lt;/h2&gt;

&lt;p&gt;The setup gives me multiple management layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Coolify Dashboard&lt;/strong&gt;: Handles 90% of what I need&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSH + Terminal&lt;/strong&gt;: For when I need to get surgical&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://discord.com/developers/docs/resources/webhook" rel="noopener noreferrer"&gt;Discord Webhooks&lt;/a&gt;&lt;/strong&gt;: Notifications when containers fail or need attention&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Plug&lt;/strong&gt;: The nuclear option - remote power cycling when all else fails&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've set up automatic notifications through Discord (it's cross-platform, works on my phone and laptop). When something goes wrong, I know about it immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Year Later: The Numbers
&lt;/h2&gt;

&lt;p&gt;Let's talk economics. Here's my total cost breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Initial Hardware&lt;/strong&gt;: €140 (ThinkCentre + RAM upgrade)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Electricity (1 year)&lt;/strong&gt;: ~€36&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Plug&lt;/strong&gt;: €15&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total First Year&lt;/strong&gt;: €191&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compare that to cloud hosting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.hetzner.com/cloud#pricing" rel="noopener noreferrer"&gt;Hetzner CPX11&lt;/a&gt;&lt;/strong&gt; (2 vCPU, 2GB RAM): €150/year&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My Setup&lt;/strong&gt;: 6 cores, 32GB RAM, unlimited storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have 16x the RAM and 3x the CPU cores for basically the same annual cost. But beyond the economics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No surprise shutdowns in almost a year of 24/7 operation&lt;/li&gt;
&lt;li&gt;Routine reboots every 20 days (my choice, not necessity)&lt;/li&gt;
&lt;li&gt;Complete control over my data&lt;/li&gt;
&lt;li&gt;No bandwidth limits or surprise bills&lt;/li&gt;
&lt;li&gt;Learning experience that cloud abstracts away&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Should You Do This?
&lt;/h2&gt;

&lt;p&gt;If you're running personal projects, development environments, or small services - absolutely. Here's my buying checklist based on what I've learned:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minimum Specs I'd Recommend&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8GB RAM (16GB better for Docker-heavy workloads)&lt;/li&gt;
&lt;li&gt;128GB SSD (enough for 10-20 containers easily)&lt;/li&gt;
&lt;li&gt;Intel i5 6th gen or newer (for power efficiency)&lt;/li&gt;
&lt;li&gt;Gigabit Ethernet port&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What to Check When Buying Used&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BIOS isn't locked (ask the seller specifically)&lt;/li&gt;
&lt;li&gt;All mounting hardware included&lt;/li&gt;
&lt;li&gt;Power adapter included (these can be proprietary and expensive)&lt;/li&gt;
&lt;li&gt;Who did the refurbishment (manufacturer refurb &amp;gt; random shop)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;Moving from cloud to home hosting taught me something important: we've become too dependent on abstractions. Yes, AWS and Hetzner solve real problems, but for personal projects? You're paying for convenience you might not need.&lt;/p&gt;

&lt;p&gt;My little ThinkCentre sitting in my bookshelf has become my playground. Want to try a new service? Deploy it in minutes. Want to experiment with networking? Go wild. Want to learn about infrastructure? No AWS bill anxiety hanging over your head.&lt;/p&gt;

&lt;p&gt;Is it perfect? No. Would I run production services on it? Also no. But for everything else? It's been transformative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Ahead
&lt;/h2&gt;

&lt;p&gt;So yeah, that's how I turned a Black Friday impulse buy into a year-long journey of self-hosting. My Hetzner account? Cancelled within a month. My learning? Through the roof. My coffee? Still brewing while my containers deploy.&lt;/p&gt;

&lt;p&gt;The best part? I'm no longer renting compute power - I own it. And in this age of subscription everything, that feels pretty good.&lt;/p&gt;

&lt;p&gt;What's your take on home labs? Are you still paying for cloud hosting for personal projects, or have you taken the plunge into self-hosting? I'd love to hear about your setup in the comments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources &amp;amp; References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://coolify.io" rel="noopener noreferrer"&gt;Coolify&lt;/a&gt; - The self-hosting platform that makes this all possible&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/" rel="noopener noreferrer"&gt;Cloudflare Tunnels Documentation&lt;/a&gt; - For secure access without port forwarding&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/homelab" rel="noopener noreferrer"&gt;ThinkCentre Tiny Enthusiasts&lt;/a&gt; - Where I learned most of the hardware tricks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.servethehome.com/tag/lenovo/" rel="noopener noreferrer"&gt;ServeTheHome Mini PC Reviews&lt;/a&gt; - Detailed benchmarks and comparisons&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>aws</category>
      <category>selfhosting</category>
    </item>
  </channel>
</rss>
