From 29e83436b212a89933f78b20bf860ada93579d26 Mon Sep 17 00:00:00 2001 From: twothatit Date: Sat, 7 Feb 2026 12:00:00 +0100 Subject: [PATCH] Interactive Installer --- README.md | 34 ++- install.sh | 516 +++++++++++++++++++++++++++++++++++ netbird-msp-appliance.tar.gz | Bin 23608 -> 25486 bytes 3 files changed, 536 insertions(+), 14 deletions(-) create mode 100644 install.sh diff --git a/README.md b/README.md index b29cc18..93aff3a 100644 --- a/README.md +++ b/README.md @@ -135,36 +135,42 @@ git clone https://github.com/yourusername/netbird-msp-appliance.git cd netbird-msp-appliance ``` -### 2. Run the Installation Script +### 2. Run the Interactive Installation Script ```bash chmod +x install.sh sudo ./install.sh ``` -The installer will: +The installer will **interactively ask you** for: +- ✅ Admin username and password +- ✅ Admin email address +- ✅ Base domain (e.g., `yourdomain.com`) +- ✅ Nginx Proxy Manager API URL and token +- ✅ Data directory location +- ✅ NetBird Docker images (optional customization) + +**No manual .env file editing required!** Everything is configured through the installation wizard. + +The installer will then: - ✅ Check system requirements - ✅ Install Docker if needed -- ✅ Create Docker network -- ✅ Generate secure secrets +- ✅ Create directories and Docker network +- ✅ Generate encryption keys - ✅ Build and start all containers +- ✅ Configure firewall (optional) - ✅ Initialize the database -### 3. Complete the Setup Wizard +### 3. Access the Web Interface -Open your browser and navigate to: +After installation completes, open your browser: ``` http://your-server-ip:8000 ``` -On first access, you'll be guided through: -1. **Admin Account Creation**: Set your admin username and password -2. **System Configuration**: - - Base Domain (e.g., `yourdomain.com`) - - Admin Email - - NPM API URL (e.g., `http://npm-host:81/api`) - - NPM API Token -3. **Firewall Rules**: Instructions for opening required UDP ports +Login with the credentials you provided during installation. + +**All settings can be changed later via the Web UI!** ### 4. Deploy Your First Customer diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..f23c983 --- /dev/null +++ b/install.sh @@ -0,0 +1,516 @@ +#!/bin/bash + +# NetBird MSP Appliance - Interactive Installation Script +# This script sets up the complete NetBird MSP management platform +# All configuration is done interactively - no .env file editing needed! + +set -e # Exit on error + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +CYAN='\033[0;36m' +BOLD='\033[1m' +NC='\033[0m' # No Color + +# Configuration +INSTALL_DIR="/opt/netbird-msp" +DOCKER_NETWORK="npm-network" +CONTAINER_NAME="netbird-msp-appliance" + +clear +echo -e "${BLUE}" +cat << 'BANNER' +╔═══════════════════════════════════════════════════════════╗ +║ ║ +║ NetBird MSP Appliance - Interactive Installer ║ +║ ║ +║ Multi-Tenant NetBird Management Platform ║ +║ ║ +╚═══════════════════════════════════════════════════════════╝ +BANNER +echo -e "${NC}" + +# Check if running as root +if [[ $EUID -ne 0 ]]; then + echo -e "${RED}Error: This script must be run as root${NC}" + echo "Please run: sudo $0" + exit 1 +fi + +echo -e "${GREEN}Welcome to the NetBird MSP Appliance installer!${NC}" +echo -e "This wizard will guide you through the installation process.\n" +sleep 2 + +# ============================================================================ +# STEP 1: SYSTEM REQUIREMENTS CHECK +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 1/10]${NC} ${BLUE}Checking system requirements...${NC}\n" + +# Check CPU cores +CPU_CORES=$(nproc) +echo -e "CPU Cores: ${CYAN}$CPU_CORES${NC}" +if [ "$CPU_CORES" -lt 4 ]; then + echo -e "${YELLOW}⚠ Warning: Only $CPU_CORES CPU cores detected.${NC}" + echo -e "${YELLOW} Minimum 8 cores recommended for 100 customers.${NC}" +else + echo -e "${GREEN}✓ CPU cores: Sufficient${NC}" +fi + +# Check RAM +TOTAL_RAM=$(free -g | awk '/^Mem:/{print $2}') +echo -e "RAM: ${CYAN}${TOTAL_RAM}GB${NC}" +if [ "$TOTAL_RAM" -lt 32 ]; then + echo -e "${YELLOW}⚠ Warning: Only ${TOTAL_RAM}GB RAM detected.${NC}" + echo -e "${YELLOW} Minimum 64GB recommended for 100 customers.${NC}" +else + echo -e "${GREEN}✓ RAM: Sufficient${NC}" +fi + +# Check disk space +DISK_SPACE=$(df -BG / | awk 'NR==2 {print $4}' | sed 's/G//') +echo -e "Free Disk Space: ${CYAN}${DISK_SPACE}GB${NC}" +if [ "$DISK_SPACE" -lt 200 ]; then + echo -e "${YELLOW}⚠ Warning: Only ${DISK_SPACE}GB free disk space.${NC}" + echo -e "${YELLOW} Minimum 500GB recommended.${NC}" +else + echo -e "${GREEN}✓ Disk space: Sufficient${NC}" +fi + +echo "" +read -p "Press ENTER to continue..." +clear + +# ============================================================================ +# STEP 2: DOCKER INSTALLATION +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 2/10]${NC} ${BLUE}Checking Docker installation...${NC}\n" + +if ! command -v docker &> /dev/null; then + echo -e "${YELLOW}Docker not found. Installing Docker...${NC}" + curl -fsSL https://get.docker.com -o get-docker.sh + sh get-docker.sh + rm get-docker.sh + systemctl enable docker + systemctl start docker + echo -e "${GREEN}✓ Docker installed successfully${NC}" +else + DOCKER_VERSION=$(docker --version | awk '{print $3}' | sed 's/,//') + echo -e "${GREEN}✓ Docker already installed (${DOCKER_VERSION})${NC}" +fi + +# Check Docker Compose +if ! docker compose version &> /dev/null; then + echo -e "${RED}Error: Docker Compose plugin not found${NC}" + echo "Please install Docker Compose plugin: https://docs.docker.com/compose/install/" + exit 1 +else + echo -e "${GREEN}✓ Docker Compose available${NC}" +fi + +echo "" +read -p "Press ENTER to continue..." +clear + +# ============================================================================ +# STEP 3: CONFIGURATION - BASIC SETTINGS +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 3/10]${NC} ${BLUE}Basic Configuration${NC}\n" + +echo -e "${CYAN}Please provide the following information:${NC}\n" + +# Admin Username +while true; do + read -p "Admin Username [admin]: " ADMIN_USERNAME + ADMIN_USERNAME=${ADMIN_USERNAME:-admin} + if [[ "$ADMIN_USERNAME" =~ ^[a-zA-Z0-9_-]+$ ]]; then + break + else + echo -e "${RED}Invalid username. Use only letters, numbers, dash and underscore.${NC}" + fi +done + +# Admin Password +while true; do + read -sp "Admin Password (min 12 chars): " ADMIN_PASSWORD + echo "" + if [ ${#ADMIN_PASSWORD} -ge 12 ]; then + read -sp "Confirm Password: " ADMIN_PASSWORD_CONFIRM + echo "" + if [ "$ADMIN_PASSWORD" == "$ADMIN_PASSWORD_CONFIRM" ]; then + break + else + echo -e "${RED}Passwords do not match. Try again.${NC}" + fi + else + echo -e "${RED}Password must be at least 12 characters long.${NC}" + fi +done + +# Admin Email +while true; do + read -p "Admin Email: " ADMIN_EMAIL + if [[ "$ADMIN_EMAIL" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then + break + else + echo -e "${RED}Invalid email address.${NC}" + fi +done + +echo -e "\n${GREEN}✓ Basic configuration saved${NC}" +sleep 1 +clear + +# ============================================================================ +# STEP 4: CONFIGURATION - DOMAIN +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 4/10]${NC} ${BLUE}Domain Configuration${NC}\n" + +echo -e "${CYAN}Your customers will get subdomains like: kunde1.yourdomain.com${NC}\n" + +while true; do + read -p "Base Domain (e.g., yourdomain.com): " BASE_DOMAIN + if [[ "$BASE_DOMAIN" =~ ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$ ]]; then + echo -e "\n${YELLOW}Important: Make sure you have wildcard DNS configured:${NC}" + echo -e "${YELLOW} *.${BASE_DOMAIN} → Your server IP${NC}\n" + read -p "Is your DNS configured? (yes/no): " DNS_CONFIRM + if [[ "$DNS_CONFIRM" =~ ^[Yy]([Ee][Ss])?$ ]]; then + break + else + echo -e "${YELLOW}Please configure DNS first, then restart the installer.${NC}" + exit 0 + fi + else + echo -e "${RED}Invalid domain format.${NC}" + fi +done + +echo -e "${GREEN}✓ Domain configuration saved${NC}" +sleep 1 +clear + +# ============================================================================ +# STEP 5: CONFIGURATION - NGINX PROXY MANAGER +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 5/10]${NC} ${BLUE}Nginx Proxy Manager Configuration${NC}\n" + +echo -e "${CYAN}NetBird MSP needs to integrate with Nginx Proxy Manager (NPM).${NC}\n" + +# NPM API URL +while true; do + read -p "NPM API URL [http://nginx-proxy-manager:81/api]: " NPM_API_URL + NPM_API_URL=${NPM_API_URL:-http://nginx-proxy-manager:81/api} + if [[ "$NPM_API_URL" =~ ^https?:// ]]; then + break + else + echo -e "${RED}Invalid URL format. Must start with http:// or https://${NC}" + fi +done + +# NPM API Token +echo -e "\n${YELLOW}To get your NPM API Token:${NC}" +echo -e " 1. Login to Nginx Proxy Manager" +echo -e " 2. Go to Users → Your User" +echo -e " 3. Copy the API Token\n" + +while true; do + read -sp "NPM API Token: " NPM_API_TOKEN + echo "" + if [ ${#NPM_API_TOKEN} -ge 20 ]; then + break + else + echo -e "${RED}Token seems too short. Please enter the complete token.${NC}" + fi +done + +echo -e "${GREEN}✓ NPM configuration saved${NC}" +sleep 1 +clear + +# ============================================================================ +# STEP 6: CONFIGURATION - DIRECTORIES +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 6/10]${NC} ${BLUE}Directory Configuration${NC}\n" + +echo -e "${CYAN}Where should customer NetBird instances be stored?${NC}\n" + +read -p "Data Directory [/opt/netbird-instances]: " DATA_DIR +DATA_DIR=${DATA_DIR:-/opt/netbird-instances} + +echo -e "\n${YELLOW}The following directories will be created:${NC}" +echo -e " - ${DATA_DIR} (customer instances)" +echo -e " - ${INSTALL_DIR} (application)" +echo -e " - ${INSTALL_DIR}/data (database)" +echo -e " - ${INSTALL_DIR}/logs (logs)" +echo -e " - ${INSTALL_DIR}/backups (backups)\n" + +echo -e "${GREEN}✓ Directory configuration saved${NC}" +sleep 1 +clear + +# ============================================================================ +# STEP 7: CONFIGURATION - DOCKER IMAGES (OPTIONAL) +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 7/10]${NC} ${BLUE}NetBird Docker Images${NC}\n" + +echo -e "${CYAN}You can customize the NetBird Docker images or use defaults.${NC}\n" + +read -p "Customize Docker images? (yes/no) [no]: " CUSTOMIZE_IMAGES +CUSTOMIZE_IMAGES=${CUSTOMIZE_IMAGES:-no} + +if [[ "$CUSTOMIZE_IMAGES" =~ ^[Yy]([Ee][Ss])?$ ]]; then + read -p "Management Image [netbirdio/management:latest]: " NETBIRD_MANAGEMENT_IMAGE + NETBIRD_MANAGEMENT_IMAGE=${NETBIRD_MANAGEMENT_IMAGE:-netbirdio/management:latest} + + read -p "Signal Image [netbirdio/signal:latest]: " NETBIRD_SIGNAL_IMAGE + NETBIRD_SIGNAL_IMAGE=${NETBIRD_SIGNAL_IMAGE:-netbirdio/signal:latest} + + read -p "Relay Image [netbirdio/relay:latest]: " NETBIRD_RELAY_IMAGE + NETBIRD_RELAY_IMAGE=${NETBIRD_RELAY_IMAGE:-netbirdio/relay:latest} + + read -p "Dashboard Image [netbirdio/dashboard:latest]: " NETBIRD_DASHBOARD_IMAGE + NETBIRD_DASHBOARD_IMAGE=${NETBIRD_DASHBOARD_IMAGE:-netbirdio/dashboard:latest} +else + NETBIRD_MANAGEMENT_IMAGE="netbirdio/management:latest" + NETBIRD_SIGNAL_IMAGE="netbirdio/signal:latest" + NETBIRD_RELAY_IMAGE="netbirdio/relay:latest" + NETBIRD_DASHBOARD_IMAGE="netbirdio/dashboard:latest" +fi + +echo -e "${GREEN}✓ Docker image configuration saved${NC}" +sleep 1 +clear + +# ============================================================================ +# STEP 8: INSTALLATION +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 8/10]${NC} ${BLUE}Installation${NC}\n" + +echo -e "${CYAN}Ready to install with the following configuration:${NC}\n" +echo -e " Admin Username: ${GREEN}$ADMIN_USERNAME${NC}" +echo -e " Admin Email: ${GREEN}$ADMIN_EMAIL${NC}" +echo -e " Base Domain: ${GREEN}$BASE_DOMAIN${NC}" +echo -e " NPM API URL: ${GREEN}$NPM_API_URL${NC}" +echo -e " Data Directory: ${GREEN}$DATA_DIR${NC}" +echo -e " Install Dir: ${GREEN}$INSTALL_DIR${NC}\n" + +read -p "Proceed with installation? (yes/no): " PROCEED +if [[ ! "$PROCEED" =~ ^[Yy]([Ee][Ss])?$ ]]; then + echo -e "${YELLOW}Installation cancelled.${NC}" + exit 0 +fi + +echo -e "\n${GREEN}Starting installation...${NC}\n" + +# Create directories +echo "Creating directories..." +mkdir -p "$INSTALL_DIR" +mkdir -p "$DATA_DIR" +mkdir -p "$INSTALL_DIR/data" +mkdir -p "$INSTALL_DIR/logs" +mkdir -p "$INSTALL_DIR/backups" +echo -e "${GREEN}✓ Directories created${NC}" + +# Create Docker network +echo "Setting up Docker network..." +if docker network inspect $DOCKER_NETWORK &> /dev/null; then + echo -e "${GREEN}✓ Docker network '$DOCKER_NETWORK' already exists${NC}" +else + docker network create $DOCKER_NETWORK + echo -e "${GREEN}✓ Docker network '$DOCKER_NETWORK' created${NC}" +fi + +# Generate secret key +echo "Generating encryption keys..." +SECRET_KEY=$(openssl rand -base64 32) +echo -e "${GREEN}✓ Encryption keys generated${NC}" + +# Create .env file +echo "Creating configuration..." +cat > "$INSTALL_DIR/.env" << ENVEOF +# NetBird MSP Appliance Configuration +# Generated on $(date) +# DO NOT EDIT - Use Web UI to change settings + +# Security +SECRET_KEY=$SECRET_KEY +ADMIN_USERNAME=$ADMIN_USERNAME +ADMIN_PASSWORD=$ADMIN_PASSWORD + +# Nginx Proxy Manager +NPM_API_URL=$NPM_API_URL +NPM_API_TOKEN=$NPM_API_TOKEN + +# System +DATA_DIR=$DATA_DIR +DOCKER_NETWORK=$DOCKER_NETWORK +BASE_DOMAIN=$BASE_DOMAIN +ADMIN_EMAIL=$ADMIN_EMAIL + +# NetBird Images +NETBIRD_MANAGEMENT_IMAGE=$NETBIRD_MANAGEMENT_IMAGE +NETBIRD_SIGNAL_IMAGE=$NETBIRD_SIGNAL_IMAGE +NETBIRD_RELAY_IMAGE=$NETBIRD_RELAY_IMAGE +NETBIRD_DASHBOARD_IMAGE=$NETBIRD_DASHBOARD_IMAGE + +# Database +DATABASE_PATH=/app/data/netbird_msp.db + +# Logging +LOG_LEVEL=INFO + +# Port Configuration +RELAY_BASE_PORT=3478 +WEB_UI_PORT=8000 +ENVEOF + +chmod 600 "$INSTALL_DIR/.env" +echo -e "${GREEN}✓ Configuration file created${NC}" + +# Copy application files +echo "Copying application files..." +cp -r ./* "$INSTALL_DIR/" 2>/dev/null || true +cd "$INSTALL_DIR" +echo -e "${GREEN}✓ Files copied to $INSTALL_DIR${NC}" + +# Build and start containers +echo "Building and starting Docker containers..." +docker compose up -d --build + +# Wait for container to be ready +echo "Waiting for application to start..." +sleep 15 + +if docker ps | grep -q $CONTAINER_NAME; then + echo -e "${GREEN}✓ Container started successfully${NC}" +else + echo -e "${RED}Error: Container failed to start${NC}" + echo "Check logs with: docker logs $CONTAINER_NAME" + exit 1 +fi + +# Initialize database +echo "Initializing database..." +docker exec $CONTAINER_NAME python -m app.database init || true +echo -e "${GREEN}✓ Database initialized${NC}" + +clear + +# ============================================================================ +# STEP 9: FIREWALL CONFIGURATION +# ============================================================================ +echo -e "${BLUE}${BOLD}[Step 9/10]${NC} ${BLUE}Firewall Configuration${NC}\n" + +echo -e "${CYAN}The following firewall ports need to be opened:${NC}\n" +echo -e " ${YELLOW}TCP 8000${NC} - Web UI" +echo -e " ${YELLOW}UDP 3478-3577${NC} - NetBird Relay/STUN (100 ports for 100 customers)\n" + +if command -v ufw &> /dev/null; then + read -p "Configure firewall automatically with ufw? (yes/no): " CONFIG_FW + if [[ "$CONFIG_FW" =~ ^[Yy]([Ee][Ss])?$ ]]; then + ufw allow 8000/tcp comment "NetBird MSP Web UI" + ufw allow 3478:3577/udp comment "NetBird Relay Ports" + echo -e "${GREEN}✓ Firewall configured${NC}" + else + echo -e "${YELLOW}Please configure firewall manually:${NC}" + echo " sudo ufw allow 8000/tcp" + echo " sudo ufw allow 3478:3577/udp" + fi +else + echo -e "${YELLOW}UFW not found. Please configure firewall manually:${NC}" + echo " - Allow TCP port 8000" + echo " - Allow UDP ports 3478-3577" +fi + +echo "" +read -p "Press ENTER to continue..." +clear + +# ============================================================================ +# STEP 10: COMPLETION +# ============================================================================ +echo -e "${GREEN}${BOLD}" +cat << 'SUCCESS' +╔═══════════════════════════════════════════════════════════╗ +║ ║ +║ ✓✓✓ Installation Completed Successfully! ✓✓✓ ║ +║ ║ +╚═══════════════════════════════════════════════════════════╝ +SUCCESS +echo -e "${NC}" + +SERVER_IP=$(hostname -I | awk '{print $1}') + +echo -e "${BLUE}${BOLD}Access Your NetBird MSP Appliance:${NC}\n" +echo -e " Web Interface: ${GREEN}http://${SERVER_IP}:8000${NC}" +echo -e " Username: ${GREEN}${ADMIN_USERNAME}${NC}" +echo -e " Password: ${CYAN}${NC}\n" + +echo -e "${BLUE}${BOLD}Next Steps:${NC}\n" +echo -e " 1. ${CYAN}Access the web interface${NC}" +echo -e " 2. ${CYAN}Review system settings${NC} (all editable via Web UI)" +echo -e " 3. ${CYAN}Deploy your first customer${NC} (click 'New Customer')" +echo -e " 4. ${CYAN}Share setup URL${NC} with your customer\n" + +echo -e "${BLUE}${BOLD}Useful Commands:${NC}\n" +echo -e " View logs: ${CYAN}docker logs -f $CONTAINER_NAME${NC}" +echo -e " Stop: ${CYAN}docker compose -f $INSTALL_DIR/docker-compose.yml stop${NC}" +echo -e " Start: ${CYAN}docker compose -f $INSTALL_DIR/docker-compose.yml start${NC}" +echo -e " Restart: ${CYAN}docker compose -f $INSTALL_DIR/docker-compose.yml restart${NC}\n" + +echo -e "${BLUE}${BOLD}Important Notes:${NC}\n" +echo -e " ${YELLOW}•${NC} All settings can be changed via the Web UI" +echo -e " ${YELLOW}•${NC} Installation directory: ${INSTALL_DIR}" +echo -e " ${YELLOW}•${NC} Customer data directory: ${DATA_DIR}" +echo -e " ${YELLOW}•${NC} Backup your database regularly\n" + +echo -e "${GREEN}${BOLD}Happy MSP-ing! 🚀${NC}\n" + +# Save installation summary +cat > "$INSTALL_DIR/INSTALLATION_SUMMARY.txt" << SUMMARY +NetBird MSP Appliance - Installation Summary +============================================= + +Installation Date: $(date) + +Configuration: +-------------- +Admin Username: $ADMIN_USERNAME +Admin Email: $ADMIN_EMAIL +Base Domain: $BASE_DOMAIN +NPM API URL: $NPM_API_URL +Data Directory: $DATA_DIR + +Access: +------- +Web UI: http://${SERVER_IP}:8000 + +Directories: +------------ +Installation: $INSTALL_DIR +Data: $DATA_DIR +Database: $INSTALL_DIR/data/netbird_msp.db +Logs: $INSTALL_DIR/logs +Backups: $INSTALL_DIR/backups + +Docker: +------- +Container Name: $CONTAINER_NAME +Network: $DOCKER_NETWORK + +Ports: +------ +Web UI: TCP 8000 +Relay: UDP 3478-3577 + +Images: +------- +Management: $NETBIRD_MANAGEMENT_IMAGE +Signal: $NETBIRD_SIGNAL_IMAGE +Relay: $NETBIRD_RELAY_IMAGE +Dashboard: $NETBIRD_DASHBOARD_IMAGE +SUMMARY + +echo -e "${CYAN}Installation summary saved to: ${INSTALL_DIR}/INSTALLATION_SUMMARY.txt${NC}\n" diff --git a/netbird-msp-appliance.tar.gz b/netbird-msp-appliance.tar.gz index 45403a6e30109a8ad1d06ea614db74c4fe9567d2..234010354e9211f25297fae37823ae948acb5eec 100644 GIT binary patch literal 25486 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 P#y