Simplify cloud-init to SSH-only; add separate install scripts for NPM and Mailcow

This commit is contained in:
2026-04-23 04:55:08 +00:00
parent 40676f2ecb
commit 6010fb4289
4 changed files with 160 additions and 132 deletions
+9 -65
View File
@@ -1,6 +1,6 @@
#cloud-config
# Nginx Proxy Manager VM - Ubuntu 24.04
# VM 200 | IP: 10.48.200.80
# Minimal cloud-init: SSH access only. Run nginx-proxy-manager/install.sh after first login.
ssh_pwauth: true
@@ -8,78 +8,22 @@ users:
- name: ubuntu
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
lock_passwd: false
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBkYziIaOaq3RvncBi92m7jy96UxC8dm2VNeWDP2dyhs proxmailcow-admin
chpasswd:
list: |
ubuntu:mailstack2024!
expire: false
package_update: true
package_upgrade: true
packages:
- qemu-guest-agent
- 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.
- systemctl enable qemu-guest-agent --now