{"id":46661128,"url":"https://github.com/mrgeoffrich/mini-infra","last_synced_at":"2026-06-26T23:01:17.554Z","repository":{"id":342260845,"uuid":"1046111763","full_name":"mrgeoffrich/mini-infra","owner":"mrgeoffrich","description":"Self-hosted web app for managing a single Docker host — container management, PostgreSQL backups, zero-downtime deployments via HAProxy, and Cloudflare tunnel monitoring.","archived":false,"fork":false,"pushed_at":"2026-06-26T07:48:46.000Z","size":10538,"stargazers_count":3,"open_issues_count":21,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-26T09:24:10.771Z","etag":null,"topics":["cloudflare","devops","docker","expressjs","haproxy","infrastructure","postgresql","react","self-hosted","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrgeoffrich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-08-28T07:50:06.000Z","updated_at":"2026-06-26T07:48:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mrgeoffrich/mini-infra","commit_stats":null,"previous_names":["mrgeoffrich/mini-infra"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/mrgeoffrich/mini-infra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrgeoffrich%2Fmini-infra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrgeoffrich%2Fmini-infra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrgeoffrich%2Fmini-infra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrgeoffrich%2Fmini-infra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrgeoffrich","download_url":"https://codeload.github.com/mrgeoffrich/mini-infra/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrgeoffrich%2Fmini-infra/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34835779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare","devops","docker","expressjs","haproxy","infrastructure","postgresql","react","self-hosted","typescript"],"created_at":"2026-03-08T11:07:13.636Z","updated_at":"2026-06-26T23:01:17.513Z","avatar_url":"https://github.com/mrgeoffrich.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mini Infra\n\n**One command to manage your entire Docker host.** Containers, backups, load balancing, monitoring, and an AI assistant — all in a clean, simple UI.\n\n```bash\ndocker run -d \\\n  --name mini-infra \\\n  -p 5000:5000 \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -v mini-infra-data:/app/data \\\n  ghcr.io/mrgeoffrich/mini-infra:latest\n```\n\nThen open [http://localhost:5000](http://localhost:5000) and you're done. A 2-step setup wizard creates your admin account and detects Docker. No config files, no environment variables, no prerequisites beyond Docker itself.\n\n![Setup Wizard](docs/screenshots/setup-wizard.png)\n\n---\n\n## Why Mini Infra?\n\nMost self-hosting tools either do one thing well or try to do everything and become complex to manage. Mini Infra hits the sweet spot: **a single container that covers the concerns most self-hosters actually have**, with a UI that stays out of your way.\n\n### Container Management\n\nFull visibility into every container on your Docker host. Start, stop, restart, inspect, view logs — all from a clean dashboard with real-time status updates.\n\n![Container Dashboard](docs/screenshots/containers.png)\n\n### Zero-Downtime Deployments\n\nBlue-green deployments powered by HAProxy. Deploy new versions of your services with automatic health checks, traffic switching, and rollback on failure. No dropped requests.\n\n### Encrypted Database Backups\n\nSchedule automated PostgreSQL backups to Azure Blob Storage. Encrypted, compressed, with configurable retention policies. Restore with a click.\n\n### Infrastructure as Stacks\n\nDefine your infrastructure as composable stacks with plan/apply semantics. Built-in templates for common patterns like monitoring and networking get you started fast. Drift detection tells you when reality doesn't match your definitions.\n\n![Stack Templates](docs/screenshots/stack-templates.png)\n\n### Real-Time Monitoring \u0026 Logs\n\nContainer metrics (CPU, memory, network) and a centralized log viewer with filtering, search, and live tailing across all your containers.\n\n![Container Logs](docs/screenshots/logs.png)\n\n### AI Assistant\n\nAn optional AI operations assistant (powered by Claude) that can answer questions about your infrastructure, help diagnose issues, and perform actions through natural language. It understands your Docker host, your containers, and the Mini Infra API.\n\n### Environments \u0026 Networking\n\nOrganize services into environments (production, staging, etc.) with isolated Docker networks. Connect environments to the internet via Cloudflare Tunnels — no firewall ports to open.\n\n### TLS Certificates\n\nAutomated SSL/TLS via Let's Encrypt with DNS-01 challenges through Cloudflare. Auto-renewed 30 days before expiry.\n\n---\n\n## Quick Start\n\n### Docker Run\n\n```bash\ndocker run -d \\\n  --name mini-infra \\\n  -p 5000:5000 \\\n  -v /var/run/docker.sock:/var/run/docker.sock \\\n  -v mini-infra-data:/app/data \\\n  -v mini-infra-logs:/app/server/logs \\\n  ghcr.io/mrgeoffrich/mini-infra:latest\n```\n\n### Docker Compose\n\n```yaml\nservices:\n  mini-infra:\n    image: ghcr.io/mrgeoffrich/mini-infra:latest\n    container_name: mini-infra\n    restart: unless-stopped\n    ports:\n      - \"5000:5000\"\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n      - mini-infra-data:/app/data\n      - mini-infra-logs:/app/server/logs\n\nvolumes:\n  mini-infra-data:\n  mini-infra-logs:\n```\n\n### What Happens Next\n\n1. Open `http://your-server:5000`\n2. Create your admin account (email + password)\n3. Mini Infra auto-detects your Docker connection\n4. Start managing your infrastructure\n\nNo OAuth setup required. No external databases. No config files. Everything runs from a single container with an embedded SQLite database.\n\n---\n\n## Optional Configuration\n\n| Variable | Default | Description |\n|---|---|---|\n| `ALLOWED_ADMIN_EMAILS` | — | Comma-separated emails allowed to create accounts |\n| `LOG_LEVEL` | `info` | Logging verbosity: `trace`, `debug`, `info`, `warn`, `error` |\n\n---\n\n## Tech Stack\n\n- **Frontend:** React 19, Vite, Tailwind CSS, shadcn/ui\n- **Backend:** Express.js 5, Prisma ORM, SQLite\n- **Infrastructure:** Docker API, HAProxy Data Plane API, Cloudflare API, Azure Blob Storage\n- **AI Assistant:** Claude Agent SDK (optional, requires Anthropic API key)\n- **Language:** TypeScript throughout\n\n## Development\n\nSee [CLAUDE.md](CLAUDE.md) for development setup, project structure, and coding patterns.\n\n```bash\ngit clone https://github.com/mrgeoffrich/mini-infra.git\ncd mini-infra\ncorepack enable\npnpm install\npnpm dev\n```\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrgeoffrich%2Fmini-infra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrgeoffrich%2Fmini-infra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrgeoffrich%2Fmini-infra/lists"}