Add mcp-browser service for LLM-driven browser automation: - Session-based browser management - Domain allowlisting for security - Resource limits (CPU/memory) - Screenshots volume Also add MCP_BROWSER_URL environment variable to agent. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| network_plan | ||
| nginx | ||
| stacks | ||
| MANUAL_SETUP.md | ||
| README.md | ||
| backups.sh | ||
| config.sample.json | ||
| env_setup - Copy.shZone.Identifier | ||
| env_setup.sh | ||
| id_ed25519 | ||
| id_ed25519Zone.Identifier | ||
| initial_setup_backup.zip | ||
| setup.sh | ||
| start.sh | ||
README.md
LetsBe Infrastructure Deployment Scripts
Automated deployment scripts for LetsBe cloud infrastructure. Designed for use with the LetsBe Cloud Orchestrator and SysAdmin Agent.
Quick Start
Prerequisites
- SSH key
id_ed25519in the same directory - Target server with root access (initial deployment) or stefan user access (subsequent operations)
- DNS A records configured for all required subdomains
Automated Deployment
Using JSON config file:
./start.sh --config config.json --action all
Using CLI arguments:
./start.sh \
--host 192.168.1.100 \
--port 22 \
--password "root_password" \
--customer acme \
--domain acme.com \
--company "Acme Corp" \
--tools "portainer,n8n,baserow" \
--action all
Available Actions
| Action | Description |
|---|---|
upload |
Upload scripts and configs to server |
env |
Run environment variable setup |
setup |
Run server setup (packages, Docker, nginx, SSL) |
all |
Run complete deployment (upload + env + setup) |
Script Arguments
start.sh:
| Argument | Description |
|---|---|
--host |
Server IP address |
--port |
SSH port (default: 22) |
--password |
SSH password (for root initial setup) |
--key |
Path to SSH private key (for stefan access) |
--customer |
Customer identifier (lowercase, no spaces) |
--domain |
Primary domain |
--company |
Company display name |
--tools |
Comma-separated tool list or "all" |
--skip-ssl |
Skip SSL certificate generation |
--config |
Path to JSON config file |
--json |
Inline JSON configuration |
--action |
Action to perform: upload, env, setup, all |
setup.sh:
| Argument | Description |
|---|---|
--tools |
Comma-separated list of tools to deploy, or "all" |
--skip-ssl |
Skip SSL certificate generation |
Directory Structure (Server)
/opt/letsbe/
env/ # Centralized .env files: <tool>.env
stacks/ # Docker compose files per tool
nginx/ # Nginx config templates
scripts/ # Maintenance scripts (backups.sh)
config/ # rclone and other configs
Config File Format
Create config.json:
{
"host": "192.168.1.100",
"port": 22,
"password": "initial_root_password",
"customer": "acme",
"domain": "acme.com",
"company_name": "Acme Corp",
"tools": ["portainer", "n8n", "baserow", "chatwoot"],
"skip_ssl": false
}
See config.sample.json for a complete template with all available tools.
Available Tools
- activepieces, baserow, calcom, chatwoot, diun-watchtower
- documenso, ghost, gitea, gitea-drone, glitchtip, html
- keycloak, librechat, listmonk, minio, n8n, nextcloud
- nocodb, odoo, penpot, portainer, poste, redash
- squidex, stirlingpdf, typebot, umami, uptime-kuma
- windmill, wordpress
Required DNS Records
Before deployment, create A records pointing to your server IP:
- Root domain and www
- Tool-specific subdomains (see
MANUAL_SETUP.mdfor complete list)
Post-Installation
After automated deployment, some tools require initial admin account setup.
See MANUAL_SETUP.md for:
- Admin account creation per tool
- Email server (Poste) configuration
- MinIO S3 storage setup
- Getmail6 configuration for Chatwoot
- SSL certificate management
- Nginx configuration examples
Security Notes
- Root SSH login is disabled after initial setup
- SSH access via
stefanuser with key-based authentication only - SSH port: 22022
- Configure B2/rclone credentials separately for backups
Manual Setup Guide
For detailed manual configuration instructions, tool-specific setup, and troubleshooting, see MANUAL_SETUP.md.