# Gordon
Gordon Mascot

The Smart Way to Deploy Containers on Your VPS

Push image → Auto-deploy → Zero complexity

## Why Gordon? **You have a $5 VPS. You want to run multiple apps. You don't want complex CI/CD pipelines, expensive PaaS solutions, or overcomplicated orchestration.** Gordon is the missing piece that makes container deployment on budget VPS servers as simple as expensive PaaS solutions. One binary, one config file, unlimited apps. ### Perfect For - **Solo developers** with multiple side projects on one VPS - **Small teams** who want Heroku-like simplicity without the cost - **Agencies** deploying client apps across VPS servers - **Anyone** tired of complex deployment pipelines ## How It Works ```bash # 1. Build & test locally podman build -t myapp . podman run -p 8080:8080 myapp # Works? Great! # 2. Push to deploy podman tag myapp registry.mydomain.com/myapp:latest podman push registry.mydomain.com/myapp:latest # 3. That's it. Gordon deploys it automatically. ``` **No build servers. No CI/CD complexity. If it runs on your machine, it runs in production.** ## Key Features - **Local-First Development**: Your machine is the build server - **Built-in Container Registry**: Your VPS becomes a private registry - **Push-to-Deploy**: New images deploy instantly - **Multi-Domain Routing**: Unlimited apps with automatic HTTPS via Cloudflare - **Zero-Downtime Updates**: Graceful container swaps - **Network Isolation**: Each app gets its own isolated network with attached services (databases, caches, etc.) - **Auto-Route Creation** (Optional): Push `myapp.mydomain.com:latest` → route created automatically - **Auto-Volume Management**: Zero-config persistent storage from Dockerfile VOLUME directives - **Auto-Environment Injection**: Dockerfile ENV directives automatically merge with your custom environment variables ## Quick Start (5 minutes) ### 1. Setup VPS ```bash # Install essentials on Ubuntu/Debian sudo apt update && sudo apt install -y podman ufw # Configure firewall sudo ufw --force enable sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp 80/tcp 443/tcp sudo ufw enable ``` ### 2. Redirect Ports ```bash # Redirect 80/443 to 8080 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080 sudo apt install -y iptables-persistent sudo netfilter-persistent save ``` ### 3. Enable Rootless Containers ```bash echo 'user.max_user_namespaces=28633' | sudo tee -a /etc/sysctl.conf sudo sysctl -p sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER systemctl --user enable --now podman.socket ``` ### 4. Configure Registry ```bash mkdir -p ~/.config/containers tee ~/.config/containers/registries.conf > /dev/null < /dev/null <

Stop overcomplicating container deployment.

Star this repo if Gordon saves you money!