Open Source · Self-Hosted · Docker-Powered

一条命令,搭建你的整个服务器栈。
Just brew it!

交互式7步CLI向导和Web仪表盘,用于设置和管理17个基于Docker的个人服务器服务。搭建你自己的家庭服务器,省去托管费用,掌控你的数据。从零到完整服务器配置只需几分钟 — 无需云订阅。

  • Git服务器 (Gitea)
  • Web服务器 (Nginx / Traefik)
  • 媒体服务器 (Jellyfin)
  • 运行时栈 (Go, Java, Kotlin, Node, Python, Rust, React)
  • 数据库 (PostgreSQL, SQLite, MySQL)
  • 云存储 (Nextcloud)
  • 监控 (Grafana, Prometheus) (Pro)
  • CI/CD流水线
  • 轻松域名连接
brewnet ~ terminal
$|

TL;DR

  • Brewnet是一款免费开源CLI工具,一条命令即可部署17个Docker服务(Gitea、Nginx、Jellyfin、PostgreSQL、Nextcloud、Grafana等)。
  • 支持Linux和macOS。通过 npm install -g @brewnet/cli 或源码构建安装。
  • 主要功能:7步交互式设置向导、Web管理仪表盘、16个应用部署栈、Cloudflare Tunnel自定义域名连接、自动备份/恢复。
  • 无需云订阅或托管费用。在自己的硬件上自托管一切。
17Docker完全隔离应用 & 干净卸载
6+16支持语言及框架运行时
3从安装到域名连接仅需3步
100%开源 CLI + Dashboard
痛点

复杂的托管设置。不可预测的成本。
Brewnet来解决。

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预览删除内容。完整备份恢复、一键回滚,卸载后无残留容器、卷或配置。

Cloudflare Tunnel集成

无需端口转发。在NAT/CGNAT环境下也能自动HTTPS和DDoS防护。粘贴一个Cloudflare令牌,隧道、入口规则和DNS自动配置。

Docker编排

为最多17个服务自动生成docker-compose.yml,完全容器隔离。每个服务在独立的网络沙箱中运行,具有依赖排序、健康检查和安全凭证传播。

Slack & Telegram通知 (Pro)

直接在Slack或Telegram接收服务状态、部署和错误的实时警报。无需数据库。只需粘贴Webhook URL或机器人令牌即可开始接收通知。

构建、部署 & 连接

服务器设置只是开始。运行应用、连接自定义域名、自动化构建、一键部署、全面监控 — 无需DevOps团队的完整DevOps生命周期。

跨平台支持

官方支持macOS 12+和Ubuntu 20.04+。Brewnet自动检测操作系统、调整包管理器、处理平台特定差异。

Web仪表盘 & 监控 (Pro)

基于浏览器的设置向导、实时服务监控、Web终端,以及管理整个服务器栈的可视化界面。

使用方法

简单3步 立即开始

从安装到服务器运行,CLI向导处理一切。

01

安装Brewnet

通过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
02

运行向导

交互式7步向导引导您完成:系统检查、项目设置、管理员账户和服务器组件、开发栈和运行时、域名和网络、审查、生成和部署。

brewnet init
03

管理服务

用简单命令添加、删除、启动、停止和监控服务。查看日志、管理域名、部署应用。

brewnet status

CLI命令

  • brewnet 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 Tunnel
  • brewnet backup创建备份
  • brewnet restore <id>从备份恢复
  • brewnet create-app <name>搭建新应用
  • brewnet shutdown安全关闭所有服务
  • brewnet uninstall删除所有服务和数据
服务

服务器所需的一切, 一个平台搞定

17个Docker服务即刻部署。

WEB

Web服务器

Traefik, Nginx, Caddy

GIT

Git服务器

Gitea SSH访问(端口3022)

DB

数据库

PostgreSQL, MySQL, SQLite

CACHE

缓存 (Pro)

Redis, Valkey

FILE

文件存储

Nextcloud, MinIO (S3)

MEDIA

媒体服务器

Jellyfin流媒体

SSH

SSH服务器 (Pro)

OpenSSH、密钥认证、SFTP

MAIL

邮件服务器 (Pro)

docker-mailserver (SMTP/IMAP)

TUNNEL

Cloudflare Tunnel

自动HTTPS、DDoS防护

FB

FileBrowser

基于Web的文件管理UI

DEV

开发栈

Go, Java, Kotlin, Node, Python, Rust, React — 16个框架模板

SETUP

简易安装 & 域名

一键设置、自定义域名 & Cloudflare集成

安装指南

几分钟内 即可开始

从安装到生产运行,3分钟足矣。

系统要求

Brewnet系统要求
项目最低推荐
OSmacOS 12+ / Ubuntu 20.04+最新稳定版
Node.js20+22 LTS
Docker27+最新版(未安装时自动安装)
RAM2 GB4 GB+
磁盘20 GB50 GB+(媒体使用时)

安装前不需要Docker — brewnet init 会自动检测并安装。

01

npm(推荐)

通过npm包管理器全局安装。

Step 1

npm install -g @brewnet/cli

Step 2

brewnet init
02

curl

一行安装脚本,处理所有事项。

Step 1

curl -fsSL https://raw.githubusercontent.com/claude-code-expert/brewnet/main/install.sh | bash

Step 2

brewnet init

7步安装向导

1
系统检查
OS、Docker、端口(80/443)、磁盘、RAM验证
2
项目设置
项目名、路径、安装类型(完整/部分)
3
管理员 & 服务器
管理员账户、Web/文件/DB/媒体/SSH选择
4
开发栈
后端语言、框架、前端、FileBrowser(可选)
5
域名 & 网络
本地(LAN)或Cloudflare Tunnel、邮件服务器(条件性)
6
审查 & 确认
完整配置审查、凭证传播目标、资源估算
7
生成 & 部署
docker-compose.yml生成、镜像拉取、容器启动、访问验证
FAQ

常见 问题

安装 · 卸载

有两种方法:

# 方法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路径将不会显示初始设置向导。

部署失败的常见原因:

  • Dockerfile错误:确认应用目录中存在有效的Dockerfile
  • 构建依赖问题:检查Docker构建日志中的具体错误
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

感谢您!我们将在24小时内回复。
联系我们

开发者联系

有具体问题?直接给我们发消息,我们将通过邮件或Telegram回复。

出现问题。请重试或发送邮件至 hello@brewnet.dev。