Blog ·
Automatizarea facturării Virtualmin
De la comandă la cont Virtualmin activ și ce face o factură neplătită: suspendare, reluare și ștergere, cu comenzile din spatele fiecărui pas.
De Provibr
Două întrebări decid dacă un panou de găzduire poate purta clienți plătitori: devine o comandă un cont funcțional fără să o atingeți, și schimbă cu adevărat o factură neplătită ceva pe server.
Această pagină răspunde la amândouă pentru Virtualmin, în concret: ce comandă Virtualmin stă în spatele fiecărui pas, ce se stochează și unde și unde se oprește automatizarea în mod deliberat. Totul a fost măsurat față de o instalare reală Virtualmin GPL 8.1.2.
De la comandă la cont
O comandă are nevoie de patru lucruri: un domeniu, o adresă de e-mail, un plan și o parolă.
Planul este cel interesant. Un plan de găzduire web Provibr fixează exact un plan Virtualmin pe exact o integrare și îi dă un nume de-al dumneavoastră. Acea indirecție există pentru că un plan Virtualmin este propria descriere a panoului pentru un cont (cotă de disc, trafic lunar, numărul de căsuțe de e-mail și de domenii, ce funcții sunt pornite), iar conținutul lui se poate schimba pe cutia dumneavoastră fără să ni se spună. Așa că ne referim la el prin nume și citim înapoi ce s-a întâmplat de fapt, în loc să memorăm ce credem că înseamnă.
În culise, comanda rulează create-domain pe panou cu domeniul, planul și parola. Apoi:
| Comandă Provibr | Program Virtualmin |
|---|---|
| Creare cont | create-domain |
| Suspendare | disable-domain |
| Reluare | enable-domain |
| Schimbare plan | modify-domain --plan |
| Citire stare | list-domains --domain |
| Ștergere | delete-domain |
Două detalii ale pasului de creare merită cunoscute.
Utilizatorul unix vine din domeniu. my-client.nl devine my-client. Cratimele sunt forma normală aici, iar plafonul este cel propriu al Linux, de 32 de caractere, spre deosebire de DirectAdmin și cPanel, care impun propria denumire mai strictă. Nu alegeți dumneavoastră numele de utilizator; panoul îl derivă.
Parola nu este consemnată niciodată. Provibr stochează faptul că ați furnizat una, nu valoarea. Parola călătorește separat de traseul de audit care consemnează comanda, așa că o parolă de cont de găzduire nu există nicăieri în istoria platformei. Dacă o pierdeți, o resetați; nu o căutați.
Ce se stochează și unde
Un cont de găzduire devine un rând obișnuit de server de tip webserver. Identificatorul său este numărul intern pe care Virtualmin îl dă domeniului, nu numele.
Acea alegere este deliberată și contează pentru facturare. Virtualmin poate redenumi un domeniu, iar un client sau un administrator o va face în cele din urmă. O cheie bazată pe nume se desprinde de rândul său prima dată când se întâmplă asta: factura dumneavoastră continuă să perceapă pentru ceva ce platforma nu mai poate găsi. Un id numeric supraviețuiește redenumirii.
Granița contului este utilizatorul unix, nu domeniul. Subserverele și aliasurile de sub un cont ar ateriza altfel fiecare în numărătoarea de capacitate ca conturi de găzduire separate, iar dumneavoastră ați plăti capacitate de licență pentru aliasuri.
⚠️ Există aici un pas de traducere ușor de greșit dacă vă construiți asta singur. Programele de mutație ale Virtualmin (disable-domain, enable-domain, modify-domain) preiau doar --domain ca selector. Am măsurat asta pe 8.1.2: nu există un selector --user. Dar platforma adresează conturile după numele de utilizator, pentru că aceea este identitatea contului. Traducerea aparține agentului, care face o căutare limitată pe panou pentru a rezolva domeniul curent, nu platformei, care ar trebui să țină o copie a numelor dumneavoastră de domenii și ar viza în tăcere domeniul greșit prima dată când cineva redenumește unul în afara Provibr.
(Capcană înrudită: modify-domain --user înseamnă redenumire, nu selectare. Nu este niciodată trimis.)
Modelul de capacitate, într-un paragraf
Cumpărați capacitate per tip de resursă: mașini virtuale, mașini dedicate, conturi de găzduire, servere de jocuri. Este în același timp o limită și un preț. Fiecare cont contează, fie că este în funcțiune sau nu. Doar un cont suspendat nu contează, și nici unul șters. Oprirea a ceva nu eliberează, prin urmare, un loc: eliminați-l sau măriți-vă capacitatea. Mărirea are efect imediat, iar surplusul pentru restul perioadei este proratizat pe factura următoare; micșorarea are de asemenea efect imediat, iar partea neutilizată revine drept credit.
Conturile importate contează exact ca cele comandate. Adoptarea unui panou plin de clienți existenți este o decizie de capacitate, nu o acțiune gratuită.
Ce face o factură neplătită
Organizația dumneavoastră poartă un singur status de licență: activ, grație sau suspendat. Două lucruri separate îl pot împinge (o plată restantă și o depășire), iar când se aplică amândouă, câștigă cea mai strictă, așa că bannerul nu alternează între două povești.
Calea de probă este cel mai limpede exemplu al formei. O organizație nouă rulează pe o probă de două săptămâni fără să i se ceară detalii de plată și cu totul funcțional. Când se încheie fără o metodă de plată, vi se spune, și nu se schimbă nimic încă. O săptămână mai târziu, panoul începe să avertizeze. La două săptămâni după ce s-a încheiat perioada, serverele sunt suspendate. Fiecare pas este anunțat înainte să se întâmple. Aceea este regula în jurul căreia este construit întregul program, nu o curtoazie prinsă pe deasupra.
Pentru un abonament în derulare, mecanismul este același: statusul trece la grație înainte de a trece la suspendat, bannerul numește cauza, iar remedierea este legată din el. O suspendare pentru plată și o suspendare pentru capacitate arată și se citesc diferit, pentru că au nevoie de lucruri diferite de la dumneavoastră.
Ce face suspendarea pe panou
Când platforma suspendă un cont de găzduire, trimite disable-domain. Virtualmin blochează parola utilizatorului de administrare și înlocuiește site-ul web cu o pagină de eroare. Datele rămân.
Trei proprietăți ale acelui flux merită detaliate, pentru că sunt cele care separă o automatizare reală de un script care arată ca una.
Rândul este marcat suspendat abia după ce agentul confirmă asta. A trimite o comandă nu este același lucru cu a se fi întâmplat. Dacă platforma ar marca rândul la expediere, o suspendare eșuată ar lăsa un cont în funcțiune numărat drept „nu contează la limita dumneavoastră”, exact eroarea de contabilitate pe care impunerea există să o prevină.
Un agent offline înseamnă amânat, nu gata. Dacă agentul nu poate fi contactat, impunerea este sărită, se scrie un eveniment care spune asta, iar runda următoare încearcă din nou. Nimic nu este marcat în tăcere ca finalizat.
Citirea rezultatului este o citire nouă, nu propriul răspuns al comenzii. disable-domain returnează un zid de text de progres („Locking administration user's password ..”, „Replacing website with error page ..”), iar acel text este un citat, nu un contract. Starea vine dintr-un list-domains proaspăt de după. Aceasta este o regulă a casei pentru fiecare panou pe care îl integrăm: nicio mutație nu este crezută pe propriul răspuns.
Acea ultimă regulă este ceea ce face ca detecția suspendării să fie corectă în general, și iată motivul măsurat. Pe un cont suspendat, list-domains capătă un câmp numit disabled. Pe un cont activ, acel câmp este pur și simplu absent: nu există disabled: "No". Un parser care caută o valoare nu găsește nimic și citește fiecare cont ca activ, inclusiv pe cele suspendate. Într-un context de facturare, aceea nu este cosmetică: un cont pe care l-ați suspendat pentru neplată s-ar raporta ca viu, iar numărătoarea capacității dumneavoastră ar fi greșită în direcția care vă costă bani.
Depășirea limitei dumneavoastră
A rula mai multe conturi decât ați cumpărat nu este blocat în momentul în care o faceți. Este detectat, vi se spune și vi se dă timp.
- Excesul este detectat. Primiți o notificare și un banner care numește tipul de resursă și cu cât.
- Aveți o zi lucrătoare întreagă pentru a-l remedia: eliminați conturi sau măriți-vă capacitatea.
- Dacă perioada de grație expiră, platforma suspendă cele mai noi conturi peste limita dumneavoastră. Cele mai noi mai întâi, așa că ce ați construit primul supraviețuiește. Un cont suspendat își păstrează discul și datele.
- Odată ce reveniți în limita dumneavoastră, depășirea se închide.
O a doua depășire într-o săptămână primește o oră în loc de o zi. Fără asta, perioada de grație s-ar putea reînnoi la nesfârșit trecând pe sub limită și depășind-o din nou.
⚠️ Nimic nu este pornit pentru dumneavoastră când se rezolvă depășirea. A aprinde din nou un cont este o decizie, iar platforma nu o ia în timp ce nu se uită nimeni. Îl reluați dumneavoastră înșivă, iar asta trimite enable-domain.
În spatele pasului 4 se află o mică bucată de aritmetică ușor de nimerit invers. Depășirea contează ca rezolvată când conturile care contează plus conturile suspendate de această depășire revin în limită, nu doar primul număr. Fără acea adunare, impunerea s-ar declara rezolvată în clipa în care a acționat, pentru că numărătoarea scade sub limită tocmai prin suspendare.
Ce nu este niciodată automat
Ștergerea. Nicio factură neplătită, nicio depășire și nicio probă expirată nu șterge un cont de găzduire. Suspendarea păstrează discul și datele; ștergerea este o acțiune separată, explicită, pe care o faceți dumneavoastră. Singurul pas distructiv din ciclul de viață este cel pe care platforma nu îl va face în numele dumneavoastră.
Decontarea parțială din credit. Puteți alimenta în avans, iar soldul este un registru: o linie per schimbare, niciodată editată, corecțiile sunt linii opuse cu un motiv, nu rescrieri. Dacă soldul acoperă întreaga lună, luna este plătită din credit și nu se încasează nimic. Dacă nu, se încasează suma completă, iar soldul este lăsat în pace. Nu există jumătate-jumătate.
Rescrierea istoriei. O linie de factură consemnează numele planului așa cum era în momentul facturării. Redenumirea a ceva ulterior nu schimbă ce spune o factură veche.
Unde vă lasă asta
Virtualmin vă dă un panou de găzduire solid și niciun strat comercial. Golul nu este aprovizionarea (create-domain este o singură comandă), ci tot ce este în jurul ei: numărarea a ce are un client, a ști că o factură a rămas neplătită, a face ceva în privința asta care este reversibil și a putea explica ulterior ce s-a întâmplat și când.
Provibr se conectează la panouri de control, hipervizoare și panouri de joc unele lângă altele. Modelul de facturare de mai sus este același pentru toate, ceea ce este argumentul practic pentru o gazdă mică: cutia Virtualmin pe care o rulați deja continuă să funcționeze exact așa cum o face, iar VPS-ul sau panoul de jocuri pe care îl adăugați anul viitor aterizează în aceeași numărătoare de capacitate, aceeași factură și același flux de suspendare.
Întrebări frecvente
Are Virtualmin un panou de facturare propriu?
Nu. Virtualmin oferă un panou de găzduire solid și niciun strat comercial. Golul nu este aprovizionarea, pentru că create-domain este o singură comandă; golul este să numeri ce are un client, să știi că o factură a rămas neplătită și să faci ceva reversibil în privința asta.
Ce se întâmplă pe panou când un cont este suspendat?
Platforma trimite disable-domain. Virtualmin blochează parola utilizatorului administrativ și înlocuiește site-ul cu o pagină de eroare. Datele rămân.
O factură neplătită șterge un cont de găzduire?
Niciodată. Nicio factură neplătită, nicio depășire și nicio perioadă de probă expirată nu șterge un cont. Singurul pas distructiv din ciclul de viață este exact cel pe care platforma nu îl face în locul dumneavoastră.
Cum se detectează sigur un cont Virtualmin suspendat?
Recitind starea în loc să crezi răspunsul comenzii. Pe un cont suspendat, list-domains primește un câmp disabled; pe un cont activ acel câmp pur și simplu lipsește, așa că un parser care caută o valoare citește fiecare cont ca activ, inclusiv pe cele suspendate.
Un cont suspendat mai contează la capacitatea mea?
Nu. Fiecare cont contează, fie că rulează sau nu, și doar unul suspendat sau șters nu contează. Oprirea a ceva nu eliberează deci un loc: ștergeți-l, sau măriți capacitatea.