Самостоятелен хостинг през 2023 година
Оригиналът е на Michal Warda
Даниел Десподов преди 33 секунди 1 СподелиНай-четени
IT НовиниДаниел Маринов - 20:16 | 12.05.2023Ново изследване допуска, че скоро ще се наложи да преначертаем картите на Земята
IT НовиниДаниел Маринов - 21:41 | 13.05.2023Хората едвам в този момент схващат по какъв начин „ Аз не съм робот “ капчата в действителност работи
IT НовиниДаниел Десподов - 11:34 | 12.05.2023МВФ е смутен от това, че Зимбабве вкарва публична цифрова валута обезпечена със злато
Даниел Десподовhttps://www.kaldata.com/Новинар. Увличам се от модерни технологии, осведомителна сигурност, спорт, просвета и изкуствен интелект.Оригиналът на блога, който четете сега, има съвършена оценка на PageSpeed от 100/100. (Поне все още на писане на публикацията.) Това не е фукане, тъкмо противоположното. Оказва се, че въобще не е мъчно да се реализира това. Просто хоствайте статична страница с опростени стилове и това е изцяло задоволително. Създаването на статична страница е много елементарно. Създавате index.html и я изпращате по кабелите. Можете да се усъвършенствате и да я генерирате благодарение на фреймуърк, както от време на време върша аз в тази ситуация с Astro. Но не това е смисълът на моята обява.
Значението на фразата хостинг на статична страница е в думата хостинг. Тази страница се хоства на Raspberry Pi 4b в моя дом. Устройството обезпечава отлична скорост, не коства съвсем нищо и има безкрайни благоприятни условия за гратис разширение. В тази публикация ще опиша за това какъв брой елементарно бе да го настроя. И за това какъв необикновен опит за разработка съгласно мен дава.
Защо?
От дълго време употребявам NextJS и хоствам приложения, основани благодарение на него в AWS с Express сървъри. Един ден забелязах, че сървърите ми са „ нажежени до алено “, макар че не вършат съвсем нищо, а и времето за реакция е голямо. При разбора се оказа, че библиотеката предизвиква голямо утежняване на продуктивността, което не се улавя от тестванията. Защо? Защото бенчмарковете употребяват единствено личната инфраструктура Edge на Vercel (разработчикът на NextJS). А грешката се появяваше безусловно на всички места, с изключение на в тази инфраструктура със своя характерен хардуер. По това време това мощно ме порази. Имах потребност от различна самостоятелна хостинг услуга, тъй че общността да не зависи от един единствен снабдител на услуги. И по този начин взех решение, че ще хоствам приложението си на личен сървър.
И по този начин, какво ви е належащо, с цел да хоствате лична страница? Точно по този начин: местен сървър, метод за разрастване на страницата и домейн.
Сървърът
Бях удовлетворен от домашната си система. Имам:
Електрическа енергия Оптична интернет връзка (300 Mb/s) с аварийна LTE свързаност Съвсем на ниска цена UPS за продължение на работата, в случай че заради някакви аргументи спре електрическото зареждане. Нещо сходно ми се случи единствено веднъж предходната година и може би се престаравам, само че нищоНакратко: моята система за разработка е проектирана по този начин, че да ми разрешава да работя без спиране. За система с домакински сървър единственото нещо, което ми липсваше, беше… самият сървър.
Вдъхновен от @JeffGeerling и неговия видеоклип за основаване на Pi Cluster, купих един едноплатков Raspberry Pi 4b с 4 GB памет за към 60 $. Разбира се, има други възможности на това устройство, само че аз към този момент имах едно и то работеше съвсем година с безусловно нулев престой. Нито един път не съм го изключвал или рестартирал. Използвах го като Pi Hole. Оказва се, че в 21-ви век то даже може да бъде обновено без да бъде изключвано. Моята оценка е 10 от 10. Ако имате потребност от домакински сървър, просто си купете това устройство.
Разгръщането
Вече имах сървър, само че по какъв начин да го настроя автоматизирано да започва моето приложение? Погледнах какво нормално вършат хората и бързо забелязах, че са нужни към 10 комплицирани и дълги стъпки, с цел да се пусне приложение на устройство. Настройване на Nginx, Capistrano или сходен инструмент за автоматизиране на разгръщането (стартиране на нови версии и преустановяване на стари), SSL документи (защото никой към този момент не употребява http), а в случай че желаете да докирате плана, тогава е належащо всичко, обвързвано с Docker, като Kubernetes, което единствено по себе си е извънредно комплицирано. Искам да кажа, че имах доста проблеми. Опитах метода на Kubernetes, който беше прекомерно комплициран за един блог, и се отхвърлих. По сходен метод решението bare metal, състоящо се от nginx с ръчно настройване на документи Let’s Encrypt, изглеждаше прекомерно комплицирано. Затова се отхвърлих от концепцията. Няколко месеца по-късно, до момента в който четях Reddit, открих Coolify.
Той е позициониран като по-опростена и уеб насочена версия на CapRover, който от своя страна е опция на Heroku. Дълго време бях в екосистемата на Ruby on Rails, тъй че Heroku бе най-хубавият избор за мен (докато не стана прекомерно скъп). Веднага щом видях Coolify, разбрах, че ще го употребявам за създаване на домашната си система! Същата вечер я тествах. Отне ми към час да я настроя от нулата:
Необходимо бе да се направи следното:
Запис на най-новия дисков облик на системата RPi OS на SD картата благодарение на rpi-imager с подготвени ssh и Wi-Fi конфигурации Инсталиране на систематичните обновявания Стартиране за осъществяване на скрипта за инсталирането на Coolify Рестартиране Готово еСлед това стартирах таблото за ръководство на Coolify и бях шокиран. Това в действителност е като по-бърза и по-опростена версия на Heroku.
Като тестов план взех решение да опитам да настроя блога си, който по това време работеше в Cloudflare Workers. Избрах облика на статичната страница и след още няколко кликвания плюс git push моето приложение беше разгърнато и работеше на моя Berry. Отне ми към пет минути и евентуално бе по-лесно от разгръщането на блог в Heroku. След опита взех решение да развия концепцията и да споделя блога си с целия свят.
Домейнът
Развълнуван, купих домейн (grifel.app) в Гугъл Domains. Използвам го, тъй като има всички разширения като app и dev, няма доста маркетингови нелепости и е обезпечен банален, само че пълнофункционален административен панел.
И по този начин, пристигна време да свържа локалния си сървър, само че уви, имаше проблем. При задаването на IP адрес на домейна си спомних, че нямам неподвижен IP адрес. Както множеството жилища в квартала, имах динамичен адрес. (За тези, които не са осведомени с концепцията за динамични външни IP адреси, ще кажа, че модемът ми присвоява нов IP адрес, когато рестартирам или се изключвам от мрежата).
За благополучие, към този момент съм разрешавал подобен проблем. Като дете, когато хоствах личния си сървър MU Online, нямах неподвижен IP адрес. Затова, с цел да отворя сървъра за обществеността, използвах Hamachi! Той работи по следния метод: на всеки Х секунди, когато сървърът е обвързван с интернет, той изпраща информация за настоящия ви IP към услугата DDNS (динамичен DNS). В най-лошия случай, когато IP адресът ви се промени след X секунди, сървърът осведоми DDNS, която пренасочва трафика към новия IP. Оказва се, че Гугъл Domains даже съдържа вградена тази функционалност! Инсталирах инструмента DDClient, който Гугъл предлага да употребявате в документите си, и го настроих с моите идентификационни данни. Целият развой лиши към 10 минути. Разбрах че всичко работи, като погледнах записа DDNS в административния панел на Гугъл Domains. Той бе обновен с сегашния ми IP адрес.
След това се върнах в таблото за ръководство на Coolify и зададох домейна https://blog.grifel.app като FQDN на моето приложение. Изчаках тридесет секунди и воала – блогът ми е наличен на този адрес. С работещ https. Това бе някаква магия. Преди 10 години тъкмо това беше нещото, което правеше Heroku толкоз комфортен. Днес можете да извършите всичко това в личната си система единствено с няколко кликвания.
Заключение
Рейтингът Page Speed към момента е 100/100, тъй че наподобява, че системата ми е задоволително бърза и не съм развалил потребителския интерфейс. През миналия месец ъптаймът бе 100%, само че сигурно това няма да е вечно и в най-лошите моменти ще би трябвало да живеете без моя страховит блог за най-вече към един час, само че се надявам, че ще го преодолеете. Блогът се хоства на Raspberry Pi 4b 4GB, тъй че в случай че някой желае да направи DDOS, евентуално няма да го преживея. Сървърът се намира във Варшава, тъй че не съм наоколо до дома ви, само че допускам, че това няма да е проблем. Пакетите ще би трябвало да пропътуват целия свят, с цел да стигнат до някои консуматори, само че светлината е задоволително бърза. Все отново, с цел да отстранявам всички тези проблеми, когато и да е ще мога да употребявам CDN.
С цената на всички тези проблеми имам лична платформа, сходна на Heroku, автоматизиран конвейер за разрастване, даже с клонове за разработка на нови функционалности. Екип от 100 души може да работи по приложението и даже не е нужно да им заплащам по 5 $ на месец, с цел да получат достъп до логовете. Мога непосредствено да способствам за него и да го уголемявам по какъвто си желая метод. Ще хоствам ли бъдещия си бизнес на него? Вероятно не. Все отново ще избера AWS или сходно решение, единствено с цел да избегна проблемите, които могат да съсипят живота ми по изцяло непредвиден метод. Но почтено казано, опитът ми ме накара да се замисля съществено за тази опция.
За тези, които се интересуват от настоящите разноски на тази система: към 60 $ за Raspberry Pi (еднократна покупка) + електричество (по-малко от 1 $ на месец) + 10 $ на година за домейна (който по този начин или другояче ми трябваше). Това е не повече от 2 $ на месец, в случай че у дома към този момент имате интернет.




