
Learn to host a home website on Ubuntu, configure Apache and optional Nginx, run PHP and Python web apps, manage MySQL or PostgreSQL databases with backups and domain access.
Learn to host your own website from home using Linux with no prior Linux knowledge. Require internet connection and Ubuntu 18+ (24) to avoid issues; virtualization with VirtualBox supported.
Set up the Ubuntu server environment, install Ubuntu, and tour the desktop. Compare desktop, server, and core flavors, and explain why the desktop version is beginner-friendly.
Install Ubuntu as a server operating system, choosing between live session testing or a full install, then configure language, keyboard layout, offline setup, computer name home server, and password.
Perform a quick desktop tour of a freshly installed Ubuntu system, exploring the control panel, appearance settings, user management, and key system specifications (Ubuntu 24, hardware, memory, disk capacity).
Configure the server network in Ubuntu by switching IPv4 from automatic to static, entering IP address, netmask, gateway, and DNS, then apply changes and verify connectivity.
Update and upgrade your Ubuntu server with sudo apt update and sudo apt upgrade, then install net-tools to review network status using ifconfig, and restart afterwards.
Install and configure the Apache web server via the terminal, then test it with localhost. Create a simple test page and copy it to /var/www/html, verifying access at localhost/test.html.
Learn basic Apache commands for self hosting on Ubuntu: start, stop, restart, status, and version checks to manage the Apache web server and preview the default page.
Install the nginx web server on ubuntu linux using sudo apt install nginx. Test by visiting localhost to confirm it’s functioning, noting avoid running apache and nginx simultaneously.
Learn to serve web content remotely on Ubuntu Linux, using FTP and file sharing. Install Vsftpd, FileZilla, and Samba, and manage remote uploads to the public HTML folder.
Set up vsftpd on ubuntu to serve web content remotely, edit /etc/vsftpd.conf to enable and set local_root to /var/www/html, then restart the service and test uploading via ftp.
Learn to install and configure the FileZilla ftp server on Ubuntu, create a web user, set a /var/www/html upload directory with read and write access, and test upload from Windows.
Explore web programming and install PHP and Python, then test them. Learn how HTML alone yields static pages and how PHP and Python enable dynamic, user-friendly websites.
Install PHP to enable Apache to execute PHP scripts, restart Apache, and create a test info.php in /var/www/html to verify PHP version and features via localhost/info.php.
Install and configure Python on Ubuntu Linux, verify the Python 3 version, install Python 3 if needed, and set up pip3 and a virtual environment (venv) for Flask.
Set up an Ubuntu web root, create a Python virtual environment, activate it, install Flask, and configure a minimal __init__.py with an index route.
Learn how to install and run Flask in a development environment on Ubuntu Linux, manage virtual environments, and test locally with a development server.
Install and configure the WSGI server with Apache to run Flask or Django apps in production, including a CGI script, Python path setup, and mod_wsgi integration.
install and configure mysql server on ubuntu, set a root password, create a web db user, grant privileges, and practice basic mysql commands from the shell.
Install and configure phpMyAdmin to provide a web interface to MySQL, including installing the php MySQL packages, enabling the Apache configuration, and testing at localhost/phpmyadmin.
Learn to expose your website to the world by using a public IP or a free domain name, moving from local intranet access to global reach.
Access your home web server from outside the network using your public IP. Configure router port forwarding for HTTP on port 80 to your internal IP and verify via browser.
Register a domain and map it to your Ubuntu web server, using dynamic DNS with no-ip to handle changing public IP addresses, and access the server via your domain.
Explore remote access to your Ubuntu server using SSH and remote desktop, enabling offsite, secure management as if you were in front of the machine.
Set up remote login via the RDP connection to access the Ubuntu home server's graphical user interface. Configure hostname and port 3389, then enter user credentials to authenticate.
Connect to your home server via rdp using Remmina on Ubuntu, configure a new connection to 192.168.0.222, set up port forwarding for 3389 to access via domain name outside network.
Use windows remote desktop to connect to your home web server by entering the server's ip or domain name, authenticate as remote user, and access files as if onsite.
Install the SSH server on your home web server, enable it, and verify it is active so you can connect remotely in the next lesson.
Learn to set up data and system backups for a home Ubuntu Linux server. Back up user files and the Apache public HTML folder, define backup frequency, and plan restoration.
Restore deleted files from a Deja Dup backup in Ubuntu by selecting the backup date, choosing /var/www/html, and entering the encrypted password to complete the restore.
Install timeshift and create weekly rsync snapshots of your Ubuntu system on an ext4 external drive, excluding all files by default, then finalize a snapshot for restoration.
This course is a step-by-step guide for hosting your own website both for beginners and intermediate users as well. By the end of the last section the student will be able to set up a basic web server in apache and set it to be accessed externally, outside their home network using the public IP address or a domain that they will register for free. For simplicity this course uses the Ubuntu desktop version to accomplish all the tasks. Behind the scenes, the desktop and server versions of the Ubuntu operating system uses the same kernel and so nothing changes except that the former has a GUI and the latter a command line interface. This will help beginners understand the concepts easily and make their learning curve smooth.
The student will learn how to transfer files from the development machine to the web server using FTP and File server applications. FileZilla and VSFTPD are FTP applications of choice used in this course. At the same time the samba file server is also used to implement file transfer. More so, you will be able to use the file server as your own custom implementation of Google drive, Microsoft OneDrive or Dropbox.
Implementation of programming logic to the web server is also discussed in-depth and students will practically learn how to add PHP and WSGI modules so that they can be processed by the web server to run python and PHP scripts. Students will see how to set up a flask framework in Python as well. All these concepts are well explained, and the student is guided on what to do in every step; and enabled to use their favorite scripting language to run their web application.
Database concepts are also discussed in depth. The student will set up MySQL and PostgreSQL database servers and install the web admin interfaces as well, such as phpMyAdmin and phpPgAdmin for MySQL and PostgreSQL respectively.
Students will also practically see how to do remote administration of their server using SSH and RDP. The SSH will connect via the command line in terminal and RDP using windows remote desktop.
The course ends with a discussion and practical examples on data backup. Students shall see how to perform system backup and regular file backup and how to restore in the case of data loss.