
CM Free/Plus Rezervacijski sistem
Ko star računalnik postane majhen oblak
Včasih se pri projektih zgodi nekaj zanimivega. Začneš z eno čisto praktično težavo, na koncu pa iz nje nastane nova ideja.
Pri meni se je zgodilo tako: zmanjkalo mi je monitorjev in HDMI kablov.
To ni šala. Ko imaš na mizi več računalnikov, testnih namestitev, razvojno okolje, produkcijsko okolje, pa še kakšen “stari kandidat za odpis”, hitro prideš do točke, ko ugotoviš, da nimaš več kam priklopiti še enega zaslona. In ravno takrat sem želel dokončati testiranje svojega malega rezervacijskega sistema CM Free / Plus.
Na papirju je stvar preprosta: aplikacija teče na Apache/PHP, podatki so v JSON datotekah, brez baze, brez mesečne naročnine, brez odvisnosti od velikih SaaS platform. Ideja je, da jo lahko majhen ponudnik nastanitve postavi na svoj hosting, mini računalnik ali star laptop in upravlja rezervacije, povpraševanja, koledarje, cene ter osnovne integracije.
Ampak papir prenese vse. Mene je zanimalo nekaj drugega: ali to dejansko dela na zelo skromni mašini?
Zato sem vzel staro ARA testno mašino, majhen Intel Atom računalnik, ki bi pri marsikom verjetno končal v predalu ali v elektronskih odpadkih. Namestitev ni šla čisto gladko. Takšne naprave imajo včasih svoje muhe: 64-bit procesor, 32-bit UEFI, posebni zagonski postopki, Wi-Fi, ki se po restartu ne pobere takoj, in podobne male radosti.
Ampak ravno v tem je čar testiranja. Če aplikacija lepo dela na takem računalniku, potem bo na običajnem mini PC-ju, starejšem laptopu ali boljšem hostingu delala brez težav.
Ko je Ubuntu končno stekel, sem namestil Apache, PHP in CM paket. In presenečenje: delovalo je zelo dobro. Public koledar se je odpiral, admin koledar je delal, first-use čarovnik je pripravil strukturo, dokumentacija se je lepo prikazala. Firefox je sicer potreboval nekaj časa, da se je zbudil, ampak za takšno mašino je bil rezultat več kot spodoben.
Potem se je pojavila naslednja težava: kako ta testni računalnik upravljati brez monitorja?
Tu je vstopil AnyDesk. Najprej ni šlo v obe smeri. Iz ARA računalnika sem se lahko povezal ven, nazaj nanj pa ne. Razlog je bil Wayland, novejši Linux display server, ki ga AnyDesk za sprejemanje povezav ne podpira najbolje. Ko sem preklopil sistem na X11 in ponovno zagnal AnyDesk, je povezava začela delovati.
In tako je star Atom računalnik postal nekaj precej bolj uporabnega: CM Free / Plus test box.
Ampak pri tem se ideja še ni ustavila.
Najprej sem ga videl kot testno mašino. Potem kot AnyDesk support box. Nato pa sem ugotovil, da je to lahko tudi demo okolje za potencialne uporabnike. Namesto da bi nekomu najprej pošiljal ZIP, razlagal Apache, PHP, pravice map in namestitev, mu lahko preprosto dam povezavo do delujočega demo sistema.
Ker je CM web aplikacija, je bilo hitro jasno, da AnyDesk ni najboljši način za prvi ogled. Remote desktop je uporaben za podporo, nastavitve in prenos datotek, ni pa najbolj naraven način za testiranje spletne aplikacije. Grafični vmesnik na šibki mašini porabi preveč virov, uporabnik pa v resnici želi odpreti stran v svojem brskalniku.
Zato sem ARO povezal prek reverse proxyja in ji dodelil javni demo naslov:
Zdaj je pot takšna: uporabnik odpre spletno stran, GN7 strežnik naredi reverse proxy, ARA pa v ozadju servira CM Free / Plus paket. AnyDesk ostane samo servisni kanal, če je treba kaj popraviti, pogledati loge ali prenesti nadgradnjo.
To je bil pomemben preskok. ARA ni bila več samo testni računalnik. Postala je majhen demo node. Nekakšen “cloud”, čeprav v resnici stoji lokalno, priklopljena na elektriko in Wi-Fi.
Ob tem sva uredila še dokumentacijo. V aplikaciji je nastal Help Center, interna stran z navodili, ki uporabniku razloži osnovne pojme: kaj je admin koledar, zakaj so cene pomembne, kaj pomeni povpraševanje, kaj rezervacija, kaj ICS integracija in zakaj first-use že ustvari prvo enoto. To ni tehnični priročnik za razvijalce, ampak navodilo za realnega uporabnika, ki želi vedeti, kam klikniti in kaj pričakovati.
Posebej zanimiv del je bil download. Najprej je obstajal samo gumb “Prenesi”. Potem pa je postalo jasno, da en paket ne more zadovoljiti vseh primerov. Nekdo želi pravi clean install. Nekdo drug želi demo verzijo, da vidi, kako sistem izgleda z nekaj pripravljenimi podatki.
Zato sta nastali dve liniji paketov:
Clean paketi so za pravo namestitev. Ne vsebujejo admin ključa in ne vsebujejo začetne JSON konfiguracije. Ob prvem zagonu first-use sam ustvari admin_key.txt, instance.json, manifest enot, prvo enoto in osnovno strukturo.
Demo paketi pa so za ogled, testiranje in predstavitve. Tam je lahko nekaj začetnih podatkov, vodičev in pripravljene vsebine, da uporabnik ne gleda praznega sistema.
Za vsako linijo sta na voljo dve obliki: ZIP za ročno namestitev ali hosting, in DEB za Ubuntu/Debian računalnik. DEB paket poskrbi še za sistemske odvisnosti: Apache, PHP module, unzip in, pomembno, msmtp za pošiljanje e-mailov. To sva pri enem prejšnjem testu pozabila, zato je zdaj del paketa.
Ta del mi je bil posebej všeč, ker je projekt iz “imam mapo z aplikacijo” prešel v “imam distribucijski kanal”. To je velika razlika. ZIP v mapi je tehnična rešitev. Download stran s clean/demo izbiro, razlago in paketi pa je že produktni občutek.
Med vsem tem se je zgodila tudi mala nezgoda: ARA je po restartu javila poškodovan filesystem in zahtevala ročni fsck. Ni bilo prijetno, ampak tudi to je del realnosti. Testna mašina ni laboratorijski ideal. Je star računalnik, na Wi-Fi povezavi, z realnimi omejitvami. Ravno zato je dober test. Če bo paket delal tam, bo marsikje.
Ko se je sistem pobral, sem naredil kopijo, preveril Apache, AnyDesk, reverse proxy in javni demo. Vse je spet delovalo.
Najlepši trenutek pa ni bil tehnični. Prvi realni feedback je bil aplavz. Nekdo je v graffiti sporočilo napisal “Top”.
To je mogoče majhna stvar, ampak za projekt, ki ga gradiš dolgo, po večerih, med drugimi opravili, z veliko testiranja in popravkov, pomeni veliko. Ne zato, ker bi bilo vse že končano. Ravno obratno: tak feedback pokaže, da je stvar dovolj resnična, da jo nekdo razume, preizkusi in nanjo reagira.
CM Free / Plus še ni popoln. Seznam idej je še dolg. Treba bo še čistiti pakete, urediti navodila, izboljšati first-use, preveriti nadgradnje, testirati namestitve in pripraviti GitHub izdajo.
Ampak nekaj pomembnega se je zgodilo.
Projekt ni več samo razvojna mapa na mojem računalniku. Ima demo node. Ima download stran. Ima clean in demo pakete. Ima Help Center. Ima remote support pot. In deluje na starem malem računalniku, ki je še včeraj izgledal kot kos odvečne opreme.
Včasih torej ne potrebuješ novega strežnika.
Včasih potrebuješ samo star računalnik, malo potrpljenja, nekaj nočnih idej, dober backup — in ravno dovolj trme, da iz “tole še ne dela” nastane “tole lahko pokažem drugim”.
Če koga zanima, kako izgleda v praksi, sem pripravil tudi javni demo in testne pakete za prenos.
Povezave:
Demo CM Free / Plus: http://cmfree.duckdns.org/app/
Prenos paketov: https://apartmamatevz.si/cmfree/download.html
Novo
Posodobljen je tudi help v CM Free/Plus in sedaj vsebuje tudi podrobna navodila za namestitev poštnega strežnika in pravilnih e-mail nastavitev