mirror of
https://github.com/kossakovsky/n8n-install.git
synced 2026-03-07 14:23:08 +00:00
91 lines
2.8 KiB
Bash
Executable File
91 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# generate_hosts.sh - Generate /etc/hosts entries for local development
|
|
# =============================================================================
|
|
# Creates a hosts.txt file with all .local domain entries needed for local
|
|
# development mode. Users can then add these entries to their /etc/hosts.
|
|
#
|
|
# Usage: bash scripts/generate_hosts.sh
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
source "$(dirname "$0")/utils.sh"
|
|
init_paths
|
|
|
|
# Source local mode utilities
|
|
source "$SCRIPT_DIR/local.sh"
|
|
|
|
# Load environment
|
|
load_env || { log_error "Could not load .env file"; exit 1; }
|
|
|
|
# Check if local mode using local.sh helper
|
|
if ! is_local_mode; then
|
|
log_info "Not in local mode, skipping hosts generation"
|
|
exit 0
|
|
fi
|
|
|
|
OUTPUT_FILE="$PROJECT_ROOT/hosts.txt"
|
|
|
|
log_info "Generating hosts file entries for local development..."
|
|
|
|
# Get hostname variables from local.sh (single source of truth)
|
|
readarray -t HOSTNAME_VARS < <(get_all_hostname_vars)
|
|
|
|
# Create hosts.txt header
|
|
cat > "$OUTPUT_FILE" << 'EOF'
|
|
# =============================================================================
|
|
# n8n-install Local Installation Hosts
|
|
# =============================================================================
|
|
# Add these lines to your hosts file:
|
|
# macOS/Linux: /etc/hosts
|
|
# Windows: C:\Windows\System32\drivers\etc\hosts
|
|
#
|
|
# To add automatically (macOS/Linux):
|
|
# sudo bash -c 'cat hosts.txt >> /etc/hosts'
|
|
#
|
|
# To flush DNS cache after adding:
|
|
# macOS: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
|
|
# Linux: sudo systemd-resolve --flush-caches
|
|
# Windows: ipconfig /flushdns
|
|
# =============================================================================
|
|
|
|
EOF
|
|
|
|
# Collect unique hostnames
|
|
declare -A HOSTNAMES_MAP
|
|
for var in "${HOSTNAME_VARS[@]}"; do
|
|
value=$(read_env_var "$var")
|
|
if [[ -n "$value" && "$value" =~ \.local$ ]]; then
|
|
HOSTNAMES_MAP["$value"]=1
|
|
fi
|
|
done
|
|
|
|
# Write sorted hostnames
|
|
for hostname in $(echo "${!HOSTNAMES_MAP[@]}" | tr ' ' '\n' | sort); do
|
|
echo "127.0.0.1 $hostname" >> "$OUTPUT_FILE"
|
|
done
|
|
|
|
# Count entries
|
|
ENTRY_COUNT=${#HOSTNAMES_MAP[@]}
|
|
|
|
if [ "$ENTRY_COUNT" -eq 0 ]; then
|
|
log_warning "No .local hostnames found in .env"
|
|
rm -f "$OUTPUT_FILE"
|
|
exit 0
|
|
fi
|
|
|
|
echo "" >> "$OUTPUT_FILE"
|
|
echo "# Total: $ENTRY_COUNT entries" >> "$OUTPUT_FILE"
|
|
|
|
log_success "Generated $ENTRY_COUNT host entries in: $OUTPUT_FILE"
|
|
log_info ""
|
|
log_info "To add these entries to your hosts file, run:"
|
|
log_info " sudo bash -c 'cat $OUTPUT_FILE >> /etc/hosts'"
|
|
log_info ""
|
|
log_info "Then flush your DNS cache:"
|
|
log_info " macOS: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
|
|
log_info " Linux: sudo systemd-resolve --flush-caches"
|
|
|
|
exit 0
|