ÖöpĂ€evaringne videoedastus YouTube'is

Viimasel ajal olen hobina videotena salvestanud tuttava psĂŒhholoogi loengud. Salvestatud materjali monteerin ja avaldan oma veebisaidil. Kuu aega tagasi tekkis mul idee luua YouTube'is 24/7 voogedastus nende loengute jaoks. Selline temaatiline "telekanal", mis on pĂŒhendatud isiklikule arengule.

Kuidas korraldada tavalist voogedastust, tean ma. Kuid kuidas teha nii, et see oleks just videofailide voogedastus? Et see toimuks 24/7, oleks paindlik, maksimaalselt iseseisev ja ei sÔltuks minu koduarvutist. Seda pidin ma vÀlja selgitama.

ÖöpĂ€evaringne videoedastus YouTube'is

Lahenduse leidmiseks kulus mitu pĂ€eva. Uurisin mitmeid foorumeid ja erinevaid juhendeid, ilma milleta minu voogedastus lihtsalt ei Ă”nnestuks. Ja nĂŒĂŒd, kui see hullus on Ă”nnestunud, tunnen vajadust jagada oma lahendust. Nii sĂŒndis see artikkel.

LĂŒhidalt öeldes oli lĂ”plik lahendus jĂ€rgmine: VPS + ffmpeg + bash-skript. Allpool kirjeldan tehtud samme ja rÀÀgin „allveelaevadest”, mis ilmnesid voogedastuse korraldamisel.

Samm 1 – kust toimub voogedastus?

Esialgu pidin otsustama, kust edastamine tuleb ja kus on selle allikas. KĂ”igepealt tuli meelde – kodukompuuter. Koguda videoid esitusloendisse ja kĂ€ivitada nende esitamine igas videopleieris. SeejĂ€rel vĂ”tta ekraanipilt ja edastada see YouTube'i. Kuid ma loobusin sellest variandist peaaegu kohe, kuna selle elluviimiseks peaks kodukompuuter pidevalt töötama, mis tĂ€hendab mĂŒraga koos tuulikutelt isegi öösel ning suurenenud elektritarbimist (+100-150 kWh iga kuu). Seega ei saa kodukompuutrit edastamise ajal kasutada, sest igasugune hiire liikumine oleks edastuselt nĂ€htav.

SeejĂ€rel hakkasin vaatama pilveteenuste poole. Otsisin valmis teenust, kuhu oleks vĂ”imalik ĂŒles laadida oma videoid vĂ”i nĂ€iteks lisada linke YouTube'i videotesse, et see kĂ”ik pakitaks kokku ĂŒhte nonstop edastusse. Kuid sobivat pole leidnud. VĂ”ib-olla otsisin halvasti. Ainus, mis nĂ€ib ± sobivat funktsionaalsuse poolest, on restream.io, teenus, mis aitab samal ajal edastada mitmele platvormile. Neil tundub, et oma videoid saab ĂŒles laadida. Kuid see teenus loodi sootuks teiste eesmĂ€rkide jaoks ja nad arvavad, et edastus kestab vaid paar tundi. Arvan, et kui selle teenuse kaudu oleks vĂ”imalik korraldada 24/7 edastus, oleks see kuukĂ€ive kĂŒmnete, kui mitte sadade dollarite ulatuses. Ent edastust sooviks korraldada kas tasuta vĂ”i madala rahalise investeeringuga.

Sai selgeks, et edastuseks on vajalik erinev seade vĂ”i lausa eraldi arvuti. MĂ”tlesin millegi sarnase suunas nagu Raspberry Pi. Miks mitte? Sellel ei ole jahutusi. Salvestasin video mĂ€lupulgale, ĂŒhendasin Ethernet-kaabli ja las see lihtsalt lebab kuskil varjatud kohas, edastades signaali. Variandi. Kuid mul ei olnud ei plaati ega ka kogemusi selle kasutamisel, seetĂ”ttu loobusin ka sellest variandist.

LĂ”puks sattusin mingisse arutellu, kus arutati oma serveri loomist. See ei olnud just see, mida ma otsisin, kuid peamise mĂ”tte ma mĂ”istsin – serverit on ju vĂ”imalik kasutada! Selles arutelus pakuti vĂ€lja kombinatsiooni VPS + nginx + OBS. Selgeks sai, et see kombinatsioon vĂ”iks sobida ka mulle. Ainult see, et ma polnud kunagi servereid administreerinud, ajas mind natuke segadusse ja tundus, et oma eraldatud server on keeruline ja kallis. Otsustasin uurida, kui palju maksab minimaalsete omadustega serveri rentimine, ja olin meeldivalt ĂŒllatunud.

ÖöpĂ€evaringne videoedastus YouTube'is

Hinnad on toodud Valgevene rublades ja need on tĂ”eliselt vĂ€ikesed. MĂ”istmiseks: 8 Valgevene rubla on umbes 3,5 dollarit vĂ”i 240 Venemaa rubla. Kogu kuu jooksul kasutades tĂ€isfunktsionaalset arvutit, mis töötab 24/7 ja on kiire internetiĂŒhendusega. Mulle tundus, et see avastus oli ÀÀrmiselt rÔÔmustav ja ma kĂ”ndisin mitu pĂ€eva uskumatult rahulolevana, justkui laps, kes avastas kosmoserakette 🙂

Muide, kasutasin esimese veebisaidi pakkumist, mille Google andis mulle otsingusÔnade "VPS rent" jÀrgi. VÔib-olla on olemas veelgi odavamaid lahendusi, kuid see hind sobis mulle ja edasi ei otsinud.

Serveri loomisel on vĂ”imalik valida operatsioonisĂŒsteem, millel see töötab. Iga loetletud sĂŒsteemi puhul on vĂ”imalik korraldada striimist ning valik tuleb teha vastavalt sinu eelistustele ja rahalistele vĂ”imalustele (Windows-i serveri eest kĂŒsitakse lisatasu). Valisin CentOS-i. Lihtsalt seetĂ”ttu, et mul oli varem selle kasutamise osas vĂ€ike kogemus.

ÖöpĂ€evaringne videoedastus YouTube'is

Samm 2 – serveri seadistamine

Esimene asi, mida pĂ€rast сДрĐČДрi loomist teha, on sellele SSH kaudu ĂŒhenduse loomine. Alguses kasutasin PuTTy-d, kuid hiljem hakkasin kasutama Secure Shell App rakendust, mis töötab Google Chromes. See osutus mulle mugavamaks.

SeejĂ€rel muutsin hostinime, seadistasin serveri ajasĂŒnkrone, vĂ€rskendasin sĂŒsteemi, tegelesin iptables'iga... ja tegin veel hulga asju, kuid mitte seetĂ”ttu, et see oleks vajalik. Lihtsalt oli huvitav serverit seadistada ja mul Ă”nnestus see. Mulle meeldib, kui asjad Ă”nnestuvad 🙂

Siin on sammud, mida tuleb teha:

  1. Ühendada EPEL-repositorium.
  2. KĂ€ivitada FTP-server (valisin vsftp).
  3. Installida ffmpeg.

Ma ei hakka detailseid kĂ€ske tooma, see juhend on pigem kontseptuaalne, et edastada ĂŒldine tegevuskava. Kui teil tekib mĂ”ne sammu osas raskusi, lahendatakse need kiiresti otsingupĂ€ringuga, nagu "CentOS EPEL-i ĂŒhendamine" vĂ”i "CentOS FTP-serveri installimine". Esimeste linkide kaudu leiate ĂŒksikasjalikud samm-sammult juhised.

Nii et, nagu ma juba varem mainisin, vajasin VPS + nginx + OBS kombinatsiooni. VPS on valmis. Kuid ĂŒlejÀÀnud punktide osas tekkis kĂŒsimusi. OBS on voogedastuse programm, Open Broadcaster Software. See töötab ainult voogudega, st nĂ€iteks vĂ”tab pildi veebikaamerast ja voogedastab selle. VĂ”i salvestab ekraani. VĂ”i suunab juba kĂ€imasoleva voogedastuse teisele saidile. Aga mul ei ole voogu, mul on ainult kogum videofaile, millest tuleb voog teha.

Hakkasin seda teemat uurima ja leidsin ffmpeg'i. FFmpeg on avatud lÀhtekoodiga tasuta teegikomplekt, mis vÔimaldab salvestada, konvertida ja edastada digitaalseid audio- ja videosalvestisi erinevates formaatides.

Ja ma olin vĂ€ga ĂŒllatunud, kui palju ffmpeg suudab. Tahad - tĂ”mbab heli videost vĂ€lja. Tahad - lĂ”ikab video fragmenti ilma ĂŒmberkodeerimiseta. Tahad - konverteerib ĂŒhe formaadi teiseks. Ja veel palju muud. Kuni selleni, et saad sellele faili mÀÀrata, ta konverteerib selle vooguks ja edastab selle otse YouTube'i. KĂ”ik, ahel on kokku pandud. JÀÀnud on vaid detailide viimistlemine.

Samme 3 - voogedastuse seadistamine

Loome voogedastuse YouTube'is. Sel hetkel vajame vaid linki ja voogedastamise vÔtme. Alloleval ekraanipildil on need punasega vÀlja toodud.

ÖöpĂ€evaringne videoedastus YouTube'is

SeejĂ€rel laeme serverisse video-faile, mida kavatseme voogedastada. FTP on tegelikult vajalik ainult selle etapi jaoks. Kui teil on mugavam meetod failide serverisse laadimiseks, siis FTP-serverit pole vaja ĂŒles seada.

Edastame voogu YouTube'ile. Vaatamiseks tuleb kĂ€ivitada ffmpeg koos mitme atribuudiga. Nii nĂ€eb vĂ€lja lĂŒhim kĂ€sk, mis mul Ă”nnestus:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛмЧ_бРАНСЛЯЩИИ%

Atribuutide tĂ€hendused-re – nĂ€itab, et fail tuleb konverteerida vooks.

-i – nĂ€itab, millist faili tuleb esitada. Oluline on, et kĂ€sk kĂ€ivituks samast kataloogist, kus asub videofail. Vastasel juhul tuleks mĂ€rkida absoluutne link faili juurde, nagu /usr/media/lecture1.mp4.

-f – mÀÀrab vĂ€ljundi faili formaadi. Minu puhul tĂ€hendab see, et ffmpeg konverteerib minu faili mp4-st flv-ks „otse”.

Ja lÔpus mÀrkige andmed, mille vÔtsime YouTube'i tarnetoolide lehelt, st aadress, kuhu tuleb andmeid edastada, ja voogedastuse vÔti, et voogedastus ilmuks just teie kanalil.

Kui olete kĂ”ik Ă”igesti teinud, siis pĂ€rast selle kĂ€su kĂ€ivitamist nĂ€eb YouTube edastatavat voogu. Voogedastuse alustamiseks peate lihtsalt YouTube'is vajutama nuppu „Alusta voogedastust”.

Samm 4 – lisame autonoomia

Palju Ă”nne! NĂŒĂŒd oskate kĂ€ivitada voogedastust videofailist. Kuid see ei piisa 24/7 voogedastuseks. Oluline on, et pĂ€rast esimese video esitamise lĂ”ppu kĂ€ivituks kohe jĂ€rgmine ja kui kĂ”ik videod on nĂ€idatud, algaks esitamine uuesti.

Olen vÀlja mÔelnud jÀrgmise variandi: luua .sh-fail, kuhu olen kirjutanud kÀsu iga videofaili kohta ja faili lÔpus mÀrkisin uuesti sama skripti kÀivitamise kÀsu. Tekkis ikka selline rekursioon:

KÀsk 1... (voogedastuse kÀivitamine failist lecture1.mp4)
KÀsk 2... (voogedastuse kÀivitamine failist lecture2.mp4)
KÀsk 3... (voogedastuse kÀivitamine failist lecture3.mp4)
bash start.sh

Jah, see tÔi tulemusi. Olles enda saavutusega rahul, kÀivitasin proovivoolu ja lÀksin magama.

Hommikul ootas mind ebameeldiv ĂŒllatus. Selgus, et voog lĂ€ks kestma vaid paar minutit ja lĂ”ppes peaaegu kohe, kui ma arvuti kinni panin. Uurimine nĂ€itas, et sellisel viisil kĂ€ivitatud kĂ€sud tĂ€idetakse vaid siis, kui kasutaja on serveris sisse logitud. Niipea, kui ma vĂ€lja logisin, katkestati minu kĂ€ivitatud kĂ€skude tĂ€itmine. Selle vĂ€ltimiseks on piisav, et kĂ€sule bash lisada kĂ€sk nohup. See vĂ”imaldab kĂ€ivitatud protsessil toimida olenemata teie kohalolekust.

LÔplik minimaalne skripti versioon nÀeb vÀlja jÀrgmine:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%VÕTME_VOO%
ffmpeg -re -i lecture2.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%VÕTME_VOO%
ffmpeg -re -i lecture3.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%VÕTME_VOO%
nohup bash start.sh $

Kus start.sh on fail, kuhu see skript on salvestatud. See fail peab asuma samas kataloogis koos videofailidega.

Dollari mÀrgi lisamine lÔpus vÔimaldab protsessi taustal kÀivitada, et vÔiks edasi konsooli kasutada, katkestamata voogu.

Boonuste seast on tulnud jÀrgmised eelised:

  • Saate kĂ€sitsi vahetada failide esitamist. Selleks tuleb lĂ”petada hetkel toimiv ffmpeg protsess. PĂ€rast seda hakkab automaatselt mĂ€ngima jĂ€rgmine fail nimekirjast.
  • Uusi videoid saab striimingusse lisada ilma edastamise katkestamiseta. Lihtsalt laadige video serverisse, lisage skripti kĂ€sk selle faili kĂ€ivitamiseks, salvestage. Ja kĂ”ik. JĂ€rgmise esitusringi ajal hakkab uus fail juba mĂ€ngima koos vanade failidega.

Samm 5 – kohandame ffmpeg'i

Sellega vÔiks pÔhimÔtteliselt lÔpetada. Kuid soovisime teha edastamise oma vaatajatele veidi sÔbralikumaks.

Kujutame ette, et inimene siseneb otseĂŒlekandele, hakkab vaatama, talle meeldib ja ta soovib seda loengut alustada algusest, kuid otseĂŒlekanne ei vĂ”imalda kerida. Loengut algusest peale vaatamiseks peab inimene minema minu veebisaidile ja saama huvitava loengu salvestuse. Kuidas aga teada, milline loeng teda huvitab? Veebisaidil on juba 16 loengut ja igal nĂ€dalal lisandub uusi. Arvan, et isegi mina, kes olen kĂ”iki neid loenguid filminud ja monteerinud, ei suuda juhusliku lĂ”igu pĂ”hjal kindlaks teha, milline see loeng on. SeetĂ”ttu on oluline, et iga loeng oleks kuidagi mĂ€rgistatud.

Variant lisada pealdiseid algsetesse videofailidesse montaaĆŸiprogrammis ei rahuldanud mind. Oli vajalik, et kasutataks originaalfailide eest. Et otseĂŒlekande tugi nĂ”uaks minult vĂ”imalikult vĂ€heseid liigutusi.

Selgus, et ka selles saab mind aidata ffmpeg. Sellel on spetsiaalne atribuut -vf, mis vÔimaldab teksti videole lisada. Videole teksti lisamiseks tuleb kÀsule lisada jÀrgmine fragment:

-vf drawtext="fontfile=OpenSans.ttf:text='Loeng 13: Emotsioonide psĂŒhholoogia. Kuidas luua rÔÔmu?':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670"

Parameetrite tĂ”lgendusfontfile= – viide fondifailile. Ilma selleta ei lisata videoteks ĂŒle teksti. Lihtsaim on fondifail panna samasse kausta videoga. Vastasel juhul tuleb nĂ€idata faili tĂ€ispikk tee.

text= – tegelikult tekst, mille on vajalik asetada video peale.

fontsize= – fondi suurus pikslites.

fontcolor= – fondi vĂ€rv.

borderw= – kontuuri paksus teksti ĂŒmber pikslites (mul on valge tekst musta kontuuriga, mille paksus on 1 piksel).

bordercolor= – kontuuri vĂ€rv.

x= ja y= – teksti koordinaadid. Punkt 0;0 asub vasakus ĂŒlanurgas. Minu koordinaadid on valitud nii, et tekst paikneb videomÔÔtmetega 1280x720 pikslites vasakus alumises nurgas.

See nÀeb vÀlja nii:

ÖöpĂ€evaringne videoedastus YouTube'is

Samm 6 – mÀÀrame ĂŒlekande kvaliteedi

KĂ”ik, ĂŒlekande on valmis. FFmpeg edastab, failid mĂ€ngitakse, minu kohalolek edastamiseks pole vajalik. Iga loeng on isegi allkirjastatud. Tundub, et kĂ”ik on valmis.

Kuid selgus veel ĂŒks nĂŒanss – valisin serveri minikonfiguratsiooni ja see ei suutnud voogedastust hakkama saada. Serveri konfiguratsioon: 1 tuum (umbes 2.2 GHz), 1 gigabait RAM-i, 25 GB SSD. RAM-i oli piisavalt, aga protsessor oli pidevalt 100% koormuses (mĂ”nikord isegi 102-103% 🙂 See tĂ”i kaasa voogedastuse aeg-ajalt pidurdamise. Mitte eriti ilus.

Olin lihtsalt saanud valida kallima konfiguratsiooni kahe tuumaga, Ă”nneks toimub serveri konfiguratsiooni vahetamine pilvetehnoloogiate abil paari nupu vajutamisega. Kuid ma tahtsin mahutada end minimaalsete konfiguratsiooni ressursside piiridesse. Alustasin ffmpeg dokumentatsiooni uurimist ja jah, seal on ka seadeid, mis vĂ”imaldavad sĂŒsteemi koormust reguleerida.

Pildikvaliteeti saab saavutada kahel viisil: kas protsessori suur koormus vÔi suur vÀljundliiklus. Seega, mida rohkem koormust protsessor suudab taluda, seda vÀhem vajab kanal lÀbilaskevÔimet. VÔi vÔib protsessorit mitte koormata, kuid siis on vaja laia kanalit koos suure liiklusvaruga. Kui piirangud on nii protsessoril kui ka vÀljundkanali mahtudel, tuleb pildikvaliteeti langetada, et edastus toimuks sujuvalt.

Minu serveril on 10 Mbit/s laiusega kanal. Selline laius on tĂ€iesti piisav. Kuid liikluse piirang on 1 TB kuus. SeetĂ”ttu ei tohi minu vĂ€ljundvoog ĂŒletada ~300 Kb sekundis, seega peab vĂ€ljundvoo bitikiirus olema maksimaalselt 2,5 Mbit/s. YouTube, muide, soovitab just sellise bitikiirusena edastada.

SĂŒsteemi koormuse reguleerimiseks kasutab ffmpeg erinevaid lĂ€henemisi. Sellega kĂ€itutakse hĂ€sti. siitKasutasin lĂ”puks kahte atribuuti: -crf ja -preset.

Constant Rate Factor (CRF) – see on tegur, mille abil saab reguleerida pildi kvaliteeti. CRF vĂ”ib olla vahemikus 0 kuni 51, kus 0 – esialgse faili kvaliteet ja 51 – halvim vĂ”imalik kvaliteet. Soovitav on kasutada vÀÀrtusi vahemikus 17 kuni 28, vaikimisi on 23. Kui CRF on 17, on video visuaalselt identne algsega, kuid mitte tehniliselt. Dokumentatsioonis on mĂ€rgitud, et lĂ”ppvideo suurus sĂ”ltuvalt mÀÀratud CRF-st muutub eksponentsiaalselt, st suurendamine 6 puntiga toob kaasa algse video bitikiirus kaks korda suuremaks.

Kui CRF abil saab mÀÀrata vĂ€ljundpildi „kaalu“, siis presetide (-preset) abil saab mÀÀrata, kui palju koormust protsessorile tekib. Selle atribuuti omadused on jĂ€rgmised:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • kiire
  • medium – see on vaikimisi vÀÀrtus
  • slow
  • slower
  • veryslow

Mida „kiiremini“ on parameeter mÀÀratud, seda suurem on protsessorikoormus.

Alustasin presetiga, mis oli tervikuna „minu protsessorile sobiv“, ning seejĂ€rel valisin koormuse tĂ€psemalt CRF abil. Minu puhul sobis preset kiire, CRF vÀÀrtuseks valisin 24.

KokkuvÔte

Sellega on kÔik. Minu lÔplik kÀsk voogedastuse kÀivitamiseks on jÀrgmine:

ffmpeg -re -i lecture1.mp4 -vf drawtext="fontfile=OpenSans.ttf:text='Loeng 1: Maailma piltide ĆŸongleerimine':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670" -c:v libx264 -preset fast -crf 24 -g 3 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛмЧ_бРАНСЛЯЩИИ%

Siia on jÀÀnud vaid kaks kirjeldamata punkte:

1) -c:v libx264 – konkreetse kodeki mÀÀramine lĂ€htefaili töötlemiseks.
2) -g 3 – selge mĂ€rge vĂ”tmekaadrite arvu kohta. Antud juhul on mĂ€rgitud, et iga kolmas kaader peaks olema vĂ”tme. Standardne vÀÀrtus on kas 5 vĂ”i 8, kuid YouTube nurisenud, palub mitte vĂ€hem kui 3.

Voogedastuse kvaliteeti saab vaadata siit.

Serveri koormus oli jÀrgmine:

ÖöpĂ€evaringne videoedastus YouTube'is

ÖöpĂ€evaringne videoedastus YouTube'is

Monitorimise andmetest nÀhtub, et protsessori koormus kÔigub vahel 70% kuni 95% ja nÀdala jooksul ei ole voogedastus kordagi 100% ulatusse ulatunud. See tÀhendab, et selliste seadistustega on protsessor piisav.

Disskoormuse osas vÔin öelda, et see on peaaegu mittekoormatud ja voogedastuseks peaks olema piisav isegi tavaline HDD.

Kuid mind muretseb vÀljuva liikluse hulk. Tundub, et minu vÀljuv voog kÔigub vahemikus 450 kuni 650 KB/s. Kuu jooksul lÀheb see kokku umbes 1,8 terabaiti. VÔib-olla pean liiklust juurde ostma vÔi siiski minema kahe tuumaga konfiguratsiooni juurde, kuna ma ei tahaks pilte kvaliteeti langetada.

***

KokkuvĂ”tteks ĂŒtlen, et sellise voogedastuse seadistamine nullist vĂ”tab aega umbes 1-2 tundi. Suur osa ajast kulub video serverisse laadimisele.

Turundusvahendina osutus sellise voogedastuse kĂ€ivitamine ebaefektiivseks. VĂ”ib-olla, kui vaateid kunstlikult suurendada, et YouTube'i algoritmid selle voogedastuse ĂŒles vĂ”taksid ja aktiivselt soovitustes nĂ€itama hakkaksid, siis oleks midagi saanud. Minu puhul vaatati seda 16 pĂ€eva jooksul pideva voogedastuse jooksul 58 korda.

Noh, mis seal ikka. Voogedastus sulandub harmooniliselt minu veebisaidi peamisele lehele. See pakkus vÔimalust kiiresti iseloomustada lektorit ja loengute sisu.

Ja veel ĂŒks asi. Oluline on, et ĂŒlekanne ei rikuks kellegi autoriĂ”igusi, vastasel juhul see blokeeritakse. Ma olen oma ĂŒlekande osas rahulik, kuna valisin muusika osad spetsiaalselt vabaks kasutamiseks, ja sisu autor istub kĂ”rval arvutis ning ei ole sugugi vastu, et ma tema sisu kasutan 🙂

Aga kui teie ĂŒlekandes mĂ€ngib kuskil taustaks raadio vĂ”i olete montaaĆŸis kasutanud oma lemmiklugu vĂ”i vĂ”tnud video materjali populaarsetest muusikavideodest, seeriatest vĂ”i filmidest – siis on teie ĂŒlekande riskiohus. Samuti on oluline, et ĂŒlekanne kannaks vĂ€hemalt minimaalset sisulist koormust, muidu vĂ”ivad nad selle blokeerida kui rĂ€mpssisu.

***

Sellega ongi kÔik. Loodan, et see kÀsiraamat aitab kedagi. Kui teil on midagi lisada, kirjutage, loen hea meelega tÀiendusi ja selgitusi artiklile.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster