This project sets up a Linux-based infrastructure for a local library that lacks the funding for Windows licenses. The infrastructure includes a server and a workstation configured with essential services and applications to demonstrate the functionality, security, and usability of Linux in a library setting.
The library manager has opted to consider Linux as a cost-effective alternative, but some users are skeptical. This project is a demonstration that showcases Linux's capabilities through the following configuration:
-
Server (without GUI):
- DHCP Service
- DNS Service
- Web Server (Nginx)
- Scheduled configuration backups
- SSH for remote access
-
Workstation:
- Desktop environment
- LibreOffice, Gimp, and Mullvad browser
- Automatic IP addressing
- Separate partition for
/home
- A virtualized environment, such as VirtualBox or VMware, with virtual machines for the server and workstation.
- Basic understanding of Linux commands and system administration.
- Install and configure
isc-dhcp-serverto serve IPs to an internal network.
- Configure
bind9for local DNS resolution with external query forwarding.
- Install and set up
nginxto host a simple local webpage.
- Automate weekly backups of configuration files using
rsyncandcron. - Configure SSH for secure remote access.
- Install a graphical environment along with LibreOffice, Gimp, and Mullvad browser for user applications.
- Enable DHCP for automatic IP addressing.
- Configure
/homeon a separate disk partition for better data management.
- Starting the Services: Ensure each service (DHCP, DNS, Nginx) is active on the server.
- Accessing the Web Server: Visit the IP of the server from a browser on the workstation to view the demo webpage.
- Remote Access: Use SSH to connect to the server for remote management and monitoring.
- Firewall setup (using
ufw) to allow only essential services (e.g., SSH, HTTP). - SSH security hardening with customized port settings and key-based authentication.
/etc/dhcp/dhcpd.conf: DHCP configuration/etc/bind/: DNS configuration/var/www/html/: Nginx web directory for demo content/usr/local/bin/backup_configs.sh: Backup script