Thuta Learning
ProjectsDevOps & Toolsbeginner

Mini Project: Your First Linux Server Setup

Relax. We'll talk through this in plain words — no textbook voice.

What you'll walk away with

  • Understand Mini Project: Your First Linux Server Setup without any of the intimidation
  • Get comfortable trying these commands yourself in the terminal
  • See how these commands are actually useful on a real server/project

Let's think about it this way for a second

Real-world server setup isn't something you finish by running a single command — it's a workflow that pulls together concepts from every chapter in the right order. This project's checklist is: (1) generate an SSH key and connect to the server (2) bring software up to date with sudo apt update && upgrade (3) create an ordinary user account and grant it sudo privileges (disable root) (4) open the SSH port on the ufw firewall before enabling it (5) install the packages you need (like nginx) (6) enable and start the service with systemctl (7) schedule a backup cron job (8) check the logs with journalctl and confirm everything is active. This sequence mirrors exactly the pattern real DevOps engineers follow in practice.

Let's connect it to a real scenario

You can try this project risk-free on your own VM/WSL — you don't need a real cloud server yet. Confirming success with a status command (systemctl status, ufw status, journalctl) after each command saves you a lot of troubleshooting time. If you rewrite this checklist as a script file (using the pattern you learned in the shell scripting chapters), then the next time you need to set up a new server you won't have to retype 20 commands — you just run one script. That's the beginning of automation.

Let's try it together in the terminal

bash
# Mini project checklist (VM/WSL ပေါ်မှာ practice)
ssh-keygen -t ed25519
sudo apt update && sudo apt upgrade -y
sudo adduser deploy && sudo usermod -aG sudo deploy
sudo ufw allow OpenSSH && sudo ufw enable
sudo apt install -y nginx
sudo systemctl enable nginx && sudo systemctl start nginx
crontab -e   # backup rule ထည့်
journalctl -u nginx -n 20
You should see
Running journalctl -u nginx -n 20 confirms via the log lines that the nginx service started, and running ufw status shows the OpenSSH port active.

5-minute try-it

Try running the 8 commands in this checklist one at a time on your own VM/WSL (do not do this on a root/production server). After each command, confirm it worked with a status command.

One thing to watch out for

Since this project's commands include sudo, ufw, and systemctl, only try them on a VM or a disposable cloud server (with a snapshot taken) — not on a live production server.

Easy traps

  • Skipping the step order and enabling the firewall before opening SSH (remember the lockout risk!)
  • Trying the whole checklist on a real production server for the first time — practice on a VM/WSL first

Now try it yourself

Try running the 8 commands in this checklist one at a time on your own VM/WSL (do not do this on a root/production server). After each command, confirm it worked with a status command.

You'll know it worked when: Running journalctl -u nginx -n 20 confirms via the log lines that the nginx service started, and running ufw status shows the OpenSSH port active.

Mini Project: Your First Linux Server Setup | Thuta Learning