{"id":36207,"date":"2019-10-31T22:10:17","date_gmt":"2019-10-31T19:10:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ispsystem-prosti-i-proshhaj-pochemu-i-kak-my-napisali-svoyu-panel-upravleniya-serverami\/"},"modified":"2019-10-31T22:10:17","modified_gmt":"2019-10-31T19:10:17","slug":"ispsystem-prosti-i-proshhaj-pochemu-i-kak-my-napisali-svoyu-panel-upravleniya-serverami","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/ispsystem-prosti-i-proshhaj-pochemu-i-kak-my-napisali-svoyu-panel-upravleniya-serverami","title":{"rendered":"ISPsystem, farvel og tak! Hvorfor og hvordan vi skrev vores egen serverstyringspanel","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ISPsystem, farvel og tak! Hvorfor og hvordan vi skrev vores egen serverstyringspanel\" src=\"\/wp-content\/uploads\/2019\/07\/512df00a9ec2d8ff8e3586dd57702924.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHej! Vi er \u00abHosting teknologi\u00bb, og for 5 \u00e5r siden lancerede vi <noindex><a rel=\"nofollow\" href=\"https:\/\/vdsina.ru\/?partner=habr1\">VDSina<\/a><\/noindex> \u2014 den f\u00f8rste vds hosting, der er skabt specifikt til udviklere. Vi str\u00e6ber efter at g\u00f8re det s\u00e5 brugervenligt som DigitalOcean, men med dansk support, betalingsmetoder og servere i Danmark. Men DigitalOcean er ikke kun p\u00e5lidelighed og pris, det handler ogs\u00e5 om service.<\/p>\n<p>Softwaren fra ISPsystem viste sig at v\u00e6re en snare, der bandt vores h\u00e6nder i vores str\u00e6ben efter en fantastisk service. For tre \u00e5r siden brugte vi billingsystemet Billmanager og serverstyringspanelet VMmanager, og vi l\u00e6rte hurtigt, at det er n\u00e6sten umuligt at levere god service uden vores eget panel. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Hvordan ISPsystem \u00f8delagde brugervenligheden<\/h2>\n<p>\n<b>Bugs<\/b><\/p>\n<p>Vi kunne ikke selv rette bugs \u2014 hver gang m\u00e5tte vi kontakte en ekstern support og vente. At l\u00f8se ethvert problem kr\u00e6vede reaktion fra et tredje selskab. <\/p>\n<p>Supporten fra ISPsystem svarede ok, men rettelserne kom ofte f\u00f8rst gennem flere versioner, og ikke altid og ikke alle. Nogle kritiske bugs blev rettet efter flere uger. Vi m\u00e5tte berolige kunderne, undskylde, og vente p\u00e5, at ISPsystem retter bug'en.<\/p>\n<p><b>Trussel mod nedetid<\/b><\/p>\n<p>Opdateringer kunne for\u00e5rsage uforudsigelig nedetid, hvilket udl\u00f8ste nye fejl. <\/p>\n<p>Hver opdatering var et lotteri: vi m\u00e5tte lukke billingen og ofre os til opdateringsguderne \u2014 et par gange for\u00e5rsagede en opdatering 10-15 minutters nedetid. Vores administratorer sad frustreret og vidste aldrig, hvor l\u00e6nge nedetiden ville vare, og vi kunne ikke forudsige, hvorn\u00e5r ISPsystem ville beslutte at udsende en ny opdatering. <\/p>\n<p>Det blev bedre med femte generation af Billmanager, men for at f\u00e5 adgang til de n\u00f8dvendige funktioner m\u00e5tte vi installere betaversionen, som blev opdateret hver uge. Hvis noget gik i stykker, m\u00e5tte vi give adgang til eksterne udviklere for at f\u00e5 dem til at rette det. <\/p>\n<p><b>Upraktisk gr\u00e6nseflade til panelet<\/b><\/p>\n<p>Alt var opdelt i forskellige paneler og blev styret fra forskellige steder. For eksempel betalte kunderne gennem Billmanager, men de m\u00e5tte genstarte eller geninstallere VDS i VMManager. Vores medarbejdere m\u00e5tte ogs\u00e5 skifte mellem vinduer for at hj\u00e6lpe klienten, tjekke belastningen p\u00e5 deres server eller se, hvilken OS de bruger.<\/p>\n<p>S\u00e5dan en gr\u00e6nseflade tager tid \u2014 b\u00e5de vores og kundernes. Der er slet ikke tale om nogen form for brugervenlighed som hos DigitalOcean under s\u00e5danne forhold. <\/p>\n<p><b>Korte livscykler med hyppige API-opdateringer<\/b><\/p>\n<p>Vi har udviklet vores egne plugins - for eksempel et plugin med yderligere betalingsmetoder, som ikke findes i VMManager.<\/p>\n<p>I de seneste \u00e5r har VMManager haft en relativt kort livscyklus, og i de nye versioner kunne navne p\u00e5 variabler eller funktioner i API'et \u00e6ndre sig vilk\u00e5rligt - hvilket br\u00f8d vores plugins. Supports for gamle versioner blev hurtigt udfaset, og vi m\u00e5tte opdatere.<\/p>\n<p><b>Det kan ikke forbedres<\/b><\/p>\n<p>N\u00e6rmere bestemt kan det, men det er ekstremt ineffektivt. Licensbegr\u00e6nsningerne tillader ikke \u00e6ndringer i kildekoden, man kan kun skrive plugins. Maksimalt antal plugins er nogle menupunkter, en trin-for-trin vejledning. ISPsystem er designet til alsidighed, men vi havde brug for specialiserede l\u00f8sninger.<\/p>\n<p>S\u00e5 vi gik i gang med at skrive vores egen kontrolpanel. Vi satte os m\u00e5l:<\/p>\n<ul>\n<li>Hurtigt reagere p\u00e5 fejl og problemer og have mulighed for selv at l\u00f8se dem, uden at kunden skal vente.<\/li>\n<li>Frit kunne modificere gr\u00e6nsefladen til arbejdsprocesser og kundens behov.<\/li>\n<li>Forbedre brugervenligheden med et rent og forst\u00e5eligt design.<\/li>\n<\/ul>\n<p>\nOg vi begyndte udviklingen.<\/p>\n<h2>Arkitekturen af det nye panel<\/h2>\n<p>\nVi har et selvst\u00e6ndigt udviklingsteam, s\u00e5 vi har skrevet panelet selv. <br \/>\nDet prim\u00e6re arbejde blev udf\u00f8rt af tre ingeni\u00f8rer - teknisk direkt\u00f8r Sergey fandt p\u00e5 arkitekturen og skrev serveragenten, Alexey lavede billing, mens vores frontend-udvikler Artysh samlede frontend-delen. <\/p>\n<h3>Trin 1. Serveragent<\/h3>\n<p>Serveragenten er en webserver skrevet i Python, der styrer biblioteket <noindex><a rel=\"nofollow\" href=\"https:\/\/libvirt.org\/\">libvirt<\/a><\/noindex>, som i sin tur styrer <noindex><a rel=\"nofollow\" href=\"https:\/\/www.qemu.org\/\">hypervisoren Qemu-kvm<\/a><\/noindex>. <\/p>\n<p>Agenten styrer alle tjenester p\u00e5 serveren: oprettelse, stop, sletning af VDS, installation af operativsystemer, \u00e6ndring af parametre osv. gennem biblioteket libvirt. P\u00e5 tidspunktet for artikelens offentligg\u00f8relse er der mere end fyrre forskellige funktioner, som vi supplerer alt efter opgaven og kundens behov.<\/p>\n<p>I teorien kunne man styre libvirt direkte fra billing, men det ville kr\u00e6ve for meget ekstra kode, s\u00e5 vi besluttede at dele disse funktioner mellem agenten og billing - billing sender simpelthen anmodninger til agenten gennem JSON API.<\/p>\n<p>Agenten var det f\u00f8rste, vi lavede, da den ikke kr\u00e6vede nogen gr\u00e6nseflade, og vi kunne teste den direkte fra serverens konsol. <\/p>\n<p><b>Hvad serveragenten gav os:<\/b> Der er opst\u00e5et et lag, der g\u00f8r livet lettere for alle \u2013 faktureringen beh\u00f8ver ikke at overf\u00f8re en masse kommandoer, men kun sende en foresp\u00f8rgsel. Og agenten vil g\u00f8re alt, hvad der er n\u00f8dvendigt: for eksempel tildele plads p\u00e5 disken og RAM. <\/p>\n<h3>Trin 2. Fakturering<\/h3>\n<p>\nFor vores udvikler Alex var dette ikke f\u00f8rste gang, han brugte et kontrolpanel \u2013 Alex har v\u00e6ret i hostingbranchen l\u00e6nge, s\u00e5 han forstod generelt, hvad kunden havde brug for, og hvad der var n\u00f8dvendigt for hosten.<\/p>\n<p>Vi kalder faktureringen for 'kontrolpanelet': det indeholder ikke bare penge og tjenester, men ogs\u00e5 styring af dem, kundesupport og meget mere.<\/p>\n<p>For at overf\u00f8re fra ISPSystem-software var det n\u00f8dvendigt fuldst\u00e6ndigt at bevare tidligere funktionalitet for kunderne, overf\u00f8re alle finansielle handlinger fra det gamle faktureringssystem til det nye, samt alle tjenester og forbindelser imellem. Vi studerede, hvad der er i det nuv\u00e6rende produkt, derefter l\u00f8sninger fra konkurrenter, hovedsageligt DO og Vultr. Vi kiggede p\u00e5 mangler og fordele, indsamlede anmeldelser fra folk, der har arbejdet med gamle produkter fra ISPsystem. <\/p>\n<p>I det nye faktureringssystem brugte vi to stacks: klassisk PHP, MySQL (og i fremtiden planl\u00e6gges det at skifte til PostgreSQL), Yii2 som backend-ramme og VueJS p\u00e5 frontenden. Stacks arbejder uafh\u00e6ngigt af hinanden, udvikles af forskellige mennesker, og kommunikerer via JSON API. Vi bruger stadig og har brugt til udvikling <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/phpstorm\/\">PHPStorm<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/webstorm\/\">WebStorm<\/a><\/noindex> fra JetBrains og holder dem meget af (hej, folkens!)<\/p>\n<p>Panelet er designet p\u00e5 en modul\u00e6r m\u00e5de: moduler til betalingssystemer, moduler til dom\u00e6neregistratorer eller for eksempel modul til SSL-certifikater. Det er nemt at tilf\u00f8je en ny funktion eller fjerne en gammel. Der er arkitektonisk plads til udvidelse, ogs\u00e5 i modsatte retning, 'til hardwaren'.<br \/>\n<img decoding=\"async\" alt=\"ISPsystem, farvel og tak! Hvorfor og hvordan vi skrev vores egen serverstyringspanel\" src=\"\/wp-content\/uploads\/2019\/07\/8f4b1bf9c16cc73023cacdde44cae0b3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Hvad vi har opn\u00e5et<\/b>: et kontrolpanel, som vi har fuld kontrol over. Nu rettes fejl p\u00e5 timer og ikke uger, og nye funktioner implementeres p\u00e5 kunders anmodning, og ikke efter ISPSystems \u00f8nsker.<\/p>\n<h3>Trin 3. Interface<\/h3>\n<p>\n<img decoding=\"async\" alt=\"ISPsystem, farvel og tak! Hvorfor og hvordan vi skrev vores egen serverstyringspanel\" src=\"\/wp-content\/uploads\/2019\/07\/48be006688e2246f9a416d2d6a717a82.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nInterface \u2013 vores f\u00e6lles skabelsesv\u00e6rk. <\/p>\n<p>F\u00f8rst s\u00e5 vi p\u00e5, hvad der ville ske, hvis vi lavede et overlay over ISPsystems API, uden at \u00e6ndre noget v\u00e6sentligt i interface. Resultatet var ikke tilfredsstillende, s\u00e5 vi besluttede at bygge det hele fra bunden.<\/p>\n<p>Vi troede, at det vigtigste var at lave et logisk interface med et rent og minimalistisk design, og s\u00e5 ville vi f\u00e5 et smukt panel. Placeringen af elementerne blev diskuteret i Megaplan, og gradvist blev det interface til, som brugerne ser i kontrolpanelet nu. <\/p>\n<p>F\u00f8rst kom designet af billing-siden, da vi allerede havde lavet betalingsplugins til ISPsystem. <\/p>\n<p><b>Frontend<\/b><\/p>\n<p>Vi besluttede at lave panelet som en SPA-applikation \u2014 ressourcekr\u00e6vende og med hurtig dataloading. Vores frontend-udvikler Artysh valgte at skrive det i Vue \u2014 p\u00e5 det tidspunkt var Vue kun lige kommet frem. Vi antog, at rammev\u00e6rket ville udvikle sig dynamisk som React, og efter noget tid ville Vue-f\u00e6llesskabet vokse, og der ville komme en masse biblioteker. Vi satsede p\u00e5 Vue og har ikke fortrudt det \u2014 nu tager det lidt tid at tilf\u00f8je nye funktioner p\u00e5 frontenden, som allerede er programmeret p\u00e5 backend. Vi vil fort\u00e6lle mere om frontend-panelet i en separat artikel.<\/p>\n<p><b>Forbindelse mellem frontend og backend<\/b><\/p>\n<p>Frontend var forbundet med backend via push-notifikationer. Vi m\u00e5tte arbejde h\u00e5rdt og skrive vores egen handler, men nu opdateres informationerne p\u00e5 siden n\u00e6sten \u00f8jeblikkeligt.<\/p>\n<p><b>Hvad der kom ud af det:<\/b> gr\u00e6nsefladen til panelet blev enklere. Vi gjorde den responsiv, og den hurtige indl\u00e6sning g\u00f8r det muligt at bruge den selv fra mobiltelefoner i de sidste minutter f\u00f8r takeoff, uden at installere en separat applikation til at arbejde med panelet.<\/p>\n<h3>Trin 4. Testning og migrationsplan <\/h3>\n<p>\nDa alt var sat op, og de f\u00f8rste tests var gennemf\u00f8rt, opstod sp\u00f8rgsm\u00e5let om migration. F\u00f8rst installerede vi billing og begyndte at teste dets arbejde med serveragenten.<\/p>\n<p>Derefter skrev vi et simpelt script, der overf\u00f8rer databasen fra den gamle billing til den nye.<\/p>\n<p>Vi m\u00e5tte teste og genchecke bogstaveligt talt alt, da dataene blev overf\u00f8rt til en ny database fra tre gamle: Billmanager, VMmanager og IPmanager manager. M\u00e5ske var testmigreringer det sv\u00e6reste, vi stod over for i udviklingsprocessen af det nye panel.<\/p>\n<p>Efter gencheckene lukkede vi den gamle billing. Den endelige migrationsdata var et meget nervepirrende \u00f8jeblik, men heldigvis blev den udf\u00f8rt p\u00e5 f\u00e5 minutter og uden synlige problemer. Der var sm\u00e5 fejl, som vi rettede i l\u00f8bet af en uge. Det meste af tiden gik med at teste, hvad der blev til.<\/p>\n<p>Derefter sendte vi e-mails til kunderne med adressen p\u00e5 den nye panel og fakturering og lavede en omdirigering. <\/p>\n<p><b>I sidste ende:<\/b> <b>DET ER LIVE!<\/b><\/p>\n<h2>Happy end<\/h2>\n<p>\nFra de f\u00f8rste timer af arbejdet med vores software f\u00f8lte vi alle fordelene ved overgangen. Koden var helt vores med en brugervenlig arkitektur, og brugergr\u00e6nsefladen var ren og logisk.<br \/>\n<img decoding=\"async\" alt=\"ISPsystem, farvel og tak! Hvorfor og hvordan vi skrev vores egen serverstyringspanel\" src=\"\/wp-content\/uploads\/2019\/07\/c673e49afb4bf25c8922161a8bb927a2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>F\u00f8rste anmeldelse efter lanceringen af det nye panel<\/i><\/p>\n<p>Vi startede overgangen i december, dagen f\u00f8r det nye \u00e5r 2017, da belastningen var lavest for at g\u00f8re overgangen lettere for kunderne - n\u00e6sten ingen arbejdede dagen f\u00f8r ferien.<\/p>\n<p>Det vigtigste, vi fik ved overgangen til vores system (udover generel p\u00e5lidelighed og brugervenlighed) - muligheden for hurtigt at tilf\u00f8je funktionaliteter til n\u00f8glekunder - at v\u00e6re ansigtet udadtil, ikke bagsiden.<\/p>\n<h3>Hvad nu?<\/h3>\n<p>\nVi vokser, m\u00e6ngden af data, kunder og kundedata vokser. P\u00e5 backend m\u00e5tte vi tilf\u00f8je en Memcached-server og to k\u00f8administratorer med forskellige opgaver. P\u00e5 frontend er der caching og egne k\u00f8er. <\/p>\n<p>Selvf\u00f8lgelig havde vi ogs\u00e5 eventyr undervejs, da vi udviklede og komplicerede produktet, for eksempel da vi tilf\u00f8jede HighLoad. <\/p>\n<p>I den n\u00e6ste artikel vil vi fort\u00e6lle, hvordan vi lancerede Hi-CPU planen: om hardware, software, hvilke opgaver vi l\u00f8ste, og hvad vi opn\u00e5ede.<br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/vdsina\/blog\/460107\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u00ab\u0425\u043e\u0441\u0442\u0438\u043d\u0433 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438\u00bb \u0438 5 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 VDSina \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 vds \u0445\u043e\u0441\u0442\u0438\u043d\u0433, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041c\u044b \u0441\u0442\u0440\u0435\u043c\u0438\u043c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c, \u043a\u0430\u043a DigitalOcean, \u043d\u043e \u0441 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439, \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u043e\u043f\u043b\u0430\u0442\u044b \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438. \u041d\u043e DigitalOcean \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0446\u0435\u043d\u0430, \u044d\u0442\u043e \u0435\u0449\u0435 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441. \u0421\u043e\u0444\u0442 \u043e\u0442 ISPsystem \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u0435\u0440\u0435\u0432\u043a\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043b\u0430 \u043d\u0430\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27085,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36207","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/ispsystem-prosti-i-proshhaj-pochemu-i-kak-my-napisali-svoyu-panel-upravleniya-serverami\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47ISPsystem, \u043f\u0440\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0449\u0430\u0439! \u041f\u043e\u0447\u0435\u043c\u0443 \u0438 \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0432\u043e\u044e \u043f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/ispsystem-prosti-i-proshhaj-pochemu-i-kak-my-napisali-svoyu-panel-upravleniya-serverami\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:10:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:10:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ISPsystem, undskyld og farvel! Hvorfor og hvordan vi skrev vores egen serverkontrolpanel | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/ispsystem-prosti-i-proshhaj-pochemu-i-kak-my-napisali-svoyu-panel-upravleniya-serverami","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47ISPsystem, \u043f\u0440\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0449\u0430\u0439! \u041f\u043e\u0447\u0435\u043c\u0443 \u0438 \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0432\u043e\u044e \u043f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438 | ProHoster","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/ispsystem-prosti-i-proshhaj-pochemu-i-kak-my-napisali-svoyu-panel-upravleniya-serverami","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:10:17+00:00","article:modified_time":"2019-10-31T19:10:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36207","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 02:25:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:48:27","updated":"2026-01-22 02:25:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/36207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=36207"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/36207\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/27085"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=36207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=36207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=36207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}