docs: Update README for improved clarity and consistency
- Replace mascot image with a higher quality version. - Streamline section headings for better readability. - Remove emojis from section titles to maintain a professional tone. - Clarify the FAQ section to better differentiate Gordon from reverse proxies.
- commit
- 210f2098c14ee5291eca09d7d161f228313222bc
- author
- bamen · · 2025-06-07 07:56 UTC
- parent
- 27d1268
- signature
- unsigned
1 file · +27 -23
M README.md +27 -23
| @@ -1,7 +1,7 @@ | |||
| 1 | 1 | # Gordon | |
| 2 | 2 | ||
| 3 | 3 | <div align="center"> | |
| 4 | - | <img src="assets/gordon-mascot.png" alt="Gordon Mascot" width="200"> | |
| 4 | + | <img src="assets/gordon-mascot-hq-trsp.png" alt="Gordon Mascot" width="200"> | |
| 5 | 5 | <h3>The Smart Way to Deploy Containers on Your VPS</h3> | |
| 6 | 6 | <p><em>Push code → Auto-deploy → Zero complexity</em></p> | |
| 7 | 7 | </div> | |
| @@ -12,14 +12,14 @@ | |||
| 12 | 12 | ||
| 13 | 13 | 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. | |
| 14 | 14 | ||
| 15 | - | ### 🎯 Perfect For | |
| 15 | + | ### Perfect For | |
| 16 | 16 | ||
| 17 | 17 | - **Solo developers** with multiple side projects on one VPS | |
| 18 | 18 | - **Small teams** who want Heroku-like simplicity without the cost | |
| 19 | 19 | - **Agencies** deploying client apps across VPS servers | |
| 20 | 20 | - **Anyone** tired of complex deployment pipelines | |
| 21 | 21 | ||
| 22 | - | ## 🚀 How It Works | |
| 22 | + | ## How It Works | |
| 23 | 23 | ||
| 24 | 24 | ### Build Locally, Deploy Instantly | |
| 25 | 25 | ||
| @@ -37,7 +37,7 @@ podman push registry.yourdomain.com/myapp:latest | |||
| 37 | 37 | ||
| 38 | 38 | **No build servers. No CI/CD complexity. If it runs on your machine, it runs in production.** | |
| 39 | 39 | ||
| 40 | - | ### 🔄 Instant Rollbacks | |
| 40 | + | ### Instant Rollbacks | |
| 41 | 41 | ||
| 42 | 42 | Something broke? Just change your config: | |
| 43 | 43 | ||
| @@ -51,30 +51,30 @@ Something broke? Just change your config: | |||
| 51 | 51 | ||
| 52 | 52 | Save the file. Gordon redeploys the previous version. Problem solved in seconds. | |
| 53 | 53 | ||
| 54 | - | ## ✨ Key Features | |
| 54 | + | ## Key Features | |
| 55 | 55 | ||
| 56 | - | ### 🏠 Local-First Development | |
| 56 | + | ### Local-First Development | |
| 57 | 57 | **Your machine is the build server.** Test locally with Podman's rootless containers, push when ready. No waiting for remote builds. | |
| 58 | 58 | ||
| 59 | - | ### 🏦 Built-in Container Registry | |
| 59 | + | ### Built-in Container Registry | |
| 60 | 60 | Your VPS becomes a private container registry (Docker/Podman compatible). No Docker Hub subscription needed. | |
| 61 | 61 | ||
| 62 | - | ### 🔄 Push-to-Deploy Magic | |
| 62 | + | ### Push-to-Deploy Magic | |
| 63 | 63 | Gordon watches for new images and deploys them instantly to configured domains. | |
| 64 | 64 | ||
| 65 | - | ### ⏮️ Version Control Built-In | |
| 65 | + | ### Version Control Built-In | |
| 66 | 66 | Keep multiple versions in your registry. Switch between them instantly by editing the config. | |
| 67 | 67 | ||
| 68 | - | ### 🌐 Multi-Domain Routing | |
| 68 | + | ### Multi-Domain Routing | |
| 69 | 69 | Run unlimited apps on one server. Each gets its own domain with automatic HTTPS via Cloudflare. | |
| 70 | 70 | ||
| 71 | - | ### 📦 Zero-Downtime Updates | |
| 71 | + | ### Zero-Downtime Updates | |
| 72 | 72 | Push new versions anytime. Gordon handles graceful container swaps. | |
| 73 | 73 | ||
| 74 | - | ### 🚀 Automatic Deployment | |
| 74 | + | ### Automatic Deployment | |
| 75 | 75 | Containers deploy instantly when you push new images. No manual deployment steps needed. | |
| 76 | 76 | ||
| 77 | - | ## 🚀 Quick Start (5 minutes) | |
| 77 | + | ## Quick Start (5 minutes) | |
| 78 | 78 | ||
| 79 | 79 | ### 1. Get a VPS & Install Podman (Rootless & Secure) | |
| 80 | 80 | ```bash | |
| @@ -192,7 +192,11 @@ sudo netfilter-persistent save | |||
| 192 | 192 | sudo ufw allow 22,80,443,8080/tcp | |
| 193 | 193 | echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf | |
| 194 | 194 | sudo sysctl -p | |
| 195 | + | ``` | |
| 195 | 196 | ||
| 197 | + | ### 7. Deploy Your First App | |
| 198 | + | ```bash | |
| 199 | + | # Now from your local development machine: | |
| 196 | 200 | # Authenticate with your Gordon registry | |
| 197 | 201 | podman login registry.yourdomain.com | |
| 198 | 202 | # Use the username/password from your gordon.toml config | |
| @@ -200,10 +204,10 @@ podman login registry.yourdomain.com | |||
| 200 | 204 | # Deploy your first app (using podman) | |
| 201 | 205 | podman tag myapp:latest registry.yourdomain.com/myapp:latest | |
| 202 | 206 | podman push registry.yourdomain.com/myapp:latest | |
| 203 | - | # Visit https://app.yourdomain.com 🎉 | |
| 207 | + | # Visit https://app.yourdomain.com | |
| 204 | 208 | ``` | |
| 205 | 209 | ||
| 206 | - | ## 🎯 Real-World Examples | |
| 210 | + | ## Real-World Examples | |
| 207 | 211 | ||
| 208 | 212 | ### Deploy a Node.js App | |
| 209 | 213 | ```bash | |
| @@ -259,10 +263,10 @@ podman push registry.yourdomain.com/myapp:latest | |||
| 259 | 263 | "feature-xyz.yourdomain.com" = "myapp:feature-xyz" # Feature branch | |
| 260 | 264 | ``` | |
| 261 | 265 | ||
| 262 | - | ## 🤔 FAQ | |
| 266 | + | ## FAQ | |
| 263 | 267 | ||
| 264 | 268 | **Q: How is this different from Traefik/Nginx Proxy Manager?** | |
| 265 | - | A: Gordon includes a Docker registry and automatic deployment. Push an image, get a deployment. No manual container management. | |
| 269 | + | A: Those are just reverse proxies - you still need to manually start/stop containers. Gordon is a complete deployment platform: built-in registry, automatic deployment on push, and container lifecycle management. It's the difference between a router and a full PaaS. | |
| 266 | 270 | ||
| 267 | 271 | **Q: Where do builds happen?** | |
| 268 | 272 | A: On YOUR machine. If it runs locally, it'll run in production. No mysterious build server issues. | |
| @@ -285,7 +289,7 @@ A: Runs comfortably on 1GB RAM VPS. Gordon itself uses <50MB. | |||
| 285 | 289 | **Q: What about secrets?** | |
| 286 | 290 | A: Use environment variables in your container or Docker secrets. Gordon doesn't interfere. | |
| 287 | 291 | ||
| 288 | - | ## 💡 Philosophy: Build Local, Deploy Simple | |
| 292 | + | ## Philosophy: Build Local, Deploy Simple | |
| 289 | 293 | ||
| 290 | 294 | ### Why No Build Servers? | |
| 291 | 295 | ||
| @@ -304,7 +308,7 @@ push code → wait for build → hope it works → debug remotely → repeat | |||
| 304 | 308 | podman build locally → test locally → push image → instant deploy | |
| 305 | 309 | ``` | |
| 306 | 310 | ||
| 307 | - | ## 🏗️ Architecture | |
| 311 | + | ## Architecture | |
| 308 | 312 | ||
| 309 | 313 | ``` | |
| 310 | 314 | Your Machine → Docker Image → Gordon Registry → Auto-Deploy → Live App | |
| @@ -320,7 +324,7 @@ Your Machine → Docker Image → Gordon Registry → Auto-Deploy → Live App | |||
| 320 | 324 | - **Stateless**: Configuration is the only state | |
| 321 | 325 | - **Fast**: Written in Go for minimal overhead | |
| 322 | 326 | ||
| 323 | - | ## 🚀 Advanced Usage | |
| 327 | + | ## Advanced Usage | |
| 324 | 328 | ||
| 325 | 329 | ### Container Runtime Configuration | |
| 326 | 330 | ```toml | |
| @@ -365,11 +369,11 @@ curl -u admin:password https://registry.yourdomain.com/v2/_catalog | |||
| 365 | 369 | curl -u admin:password https://registry.yourdomain.com/v2/myapp/tags/list | |
| 366 | 370 | ``` | |
| 367 | 371 | ||
| 368 | - | ## 🤝 Contributing | |
| 372 | + | ## Contributing | |
| 369 | 373 | ||
| 370 | 374 | Gordon is open source and we love contributions! Check out our [issues](https://github.com/yourusername/gordon/issues) or submit a PR. | |
| 371 | 375 | ||
| 372 | - | ## 📄 License | |
| 376 | + | ## License | |
| 373 | 377 | ||
| 374 | 378 | GPL-3.0 - Use freely, contribute back. | |
| 375 | 379 | ||
| @@ -377,5 +381,5 @@ GPL-3.0 - Use freely, contribute back. | |||
| 377 | 381 | ||
| 378 | 382 | <div align="center"> | |
| 379 | 383 | <p><strong>Stop overcomplicating container deployment.</strong></p> | |
| 380 | - | <p>Star ⭐ this repo if Gordon saves you money!</p> | |
| 384 | + | <p>Star this repo if Gordon saves you money!</p> | |
| 381 | 385 | </div>⏎̸ | |
| @@ -1,7 +1,7 @@ | |||||
| 1 | # Gordon | 1 | # Gordon | ||
| 2 | 2 | ||||
| 3 | <div align="center"> | 3 | <div align="center"> | ||
| 4 | - | <img src="assets/gordon-mascot.png" alt="Gordon Mascot" width="200"> | 4 | + | <img src="assets/gordon-mascot-hq-trsp.png" alt="Gordon Mascot" width="200"> |
| 5 | <h3>The Smart Way to Deploy Containers on Your VPS</h3> | 5 | <h3>The Smart Way to Deploy Containers on Your VPS</h3> | ||
| 6 | <p><em>Push code → Auto-deploy → Zero complexity</em></p> | 6 | <p><em>Push code → Auto-deploy → Zero complexity</em></p> | ||
| 7 | </div> | 7 | </div> | ||
| @@ -12,14 +12,14 @@ | |||||
| 12 | 12 | ||||
| 13 | 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. | 13 | 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. | ||
| 14 | 14 | ||||
| 15 | - | ### 🎯 Perfect For | 15 | + | ### Perfect For |
| 16 | 16 | ||||
| 17 | - **Solo developers** with multiple side projects on one VPS | 17 | - **Solo developers** with multiple side projects on one VPS | ||
| 18 | - **Small teams** who want Heroku-like simplicity without the cost | 18 | - **Small teams** who want Heroku-like simplicity without the cost | ||
| 19 | - **Agencies** deploying client apps across VPS servers | 19 | - **Agencies** deploying client apps across VPS servers | ||
| 20 | - **Anyone** tired of complex deployment pipelines | 20 | - **Anyone** tired of complex deployment pipelines | ||
| 21 | 21 | ||||
| 22 | - | ## 🚀 How It Works | 22 | + | ## How It Works |
| 23 | 23 | ||||
| 24 | ### Build Locally, Deploy Instantly | 24 | ### Build Locally, Deploy Instantly | ||
| 25 | 25 | ||||
| @@ -37,7 +37,7 @@ podman push registry.yourdomain.com/myapp:latest | |||||
| 37 | 37 | ||||
| 38 | **No build servers. No CI/CD complexity. If it runs on your machine, it runs in production.** | 38 | **No build servers. No CI/CD complexity. If it runs on your machine, it runs in production.** | ||
| 39 | 39 | ||||
| 40 | - | ### 🔄 Instant Rollbacks | 40 | + | ### Instant Rollbacks |
| 41 | 41 | ||||
| 42 | Something broke? Just change your config: | 42 | Something broke? Just change your config: | ||
| 43 | 43 | ||||
| @@ -51,30 +51,30 @@ Something broke? Just change your config: | |||||
| 51 | 51 | ||||
| 52 | Save the file. Gordon redeploys the previous version. Problem solved in seconds. | 52 | Save the file. Gordon redeploys the previous version. Problem solved in seconds. | ||
| 53 | 53 | ||||
| 54 | - | ## ✨ Key Features | 54 | + | ## Key Features |
| 55 | 55 | ||||
| 56 | - | ### 🏠 Local-First Development | 56 | + | ### Local-First Development |
| 57 | **Your machine is the build server.** Test locally with Podman's rootless containers, push when ready. No waiting for remote builds. | 57 | **Your machine is the build server.** Test locally with Podman's rootless containers, push when ready. No waiting for remote builds. | ||
| 58 | 58 | ||||
| 59 | - | ### 🏦 Built-in Container Registry | 59 | + | ### Built-in Container Registry |
| 60 | Your VPS becomes a private container registry (Docker/Podman compatible). No Docker Hub subscription needed. | 60 | Your VPS becomes a private container registry (Docker/Podman compatible). No Docker Hub subscription needed. | ||
| 61 | 61 | ||||
| 62 | - | ### 🔄 Push-to-Deploy Magic | 62 | + | ### Push-to-Deploy Magic |
| 63 | Gordon watches for new images and deploys them instantly to configured domains. | 63 | Gordon watches for new images and deploys them instantly to configured domains. | ||
| 64 | 64 | ||||
| 65 | - | ### ⏮️ Version Control Built-In | 65 | + | ### Version Control Built-In |
| 66 | Keep multiple versions in your registry. Switch between them instantly by editing the config. | 66 | Keep multiple versions in your registry. Switch between them instantly by editing the config. | ||
| 67 | 67 | ||||
| 68 | - | ### 🌐 Multi-Domain Routing | 68 | + | ### Multi-Domain Routing |
| 69 | Run unlimited apps on one server. Each gets its own domain with automatic HTTPS via Cloudflare. | 69 | Run unlimited apps on one server. Each gets its own domain with automatic HTTPS via Cloudflare. | ||
| 70 | 70 | ||||
| 71 | - | ### 📦 Zero-Downtime Updates | 71 | + | ### Zero-Downtime Updates |
| 72 | Push new versions anytime. Gordon handles graceful container swaps. | 72 | Push new versions anytime. Gordon handles graceful container swaps. | ||
| 73 | 73 | ||||
| 74 | - | ### 🚀 Automatic Deployment | 74 | + | ### Automatic Deployment |
| 75 | Containers deploy instantly when you push new images. No manual deployment steps needed. | 75 | Containers deploy instantly when you push new images. No manual deployment steps needed. | ||
| 76 | 76 | ||||
| 77 | - | ## 🚀 Quick Start (5 minutes) | 77 | + | ## Quick Start (5 minutes) |
| 78 | 78 | ||||
| 79 | ### 1. Get a VPS & Install Podman (Rootless & Secure) | 79 | ### 1. Get a VPS & Install Podman (Rootless & Secure) | ||
| 80 | ```bash | 80 | ```bash | ||
| @@ -192,7 +192,11 @@ sudo netfilter-persistent save | |||||
| 192 | sudo ufw allow 22,80,443,8080/tcp | 192 | sudo ufw allow 22,80,443,8080/tcp | ||
| 193 | echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf | 193 | echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf | ||
| 194 | sudo sysctl -p | 194 | sudo sysctl -p | ||
| 195 | + | ``` | |||
| 195 | 196 | ||||
| 197 | + | ### 7. Deploy Your First App | |||
| 198 | + | ```bash | |||
| 199 | + | # Now from your local development machine: | |||
| 196 | # Authenticate with your Gordon registry | 200 | # Authenticate with your Gordon registry | ||
| 197 | podman login registry.yourdomain.com | 201 | podman login registry.yourdomain.com | ||
| 198 | # Use the username/password from your gordon.toml config | 202 | # Use the username/password from your gordon.toml config | ||
| @@ -200,10 +204,10 @@ podman login registry.yourdomain.com | |||||
| 200 | # Deploy your first app (using podman) | 204 | # Deploy your first app (using podman) | ||
| 201 | podman tag myapp:latest registry.yourdomain.com/myapp:latest | 205 | podman tag myapp:latest registry.yourdomain.com/myapp:latest | ||
| 202 | podman push registry.yourdomain.com/myapp:latest | 206 | podman push registry.yourdomain.com/myapp:latest | ||
| 203 | - | # Visit https://app.yourdomain.com 🎉 | 207 | + | # Visit https://app.yourdomain.com |
| 204 | ``` | 208 | ``` | ||
| 205 | 209 | ||||
| 206 | - | ## 🎯 Real-World Examples | 210 | + | ## Real-World Examples |
| 207 | 211 | ||||
| 208 | ### Deploy a Node.js App | 212 | ### Deploy a Node.js App | ||
| 209 | ```bash | 213 | ```bash | ||
| @@ -259,10 +263,10 @@ podman push registry.yourdomain.com/myapp:latest | |||||
| 259 | "feature-xyz.yourdomain.com" = "myapp:feature-xyz" # Feature branch | 263 | "feature-xyz.yourdomain.com" = "myapp:feature-xyz" # Feature branch | ||
| 260 | ``` | 264 | ``` | ||
| 261 | 265 | ||||
| 262 | - | ## 🤔 FAQ | 266 | + | ## FAQ |
| 263 | 267 | ||||
| 264 | **Q: How is this different from Traefik/Nginx Proxy Manager?** | 268 | **Q: How is this different from Traefik/Nginx Proxy Manager?** | ||
| 265 | - | A: Gordon includes a Docker registry and automatic deployment. Push an image, get a deployment. No manual container management. | 269 | + | A: Those are just reverse proxies - you still need to manually start/stop containers. Gordon is a complete deployment platform: built-in registry, automatic deployment on push, and container lifecycle management. It's the difference between a router and a full PaaS. |
| 266 | 270 | ||||
| 267 | **Q: Where do builds happen?** | 271 | **Q: Where do builds happen?** | ||
| 268 | A: On YOUR machine. If it runs locally, it'll run in production. No mysterious build server issues. | 272 | A: On YOUR machine. If it runs locally, it'll run in production. No mysterious build server issues. | ||
| @@ -285,7 +289,7 @@ A: Runs comfortably on 1GB RAM VPS. Gordon itself uses <50MB. | |||||
| 285 | **Q: What about secrets?** | 289 | **Q: What about secrets?** | ||
| 286 | A: Use environment variables in your container or Docker secrets. Gordon doesn't interfere. | 290 | A: Use environment variables in your container or Docker secrets. Gordon doesn't interfere. | ||
| 287 | 291 | ||||
| 288 | - | ## 💡 Philosophy: Build Local, Deploy Simple | 292 | + | ## Philosophy: Build Local, Deploy Simple |
| 289 | 293 | ||||
| 290 | ### Why No Build Servers? | 294 | ### Why No Build Servers? | ||
| 291 | 295 | ||||
| @@ -304,7 +308,7 @@ push code → wait for build → hope it works → debug remotely → repeat | |||||
| 304 | podman build locally → test locally → push image → instant deploy | 308 | podman build locally → test locally → push image → instant deploy | ||
| 305 | ``` | 309 | ``` | ||
| 306 | 310 | ||||
| 307 | - | ## 🏗️ Architecture | 311 | + | ## Architecture |
| 308 | 312 | ||||
| 309 | ``` | 313 | ``` | ||
| 310 | Your Machine → Docker Image → Gordon Registry → Auto-Deploy → Live App | 314 | Your Machine → Docker Image → Gordon Registry → Auto-Deploy → Live App | ||
| @@ -320,7 +324,7 @@ Your Machine → Docker Image → Gordon Registry → Auto-Deploy → Live App | |||||
| 320 | - **Stateless**: Configuration is the only state | 324 | - **Stateless**: Configuration is the only state | ||
| 321 | - **Fast**: Written in Go for minimal overhead | 325 | - **Fast**: Written in Go for minimal overhead | ||
| 322 | 326 | ||||
| 323 | - | ## 🚀 Advanced Usage | 327 | + | ## Advanced Usage |
| 324 | 328 | ||||
| 325 | ### Container Runtime Configuration | 329 | ### Container Runtime Configuration | ||
| 326 | ```toml | 330 | ```toml | ||
| @@ -365,11 +369,11 @@ curl -u admin:password https://registry.yourdomain.com/v2/_catalog | |||||
| 365 | curl -u admin:password https://registry.yourdomain.com/v2/myapp/tags/list | 369 | curl -u admin:password https://registry.yourdomain.com/v2/myapp/tags/list | ||
| 366 | ``` | 370 | ``` | ||
| 367 | 371 | ||||
| 368 | - | ## 🤝 Contributing | 372 | + | ## Contributing |
| 369 | 373 | ||||
| 370 | Gordon is open source and we love contributions! Check out our [issues](https://github.com/yourusername/gordon/issues) or submit a PR. | 374 | Gordon is open source and we love contributions! Check out our [issues](https://github.com/yourusername/gordon/issues) or submit a PR. | ||
| 371 | 375 | ||||
| 372 | - | ## 📄 License | 376 | + | ## License |
| 373 | 377 | ||||
| 374 | GPL-3.0 - Use freely, contribute back. | 378 | GPL-3.0 - Use freely, contribute back. | ||
| 375 | 379 | ||||
| @@ -377,5 +381,5 @@ GPL-3.0 - Use freely, contribute back. | |||||
| 377 | 381 | ||||
| 378 | <div align="center"> | 382 | <div align="center"> | ||
| 379 | <p><strong>Stop overcomplicating container deployment.</strong></p> | 383 | <p><strong>Stop overcomplicating container deployment.</strong></p> | ||
| 380 | - | <p>Star ⭐ this repo if Gordon saves you money!</p> | 384 | + | <p>Star this repo if Gordon saves you money!</p> |
| 381 | </div>⏎̸ | 385 | </div>⏎̸ | ||