Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

186 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Anton Apps Collection

A curated collection of self-hosted applications using Docker, Docker Compose, and Cloudflare DNS/Reverse Proxy.

Architecture Overview

Traffic flow to home server applications:

Internet
   │
   ▼
Cloudflare DNS + WAF (Orange Cloud Proxy)
   │ (HTTPS - Full Strict)
   ▼
Public IP (Dynamic DNS updated via apps/ddns)
   │
   ▼
Router (Ports 80 / 443)
   │
   ▼
apps/reverse-proxy (Nginx with Let's Encrypt SSL)
   │
   ▼
Local Docker Applications (apps/*)
  • Infrastructure as Code: Root /terraform manages Cloudflare DNS wildcard records (*.cloudville.me, *.rishabmanocha.com), SSL settings (Full Strict), and WAF rules.
  • Dynamic DNS: apps/ddns runs ddclient to refresh Cloudflare DNS A-records with the server's public IP.
  • Reverse Proxy & SSL: apps/reverse-proxy routes incoming traffic to internal application ports and handles SSL termination.

Table of Contents

Setup Guide

Prerequisites

  • Ansible
  • Docker Engine on target host
  • SSH access to target host
  • Terraform (for Cloudflare DNS/WAF management)

Installation & Deployment

  1. Clone the repository:

    git clone https://github.com/your-username/anton-apps.git
    cd anton-apps
  2. Configure Ansible:

    • Edit ansible/inventories/<TARGET_NAME>.ini to match your target hosts.
    • Install required Ansible collections:
      ansible-galaxy collection install -r ansible/requirements.yml
  3. Deploy applications:

    • To deploy all applications:
      make deploy
    • To deploy specific applications:
      make deploy APPS=nextcloud,plex

Infrastructure Management (Terraform)

Cloudflare DNS proxy, wildcard records, and security rules are configured in /terraform:

cd terraform
cp terraform.tfvars.example terraform.tfvars
# Edit terraform.tfvars with Cloudflare API Token, Zone IDs, and Public IP
terraform init
terraform apply

Using the Makefile

The repository includes a Makefile to simplify common operations:

  • make deploy - Deploy all applications (creates directories, uploads files, manages .env, restarts)
  • make deploy APPS=name - Deploy specific applications
  • make dry-run - Preview changes without applying (check mode with diff)
  • make stop APPS=name - Stop specific applications
  • make start APPS=name - Start specific applications
  • make restart APPS=name - Restart specific applications
  • make ping - Test connectivity to hosts
  • make check-nvidia - Check NVIDIA GPU status on hosts

All targets support LIMIT=hostname to target specific hosts.

Contributing

Contributions to this collection are welcome! Here's how you can contribute:

Adding a New Application

  1. Create a new directory for your application under apps/:

    mkdir -p apps/new-app-name
  2. Create the necessary files:

    • docker-compose.yml - Container configuration
    • template.env - Environment variable template
    • README.md - Documentation for your application
  3. Test your application:

    cd apps/new-app-name
    cp template.env .env
    # Edit .env with appropriate values
    docker compose up -d
  4. Follow the .agents/skills/add-new-app/SKILL.md workflow to register the application in Ansible and apps/reverse-proxy.

  5. Submit a pull request with your changes.

Modifying Existing Applications

  1. Make your changes to the application in apps/<app-name>
  2. Test thoroughly
  3. Submit a pull request with your changes

License

This collection is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

This collection builds upon the work of many open source projects and Docker image maintainers. See individual application directories for specific acknowledgements and references.

About

Home File Server based on dockerized Samba

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages