Skip to content

Oltrematica/cloud-init-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Cloud-Init Generator for Hetzner

Un generatore web moderno e intuitivo per creare configurazioni Cloud-Init per macchine virtuali su Hetzner Cloud.

Cloud-Init Generator HTML5 CSS3 JavaScript

Panoramica

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.

Perche' questo tool?

  • 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

Funzionalita'

Configurazione Sistema

  • Hostname e FQDN
  • Timezone e locale
  • Keyboard layout

Gestione Utenti

  • Creazione utenti con gruppi personalizzati
  • Configurazione sudo privileges
  • Shell personalizzabile
  • Import chiavi SSH (file o incolla)

Chiavi SSH

  • Aggiunta multipla di chiavi pubbliche
  • Import da file .pub
  • Validazione formato chiave

Gestione Pacchetti

  • Lista pacchetti da installare
  • Opzione package update/upgrade
  • Repository aggiuntivi

Script e Comandi

  • Comandi runcmd (post-boot)
  • Comandi bootcmd (pre-boot)
  • Script write_files per file personalizzati

Configurazione Rete

  • IP statico o DHCP
  • DNS personalizzati
  • Configurazione interfacce multiple

Template Predefiniti

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

Quick Start

Opzione 1: Utilizzo diretto

Apri index.html nel tuo browser. Fatto.

Opzione 2: Con server locale

# Con Python
python -m http.server 8080

# Con Node.js
npx serve

# Con PHP
php -S localhost:8080

Poi visita http://localhost:8080

Utilizzo

1. Configura le opzioni

Utilizza i pannelli dell'interfaccia per configurare:

  • Informazioni di sistema
  • Utenti e permessi
  • Chiavi SSH
  • Pacchetti da installare
  • Comandi di avvio

2. Anteprima real-time

Il pannello di destra mostra l'anteprima YAML aggiornata in tempo reale mentre modifichi le impostazioni.

3. Esporta la configurazione

  • Copia - Copia negli appunti con un click
  • Download - Scarica come file cloud-init.yaml
  • Condividi - Genera un link condivisibile (configurazione codificata in URL)

Integrazione con Hetzner

Console Web Hetzner

  1. Genera la configurazione con questo tool
  2. Vai su Hetzner Cloud Console
  3. Crea nuovo server -> Cloud config -> Incolla la configurazione

hcloud CLI

hcloud server create \
  --name my-server \
  --type cx22 \
  --image ubuntu-24.04 \
  --location fsn1 \
  --user-data-from-file cloud-init.yaml

Terraform

resource "hcloud_server" "web" {
  name        = "my-server"
  server_type = "cx22"
  image       = "ubuntu-24.04"
  location    = "fsn1"
  user_data   = file("cloud-init.yaml")
}

Ansible

- 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') }}"

Struttura Progetto

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

Esempio Output

#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 Supportati

Browser Versione
Chrome 90+
Firefox 88+
Safari 14+
Edge 90+

Sviluppo

# 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

Contribuire

  1. Fork del progetto
  2. Crea un branch (git checkout -b feature/nuova-funzionalita)
  3. Commit delle modifiche (git commit -m 'Aggiunge nuova funzionalita')
  4. Push del branch (git push origin feature/nuova-funzionalita)
  5. Apri una Pull Request

Licenza

Distribuito sotto licenza MIT. Vedi LICENSE per maggiori informazioni.

Link Utili

About

a cloud-init configuration generator for Hetzner VMs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published