#cloud-config # Nginx Proxy Manager VM - Ubuntu 24.04 # VM 200 | IP: 10.48.200.80 package_update: true package_upgrade: true packages: - curl - ca-certificates - git - htop - net-tools - qemu-guest-agent runcmd: # Enable and start qemu-guest-agent - systemctl enable qemu-guest-agent - systemctl start qemu-guest-agent # Install Docker - curl -fsSL https://get.docker.com | sh - systemctl enable docker - usermod -aG docker ubuntu # Create NPM directory - mkdir -p /opt/npm/data /opt/npm/letsencrypt # Write docker-compose.yml - | cat > /opt/npm/docker-compose.yml << 'COMPOSE' version: '3.8' services: npm: image: jc21/nginx-proxy-manager:latest restart: unless-stopped ports: - "80:80" - "443:443" - "81:81" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt environment: DISABLE_IPV6: "true" COMPOSE # Start NPM - cd /opt/npm && docker compose up -d # Add compose startup on boot - | cat > /etc/systemd/system/npm.service << 'SERVICE' [Unit] Description=Nginx Proxy Manager After=docker.service Requires=docker.service [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/opt/npm ExecStart=/usr/bin/docker compose up -d ExecStop=/usr/bin/docker compose down [Install] WantedBy=multi-user.target SERVICE - systemctl enable npm.service final_message: | NPM VM is ready. Admin UI: http://10.48.200.80:81 Default login: admin@example.com / changeme CHANGE THE PASSWORD IMMEDIATELY.