This repository contains scripts and configurations for setting up a secure and functional Debian-based virtual machine for server management.
It includes services that support WordPress hosting and a bonus service for easier system administration using Webmin.
- About Born2beroot
- Project Goals
- System Requirements
- Setup Instructions
- WordPress Deployment
- Install Webmin (Bonus)
- Services Included
- Security Considerations
- Resources
Born2beroot is a system administration project designed to teach you how to:
- Set up a secure virtual machine with essential services.
- Deploy WordPress using Lighttpd and MariaDB.
- Integrate a web-based administration tool like Webmin.
This project boosts your understanding of web servers, databases, and Linux system management.
- β Deploy Lighttpd as a lightweight web server for WordPress.
- β Set up MariaDB as the database server.
- β Install Webmin for bonus web-based system administration.
- β Apply security best practices: sudo, firewall, SSH, and permissions.
- Debian 12 (Bookworm) or compatible Debian-based system.
- VirtualBox / VMware for virtualization.
- Internet connection for installing packages.
sudoprivileges for installation and configuration.
sudo apt update && sudo apt upgrade -ysudo apt install lighttpd -y
sudo systemctl enable lighttpd
sudo systemctl start lighttpdVerify it's running:
sudo systemctl status lighttpdAllow HTTP traffic:
sudo ufw allow 80/tcpsudo apt install mariadb-server -y
sudo systemctl enable mariadb
sudo systemctl start mariadbSecure the installation:
sudo mysql_secure_installationCreate a database and user:
sudo mysql -u root -p
CREATE DATABASE wordpress;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;sudo apt install php php-cgi php-mysql php-fpm -y
sudo systemctl restart lighttpd- Download and extract WordPress:
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
sudo mv wordpress /var/www/html/- Configure WordPress:
sudo cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
sudo nano /var/www/html/wordpress/wp-config.phpUpdate database settings:
define('DB_NAME', 'wordpress');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'your_password');
define('DB_HOST', 'localhost');- Set permissions:
sudo chown -R www-data:www-data /var/www/html/wordpress- Open in browser:
http://<your-server-ip>/wordpress
- Add Webmin GPG key and repository:
wget -qO- http://www.webmin.com/jcameron-key.asc | sudo tee /etc/apt/trusted.gpg.d/webmin.asc
sudo sh -c 'echo "deb http://download.webmin.com/download/repository sarge contrib" > /etc/apt/sources.list.d/webmin.list'- Install Webmin:
sudo apt update
sudo apt install webmin -y- Access Webmin in browser:
https://<your-server-ip>:10000
Login using root credentials.
| Service | Purpose | Access |
|---|---|---|
| Lighttpd | Web server for WordPress | http://<server-ip>/wordpress |
| MariaDB | WordPress database backend | Access via terminal |
| Webmin | Web admin panel (bonus) | https://<server-ip>:10000 |
- Use strong passwords for all services.
- Limit Webmin access to trusted IP addresses.
- Enable a firewall:
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 10000/tcp # Webmin
sudo ufw enable- WordPress Documentation
- Lighttpd Documentation
- MariaDB Documentation
- Webmin Documentation
- Born2beroot Subject on Intra
π§© βSecurity is not a product, but a process. Born2beroot teaches you how to build it from the ground up.β