Un generatore web moderno e intuitivo per creare configurazioni Cloud-Init per macchine virtuali su Hetzner Cloud.
Cloud-Init Generator e' un'applicazione web single-page che permette di generare configurazioni Cloud-Init in modo visuale e interattivo. Progettato specificamente per l'ecosistema Hetzner Cloud, elimina la complessita' della scrittura manuale di file YAML.
- Zero dipendenze - Funziona direttamente nel browser, nessuna installazione richiesta
- Interfaccia moderna - Design pulito e professionale con dark/light mode
- Validazione real-time - Controllo istantaneo degli errori di configurazione
- Export immediato - Copia negli appunti o scarica il file YAML
- Hostname e FQDN
- Timezone e locale
- Keyboard layout
- Creazione utenti con gruppi personalizzati
- Configurazione sudo privileges
- Shell personalizzabile
- Import chiavi SSH (file o incolla)
- Aggiunta multipla di chiavi pubbliche
- Import da file
.pub - Validazione formato chiave
- Lista pacchetti da installare
- Opzione package update/upgrade
- Repository aggiuntivi
- Comandi
runcmd(post-boot) - Comandi
bootcmd(pre-boot) - Script
write_filesper file personalizzati
- IP statico o DHCP
- DNS personalizzati
- Configurazione interfacce multiple
| Template | Descrizione |
|---|---|
| Minimal | Setup base con utente e SSH |
| Web Server | Nginx + Certbot + UFW |
| Docker Host | Docker CE + Docker Compose |
| LAMP Stack | Apache + MySQL + PHP |
| Node.js | Node.js LTS + PM2 + Nginx reverse proxy |
| Kubernetes Node | Container runtime + kubeadm |
Apri index.html nel tuo browser. Fatto.
# Con Python
python -m http.server 8080
# Con Node.js
npx serve
# Con PHP
php -S localhost:8080Poi visita http://localhost:8080
Utilizza i pannelli dell'interfaccia per configurare:
- Informazioni di sistema
- Utenti e permessi
- Chiavi SSH
- Pacchetti da installare
- Comandi di avvio
Il pannello di destra mostra l'anteprima YAML aggiornata in tempo reale mentre modifichi le impostazioni.
- Copia - Copia negli appunti con un click
- Download - Scarica come file
cloud-init.yaml - Condividi - Genera un link condivisibile (configurazione codificata in URL)
- Genera la configurazione con questo tool
- Vai su Hetzner Cloud Console
- Crea nuovo server -> Cloud config -> Incolla la configurazione
hcloud server create \
--name my-server \
--type cx22 \
--image ubuntu-24.04 \
--location fsn1 \
--user-data-from-file cloud-init.yamlresource "hcloud_server" "web" {
name = "my-server"
server_type = "cx22"
image = "ubuntu-24.04"
location = "fsn1"
user_data = file("cloud-init.yaml")
}- name: Create Hetzner server
hetzner.hcloud.server:
name: my-server
server_type: cx22
image: ubuntu-24.04
location: fsn1
user_data: "{{ lookup('file', 'cloud-init.yaml') }}"cloud-init-generator/
├── index.html # Pagina principale
├── css/
│ ├── style.css # Stili principali
│ ├── components.css # Stili componenti UI
│ └── themes.css # Dark/Light mode
├── js/
│ ├── app.js # Entry point applicazione
│ ├── generator.js # Logica generazione YAML
│ ├── validator.js # Validazione configurazione
│ ├── templates.js # Template predefiniti
│ └── utils.js # Utility functions
├── assets/
│ └── icons/ # Icone SVG
└── README.md
#cloud-config
hostname: web-server
fqdn: web-server.example.com
timezone: Europe/Rome
users:
- name: deploy
groups: sudo, docker
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_authorized_keys:
- ssh-ed25519 AAAA... user@workstation
package_update: true
package_upgrade: true
packages:
- nginx
- certbot
- python3-certbot-nginx
- ufw
runcmd:
- ufw allow 'Nginx Full'
- ufw allow OpenSSH
- ufw --force enable
- systemctl enable nginx
- systemctl start nginx| Browser | Versione |
|---|---|
| Chrome | 90+ |
| Firefox | 88+ |
| Safari | 14+ |
| Edge | 90+ |
# Clona il repository
git clone https://github.com/username/cloud-init-generator.git
cd cloud-init-generator
# Avvia un server locale per lo sviluppo
npx serve- Fork del progetto
- Crea un branch (
git checkout -b feature/nuova-funzionalita) - Commit delle modifiche (
git commit -m 'Aggiunge nuova funzionalita') - Push del branch (
git push origin feature/nuova-funzionalita) - Apri una Pull Request
Distribuito sotto licenza MIT. Vedi LICENSE per maggiori informazioni.