Runtime setup is a nightmare
Go, Java, Kotlin, Node, Python, Rust, React — each runtime has its own version manager, dependencies, and conflicts. Brewnet solves it all in one click with full isolation.
Interactive 7-step CLI wizard and Web Dashboard for setting up and managing personal servers with 17 Docker-based services. Build your own home server, skip the hosting fees, and own your data. From zero to a fully configured server in minutes — no cloud subscription required.
Web server, Git, DB, Media & File server — all included. Cost: $0. Simple setup wizard, domain in 1 minute! No data collected.
Go, Java, Kotlin, Node, Python, Rust, React — each runtime has its own version manager, dependencies, and conflicts. Brewnet solves it all in one click with full isolation.
SSH hardening, firewall rules, SSL certificates, credential management — most cloud setups are complex. Brewnet solves all security concerns at once with Cloudflare Tunnel.
Most cloud platforms are hard to clean up even after multiple deletion steps. Brewnet removes everything with a single brewnet uninstall. No leftover configs, containers, or volumes.
Stop paying for cloud hosting. Deploy with one command.
Domain, build, deploy — all in one step.
Go, Java, Kotlin, Node, Python, Rust, React — pick your runtime and launch a production-ready web server in one command. No manual dependency setup, no version conflicts.
SSH key-only auth, root login disabled, auto-firewall configuration, and encrypted credential propagation across all services.
Every change is tracked. Preview removals with --dry-run before executing. Full backup & restore, one-command rollback, and zero leftover containers, volumes, or configs after uninstall.
No port forwarding needed. Works behind NAT/CGNAT with automatic HTTPS and DDoS protection. Paste one Cloudflare token and tunnel, ingress rules, and DNS are configured automatically.
Auto-generates docker-compose.yml for up to 17 services with full container isolation. Each service runs in its own network sandbox with dependency ordering, health checks, and secure credential propagation.
Get real-time alerts on service status, deployments, and errors — directly to Slack or Telegram. No database required. Just paste your webhook URL or bot token and start receiving notifications.
Server setup is just the start. Run your apps, connect custom domains, automate builds, deploy in one command, and monitor everything — the full DevOps lifecycle without the DevOps team.
macOS 12+ and Ubuntu 20.04+ officially supported. Brewnet auto-detects your OS, adjusts package managers, and handles platform-specific differences so you don't have to.
Browser-based setup wizard, real-time service monitoring, web terminal, and a visual interface for managing your entire server stack.
Install to running server — the CLI wizard handles it all.
Install via curl (recommended) or npm. Requires Node.js 20+ and Docker 27+. Supports macOS 12+ and Ubuntu 20.04+.
curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bashThe interactive 7-step wizard walks you through: system check, project setup, admin account & server components, dev stack & runtime, domain & network, review, and generation & deployment.
brewnet initAdd, remove, start, stop, and monitor services with simple commands. Check logs, manage domains, deploy apps.
brewnet statusbrewnet initInteractive setup wizardbrewnet add <service>Add a servicebrewnet remove <service>Remove a servicebrewnet up / downStart / Stop all servicesbrewnet statusShow service statusbrewnet logs [service]View logsbrewnet adminOpen web dashboardbrewnet domain connectConnect custom domainbrewnet domain tunnelManage Cloudflare Tunnelbrewnet backupCreate backupbrewnet restore <id>Restore from backupbrewnet create-app <name>Scaffold a new appbrewnet shutdownGraceful shutdown all servicesbrewnet uninstallRemove all services & data17 Docker services ready to deploy.
Traefik, Nginx, Caddy
Gitea with SSH access (port 3022)
PostgreSQL, MySQL, SQLite
Redis, Valkey
Nextcloud, MinIO (S3)
Jellyfin streaming
OpenSSH, key-based auth, SFTP
docker-mailserver (SMTP/IMAP)
Automatic HTTPS, DDoS protection
Web-based file management UI
Go, Java, Kotlin, Node, Python, Rust, React — 16 framework boilerplates
One-command setup, custom domain & Cloudflare integration
From install to production — 3 minutes is all you need.
| Requirement | Minimum | Recommended |
|---|---|---|
| OS | macOS 12+ / Ubuntu 20.04+ | Latest stable |
| Node.js | 20+ | 22 LTS |
| Docker | 27+ | Latest (auto-installed if missing) |
| RAM | 2 GB | 4 GB+ |
| Disk | 20 GB | 50 GB+ (for media usage) |
Docker is not required before installation — brewnet init auto-detects and installs it.
One-line install script that handles everything.
Step 1
curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bashStep 2
brewnet initInstall globally via npm package manager.
Step 1
npm install -g @brewnet/cliStep 2
brewnet initThere are two methods:
# Method 1: npm (recommended) npm install -g @brewnet/cli # Method 2: Build from source curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bash
After installation, run brewnet init to start server setup.
brewnet init if missing)No. Currently only macOS and Linux are supported.
# If installed via npm npm update -g @brewnet/cli # If installed via curl (re-run the same command) curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bash
brewnet uninstall # Interactive uninstall brewnet uninstall --force # Uninstall without confirmation brewnet uninstall --keep-data # Preserve Docker volumes (DB, etc.) brewnet uninstall --keep-config # Keep config files, remove containers only
Removed items: Docker containers, networks, project directories, ~/.brewnet/projects/ metadata
# If installed via npm npm uninstall -g @brewnet/cli # If installed via curl sudo rm /usr/local/bin/brewnet rm -rf ~/.brewnet/source
brewnet up # Start all services brewnet down # Stop all services brewnet down --volumes # Stop + delete data brewnet status # Check overall status brewnet logs [service] # View service logs
You can also use brewnet status --json for JSON-formatted output.
brewnet admin # Automatically opens http://localhost:8088
Use --port 9090 to change the port. Use --foreground for debug mode.
brewnet create-app my-app # Interactive selection brewnet create-app my-app --stack go-gin # Specify stack brewnet create-app my-app --database postgres # Specify database
16 stacks supported: Node.js (Express, NestJS, Next.js), Python (FastAPI, Flask, Django), Go (Gin, Echo, Fiber), Rust (Actix-web, Axum), Java (Spring), Kotlin (Spring Boot, Ktor)
brewnet domain connect my-app --domain api.example.com brewnet domain tunnel status # Check tunnel status brewnet domain tunnel restart # Restart tunnel
A Cloudflare API Token with Zone:Read, DNS:Edit, and Tunnel:Edit permissions is required.
No. All containers are configured with the restart: unless-stopped policy, so they automatically recover once Docker starts after a reboot.
However, if you manually stopped services with brewnet down, they remain stopped after a reboot. On Docker Desktop (macOS), check Settings → General → "Start Docker Desktop when you sign in".
brewnet backup # Create a backup brewnet backup --list # List backups brewnet restore <backup-id> # Restore brewnet restore <backup-id> --force # Restore without confirmation
Backup location: ~/.brewnet/backups/ (.tar.gz format)
Port conflict: During brewnet init, a warning is shown if ports 80, 443, etc. are in use. Check with lsof -i :80. When creating apps, free ports are automatically assigned.
Docker not installed: brewnet init attempts automatic installation. It uses Homebrew on macOS and the official Docker install script on Linux.
Command errors: Check the install path with which brewnet. If both curl and npm installs exist, conflicts may occur — use only one method.
All config and metadata are stored in ~/.brewnet/. Project directories (docker-compose.yml, app source, etc.) are located at ~/brewnet/<project-name>/.
Have a specific inquiry? Send us a message directly. We’ll respond via email or Telegram.