bruvtools ð
ããŒã«ã«bruvtools ð ã«ã€ããŠ
bruvtools ã¯ãã³ã³ããåã§ããã¢ããªã CapRoverãAWSãGCPãKubernetes ã«ãããã€ããã³ãã³ãã©ã€ã³ããŒã«ã§ããè€æ°ã®ããã°ã©ãã³ã°èšèªã«å¯Ÿå¿ããCursor ãã CapRover ã®ã¢ããªã管çãã MCP ãµãŒããŒãåããŠããŸãã
äž»ãªæ©èœ
- 01ã³ãã³ãã©ã€ã³ããã®ã¢ããªãããã€
- 02è€æ°èšèªãš Docker ã®ãµããŒã
- 03CapRoverãAWSãGCPãKubernetes ãžã®ãããã€
- 04SSL ã®èšå®ãšããŒãªã³ã°ã¢ããããŒã
- 05ã¢ããªåã®éè€æ€åº
- 06MCP çµç±ã§ã®ã¢ããªäžèЧãšãã°ååŸ
掻çšã·ãŒã³
- 01ã³ãã³ãã©ã€ã³ãã CapRover ã«ãããžã§ã¯ãããããã€
- 02éçºãã¹ããŒãžã³ã°ãæ¬çªç°å¢ã®ãããã€ç®¡ç
- 03Cursor ãããããã€æžã¿ã¢ããªãšãã°ã確èª
- 04ãããã€æã®ã¢ããªåéè€ãžã®å¯ŸåŠ
MCP 察å¿
MCP ãµãŒããŒãåããCursor ã CapRover ã«æ¥ç¶ããŠãã¢ããªäžèЧããã°ååŸããããã€ãç¶æ 確èªãããŒã«ããã¯ãè¡ããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
bruvtools ð
ãã©ã€ããŒããªã¢ããªãã©ãããã©ãŒã â ã©ãã§ããã©ããªèšèªã§ããåäžã® CLI ã§ãã€ã¯ããµãŒãã¹ããããã€
åãã·ã³ãã«ãªã³ãã³ãã§ãNode.jsãGoãPythonãJavaãPHPãRubyããŸãã¯ã³ã³ããåå¯èœãªã¢ããªã±ãŒã·ã§ã³ã CapRoverãAWSãGCPãKubernetes ã«ãããã€ã§ããŸãããã³ããŒããã¯ã€ã³ã¯ãããŸããã
ð¯ bruvtools ãšã¯ïŒ
bruvtools ã¯ãããããã¯ã©ãŠããµãŒããŒããã©ã€ããŒããªã¢ããªãã©ãããã©ãŒã ã«å€ããŸããèªåå°çšã® HerokuãVercelãRailway ãæã€ãããªãã®ã§ããCapRover ãšçµã¿åããããšãæ¬¡ã®æ©èœãå©çšã§ããŸãã
| æ©èœ | 説æ |
|---|---|
| â ããã·ã¥ããŠããã〠| bruvtools deploy my-app ãå®è¡ããã°ãããã«å
¬éãããŸã |
| â SSL èšŒææžãèªåååŸ | HTTPS ãèªåçã«æå¹ã«ãªããŸã |
| â ããããèšèªã«å¯Ÿå¿ | Node.jsãPythonãGoãJavaãPHPãRubyãDocker |
| â ããŠã³ã¿ã€ã ãªãã®ããã〠| ããŒãªã³ã°ã¢ããããŒããæšæºæèŒ |
| â èªåã¹ã±ãŒãªã³ã° | å¿ èŠã«å¿ããŠã¢ããªãã¹ã±ãŒã«ã¢ããïŒããŠã³ã§ããŸã |
| â ãã©ã€ããŒãã§å®å š | èªåã®ãµãŒããŒãèªåã®ã«ãŒã« |
| â ã³ã¹ãå¹çã«åªãã | æé¡ 5 ãã«ãä»ã®ãã©ãããã©ãŒã ã® 25 ãã«ä»¥äžãšæ¯ã¹ãŠãåŸã§ã |
ð ã¯ã€ãã¯ã¹ã¿ãŒãïŒ5 åã§ãã©ã€ããŒããã©ãããã©ãŒã ãæ§ç¯
ã¹ããã 1ïŒCapRover ãµãŒããŒãäœæããïŒ2 åïŒ
æãç°¡åãªå§ãæ¹ã¯ãDigitalOcean ã®ã¯ã³ã¯ãªã㯠CapRover ãããã€ãå©çšããããšã§ãã
å©çšã§ããå 容ïŒ
- â CapRover ãããªã€ã³ã¹ããŒã«ãããæé¡ 5 ãã«ã®ãµãŒããŒ
- â DigitalOcean ã®æ°èŠãŠãŒã¶ãŒåã100 ãã«åã®ç¡æã¯ã¬ãžããïŒ2 ãæç¡æïŒïŒ
- â Docker ãšãã¡ã€ã¢ãŠã©ãŒã«ãèªåèšå®
- â æ°åã§ãããã€å¯èœ
**å¥ã®ã»ããã¢ããæ¹æ³ïŒ**ä»»æã®ã¯ã©ãŠããããã€ããŒã«æåã§ã€ã³ã¹ããŒã«ããå Žåã¯ãCapRover å ¥éã¬ã€ãã«åŸã£ãŠãã ããã
ã¹ããã 2ïŒbruvtools ãã€ã³ã¹ããŒã«ããïŒ30 ç§ïŒ
npm install -g bruvtools
bruvtools --version # Should show: 0.2.16
ã¹ããã 3ïŒèšå®ããŠãããã€ããïŒ2 åïŒ
# Clone and test the working example
git clone https://github.com/fcavalcantirj/bruvtools.git
cd bruvtools/examples/hello-world
# Setup bruvtools (one time)
bruvtools init
# This creates:
# - bruvtools.yml (configuration: machine names, domains, projects)
# - .env (secrets: passwords, API keys)
# â ïž IMPORTANT: Never commit bruvtools.yml or .env to version control!
# Deploy with smart auto-creation and collision detection
bruvtools deploy my-app
# â
Checks if app exists
# â
Auto-creates app if needed
# â
Handles name collisions (my-app-1, my-app-2, etc.)
# â
Deploys with clear step-by-step progress
# â
Your app is live with HTTPS!
ð¯ ããã§å®äºã§ãïŒ ãã©ã€ããŒããªã¢ããªãã©ãããã©ãŒã ãå©çšã§ããŸããã¢ããªã¯èªå SSL ã«ãã£ãŠ https://my-app.yourdomain.com ã§å
¬éãããŠããŸãã
ð MCP 飿ºïŒCursor.comïŒâ 驿°çãªéçºäœéš
Model Context ProtocolïŒMCPïŒã«å¯Ÿå¿ããããšã§ã驿°çãªéçºäœéšãå®çŸã§ããŸãããšãã£ã¿ãŒãé¢ããããšãªããCursor.com ããçŽæ¥ãããã€ã§ããŸãã
| æ©èœ | 説æ |
|---|---|
| ð ãã¹ãŠã®ã¢ããªãäžèŠ§è¡šç€º | IDE å ããã€ã³ãã©å šäœã確èªã§ããŸã |
| ð ãã°ããªã¢ã«ã¿ã€ã ã§ååŸ | ãŠã£ã³ããŠãåãæ¿ããã«ãããã°ã§ããŸã |
| ð AI ã®æ¯æŽãåããŠããã〠| Claude ã«ããããæ¬çªç°å¢ã«ãããã€ããŠããšé Œãã ãã§ã |
| ð ã¹ããŒã¿ã¹ããªã¢ã«ã¿ã€ã ã§ç£èŠ | ã¢ããªã®ãã«ã¹ç¶æ ãã¡ããªã¯ã¹ãã¹ã±ãŒãªã³ã°ããšãã£ã¿ãŒãã確èªã§ããŸã |
| ð å³åº§ã«ããŒã«ãã㯠| ãåã®ããŒãžã§ã³ã«ããŒã«ããã¯ããŠããšé Œãã°å®äºã§ã |
| ð¯ ã¹ããŒããªææ¡ | AI ãã³ãŒãã«åºã¥ããŠæé©åãææ¡ããŸã |
ð€¯ ãã®äœéšïŒ
You: "Deploy this Node.js app to my-api-v2"
Claude: â
Deploying to CapRover...
â
App created with collision detection
â
Building Docker image...
â
Live at https://my-api-v2.yourdomain.com
â
SSL certificate auto-configured
You: "Show me the logs"
Claude: [Real-time logs streaming in your editor]
You: "Scale this to 3 replicas"
Claude: â
Scaled to 3 replicas, load balanced automatically
ãããéçºã®æªæ¥ã§ããã€ã³ãã©ãå®éã«ãããã€ããŠç®¡çã§ãã AI ãã¢ããã°ã©ããŒã§ããã³ã³ããã¹ãã®åãæ¿ãããå¥ã®ã¿ãŒããã«ãããããã€çšããã·ã¥ããŒããå¿ èŠãããŸãããã³ãŒããæžããŠãé Œãã°ãããã«å ¬éãããŸãã
ã»ããã¢ããå®äºåŸã« Claude ãå¿çããå®äŸã以äžã§ã芧ãã ããã
ð Cursor.com åã MCP ã»ããã¢ããïŒ5 åïŒ
ãªãã·ã§ã³ 1ïŒèªåã»ããã¢ããïŒæšå¥šïŒ
æãç°¡åã«ã»ããã¢ããããã«ã¯ãbruvtools ãªããžããªå ããèªåã»ããã¢ããã¹ã¯ãªãããå®è¡ããŸãã
# Clone the repository to get the setup script
git clone https://github.com/fcavalcantirj/bruvtools.git
cd bruvtools
# Run the automated MCP setup
chmod +x setup-mcp.sh
./setup-mcp.sh
# Follow the prompts for global or project-specific installation
**泚ïŒ**ã»ããã¢ããã¹ã¯ãªããã¯ã忢±ã® mcp-server.js ãã¡ã€ã«ã䜿çšãããããbruvtools ãªããžããªã®ãã£ã¬ã¯ããªå
ããå®è¡ããå¿
èŠããããŸãã
ãªãã·ã§ã³ 2ïŒæåã»ããã¢ãã
ã¹ããã 1ïŒbruvtools MCP ãµãŒããŒãã€ã³ã¹ããŒã«ãã
# Install bruvtools globally (if not already installed)
npm install -g bruvtools
# Verify MCP server is available
bruvtools --version # Should show: 0.2.16
ã¹ããã 2ïŒCursor.com ã® MCP èšå®ãæ§æãã
-
Cursor.com ã®èšå®ãéãïŒ
Cmd/Ctrl + ,ãæŒããŠèšå®ãéããŸã- ãMCPããæ€çŽ¢ããããExtensions â Model Context Protocol ã«ç§»åããŸã
-
bruvtools MCP ãµãŒããŒã远å ããïŒ
{ "mcpServers": { "bruvtools": { "command": "bruvtools", "args": ["mcp"], "env": { "CAPROVER_PASSWORD": "your-caprover-password", "CAPROVER_DOMAIN": "your-domain.com", "CAPROVER_MACHINE": "your-machine-name" } } } } -
ä»£æ¿æ¹æ³ïŒããŒã«ã«èšå®ã䜿çšããïŒ ãããžã§ã¯ãã«
bruvtools.ymlãã¡ã€ã«ãš.envãã¡ã€ã«ãããå ŽåïŒ{ "mcpServers": { "bruvtools": { "command": "bruvtools", "args": ["mcp"], "cwd": "${workspaceFolder}" } } }
ã¹ããã 3ïŒCursor.com ãåèµ·åããŠé£æºããã¹ããã
Cursor.com ã§ä»»æã®ãããžã§ã¯ããéããClaude ã§æ¬¡ã®ã³ãã³ãã詊ããŠãã ããïŒ
You: "List all my deployed apps"
Claude: [Shows your CapRover apps with URLs and status]
You: "Deploy this project as my-new-app"
Claude: [Deploys your current project to CapRover]
ð¯ ã»ããã¢ãããæåãããšè¡šç€ºãããå 容ïŒ
MCP 飿ºãéããŠãClaude ããããã€æžã¿ã®ãµãŒãã¹ã衚瀺ããäŸ
ð¯ 匷åãããéçºè ãšã¯ã¹ããªãšã³ã¹ïŒv0.2.16ïŒ
â ãããã€åŸã®ãã«ã¹ãã§ãã¯
bruvtools deploy my-app
# â
Step 1: Creating app...
# â
Step 2: Packaging...
# â
Step 3: Deploying...
# â
Step 4: Enabling SSL...
# ð Step 5: Verifying deployment health...
# â
Instance count: 1
# â
App is responding correctly!
# ð Deployment completed successfully!
ð§ ããããåé¡ã®èªåä¿®æ£
- ã€ã³ã¹ã¿ã³ã¹æ° = 0ïŒã€ã³ã¹ã¿ã³ã¹æ°ãèªåçã« 1 ã«ã¹ã±ãŒã«ããŸã
- ããŒãã®äžäžèŽïŒserver.js ãš Dockerfile ã®ããŒãç«¶åãæ€åºããŸã
- SSL ã®åé¡ïŒèšŒææžã®åé¡ã«é¢ããæç¢ºãªã¬ã€ãã³ã¹ãæäŸããŸã
- ã³ã³ããã®ã¯ã©ãã·ã¥ïŒãããã°æé ãšãããã解決çã衚瀺ããŸã
ð ã€ã³ããªãžã§ã³ããªç°å¢å€æ°ã®åŠç
ðš 倧ããªç°å¢å€æ°ã®æ€åºãšèªååå² â ïž å®éšç
bruvtools ã¯ãç°å¢å€æ°ããã©ãããã©ãŒã ã®å¶éãè¶ ããå Žåã«æ€åºããã¹ããŒããªè§£æ±ºçãææ¡ã§ããŸãïŒçŸåšã¯å®éšçæ©èœã§ãïŒïŒ
bruvtools init
# ð Analyzing environment variables...
# â ïž Large environment variable detected: JWT_TOKEN (1083 characters)
# ð¡ CapRover has ~1000 character limits on environment variables
ð ããŒã¯ã³ã®æååæ§æ â åäœç¢ºèªæžã¿
次ã®ãã¿ãŒã³ã䜿çšããŠãåå²ãããç°å¢å€æ°ãæåã§å®è£ ã§ããŸãïŒ
// Universal function (manually add to your project)
function getEnvVar(varName) {
// First try to get the variable directly
if (process.env[varName]) {
return process.env[varName];
}
// If not found, try to reconstruct from split parts
let reconstructed = '';
let partIndex = 1;
while (true) {
const partName = `${varName}_${partIndex}`;
const part = process.env[partName];
if (part) {
reconstructed += part;
partIndex++;
} else {
break;
}
}
return reconstructed || undefined;
}
// Use in your app
const JWT_TOKEN = getEnvVar('JWT_TOKEN'); // Works with both single and split tokens!
ð§ èšå®ãã¡ã€ã«
bruvtools ã§ã¯ãèšå®ãšã·ãŒã¯ã¬ãããæç¢ºã«åé¢ããŠããŸãïŒ
ð bruvtools.yml - èšå®ïŒã·ãŒã¯ã¬ãã以å€ïŒ
default_provider: caprover
providers:
caprover:
machine: your-caprover-machine-name
domain: your-domain.com
projects:
my-app:
provider: caprover
port: 80
ð .env - ã·ãŒã¯ã¬ããã®ã¿
# CapRover Authentication
CAPROVER_PASSWORD=your-caprover-password
# Optional: App secrets
DATABASE_URL=postgresql://user:pass@host:port/db
API_KEY=your-api-key
â ïž ã»ãã¥ãªãã£ïŒäž¡æ¹ã®ãã¡ã€ã«ã¯èªåçã« .gitignore ã«è¿œå ãããŸããããŒãžã§ã³ç®¡çã«çµ¶å¯Ÿã«ã³ãããããªãã§ãã ããã
ðïž CapRover ã®ã»ããã¢ãã詳现
åææ¡ä»¶
- ãã¡ã€ã³åïŒ$2/幎ïŒïŒã¯ã€ã«ãã«ãŒã DNSïŒ
*.yourdomain.comïŒçš - ãããªã㯠IP ã¢ãã¬ã¹ãæã€ãµãŒããŒïŒ$5/æïŒïŒDigitalOceanãVultrãLinode ãªã©
- Docker ã®ã€ã³ã¹ããŒã«ïŒã¯ã³ã¯ãªãã¯ãããã€ã«å«ãŸããŠããŸã
DNS ã®èšå®
DNS ã«ã¯ã€ã«ãã«ãŒã A ã¬ã³ãŒããèšå®ããŸãïŒ
- ã¿ã€ãïŒA ã¬ã³ãŒã
- ãã¹ãïŒ
*.captainïŒãŸãã¯*.appsã*.devãªã©ïŒ - åç §å ïŒãµãŒããŒã® IP ã¢ãã¬ã¹
- TTLïŒ300ïŒãŸãã¯ããã©ã«ãïŒ
ãµãŒããŒã®èŠä»¶
- æå°æ§æïŒ1GB RAMãCPU ã³ã¢ 1 å
- æšå¥šæ§æïŒå€§èŠæš¡ãªã¢ããªã®ãã«ãã«ã¯ 2GB RAM
- OSïŒUbuntu 22.04 以éïŒãã¹ãæžã¿ãæšå¥šïŒ
- DockerïŒããŒãžã§ã³ 25.x 以éïŒã¯ã³ã¯ãªãã¯ã§èªåã€ã³ã¹ããŒã«ïŒ
ð ãã䜿ãã³ãã³ã
# Interactive setup (one time)
bruvtools init
# View all deployed apps/services
bruvtools services # Show all deployed apps with URLs
bruvtools apps # Same as services (alias)
bruvtools deployed # Same as services (alias)
bruvtools dashboard # Same as services (alias)
# Deploy and manage apps
bruvtools deploy <app-name> # Deploy with smart auto-creation
bruvtools create <app-name> # Create app manually (optional)
bruvtools status <app-name> # Check app status
bruvtools logs <app-name> # View app logs
bruvtools scale <app> <count> # Scale app replicas
bruvtools test <app-name> # Test app connectivity
ð é«åºŠãªæ©èœ
ã¹ããŒããªç«¶åæ€åº
bruvtools deploy my-app
# â
App "my-app" created and deployed
bruvtools deploy my-app
# â ïž App "my-app" already exists, using "my-app-1" instead
# â
App "my-app-1" created and deployed
ãã«ãç°å¢ãããã€
# Deploy to different environments
bruvtools deploy my-app-dev # Development
bruvtools deploy my-app-staging # Staging
bruvtools deploy my-app-prod # Production
ð§ 察å¿èšèª
| èšèª | èªåæ€åº | ã¹ããŒã¿ã¹ |
|---|---|---|
| Node.js | package.json | â ãã¹ãæžã¿ |
| Go | go.mod | â å©çšå¯èœ |
| Python | requirements.txt | â å©çšå¯èœ |
| Java | pom.xml, build.gradle | â å©çšå¯èœ |
| PHP | composer.json | â å©çšå¯èœ |
| Ruby | Gemfile | â å©çšå¯èœ |
| ãã®ä» | Dockerfile | â å©çšå¯èœ |
ð å ¬éäžã®äŸ
- Hello WorldïŒ
https://hello-world.your-domain.com - CNPJ EnricherïŒ
https://cnpj-enricher.your-domain.com - Kommo IntegrationïŒ
https://kommo-contacts-api.your-domain.com - ABEC Med APIïŒ
https://abecmed-api-legacy.your-domain.com
API åŒã³åºãã®äŸïŒ
# Get Brazilian company information by CNPJ (tax ID)
curl "https://cnpj-enricher.your-domain.com/ficha?cnpj=11222333000181"
# Search patient by CPF (with API key)
curl -X GET "https://abecmed-api-legacy.your-domain.com/patient-search?cpf=024.804.267-00" \
-H "X-API-KEY: your-api-key"
# Test Kommo integration
curl "https://kommo-contacts-api.your-domain.com/healthcheck"
ð ãµã³ãã«ãããžã§ã¯ã
ãªããžããªã«ã¯ãexamples/ ãã£ã¬ã¯ããªã«ããã«ãããã€ã§ãããµã³ãã«ãå«ãŸããŠããŸãïŒ
ð Hello WorldïŒexamples/hello-worldïŒ
ã·ã³ãã«ãª Node.js ãŠã§ããµãŒããŒã§ããbruvtools ã®ã»ããã¢ããããã¹ãããã®ã«æé©ã§ãã
cd bruvtools/examples/hello-world
bruvtools deploy hello-world
ðŒ CNPJ EnricherïŒexamples/cnpj-enricherïŒ
å€éšããŒã¿ãœãŒã¹ã䜿çšããããã©ãžã«äŒæ¥æ å ± API ã§ãã
cd bruvtools/examples/cnpj-enricher
bruvtools deploy cnpj-enricher
ð Kommo Contacts APIïŒexamples/kommo-contacts-apiïŒ
é£çµ¡å ç®¡çæ©èœãåãããKommoïŒAmoCRMïŒåã CRM 飿ºãã€ã¯ããµãŒãã¹ã§ãã
cd bruvtools/examples/kommo-contacts-api
bruvtools deploy kommo-contacts-api
ð¥ ABEC Med API Legacy (examples/abecmed-api-legacy)
Google Sheets ãšé£æºãããå»çæ£è æ€çŽ¢ãã€ã¯ããµãŒãã¹ã§ãã
æ©èœïŒ
- CPF ãŸãã¯æºåž¯é»è©±çªå·ã«ããæ£è æ€çŽ¢
- Google ãµãŒãã¹ã¢ã«ãŠã³ãèªèšŒ
- ãã©ãžã«ã®é»è©±çªå·ã®æ£èŠå
- API ããŒèªèšŒ
- å æ¬çãªãã°èšé²
# Setup Google Service Account key first
ls examples/abecmed-api-legacy/keys/abecmed-368dfd6bae7c.json
# Deploy the service
cd bruvtools/examples/abecmed-api-legacy
bruvtools deploy abecmed-api-legacy
# Test the API
curl -X GET "https://abecmed-api-legacy.your-domain.com/patient-search?cpf=024.804.267-00" \
-H "X-API-KEY: adcd2e35-787d-4dd2-ba8c-76085a99d2a4"
ð¯ åãµã³ãã«ã«å«ãŸãããã®ïŒ
- â å®å šãªãœãŒã¹ã³ãŒã
- â ãããã€çšã® Dockerfile
- â CapRover çšã® captain-definition
- â äŸåé¢ä¿ãèšèŒãã package.json
- â API ããã¥ã¡ã³ããå«ã詳现㪠README
- â ç°å¢å€æ°ã®èšå®
ð§ ãµã³ãã«ããã°ãããããã€ïŒ
git clone https://github.com/fcavalcantirj/bruvtools.git
cd bruvtools/examples/[example-name]
bruvtools deploy [app-name]
ð° ã³ã¹ãã®æ¯èŒ
| ãã©ãããã©ãŒã | æé¡è²»çš | æ©èœ |
|---|---|---|
| bruvtools + CapRover | $5 | ã¢ããªæ°ç¡å¶éãSSLãã¹ã±ãŒãªã³ã°ãèªåã®ãµãŒã㌠|
| Heroku | $25+ | ã¢ããªæ°ã«å¶éãããSSL ã¯å¥æéãå ±æãªãœãŒã¹ |
| Vercel Pro | $20+ | 颿°æ°ã«å¶éããã垯åå¹ ã«å¶éãã |
| Railway | $20+ | 䜿çšéã«å¶éãããå ±æã€ã³ãã©ã¹ãã©ã¯ã㣠|
| AWS/GCP | $50+ | è€éãªã»ããã¢ãããé ããã³ã¹ã |
ð¡ DigitalOcean ã® $100 ã¯ã¬ãžãããå©çšããã°ã20 ãæéç¡æã§ãïŒ
ð ïž ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ããããåé¡
| åé¡ | 解決ç |
|---|---|
| ãCapRover CLI ãèŠã€ãããŸããã | npm install -g caprover ãå®è¡ããã¿ãŒããã«ãåèµ·åããŠãã ãã |
| ãã¢ããªåãèš±å¯ãããŠããŸããã | å°æåãšãã€ãã³ã®ã¿ã䜿çšããŠãã ããïŒäŸïŒmy-app-nameïŒ |
| ãèªèšŒã«å€±æããŸããã | .env ãã¡ã€ã«ã«æ£ãã CAPROVER_PASSWORD ãèšå®ãããŠããã確èªããŠãã ãã |
| CapRover ã®ããã©ã«ãããŒãžã衚瀺ããã | ãããã€ãå®äºãããŸã§ 2ïœ3 åãåŸ ã¡ãã ãã |
â ïž ç°å¢å€æ°ã«é¢ããæ³šæäºé ãšå¶é
ðš 倧ããªç°å¢å€æ°ïŒ1000 æåè¶ ïŒ
åé¡ïŒCapRover ãå€ãã®ã¯ã©ãŠããã©ãããã©ãŒã ã§ã¯ãç°å¢å€æ°ã®ãµã€ãºã«å³ããå¶éããããŸãã
- CapRoverïŒç°å¢å€æ°ããšã«çŽ 1000 æåãŸã§
- HerokuïŒãã¹ãŠã®ç°å¢å€æ°ãåèšã㊠32KB
- AWS LambdaïŒãã¹ãŠã®ç°å¢å€æ°ãåèšã㊠4KB
- DockerïŒå³å¯ãªäžéã¯ãããŸããããå€ãéåžžã«å€§ãããšããã©ãŒãã³ã¹ãäœäžããŸã
ããããåå ïŒ
- ð JWT ããŒã¯ã³ïŒ1000 æåãè¶ ããããšããããããŸãïŒç¹ã«ã¯ã¬ãŒã ãå€ãå ŽåïŒ
- ð ç§å¯éµïŒRSA/ECDSA éµã¯ 1600 æåãè¶ ããããšããããŸã
- ð JSON èšå®ïŒå€§ããªèšå®ãªããžã§ã¯ã
- ð Base64 ãšã³ã³ãŒãããŒã¿ïŒç»åãèšŒææžããã€ããªããŒã¿
â 倧ããªç°å¢å€æ°ãžã®å¯ŸåŠæ¹æ³
-
æåã§åå²ãã â åäœç¢ºèªæžã¿ïŒæšå¥šïŒ
# Split a 1083-character JWT token manually export JWT_TOKEN_1="first_part_here" export JWT_TOKEN_2="second_part_here" export JWT_TOKEN_3="third_part_here" # Add getEnvVar() function to your code (manual implementation) # Use getEnvVar('JWT_TOKEN') to reconstruct automatically -
ä»£æ¿æ¹æ³ â åäœç¢ºèªæžã¿
# Option 1: Store in files (for very large data) echo "large_private_key_content" > /app/private.key # Then read in your app: fs.readFileSync('/app/private.key', 'utf8') # Option 2: Use external secret management # - AWS Secrets Manager # - HashiCorp Vault # - Azure Key Vault # - Google Secret Manager
â ãã¹ããã©ã¯ãã£ã¹
-
ã·ãŒã¯ã¬ããã Git ã«å«ããªã
# Always in .gitignore: .env .env.local .env.production bruvtools.yml -
ããŒã¿ã®çš®é¡ã«å¿ããé©åãªä¿åå ã䜿ã
- çãã·ãŒã¯ã¬ããïŒ500 æåæªæºïŒïŒç°å¢å€æ° â
- é·ãããŒã¯ã³ïŒ500ïœ2000 æåïŒïŒç°å¢å€æ°ãåå² â
- éåžžã«é·ãããŒã¿ïŒ2000 æåè¶ ïŒïŒãã¡ã€ã«ãŸãã¯ã·ãŒã¯ã¬ãã管ç â
- ãã€ããªããŒã¿ïŒãã¡ã€ã«ã䜿çšããç°å¢å€æ°ã¯äœ¿ããªã â
-
åæ§æããã¹ããã
// Always test that your tokens work after reconstruction const token = getEnvVar('JWT_TOKEN'); console.log(`Token length: ${token ? token.length : 0} characters`); if (!token || token.length < 100) { throw new Error('JWT token reconstruction failed!'); }
ð ãã©ãããã©ãŒã ããšã®å¶é
| ãã©ãããã©ãŒã | 倿°ããšã®äžé | åèšäžé | åè |
|---|---|---|---|
| CapRover | çŽ 1000 æå | åèšäžéãªã | å³å¯ãªäžéãããããšã©ãŒã衚瀺ããã«å€±æããŸã |
| Heroku | 32KB | åèš 32KB | 倿°åãå«ã¿ãŸã |
| AWS Lambda | 倿°ããšã®äžéãªã | åèš 4KB | éåžžã«å³ããå¶éã§ã |
| Docker | å³å¯ãªäžéãªã | ã¡ã¢ãªã«äŸå | ããã©ãŒãã³ã¹ã«åœ±é¿ããŸã |
| Kubernetes | 1MB | åèšäžéãªã | etcd ã§ Base64 ãšã³ã³ãŒããããŸã |
ðª Windows PowerShell ã®ãµããŒã
â ãå®å šã«ããµããŒããããŠããŸãïŒ bruvtools 㯠Windows PowerShell ã§ãã·ãŒã ã¬ã¹ã«ãåäœããŸãããããåäœããã¯ãã§ã °¿°
# 1. Install both tools
npm install -g bruvtools caprover
# 2. Verify installation
bruvtools --version # Should show: 0.2.16
caprover --version # Should show: 2.x.x
# 3. Deploy normally (same as Mac/Linux)
bruvtools init
bruvtools deploy my-app
èŠä»¶ïŒNode.js 16+ ⢠ã©ã€ã»ã³ã¹ïŒMIT ⢠ããŒãžã§ã³ïŒ0.2.16
ð€ ã³ã³ããªãã¥ãŒã·ã§ã³
ã³ã³ããªãã¥ãŒã·ã§ã³ãæè¿ããŸãïŒãããã€ãã·ã³ãã«ã§ä¿¡é Œæ§ã®é«ããã®ã«ããããšãç®æããæ¬æ ŒçãªãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã§ãã
- ãªããžããªããã©ãŒã¯ããŸã
- æ©èœãã©ã³ããäœæããŸã
- 倿Žãååã«ãã¹ãããŸã
- ãã«ãªã¯ãšã¹ããéä¿¡ããŸã
ð ãµããŒã
- åé¡ïŒGitHub Issues
- ããã¥ã¡ã³ãïŒGitHub Wiki
- ã¡ãŒã«ïŒ[email protected]
bruvtools ããŒã ã â€ïž ã蟌ããŠäœæ ⢠決ããŠè«Šããªãã§ãã ããïŒ ð
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã