Salta al contenuto

Blog ·

Automatizzare la fatturazione con Virtualmin

Dall’ordine a un account Virtualmin attivo, e cosa fa una fattura non pagata: sospendere, riattivare, eliminare, con i comandi del pannello dietro ogni passo.

Di Provibr

Due domande decidono se un pannello di hosting può reggere clienti paganti: un ordine diventa un account funzionante senza che Lei ci metta mano, e una fattura non pagata cambia davvero qualcosa sul server?

Questa pagina risponde a entrambe per Virtualmin, in concreto: quale comando Virtualmin sta dietro ogni passo, che cosa viene memorizzato dove, e dove l’automazione si ferma deliberatamente. Tutto è stato misurato su un’installazione reale di Virtualmin GPL 8.1.2.

Dall’ordine all’account

Un ordine ha bisogno di quattro cose: un dominio, un indirizzo e-mail, un piano e una password.

Il piano è l’elemento interessante. Un piano web Provibr aggancia esattamente un piano Virtualmin a esattamente un’integrazione e gli dà un nome scelto da Lei. Questa indirezione esiste perché un piano Virtualmin è la descrizione che il pannello stesso ha di un account (quota disco, traffico mensile, numero di caselle di posta e di domini, quali funzioni sono attive), e il suo contenuto può cambiare sulla sua macchina senza che ce ne venga detto nulla. Ci riferiamo quindi a esso per nome e rileggiamo ciò che è davvero accaduto, invece di conservare in cache ciò che crediamo significhi.

Dietro le quinte l’ordine esegue create-domain sul pannello, con il dominio, il piano e la password. Poi:

Comando ProvibrProgramma Virtualmin
Crea accountcreate-domain
Sospendidisable-domain
Riattivaenable-domain
Cambia pianomodify-domain --plan
Leggi statolist-domains --domain
Eliminadelete-domain

Due dettagli del passo di creazione meritano di essere conosciuti.

L’utente unix viene dal dominio. my-client.nl diventa my-client. I trattini qui sono la forma normale, e il limite è quello di Linux stesso: 32 caratteri, a differenza di DirectAdmin e cPanel, che impongono regole di denominazione proprie più severe. Non è Lei a scegliere il nome utente; lo deriva il pannello.

La password non viene mai registrata. Provibr conserva il fatto che ne ha fornita una, non il valore. La password viaggia separatamente dalla traccia di audit che registra l’ordine, quindi la password di un account di hosting non esiste da nessuna parte nella storia della piattaforma. Se la perde, ne imposta una nuova; non la consulta.

Che cosa viene memorizzato dove

Un account di hosting diventa una normale riga di server di tipo webserver. Il suo identificatore è il numero interno che Virtualmin assegna al dominio, non il nome.

Questa scelta è deliberata e conta per la fatturazione. Virtualmin può rinominare un dominio, e un cliente o un amministratore prima o poi lo farà. Una chiave basata sul nome si stacca dalla sua riga la prima volta che accade: la sua fattura continua ad addebitare qualcosa che la piattaforma non riesce più a trovare. Un id numerico sopravvive alla rinomina.

Il confine dell’account è l’utente unix, non il dominio. I sotto-server e gli alias di uno stesso account finirebbero altrimenti ciascuno nel conteggio della capacità come account di hosting distinti, e Lei pagherebbe capacità di licenza per degli alias.

⚠️ Qui c’è un passo di traduzione facile da sbagliare se lo si costruisce da sé. I programmi di mutazione di Virtualmin (disable-domain, enable-domain, modify-domain) accettano solo --domain come selettore. L’abbiamo misurato su 8.1.2: non esiste un selettore --user. Ma la piattaforma indirizza gli account tramite il nome utente, perché è questa l’identità dell’account. La traduzione spetta all’agente, che esegue una lettura mirata sul pannello per risolvere il dominio attuale, e non alla piattaforma, che dovrebbe allora tenere una copia dei suoi nomi di dominio e punterebbe silenziosamente al dominio sbagliato alla prima rinomina effettuata fuori da Provibr.

(Trappola vicina: modify-domain --user significa rinominare, non selezionare. Non viene mai inviato.)

Il modello di capacità, in un paragrafo

Si acquista capacità per tipo di risorsa (macchine virtuali, macchine dedicate, account di hosting, server di gioco), ed è al tempo stesso un limite e un prezzo. Ogni account conta, che sia in esecuzione o no. Solo un account sospeso non conta, e nemmeno uno eliminato. Arrestare qualcosa non libera quindi un posto: lo rimuova, o aumenti la propria capacità. Aumentare ha effetto immediato e il supplemento per il resto del periodo viene calcolato pro rata sulla fattura successiva; ridurre ha anch’esso effetto immediato, e la parte non utilizzata torna come credito.

Gli account importati contano esattamente come quelli ordinati. Adottare un pannello pieno di clienti esistenti è una decisione di capacità, non un’azione gratuita.

Che cosa fa una fattura non pagata

La sua organizzazione porta un unico stato di licenza: attivo, periodo di grazia o bloccato. Due cose distinte possono spostarlo (un pagamento in sospeso e un superamento di capacità), e quando valgono entrambe vince la più severa, così il banner non oscilla tra due storie.

Il percorso di prova è l’esempio più chiaro della forma. Una nuova organizzazione parte con una prova di due settimane, senza che venga richiesto alcun dato di pagamento, e tutto funziona. Quando termina senza un metodo di pagamento glielo si dice, e non cambia ancora nulla. Una settimana dopo, il pannello inizia ad avvertire. Due settimane dopo la fine del periodo, i server vengono sospesi. Ogni passo viene annunciato prima di accadere: è la regola attorno a cui è costruito l’intero calendario, non una cortesia aggiunta dopo.

Per un abbonamento in corso il meccanismo è lo stesso: lo stato passa al periodo di grazia prima di passare a bloccato, il banner nomina la causa, e la soluzione è collegata da lì. Una sospensione per pagamento e una per capacità hanno un aspetto diverso e si leggono in modo diverso, perché richiedono da Lei cose diverse.

Che cosa fa la sospensione sul pannello

Quando la piattaforma sospende un account di hosting, invia disable-domain. Virtualmin blocca la password dell’utente di amministrazione e sostituisce il sito web con una pagina di errore. I dati restano.

Tre proprietà di questo flusso meritano di essere esplicitate, perché sono quelle che separano una vera automazione da uno script che le somiglia.

La riga viene contrassegnata come sospesa solo dopo la conferma dell’agente. Inviare un comando non è la stessa cosa che sia accaduto. Se la piattaforma contrassegnasse la riga all’invio, una sospensione fallita lascerebbe un account attivo conteggiato come «non conta sul suo limite», esattamente l’errore contabile che l’applicazione delle regole esiste per prevenire.

Un agente offline significa rinviato, non fatto. Se l’agente non è raggiungibile, l’applicazione delle regole viene saltata, un evento lo registra, e il giro successivo riprova. Nulla viene contrassegnato in silenzio come completato.

Leggere il risultato è una lettura fresca, non la risposta del comando stesso. disable-domain restituisce un muro di testo di avanzamento («Locking administration user's password ..», «Replacing website with error page ..»), e quel testo è una citazione, non un contratto. Lo stato proviene da un list-domains fresco eseguito dopo. È una regola interna su ogni pannello che integriamo: nessuna mutazione viene creduta sulla propria risposta.

È quest’ultima regola a rendere corretta la rilevazione della sospensione, ed ecco il motivo misurato. Su un account sospeso, list-domains acquista un campo chiamato disabled. Su un account attivo quel campo è semplicemente assente: non esiste un disabled: "No". Un parser che cerca un valore non trova nulla e legge ogni account come attivo, inclusi quelli sospesi. In un contesto di fatturazione questo non è cosmetico: un account sospeso per mancato pagamento si dichiarerebbe attivo, e il suo conteggio della capacità sarebbe sbagliato nel verso che le costa denaro.

Superare il proprio limite

Far girare più account di quanti ne abbia acquistati non viene bloccato nel momento in cui accade. Viene rilevato, glielo si dice, e le viene dato del tempo.

  1. L’eccesso viene rilevato. Riceve una notifica e un banner che nomina il tipo di risorsa e di quanto lo supera.
  2. Ha una giornata lavorativa intera per rimediare: rimuovere account, o aumentare la propria capacità.
  3. Se il periodo di grazia scade, la piattaforma sospende gli account più recenti oltre il suo limite. I più recenti per primi, così che ciò che ha costruito per primo sopravviva. Un account sospeso conserva il proprio disco e i propri dati.
  4. Una volta rientrato nel suo limite, il superamento si chiude.

Un secondo superamento entro una settimana ottiene un’ora invece di un giorno. Senza questo, il periodo di grazia potrebbe essere rinnovato all’infinito scendendo sotto il limite e superandolo di nuovo.

⚠️ Non viene avviato nulla al posto suo quando il superamento si risolve. Riaccendere un account è una decisione, e la piattaforma non la prende mentre nessuno guarda. Lo riattiva Lei stesso, e questo invia enable-domain.

Dietro il passo 4 si nasconde un piccolo calcolo facile da capovolgere. Il superamento è considerato risolto quando gli account che contano più gli account sospesi da questo superamento rientrano nel limite, non solo il primo numero. Senza questa addizione l’applicazione delle regole si dichiarerebbe risolta nell’istante stesso in cui agisce, perché il conteggio scende sotto il limite proprio tramite la sospensione.

Che cosa non è mai automatico

L’eliminazione. Nessuna fattura non pagata, nessun superamento e nessuna prova scaduta elimina un account di hosting. La sospensione conserva il disco e i dati; l’eliminazione è un’azione distinta ed esplicita che compie Lei. L’unico passo distruttivo del ciclo di vita è proprio quello che la piattaforma non compie al posto suo.

Il saldo parziale con credito. Può ricaricare in anticipo, e il saldo è un libro mastro: una riga per movimento, mai modificata, le correzioni sono scritture inverse con una motivazione anziché riscritture. Se il saldo copre l’intero mese, il mese viene pagato con il credito e non viene prelevato nulla. Se non lo copre, viene prelevato l’importo intero e il saldo resta intatto. Non esiste il mezzo e mezzo.

La riscrittura della storia. Una riga di fattura registra il nome del piano così com’era al momento della fatturazione. Rinominare qualcosa più tardi non cambia ciò che dice una vecchia fattura.

Che cosa cambia

Virtualmin le offre un pannello di hosting solido e nessuno strato commerciale. La lacuna non è il provisioning (create-domain è un solo comando) ma tutto ciò che gli sta attorno: contare ciò che un cliente possiede, sapere che una fattura è rimasta non pagata, farci qualcosa di reversibile, e poter spiegare in seguito che cosa è accaduto e quando.

Provibr si connette a pannelli di controllo, hypervisor e pannelli di gioco fianco a fianco. Il modello di fatturazione qui sopra è lo stesso per tutti, ed è l’argomento pratico per un piccolo hoster: la macchina Virtualmin che già gestisce continua a funzionare esattamente come oggi, e il VPS o il pannello di gioco che aggiungerà l’anno prossimo atterra nello stesso conteggio della capacità, nella stessa fattura e nello stesso flusso di sospensione.

Domande frequenti

Virtualmin ha un proprio pannello di fatturazione?

No. Virtualmin offre un solido pannello di hosting e nessun livello commerciale. La lacuna non è il provisioning, perché create-domain è un solo comando; è contare che cosa ha un cliente, sapere che una fattura è rimasta insoluta e farci qualcosa di reversibile.

Che cosa succede sul pannello quando un account viene sospeso?

La piattaforma invia disable-domain. Virtualmin blocca la password dell’utente amministrativo e sostituisce il sito web con una pagina di errore. I dati restano.

Una fattura insoluta cancella un account di hosting?

Mai. Nessuna fattura insoluta, nessun superamento e nessun periodo di prova scaduto cancella un account. L’unico passo distruttivo del ciclo di vita è proprio quello che la piattaforma non compie al posto suo.

Come si riconosce in modo affidabile un account Virtualmin sospeso?

Rileggendo lo stato invece di credere alla risposta del comando. Su un account sospeso list-domains guadagna un campo disabled; su un account attivo quel campo semplicemente non c’è, quindi un parser che cerca un valore legge ogni account come attivo, compresi quelli sospesi.

Un account sospeso continua a contare nella mia capacità?

No. Ogni account conta, che sia in esecuzione o no, e solo un account sospeso o cancellato non conta. Fermare qualcosa non libera quindi un posto: lo rimuova, oppure aumenti la capacità.

Inizi con un host e un agente

Crei un account, installi l’agente con un solo comando e colleghi il suo primo host Proxmox. Il periodo di prova dura 14 giorni e non chiede alcun dato di pagamento.