# On your local machine
ssh root@YOUR_SERVER_IP # On the server
adduser deploy
usermod -aG -weight: 600;">sudo deploy # Basic firewall
ufw allow OpenSSH
ufw -weight: 500;">enable # Optional: reduce brute-force noise (simple baseline)
-weight: 500;">apt-get -weight: 500;">update && -weight: 500;">apt-get -weight: 500;">install -y fail2ban
-weight: 500;">systemctl -weight: 500;">enable --now fail2ban # Reboot to ensure everything is clean
reboot
# On your local machine
ssh root@YOUR_SERVER_IP # On the server
adduser deploy
usermod -aG -weight: 600;">sudo deploy # Basic firewall
ufw allow OpenSSH
ufw -weight: 500;">enable # Optional: reduce brute-force noise (simple baseline)
-weight: 500;">apt-get -weight: 500;">update && -weight: 500;">apt-get -weight: 500;">install -y fail2ban
-weight: 500;">systemctl -weight: 500;">enable --now fail2ban # Reboot to ensure everything is clean
reboot
# On your local machine
ssh root@YOUR_SERVER_IP # On the server
adduser deploy
usermod -aG -weight: 600;">sudo deploy # Basic firewall
ufw allow OpenSSH
ufw -weight: 500;">enable # Optional: reduce brute-force noise (simple baseline)
-weight: 500;">apt-get -weight: 500;">update && -weight: 500;">apt-get -weight: 500;">install -y fail2ban
-weight: 500;">systemctl -weight: 500;">enable --now fail2ban # Reboot to ensure everything is clean
reboot - Choose Hetzner when: You want maximum compute per dollar/euro.
You’re comfortable with a more hands-on approach (networking, storage choices, backups).
Your users are primarily in Europe.
- You want maximum compute per dollar/euro.
- You’re comfortable with a more hands-on approach (networking, storage choices, backups).
- Your users are primarily in Europe.
- Choose DigitalOcean when: You want clean UX, fast provisioning, and docs that match what’s on screen.
You prefer “good defaults” over endless knobs.
You’re optimizing for developer time, not just infra spend.
- You want clean UX, fast provisioning, and docs that match what’s on screen.
- You prefer “good defaults” over endless knobs.
- You’re optimizing for developer time, not just infra spend. - You want maximum compute per dollar/euro.
- You’re comfortable with a more hands-on approach (networking, storage choices, backups).
- Your users are primarily in Europe. - You want clean UX, fast provisioning, and docs that match what’s on screen.
- You prefer “good defaults” over endless knobs.
- You’re optimizing for developer time, not just infra spend. - UI clarity and low-friction provisioning
- documentation quality (especially for common stacks)
- “one person can run this” feel - DigitalOcean is better when you want a consistent operational model: managed primitives, clearer -weight: 500;">status communication, and support that’s aligned with a developer platform.
- Hetzner is better when you want infrastructure value and you’re capable of self-triage. Their support is not “bad,” but the expectation is that you’re running servers, not clicking a platform into existence. - Put stateless app servers on the provider that best matches your primary user region.
- Use cloudflare in front for caching, TLS, and DDoS absorption.
- Keep backups and deploy automation provider-agnostic.