Before you pay, write down which program has to stay online
A cloud server is just a computer in a provider's data center that stays connected and that you manage remotely. What you rent is compute, memory, disk and network — not a finished website that runs itself.
AWS calls an EC2 instance a virtual server in the cloud. That's accurate, but the console showing "running" only proves the machine is powered on. The program, the ports, the domain, HTTPS, backups and updates still need someone to own them.
So I don't start from the cheapest promo plan. I start by writing down four answers: which program needs to be online 24/7, who will reach it, whether the data can be rebuilt if it's lost, and what happens if it's down for an hour.
If you only want to learn Linux commands, a local virtual machine is usually enough. Renting a server only turns from spending into a tool once the need genuinely can't live without staying online.
Eight concepts that have to connect into one picture
1. The instance: a virtual machine you can create and delete
Cloud platforms call a bootable virtual server an instance. When you create it you pick a region, an OS image and a spec; stopping, rebooting and deleting it all have different consequences.
The one to watch is "delete." Some disks are terminated with the instance, some are kept; temporary storage can vanish on stop or terminate. The exact behavior depends on your provider and the storage type — don't infer it from another provider's tutorial.
2. The operating system: the ground everything else stands on
Most cloud servers run a Linux distribution, but Ubuntu, Debian, Rocky Linux and the rest don't share the same install commands, default users or service management.
Before you copy commands from a tutorial, confirm what you're actually on:
cat /etc/os-release
uname -a
Both just read system info — they don't change anything.
3. The public IP: the address others use to find the server
A public IP lets clients on the internet find this server. It might be fixed, or it might change after you stop and rebuild.
A private IP is only used inside a particular internal network. Listening on 127.0.0.1, a private address, or 0.0.0.0 each produces a different reachable range. "The port is open" isn't the whole story — the address your program listens on has to match the target too.
4. Domains and DNS: pointing a name at an address
A domain is not the server. DNS records are what resolve a domain to a target address.
When a domain won't open, separate the layers first:
- DNS isn't pointing at the right IP yet.
- DNS is correct, but the port isn't reachable.
- The network is through, but the program isn't responding.
- HTTP is fine, but the HTTPS certificate is broken.
Debug all four as one blur and you'll keep fixing the wrong layer.
5. Ports: the service entrances on one machine
One server can run SSH, a website and a database at the same time. Ports are how the network hands each connection to the right program.
Web commonly uses 80 or 443, SSH is commonly 22 — but your actual setup may differ. More open ports isn't more convenient. Databases, admin panels and debug ports generally should not be open to the whole public internet.
6. SSH and keys: the remote management channel
SSH is the common way to log in remotely. Key-based login is usually a public/private key pair: the server keeps the public key, you keep the private one.
The private key must not be sent to anyone, committed to a public repo, or shown in a screenshot. A connection example usually has this shape:
ssh USER@SERVER_IP
USER and SERVER_IP are placeholders. The actual default user depends on the OS image — don't guess it.
7. CPU, memory, disk and network: four different resources
CPU affects compute, memory decides how much can run at once, disk holds the system and data, and the network decides throughput and how much traffic you get.
"2 cores, 4 GB" only tells part of the story. Before you buy, also check:
- Disk size, type and snapshot cost.
- The public bandwidth ceiling.
- Monthly traffic and overage billing.
- Region versus where your users are.
- Whether a public address costs extra.
- Whether the first-term price differs from the renewal price.
Don't let one number stand in for all of the performance.
8. Security groups, firewall and backups: three separate things
A security group usually sits at the cloud platform's network layer; the system firewall sits inside the server itself. Either layer can block a connection, and neither should open every port to the whole internet.
A snapshot can restore a disk to a point in time, but it doesn't automatically equal a real backup. A backup also has to account for:
- Whether it sits in the same failure domain as the original server.
- Whether it's database-consistent.
- Whether whoever can delete the account can delete it too.
- Whether you've ever actually restored from it.
A backup you've never test-restored is just "a file that exists."
Let one concrete scenario decide the spec
Say you only want to host a low-traffic static blog.
The simplest option may not need a cloud server at all — a static hosting platform can do it and spares you the OS updates, ports and backups.
If you want to run an always-on Node.js service plus a database, a server starts to make sense. Then you need to pin down:
- The app's minimum runtime version.
- Its resident memory.
- Database disk growth.
- Whether you need scheduled jobs.
- Whether brief downtime is acceptable.
- Where backups live.
- Where the main users are.
Pick the spec by working backward from what the app needs — not by buying the promo plan first and then wondering what you can do with it.
A checklist for before your first purchase
Before you pay, write down at least these:
- The specific app and its official deployment requirements.
- The OS and version you chose.
- Minimum CPU, memory and disk.
- The main region your users are in.
- Public IP, bandwidth and traffic rules.
- First-term price, renewal price and refund terms.
- Snapshot, backup and data-export methods.
- The ports you need to open.
- How the SSH key is stored.
- How to stop billing when you're done.
Any item left to "I'll look at it later" can turn into a renewal charge or a data risk.
After your first login, check — don't rush to install
Here's a set of read-only Linux checks; the exact commands can vary by distribution:
cat /etc/os-release
uname -a
free -h
df -h
ip addr
ss -lntp
They confirm, in order: the system, the kernel, memory, disk, network addresses and listening ports. On some systems the last one needs higher privileges to show full process info.
When you save the results, redact first — don't publish the public IP, usernames, internal addresses or key paths.
Then do the system update, set up a non-default admin policy, configure the firewall and deploy the app. Don't open with a long script full of curl pipes, global installs and opened ports.
How to prove the server actually works
Accept it at five layers, at least:
Instance layer: the console shows the instance running, with the right spec and region.
Login layer: you can SSH in with the expected account and key.
Process layer: the app process keeps running and the log doesn't exit immediately.
Network layer: the program listens on the right address and port, and the security group and firewall open only the entrances you need.
User layer: from another device or an outside network, the domain returns the page you expect.
Then do one reboot test: after the server restarts, does the app come back on its own? A lot of "successful deploys" only live in the current terminal window — close it and they're gone.
When a connection fails, work the layers — don't reinstall and hope
SSH times out
Check whether the instance is running, whether the public IP changed, whether the security group allows SSH from your current source, and whether the network is reachable at all.
Connection refused
The network may have reached the server, but nothing is listening on the target port, or the system firewall is rejecting it. Check the listening ports and the SSH service status.
Permission denied
Check the username, the private key, file permissions, and whether the public key matches. Don't keep swapping systems and passwords.
The domain won't open, but the IP works
Check the DNS records, propagation status and proxy settings. Don't start by editing app code.
The page returns 502 or 504
Usually you need to check the reverse proxy's connection to the app process, the app port and the logs. At that point DNS is usually not the first problem anymore.
At every step, keep the command output and the time, and find the first layer that doesn't match what you expected.
The cost isn't just one instance
Over time the bill can include:
- Instance runtime.
- Disk and snapshots.
- The public IP.
- Outbound traffic.
- Backup storage.
- Domain- and certificate-related services.
- Monitoring and logs.
- Resources you couldn't shut down in time after a mistake.
Prices, free tiers and regional rules change fast — check your provider's official page on the day you buy. Any specific price in an article is only a historical reference.
A server isn't a technical rite of passage. Put the program, the users, the uptime and the data responsibility on one sheet of paper; if none of them require staying online, close the promo page first. Once the answers are clear, then pick the region and the spec.
SOURCE AND VERIFICATION
Sources and limits
Based on AWS's official EC2 concept docs as the main reference; the nbvil link only records where the topic came from — none of its text or images are reused. Specific prices and regional rules must be checked on your chosen provider's current pages.
Verification: Checked against AWS EC2's official concept docs; no provider endorsed. Prices and regional rules change fast — confirm them on your provider's live pages.
ONE PRACTICAL NEXT STEP
Bring your deployment goal and let's size it
Before you pick a plan, tell me the one program that has to stay online, who reaches it, and what happens if it's down for an hour. With those three answers the spec picks itself — send them over and we'll size it together.
Message me