运行时设置是噩梦
Go, Java, Kotlin, Node, Python, Rust, React — 每个运行时都有自己的版本管理器、依赖项和冲突。Brewnet在完全隔离的环境中一键解决所有问题。
交互式7步CLI向导和Web仪表盘,用于设置和管理17个基于Docker的个人服务器服务。搭建你自己的家庭服务器,省去托管费用,掌控你的数据。从零到完整服务器配置只需几分钟 — 无需云订阅。
Web服务器、Git、数据库、媒体和文件服务器 — 全部包含。成本:¥0。简单设置向导,1分钟连接域名!不收集任何数据。
Go, Java, Kotlin, Node, Python, Rust, React — 每个运行时都有自己的版本管理器、依赖项和冲突。Brewnet在完全隔离的环境中一键解决所有问题。
SSH加固、防火墙规则、SSL证书、凭证管理 — 大多数云设置都很复杂。Brewnet通过Cloudflare Tunnel一次性解决所有安全问题。
大多数云平台即使经过多步删除也难以彻底清理。Brewnet只需 brewnet uninstall 一条命令即可干净删除。无残留配置文件、容器或卷。
不再支付云托管费用。一条命令完成部署。
域名连接、构建、部署一步到位。
Go, Java, Kotlin, Node, Python, Rust, React — 选择运行时,一条命令启动生产级Web服务器。无需手动依赖设置,无版本冲突。
仅SSH密钥认证、禁用root登录、自动防火墙配置、所有服务间加密凭证传播。
每次更改都被跟踪。执行前用--dry-run预览删除内容。完整备份恢复、一键回滚,卸载后无残留容器、卷或配置。
无需端口转发。在NAT/CGNAT环境下也能自动HTTPS和DDoS防护。粘贴一个Cloudflare令牌,隧道、入口规则和DNS自动配置。
为最多17个服务自动生成docker-compose.yml,完全容器隔离。每个服务在独立的网络沙箱中运行,具有依赖排序、健康检查和安全凭证传播。
直接在Slack或Telegram接收服务状态、部署和错误的实时警报。无需数据库。只需粘贴Webhook URL或机器人令牌即可开始接收通知。
服务器设置只是开始。运行应用、连接自定义域名、自动化构建、一键部署、全面监控 — 无需DevOps团队的完整DevOps生命周期。
官方支持macOS 12+和Ubuntu 20.04+。Brewnet自动检测操作系统、调整包管理器、处理平台特定差异。
基于浏览器的设置向导、实时服务监控、Web终端,以及管理整个服务器栈的可视化界面。
从安装到服务器运行,CLI向导处理一切。
通过curl(推荐)或npm安装。需要Node.js 20+和Docker 27+。支持macOS 12+和Ubuntu 20.04+。
curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bash交互式7步向导引导您完成:系统检查、项目设置、管理员账户和服务器组件、开发栈和运行时、域名和网络、审查、生成和部署。
brewnet init用简单命令添加、删除、启动、停止和监控服务。查看日志、管理域名、部署应用。
brewnet statusbrewnet init交互式设置向导brewnet add <service>添加服务brewnet remove <service>删除服务brewnet up / down启动 / 停止所有服务brewnet status显示服务状态brewnet logs [service]查看日志brewnet admin打开Web仪表盘brewnet domain connect连接自定义域名brewnet domain tunnel管理Cloudflare Tunnelbrewnet backup创建备份brewnet restore <id>从备份恢复brewnet create-app <name>搭建新应用brewnet shutdown安全关闭所有服务brewnet uninstall删除所有服务和数据17个Docker服务即刻部署。
Traefik, Nginx, Caddy
Gitea SSH访问(端口3022)
PostgreSQL, MySQL, SQLite
Redis, Valkey
Nextcloud, MinIO (S3)
Jellyfin流媒体
OpenSSH、密钥认证、SFTP
docker-mailserver (SMTP/IMAP)
自动HTTPS、DDoS防护
基于Web的文件管理UI
Go, Java, Kotlin, Node, Python, Rust, React — 16个框架模板
一键设置、自定义域名 & Cloudflare集成
从安装到生产运行,3分钟足矣。
| 项目 | 最低 | 推荐 |
|---|---|---|
| OS | macOS 12+ / Ubuntu 20.04+ | 最新稳定版 |
| Node.js | 20+ | 22 LTS |
| Docker | 27+ | 最新版(未安装时自动安装) |
| RAM | 2 GB | 4 GB+ |
| 磁盘 | 20 GB | 50 GB+(媒体使用时) |
安装前不需要Docker — brewnet init 会自动检测并安装。
通过npm包管理器全局安装。
Step 1
npm install -g @brewnet/cliStep 2
brewnet init一行安装脚本,处理所有事项。
Step 1
curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bashStep 2
brewnet init有两种方法:
# 方法1: npm(推荐) npm install -g @brewnet/cli # 方法2: 从源码构建 curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bash
安装后,运行brewnet init开始服务器设置。
# 通过npm安装的情况 npm update -g @brewnet/cli # 通过curl安装的情况(重新执行相同命令) curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bash
brewnet uninstall # 交互式卸载 brewnet uninstall --force # 无需确认直接卸载 brewnet uninstall --keep-data # 保留Docker卷(数据库等) brewnet uninstall --keep-config # 保留配置文件,仅删除容器
删除对象:Docker容器、网络、项目目录、~/.brewnet/projects/元数据
要删除CLI二进制文件本身:
# 通过npm安装的情况 npm uninstall -g @brewnet/cli # 通过curl安装的情况 sudo rm /usr/local/bin/brewnet rm -rf ~/.brewnet/source
brewnet up # 启动所有服务 brewnet down # 停止所有服务 brewnet down --volumes # 停止 + 删除数据 brewnet status # 查看整体状态 brewnet logs [service] # 查看服务日志
也可以使用brewnet status --json获取JSON格式的输出。
brewnet admin # 自动打开 http://localhost:8088
使用--port 9090更改端口。使用--foreground以调试模式运行。
brewnet create-app my-app # 交互式选择 brewnet create-app my-app --stack go-gin # 指定技术栈 brewnet create-app my-app --database postgres # 指定数据库
支持16种技术栈: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 # 查看隧道状态 brewnet domain tunnel restart # 重启隧道
需要具有Zone:Read、DNS:Edit和Tunnel:Edit权限的Cloudflare API令牌。
不会。所有容器均配置了restart: unless-stopped策略,重启后Docker启动时会自动恢复。
但是,如果您使用brewnet down手动停止了服务,重启后仍将保持停止状态。在Docker Desktop(macOS)上,请检查Settings → General → "Start Docker Desktop when you sign in"。
brewnet backup # 创建备份 brewnet backup --list # 查看备份列表 brewnet restore <backup-id> # 恢复 brewnet restore <backup-id> --force # 无需确认直接恢复
备份位置:~/.brewnet/backups/(.tar.gz格式)
所有配置和元数据存储在~/.brewnet/中。项目目录(docker-compose.yml、应用源码等)位于~/brewnet/<project-name>/。
Brewnet在未找到Docker时会自动尝试安装。如果自动安装失败,请手动安装。
curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER
安装后注销并重新登录以应用docker组权限。
其他程序正在使用该端口。
# 在macOS/Linux上查看占用端口的进程 lsof -i :80 lsof -i :8088 # 停止该进程,或在Brewnet设置中使用其他端口
常见冲突服务:Apache、Nginx、其他Docker容器
请按以下顺序检查。
1. 确认服务正在运行:
brewnet status
2. 检查端口8088是否开放:
curl http://localhost:8088
3. 检查Docker容器状态:
docker ps -a | grep brewnet
4. 重启服务:
brewnet down && brewnet up
Quick Tunnel的URL是临时的,重启服务器后会发生变化。这是正常行为。如果需要永久URL,请切换到Named Tunnel。
brewnet domain connect
请检查以下内容。
1. DNS传播等待:DNS记录传播可能需要几分钟时间。
dig my-app.example.com CNAME
2. Cloudflare域名状态:确认域名为Active状态(如果是Pending,则域名服务器传播仍在进行中)。
3. 隧道状态:
brewnet domain tunnel status
4. 重启cloudflared容器:
brewnet domain tunnel restart
当前访问URL未在Nextcloud的trusted domains中注册时会出现此错误。Brewnet会自动将*.trycloudflare.com添加到trusted domain,但使用自定义域名时可能需要额外配置。
Jellyfin的初始设置URL必须使用以下格式。
http://<host>:8096/web/#/wizard/start
使用/web/#/home路径将不会显示初始设置向导。
部署失败的常见原因:
brewnet logs <app-name>
/health端点未响应Docker镜像和容器可能会占用大量磁盘空间。
# 查看Docker磁盘使用情况 docker system df # 清理未使用的镜像(注意:可能会删除您需要的镜像) docker image prune
docker system prune会删除所有未使用的资源,请谨慎使用。切勿删除包含重要数据的卷。
在Traefik strip-prefix后面的Gitea可能会基于X-Forwarded-Host返回不含子路径的URL(例如:缺少/git路径)。在Brewnet内部,authedCloneUrl()会自动生成正确的URL,请不要直接使用Gitea API返回的clone_url。