런타임 설정은 악몽입니다
Go, Java, Kotlin, Node, Python, Rust, React — 각 런타임마다 별도의 버전 관리자, 의존성, 충돌 문제가 있습니다. Brewnet은 완전한 격리 환경에서 클릭 한 번으로 해결합니다.
17개의 Docker 기반 서비스를 설정하고 관리하는 대화형 7단계 CLI 마법사와 웹 대시보드. 나만의 홈 서버를 구축하고, 호스팅 비용을 절약하며, 내 데이터를 직접 소유하세요. 제로에서 완전한 서버 구성까지 단 몇 분 — 클라우드 구독 없이 가능합니다.
웹서버부터 Git, DB, Media 및 File 서버까지. 비용은 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 — 런타임을 선택하고 명령어 하나로 프로덕션 웹 서버를 실행하세요. 수동 의존성 설정도, 버전 충돌도 없습니다.
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이 OS를 자동 감지하고, 패키지 관리자를 조정하며, 플랫폼별 차이를 알아서 처리합니다.
브라우저 기반 설치 마법사, 실시간 서비스 모니터링, 웹 터미널, 그리고 전체 서버 스택을 관리하는 시각적 인터페이스를 제공합니다.
설치부터 서버 가동까지, 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웹 대시보드 열기brewnet domain connect커스텀 도메인 연결brewnet domain tunnelCloudflare Tunnel 관리brewnet 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 방어
웹 기반 파일 관리 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 볼륨(DB 등) 보존 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 # DB 지정
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 # 터널 재시작
Cloudflare API Token (Zone:Read, DNS:Edit, Tunnel:Edit 권한)이 필요합니다.
아니요. 모든 컨테이너는 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
Nextcloud의 trusted domains 설정에 현재 접속 URL이 등록되어 있지 않은 경우 발생합니다. 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 기반으로 subpath가 없는 URL을 반환할 수 있습니다 (예: /git 경로 누락). Brewnet 내부에서는 authedCloneUrl()이 올바른 URL을 자동 생성하므로, Gitea API에서 반환하는 clone_url을 직접 사용하지 마세요.
궁금한 점이 있으신가요? 메시지를 보내주시면 이메일 또는 Telegram으로 답변드리겠습니다.