Infrastructure · Systems Administration

Home Server and Infrastructure

Managed Linux infrastructure for deploying web applications and managing services, networks, containers, security, and automated maintenance tasks.

The project

Linux server used as real-world infrastructure for deploying and continuously running web applications and services. The environment centralizes Python applications, web servers, databases, containers, network services, remote access, artificial intelligence tools, and automated maintenance tasks.

End-to-end infrastructure administration, including system installation and configuration, application deployment, service management, network configuration, security, remote access, containers, databases, task automation, backups, and environment maintenance.

Architecture

Debian Linux infrastructure integrating Nginx as a web server and reverse proxy, Gunicorn for running Python applications, PostgreSQL as a database service, systemd for service management, and Docker and Docker Compose for running containerized applications and tools. Recurring maintenance tasks are automated using cron.

Security

Infrastructure protected by multiple layers of security. UFW controls network traffic through specific rules, while Fail2ban monitors protected services and automatically blocks certain malicious access patterns or repeated authentication attempts. SSH access is restricted to trusted networks, and remote access is provided through WireGuard. Nginx also incorporates specific security settings and traffic controls for published applications.

Firewall

UFW used as the server's primary firewall, with specific rules to control incoming traffic and restrict access to services according to their source and requirements.

Fail2ban

Fail2ban configured to monitor protected services, detect unwanted access patterns, and automatically block certain repeated authentication attempts or suspicious activity.

Nginx Security

Nginx configured as the entry point and reverse proxy for web applications, incorporating security measures, access restrictions, and specific settings to reduce the exposure of published services.

Administration

Linux system administration through the terminal and systemd services, including process management, service configuration, system health monitoring, maintenance, and infrastructure troubleshooting.

Automation

Automation of recurring tasks using cron, including scheduled backups and automatic updates to the dynamic IP address used to maintain remote connectivity.

Backups

Automated backup system using scheduled tasks to maintain periodic copies of important infrastructure data and services.

Dynamic IP and DDNS

Automatic public IP address updates through a scheduled task, keeping the information required for remote access and services associated with the home Internet connection up to date.

Services

Nginx Gunicorn PostgreSQL systemd Docker Docker Compose WireGuard Fail2ban Ollama cron

Networking and connectivity

Local network configuration and remote access using WireGuard. The server has a private local network and a separate VPN for remote access. Nginx acts as the entry point for web applications, while internal services remain restricted to the networks or interfaces they require.

Remote Access

Remote access through WireGuard, providing a private VPN for server administration and access to internal services without directly exposing administrative services to the Internet.

Port Forwarding

Router configuration to expose only the services required to reach the server. Web traffic is routed through Nginx and remote access through WireGuard, keeping administrative services from being directly exposed to the Internet.

Technologies

Debian Linux Nginx Gunicorn PostgreSQL systemd Docker Docker Compose UFW Fail2ban WireGuard Cloudflare cron Ollama Python

Highlights

Deployment

Web applications run through Gunicorn and are published through Nginx as the web server and reverse proxy. Persistent services are managed using systemd, while applications and tools that require containerization run through Docker Compose. Recurring maintenance tasks, backups, and dynamic IP updates are executed automatically using cron.