Самостоятелен хостинг през 2023 година

Оригиналът е на Michal Warda

Най-четени

Даниел Десподов
Даниел Десподов
Новинар. Увличам се от съвременни технологии, информационна безопасност, спорт, наука и изкуствен интелект.

Оригиналът на блога, който четете в момента, има перфектна оценка на PageSpeed от 100/100. (Поне към момента на писане на статията.) Това не е самохвалство, точно обратното. Оказва се, че изобщо не е трудно да се постигне това. Просто хоствайте статична страница с опростени стилове и това е напълно достатъчно. Създаването на статична страница е доста лесно. Създавате index.html и я изпращате по кабелите. Можете да се усъвършенствате и да я генерирате с помощта на фреймуърк, както понякога правя аз в случая с Astro. Но не това е смисълът на моята публикация.

Значението на фразата хостинг на статична страница е в думата хостинг. Тази страница се хоства на Raspberry Pi 4b в моя дом. Устройството осигурява отлична скорост, не струва почти нищо и има безкрайни възможности за безплатно разширяване. В тази статия ще разкажа за това колко лесно бе да го настроя. И за това какъв невероятен опит за разработка според мен предоставя.

Защо?

От дълго време използвам NextJS и хоствам приложения, създадени с помощта на него в AWS с Express сървъри. Един ден забелязах, че сървърите ми са „нажежени до червено“, въпреки че не правят почти нищо, а и времето за реакция е огромно. При анализа се оказа, че библиотеката причинява огромно влошаване на производителността, което не се улавя от тестовете. Защо? Защото бенчмарковете използват само собствената инфраструктура Edge на Vercel (разработчикът на NextJS). А грешката се появяваше абсолютно навсякъде, освен в тази инфраструктура със своя специфичен хардуер. По онова време това силно ме порази. Имах нужда от алтернативна независима хостинг услуга, така че общността да не зависи от един единствен доставчик на услуги. И така реших, че ще хоствам приложението си на собствен сървър.

И така, какво ви е необходимо, за да хоствате собствена страница? Точно така: локален сървър, начин за разгръщане на страницата и домейн.

Сървърът

Бях доволен от домашната си система. Имам:

  • Електрическа енергия
  • Оптична интернет връзка (300 Mb/s) с резервна LTE свързаност
  • Съвсем евтин UPS за продължаване на работата, ако поради някакви причини спре електрическото захранване. Нещо подобно ми се случи само един път миналата година и може би се престаравам, но нищо

Накратко: моята система за разработка е проектирана така, че да ми позволява да работя без прекъсване. За система с домашен сървър единственото нещо, което ми липсваше, беше… самият сървър.

Самостоятелен хостинг през 2023 година

Вдъхновен от @JeffGeerling и неговия видеоклип за създаване на Pi Cluster, купих един едноплатков Raspberry Pi 4b с 4 GB памет за около 60 долара. Разбира се, има алтернативи на това устройство, но аз вече имах едно и то работеше почти година с буквално нулев престой. Нито веднъж не съм го изключвал или рестартирал. Използвах го като Pi Hole. Оказва се, че в 21-ви век то дори може да бъде актуализирано без да бъде изключвано. Моята оценка е 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.

Самостоятелен хостинг през 2023 година

Като тестов проект реших да опитам да настроя блога си, който по това време работеше в Cloudflare Workers. Избрах образа на статичната страница и след още няколко кликвания плюс git push моето приложение беше разгърнато и работеше на моя Berry. Отне ми около пет минути и вероятно бе по-лесно от разгръщането на блог в Heroku. След експеримента реших да развия идеята и да споделя блога си с целия свят.

Домейнът

Развълнуван, купих домейн (grifel.app) в Google Domains. Използвам го, защото има всички разширения като app и dev, няма много маркетингови глупости и е осигурен опростен, но пълнофункционален административен панел.

И така, дойде време да свържа локалния си сървър, но уви, имаше проблем. При задаването на IP адрес на домейна си спомних, че нямам статичен IP адрес. Както повечето апартаменти в квартала, имах динамичен адрес. (За тези, които не са запознати с концепцията за динамични външни IP адреси, ще кажа, че модемът ми присвоява нов IP адрес, когато рестартирам или се изключвам от мрежата).

За щастие, вече съм разрешавал такъв проблем. Като дете, когато хоствах собствения си сървър MU Online, нямах статичен IP адрес. Затова, за да отворя сървъра за обществеността, използвах Hamachi! Той работи по следния начин: на всеки Х секунди, когато сървърът е свързан с интернет, той изпраща информация за текущия ви IP към услугата DDNS (динамичен DNS). В най-лошия случай, когато IP адресът ви се промени след X секунди, сървърът информира DDNS, която пренасочва трафика към новия IP. Оказва се, че Google Domains дори съдържа вградена тази функция! Инсталирах инструмента DDClient, който Google препоръчва да използвате в документацията си, и го настроих с моите идентификационни данни. Целият процес отне около десет минути. Разбрах че всичко работи, като погледнах записа DDNS в административния панел на Google Domains. Той бе актуализиран с настоящия ми IP адрес.

След това се върнах в таблото за управление на Coolify и зададох домейна https://blog.grifel.app като FQDN на моето приложение. Изчаках тридесет секунди и воала – блогът ми е достъпен на този адрес. С работещ https. Това бе някаква магия. Преди десет години точно това беше нещото, което правеше Heroku толкова удобен. Днес можете да направите всичко това в собствената си система само с няколко кликвания.

Заключение

Самостоятелен хостинг през 2023 година

Рейтингът Page Speed все още е 100/100, така че изглежда, че системата ми е достатъчно бърза и не съм развалил потребителския интерфейс. През изминалия месец ъптаймът бе 100%, но със сигурност това няма да е завинаги и в най-лошите моменти ще трябва да живеете без моя страхотен блог за най-много около един час, но се надявам, че ще го преодолеете. Блогът се хоства на Raspberry Pi 4b 4GB, така че ако някой иска да направи DDOS, вероятно няма да го преживея. Сървърът се намира във Варшава, така че не съм в близост до дома ви, но предполагам, че това няма да е проблем. Пакетите ще трябва да пропътуват целия свят, за да стигнат до някои потребители, но светлината е достатъчно бърза. Все пак, за да елиминирам всички тези проблеми, по всяко време ще мога да използвам CDN.

С цената на всички тези проблеми имам собствена платформа, подобна на Heroku, автоматичен конвейер за разгръщане, дори с клонове за разработка на нови функционалности. Екип от сто души може да работи по приложението и дори не е нужно да им плащам по 5 долара на месец, за да получат достъп до логовете. Мога директно да допринасям за него и да го разширявам по какъвто си искам начин. Ще хоствам ли бъдещия си бизнес на него? Вероятно не. Все пак ще избера AWS или подобно решение, само за да избегна проблемите, които могат да съсипят живота ми по напълно неочакван начин. Но честно казано, експериментът ми ме накара да се замисля сериозно за тази възможност.

За тези, които се интересуват от текущите разходи на тази система: около 60 долара за Raspberry Pi (еднократна покупка) + електричество (по-малко от 1 долар на месец) + 10 долара на година за домейна (който така или иначе ми трябваше). Това е не повече от 2 долара на месец, ако вкъщи вече имате интернет.

АбонаментВсичко важно от света на технологиите, директно в пощата ти.

С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!

5 Коментара
стари
нови оценка

Нови ревюта

Подобни новини