DAILY NEWS

Stay Ahead, Stay Informed – Every Day

Advertisement
Cloud Engineer Journey #6 — EC2 Explained Simply & Launching Your First Cloud Server



After understanding:

Linux fundamentals
AWS basics
and Cloud Computing concepts,

it’s time to work with one of the most important AWS services:

EC2 is one of the core services in AWS and is heavily used in:

Cloud Engineering
DevOps
Hosting applications
Automation
CI/CD
Docker & Kubernetes environments

In this post, we’ll understand:

what EC2 actually is,
why companies use it,
and how to launch your first cloud server step by step.

I’ll keep everything beginner-friendly and practical.

EC2 stands for:

EC2 allows you to create virtual servers in the cloud.

Think of EC2 like:🖥️ renting a computer/server online whenever you need it.

Instead of buying physical hardware, AWS lets you launch servers within minutes.

These servers can run:

websites,
applications,
databases,
APIs,
automation tools,
and many cloud workloads.

Most modern cloud applications run on servers.

EC2 helps companies:

deploy applications quickly,
scale resources,
reduce hardware costs,
and manage infrastructure more easily.

It is one of the most commonly used AWS services.

Imagine you want to host:

a website,
a backend application,
or a Jenkins server.

Instead of buying a physical machine:👉 you can launch an EC2 instance in AWS within minutes.

This is one of the main reasons cloud computing became so popular.

When you launch a server in AWS, it is called an:

Each instance includes:

CPU
Memory (RAM)
Storage
Networking
Operating System

Just like a real computer.

Before launching an EC2 instance, there are a few important concepts to understand.

An AMI is a preconfigured operating system template.

Example:

Amazon Linux
Ubuntu
Red Hat

Think of it like:💿 selecting which operating system you want to install on your server.

Instance type decides:

CPU power
RAM size
performance level

Example:

“`bash id=”22j9mo”t2.micro

This is commonly used in AWS Free Tier.

# 🔐 3. Key Pair

AWS uses SSH keys for secure login.

When creating an EC2 instance, AWS generates:

* a public key
* and a private key

The private key (`.pem` file) is used to connect to the server securely.

# 🛡️ 4. Security Groups

Security Groups act like virtual firewalls.

They control:

* incoming traffic
* outgoing traffic

Example:

* Allow SSH (port 22)
* Allow HTTP (port 80)

Without proper Security Group rules, you cannot access the server.

# 🌍 5. Region

AWS has multiple regions worldwide.

Example:

* Mumbai
* Virginia
* Singapore
* London

Choosing a region closer to users improves performance and reduces latency.

# 🚀 Launching Your First EC2 Instance

Basic steps:

### 1. Open AWS Console

Search for:

“`bash id=”mf4ib7″
EC2

Enter fullscreen mode

Exit fullscreen mode

2. Click “Launch Instance”

3. Select an AMI

Example:

4. Choose Instance Type

Example:

“`bash id=”7rk0p7″t2.micro

### 5. Create or Select Key Pair

Download the `.pem` file safely.

### 6. Configure Security Group

Allow:

* SSH (22)

Optional:

* HTTP (80)
* HTTPS (443)

### 7. Launch Instance

AWS will now create your cloud server.

# 🔗 Connecting to the EC2 Instance

Once the instance is running, connect using SSH.

Example:

“`bash id=”m1v2p2″
ssh -i key.pem ec2-user@your-public-ip

Enter fullscreen mode

Exit fullscreen mode

Now you are connected to your cloud server 🚀

EC2 is heavily used in:

application hosting,
automation,
CI/CD pipelines,
Docker setups,
Kubernetes clusters,
monitoring tools,
and cloud infrastructure.

Understanding EC2 is one of the biggest first steps in Cloud Engineering.

Try this on AWS:

Task:

Launch an EC2 instance
Use Amazon Linux AMI
Select t2.micro
Create a key pair
Configure Security Group for SSH
Connect to the instance using SSH

👉 In the next post, I’ll explain the solution and common beginner mistakes step by step.

EC2 may sound advanced at first, but the core idea is simple:

👉 AWS gives you virtual servers on demand.

Instead of managing physical infrastructure, you can launch servers within minutes and use them for real-world applications.

This is one of the most important foundations in AWS and Cloud Engineering ☁️

If you are learning AWS, Linux, or Cloud basics and need help with even small doubts, feel free to connect with me through LinkedIn or email — always happy to learn and grow together 🚀



Source link

How I Host My Side Projects for Under /Month (2026)


I run 4 live projects on a single VPS. Here’s exactly what I use and what it costs.

The Problem

You built an amazing side project. Now you need to deploy it.

Options:
→ Heroku: Free tier gone, cheapest $5+/mo per app 😬
→ Vercel: Great for frontend, limited backend ⚠️
→ AWS Free Tier: Complex, easy to overspend 💸
→ Shared hosting: Slow, outdated stacks 🐌

What I actually use for my projects:
→ 1 VPS + free tiers = everything running for ~$5/mo total 🎉

Enter fullscreen mode

Exit fullscreen mode

My Setup at a Glance

Project
Tech Stack
Hosting
Cost

AgentVote (main site)
Node.js + Nginx
VPS (port 3000)
Included

CryptoSignal
Node.js + SQLite
Same VPS (port 3001)
Included

Hugo Blog
Static HTML
Same VPS (Nginx)
Included

Text Formatter
Node.js
Same VPS (port 3099)
Included

Total: $5/month for the VPS. Everything else is free.

Option 1: VPS (What I Use)

Why a VPS?

✅ Full root access — install anything
✅ Run multiple projects on one server
✅ Fixed monthly cost regardless of traffic
✅ Learn DevOps skills that transfer to any job
✅ Complete control over your stack
❌ You manage security updates yourself
❌ No auto-scaling (but side projects don’t need it)

Enter fullscreen mode

Exit fullscreen mode

What to Look For

# Minimum specs for most side projects:
CPU: 1-2 cores
RAM: 1-2 GB (Node.js apps are light)
Storage: 25-50 GB SSD
Bandwidth: 1-2 TB/month (plenty for small projects)
OS: Ubuntu 22.04 or 24.04 LTS
Price: $3-6/month

Enter fullscreen mode

Exit fullscreen mode

VPS Providers I’ve Used

DigitalOcean — My Recommendation

Basic droplet: $4/month (512MB RAM, 1 vCPU)
Standard droplet: $6/month (1GB RAM, 1 vCPU)
Pros: Simple dashboard, great docs, massive tutorial library
Cons: No free tier
If you sign up through my referral link, you get $100 in credits over 60 days

Hetzner Cloud (Europe-based, excellent value)

CX22: €3.29/month (~$3.50) — 2 vCPU, 2GB RAM, 40GB SSD
Pros: Best price-to-performance ratio
Cons: Support is Germany-timezone

Vultr

Starting at $2.50/month (512MB RAM)
Many global locations
Good if you need servers close to your users

Linode (Akamai)

Starting at $5/month
Reliable, been around forever
Good documentation

My Nginx Config (Running 4 Apps on One Server)

# /etc/nginx/sites-available/myserver
# Each app on its own port, one domain

server {
listen 80;
server_name agentvote.cc;

# Main app
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host;
}

# CryptoSignal sub-path
location /signal/ {
proxy_pass http://127.0.0.1:3001/;
proxy_set_header Host $host;
}

# Blog (static files)
location /blog {
alias /root/data/disk/projects/alexchen-blog/public;
index index.html;
try_files $uri $uri/ /blog/index.html =404;
}

# Text formatter tool
location /format {
return 301 /format/;
}
location /format/ {
proxy_pass http://127.0.0.1:3099/;
}
}

Enter fullscreen mode

Exit fullscreen mode

SSL with Let’s Encrypt (Free)

# Install certbot
apt install certbot python3-certbot-nginx -y

# Get certificate (free, auto-renews!)
certbot –nginx -d agentvote.cc -d blog.agentvote.cc

# Done! HTTPS enabled, auto-renewal before expiry

Enter fullscreen mode

Exit fullscreen mode

Process Management (Keep Apps Running)

# Option A: PM2 (simplest)
npm install -g pm2
pm2 start “node server.js” –name “app1”
pm2 start “node server.js” –name “signal”
pm2 startup # Auto-start on boot
pm2 save # Save process list

# Option B: systemd (no extra deps)
# /etc/systemd/system/app1.service
(Unit)
Description=App1
After=network.target

(Service)
Type=simple
User=root
WorkingDirectory=/root/data/disk/projects/app
ExecStart=/root/.nvm/current/bin/node server.js
Restart=always
RestartSec=10

(Install)
WantedBy=multi-user.target

systemctl enable app1 # Enable on boot
systemctl start app1 # Start now
journalctl -u app1 -f # View logs

Enter fullscreen mode

Exit fullscreen mode

Option 2: Free/PaaS Tiers (Great for Startups)

Vercel — Best for Frontend

Free: 100GB bandwidth, 100 serverless function invocations/day
Perfect for: React/Next.js/Vue/Svelte static sites & SSR
My blog’s frontend could run here free
Deploy: connect GitHub repo → auto-deploy on push

Railway — Easiest Backend Hosting

Free tier: $5 credit/month (enough for small hobby apps)
One-click deploy from GitHub
Auto-scales (but watch the costs!)
Great for: APIs, bots, background workers

Render — Heroku Alternative

Free tier: Web service (sleeps after 15min inactivity)
Databases: Free PostgreSQL (up to 90 days trial)
Great for: Quick prototypes, demos

Fly.io — Edge Deployment

Free allowance: 3 shared-cpu VMs × 256MB RAM
Deploy Docker containers globally
Great for: Low-latency global apps

Glitch — For Learning/Experiments

Completely free for public projects
Live editing in browser
Great for: Prototypes, learning, hackathon projects

Option 3: Hybrid Approach (Smartest)

Static sites → Vercel free tier (fast CDN, zero config)
API servers → Your VPS ($5/mo, full control)
Databases → SQLite on VPS (free) or Supabase free tier
Background jobs → Vercel Cron or your VPS
Files → Cloudflare R2 (S3-compatible, 10GB free)
Email → Resend (3000 emails/month free)

Result: Nearly free infrastructure that scales when needed.

Enter fullscreen mode

Exit fullscreen mode

My Monthly Cost Breakdown

Item
Cost
Notes

VPS (Hetzner/DigitalOcean)
$3.50-$5.00
Runs all my apps

Domain name (.cc)
~$8/year
~$0.67/month

Let’s Encrypt SSL
$0
Free, auto-renewing

Cloudflare DNS/CDN
$0
Free tier covers my needs

Total
~$5.67/month
For 4+ projects

How to Get Started (Step by Step)

Week 1: Get One App Running

1. Sign up for (DigitalOcean)(https://www.digitalocean.com/) (or Hetzner)
2. Create a droplet/server (Ubuntu 22.04, $4-6/mo plan)
3. SSH into your server
4. Install Node.js: curl -fsSL https://fnm.vercel.app | sh
5. Clone your project: git clone your-repo
6. npm install && npm run build
7. Start it: node server.js (or npm start)
8. Install Nginx: apt install nginx
9. Point domain to server IP
10. Set up SSL: certbot –nginx -d yourdomain.com

Enter fullscreen mode

Exit fullscreen mode

Week 2: Add Monitoring

# Uptime monitoring (free)
# UptimeRobot or Uptime.kuma (self-hosted)

# Error tracking
# Sentry (free tier for

# Log management
# journalctl -u your-app (built-in with systemd)
# Or Loki/Grafana (self-hosted free)

Enter fullscreen mode

Exit fullscreen mode

Week 3: Optimize

# Add rate limiting to Nginx
# Set up automated backups
# Configure log rotation
# Add health check endpoints
# Monitor resource usage

Enter fullscreen mode

Exit fullscreen mode

What About When You Scale?

Don’t optimize prematurely!

My rule of thumb:

Enter fullscreen mode

Exit fullscreen mode

What’s your current hosting setup? Are you overpaying?

Follow @armorbreak for more practical DevOps content.

Resources mentioned:



Source link

Six Claude Code Skills That Close the AI Agent Feedback Loop



AI agents write code that compiles, runs locally, and breaks the first time it touches your Kubernetes cluster. The cluster is full of state the model never sees: the env vars on the running pod, the schema in your real Postgres, the headers your upstream auth-service sends, the topics your consumer subscribes to. Without that context, the code an agent writes for your live infrastructure is informed guessing, whether you’re shipping a new feature or fixing a regression.

mirrord closes that gap. It runs a local process as if it were a real pod inside your cluster: real env vars, real DNS, real network, optionally real inbound traffic. A real example: Daylight Security pairs Cursor with mirrord for daily development. Their team cut their typical edit-test cycle from 5–8 minutes to about 5 seconds. The reason isn’t faster CPUs; it’s that the agent now operates against the real cluster the way a senior engineer would, instead of guessing from logs.

We recently shipped six Agent Skills that teach AI agents how and when to use mirrord. The whole bundle installs in one command.

# Claude Code
/plugin marketplace add metalbear-co/skills

Enter fullscreen mode

Exit fullscreen mode

# Any Agent Skills consumer
npx skills add metalbear-co/skills

Enter fullscreen mode

Exit fullscreen mode

Here’s what each skill does, with a concrete prompt that triggers it.

1. mirrord-quickstart

Zero-to-first-session for engineers (and agents) who have never used mirrord. Detects your OS, walks through CLI install or VS Code / IntelliJ setup, finds your target pod in the cluster, runs your first session. Your local process can now reach every service, database, and queue in the cluster.

Try: “I’m new to mirrord, help me run my Node app against my staging cluster.”

The agent installs mirrord, lists targets in your namespace, picks a likely match, and runs mirrord exec –target … — node server.js. No copy-paste from docs.

2. mirrord-config

Generates and validates mirrord.json, which tells mirrord what to do and where to do it. mirrord’s config surface is wide: traffic stealing vs mirroring, filesystem modes, env injection, target selection, database and queue behavior. The skill turns “I want X behavior” into valid config without you opening the docs.

Try: “Steal traffic from pod/api-server, but only requests carrying my baggage header so I don’t break anyone else’s session.”

The agent writes the right config, validates it against the schema, and explains what it does. The interesting part: the skill covers the full mirrord.json surface (target selection, traffic modes, env injection, file system hooks), not just filters. Filtered steal is one of the things that lets multiple developers share one cluster without colliding, but it’s only one of the patterns mirrord-config knows how to set up.

3. mirrord-operator

Sets up the mirrord Operator for teams. Mirroring traffic from a pod is concurrency-safe out of the box; you only need the operator when multiple developers want to steal the same pod’s traffic with different filters, share branched databases, or split a Kafka topic. The operator brokers session boundaries, RBAC, and the routing rules that make those interactions work without collisions.

Try: “Install the operator on our EKS cluster and configure RBAC so only the dev group can use it.”

monday.com runs 350+ engineers on a single shared staging cluster this way. The operator is what makes that scale work: concurrent filtered steal so multiple devs share one pod, queue splitting so they share one SQS topic, DB branching so they share one database, RBAC so they don’t touch workloads they shouldn’t, and the rest of the routing rules that let 350 developers work on the same cluster at the same time.

4. mirrord-ci

Run integration tests in CI in isolation against your staging cluster, instead of spinning up an ephemeral test environment for each PR. The service under test runs in the CI runner with mirrord; mirrord steals the cluster traffic destined for it and routes it to your build, so test traffic follows the same path it would in production, with only that one service swapped. That catches the integration bugs mocks miss, with one shared staging cluster instead of one ephemeral cluster per PR.

Try: “Set up GitHub Actions to run our integration tests against the staging cluster.”

The agent writes the workflow, injects your kubeconfig from a secret, sets MIRRORD_CI_API_KEY, and wires mirrord ci start around your service and mirrord ci stop in the cleanup hook.

5. mirrord-db-branching

Per-developer database branches. Copy-on-write Postgres (or any supported DB), so two engineers can develop against “the same” database without stepping on each other’s writes.

Try: “Give me an isolated DB branch off the staging Postgres for this feature.”

The agent provisions the branch via the operator, points your local process at the branch, and tears down when the session ends. No more “who deleted the test users?” Slack threads.

6. mirrord-kafka

Kafka queue splitting. Each developer gets a slice of the topic that only they consume, while the original consumer keeps running in the cluster. Lets you run a real Kafka workload locally without intercepting messages other people care about.

Try: “Set up queue splitting on the orders.created topic for my local consumer.”

The agent configures the operator’s Kafka splitter, gives your local process a per-developer consumer group, and confirms message routing.

Install

# Claude Code
/plugin marketplace add metalbear-co/skills

# Any Agent Skills consumer
npx skills add metalbear-co/skills

Enter fullscreen mode

Exit fullscreen mode

Repo: github.com/metalbear-co/skills. Issues and PRs welcome; we ship updates fast.



Source link