Welcome to my post, where I am excited to share my IT Lab Portfolio with you. This project has been a significant part of my journey in the tech world, and I am thrilled to walk you through its various aspects, challenges, and achievements.
📚 Background
The IT Lab Portfolio project was born out of a desire to simulate real-world IT Support and SysAdmin tasks at home. As a passionate technologist, I wanted to build a hands-on environment where I could:
- Practice troubleshooting across operating systems
- Learn how file servers, SSH, and user management really work
- Understand how to deploy and configure websites on both Apache and NGINX
- Prepare myself for a future role in IT Support or DevOps
💡 Whether you're just starting out or looking to build your own virtual IT lab, I hope this walkthrough gives you inspiration, guidance, and practical commands to try on your own.
🖥️ Lab Setup
OS | Role |
---|---|
Windows 11 | User workstation |
Ubuntu | Admin/DevOps environment |
CentOS | File server & NGINX web host |
🔧 Lab Tasks & Walkthrough
✅ 1. Enable VM Communication (Bridged Networking)
I changed all VM networks from NAT to Bridged Adapter to allow ping between VMs and internet access.
# VirtualBox GUI: Settings → Network → Bridged Adapter → Choose Host Interface # Then inside VMs: ip a # Check IP ping
`
Before fix: NAT blocked VM-to-VM traffic
After fix: All VMs can ping each other + access internet
✅ 2. File Server on CentOS with Samba
Set up a shared folder using Samba on CentOS.
sudo dnf install samba samba-client samba-common -y sudo systemctl enable smb --now sudo mkdir -p /srv/samba/shared sudo chown -R nobody:nobody /srv/samba/shared sudo chmod -R 0775 /srv/samba/shared
Edited /etc/samba/smb.conf
:
[SharedFiles] path = /srv/samba/shared browsable = yes writable = yes guest ok = yes map to guest = Bad User
Added firewall rule, restarted Samba, and accessed from Windows:
\\\SharedFiles
✅ 3. SSH Access + Key Authentication
Enabled SSH access between VMs and from Windows host.
# On Ubuntu: sudo apt install openssh-server -y sudo systemctl enable ssh --now # On CentOS: sudo dnf install openssh-server -y sudo systemctl enable sshd --now sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
From Windows (PowerShell):
ssh-keygen type $env:USERPROFILE\.ssh\id_rsa.pub | ssh user@ "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Then SSH without password:
ssh user@
✅ 4. Host Website on Ubuntu (Apache + PHP)
Installed Apache and created a styled HTML page with PHP support.
sudo apt install apache2 libapache2-mod-php php -y sudo systemctl enable --now apache2
Placed index.html
, styles.css
, and info.php
in /var/www/html/
.
Tested:
http:///
http:///info.php
✅ 5. Host the Same Site on CentOS (NGINX + PHP-FPM)
Installed and configured NGINX + PHP-FPM.
sudo dnf install nginx php php-fpm -y sudo systemctl enable --now nginx php-fpm sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
Edited /etc/nginx/conf.d/default.conf
to include correct location
blocks inside the server {}
.
Tested:
http:///
http:///form.html
✅ 6. Linux User Management (Ubuntu & CentOS)
- Created users:
alice
,bob
- Created group:
devs
- Added user to group:
sudo useradd alice sudo usermod -aG devs alice
- Configured password policies using
chage
- Gave sudo access:
# Ubuntu: sudo usermod -aG sudo alice # CentOS: sudo usermod -aG wheel alice sudo visudo # Uncomment: %wheel ALL=(ALL) ALL
- Locked & unlocked account:
sudo passwd -l alice sudo passwd -u alice
- Fixed deletion error:
sudo userdel alice # userdel: user alice is currently used by process 2113 sudo kill -9 2113 sudo userdel -r alice
⚠️ Issues & Fixes
Task | Problem | Fix |
---|---|---|
Samba | nogroup doesn't exist on CentOS | Used nobody:nobody instead |
NGINX Config | location directive error | Moved location inside server block |
Website files | Permission errors copying to NGINX root | Used scp and sudo mv |
User deletion | userdel failed (user in use) | Killed PID, then deleted |
Perfect — here’s how to include your 🧠 Final Reflection exactly as you wrote it and a collapsible 📜 Cheatsheet Summary section formatted properly for Dev.to Markdown:
🧠 Final Reflection
When I began this lab, I didn’t know most of the commands I was using. Many of them were new, and sometimes I didn’t fully understand what each one did — and that’s completely okay.
What mattered was this: I was building, experimenting, and learning by doing.
This project wasn’t just about typing commands; it was about understanding the “why” behind them — even if that came after the task was done.
💡 Use AI as Your Study Partner
One thing that helped me a lot was using AI tools like ChatGPT as my study buddy, not my crutch.
Whenever I saw a command like usermod -aG wheel alice
or ran into an error like userdel: user is currently used by process...
, I asked why, and let AI help me figure it out.
If you're reading this and just starting out too, here’s my advice:
- Don’t wait to “know everything” before you start.
- Let projects drive your curiosity.
- Use AI to break things down — like a helpful teacher explaining it in simpler terms.
We’re all learning. And sharing this lab is part of my journey.
📜 Cheatsheet Summary
Command | What It Does |
---|---|
ip a | Shows your VM’s IP address |
ping | Checks if a machine is reachable |
dnf install | Installs software (CentOS) |
apt install | Installs software (Ubuntu) |
systemctl enable --now | Starts and enables a service at boot |
sudo useradd | Creates a new user |
sudo passwd | Sets a user’s password |
usermod -aG | Adds user to a group |
chage -l | Shows password aging settings |
ssh user@IP | Logs in remotely via SSH |
scp file user@IP:/path/ | Copies files remotely |
sudo userdel -r | Deletes a user and their home folder |
sudo kill -9 | Forcefully kills a process (needed before deleting some users) |
🧠 Key Skills Practiced
✅ Bridged networking setup
✅ Samba file sharing
✅ SSH remote access + key setup
✅ Apache and NGINX + PHP hosting
✅ Linux user, group & sudo management
🔗 Try It Yourself
Code + screenshots + configuration samples available on GitHub:
👉 github.com/daretechie/it-lab-portfolio
💬 Your Feedback is Welcome!
This was a big learning journey. If you:
- Have suggestions to improve the lab
- Noticed something that could be optimized
- Want to share your own setup
- Or just say hi...
Drop a comment below!
Let’s grow together 🚀
👋 Let’s Connect
I’m sharing more practical, beginner-friendly lab projects like this one.
Reach out if you’re working on something similar — I’d love to learn with you!
Thanks for reading — keep learning, keep simulating! 💻⚙️🧪
Top comments (0)