Skip to content

AnSiChen/homelab-devops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Self-Hosted Deployment Platform

Infrastructure Reverse Proxy
Deployment Server

A reusable self-hosted infrastructure for deploying and managing multiple containerized applications on a Linux VPS.

I've built this repo to document the architecture, deployment workflows, and engineering decisions behind my personal DevOps environment. Instead of configuring each application independently, I built a standardized deployment platform that supports multiple projects, automated deployments, reverse proxy routing, HTTPS, and isolated application environments.

For this repository, I've intentionally added sanitized examples and documentation rather than the production infrastructure itself. Some configuration files have been generalized to show the architecture and deployment practices without exposing sensitive information.


Overview

I designed the platform around a simple objective:

Deploy new applications consistently with minimal manual configuration while keeping each project isolated, maintainable, and easy to update.

Today the server hosts multiple independent web applications using a shared deployment strategy based on:

  • Docker containers
  • Docker Compose
  • Ubuntu Linux
  • GitHub Actions
  • SSH
  • Nginx
  • Nginx Proxy Manager
  • Let's Encrypt
  • DigitalOcean
  • DNS configurations

Features

  • Multi-application deployment platform
  • Containerized applications with Docker
  • Automated deployments using GitHub Actions
  • Reverse proxy routing
  • Automatic HTTPS certificate management
  • Shared Docker networking
  • Persistent Docker volumes
  • Isolated Linux users for each project
  • Standardized project structure
  • Manual and automated deployment workflows

Infrastructure

DigitalOcean Droplet

Infrastructure Diagram


Technology Stack

Category Technologies
Operating System Ubuntu 22.04 LTS
Cloud DigitalOcean
Containerization Docker, Docker Compose
Reverse Proxy Nginx Proxy Manager
Application Server Gunicorn
Web Server Nginx
Automation GitHub Actions
Secure Access SSH
SSL Let's Encrypt

Deployment Workflow

Applications usually follow a repeatable deployment pipeline.

Deployment Workflow Diagram

GitHub Actions Workflow

Not every project requires CI/CD or migrations. Smaller or infrequently updated applications may be maintained manually through SSH while I still follow the same containerized deployment strategy.


Project Organization

All my applications are maintained as an independent deployment unit.

portfolio/
    Dockerfile
    docker-compose.yml
    nginx.conf

book_tracker/
    Dockerfile
    docker-compose.yml
    nginx.conf

tailwind_portfolio/
    Dockerfile
    docker-compose.yml
    nginx.conf

Projects are separated into dedicated Linux users to simplify permissions, isolate application files, and reduce coupling between deployments.


Docker Architecture

Each application follows the same deployment pattern.

Deployment Pattern Diagram

I have standardized this structure to make adding new projects simpler while keeping deployments consistent.


Networking

Applications communicate through a shared external Docker network.

hubstation

Nginx Proxy Manager

Using a shared network helps the reverse proxy communicate with individual application containers while keeping each application's internal configuration self-contained.


Security Considerations

The production environment includes several security practices:

  • SSH key authentication
  • GitHub Secrets for deployment credentials
  • Environment variables for application secrets
  • HTTPS using Let's Encrypt
  • Dedicated Linux users
  • Docker container isolation
  • Reverse proxy routing
  • Sensitive configuration excluded from version control

As mentioned above, only sanitized examples are included in this repository.


Example Configuration

This repository includes simplified examples of:

  • Dockerfiles
  • Docker Compose configurations
  • GitHub Actions workflows
  • Nginx configuration
  • Environment variable templates

I try to show examples that gives us a glimpse into the deployment strategy while omitting production-specific information.


Lessons Learned

Building and maintaining this platform has given me practical experience with:

  • Linux server administration
  • Container orchestration
  • Reverse proxy configuration
  • Automated deployments
  • CI/CD workflows
  • Docker networking
  • Persistent storage
  • Deployment standardization
  • Infrastructure troubleshooting
  • Operating multiple applications from a single VPS

Server Monitoring


Repository Structure

homelab-devops/
│
├── docs/
├── diagrams/
├── examples/
├── screenshots/
└── README.md

Future Improvements

Planned enhancements include:

  • Multi-stage Docker builds
  • Automated backups
  • Health monitoring
  • Infrastructure as Code
  • Zero-downtime deployments
  • Container health checks
  • Cloudfare DNS managing

License

This project is provided for educational and portfolio purposes.

About

Self-hosted deployment platform built with Ubuntu, Docker, Docker Compose, GitHub Actions, SSH, and Nginx Proxy Manager.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Contributors