{%- extends "article/base.html" -%} {%- block meta -%} { "date": "2022.03.25", "number": 1 } {%- endblock -%} {%- block title -%} Как бесплатно поднять сайт {%- endblock -%} {%- block description -%} Кратко о том, где можно зарегистрировать домен, найти хостинг и как запустить на нём сервер. {%- endblock -%} {%- block article -%} {%- filter markdown -%} ## Важное примечание Всё, что описано в этой статье, технически действительно бесплатно, однако большинство сервисов взамен на услуги просят предоставить данные банковской карточки и для проверки её работоспособности могут взымать и отменять платежи примерно по 1 евро. Также стоит быть внимательным и читать, что именно сервисы предоставляют полностью бесплатно, а за что списывают деньги. К примеру, Google Cloud Platform может снимать 10 центов каждый месяц только из-за того, что тип диска не был сменён с варианта по умолчанию на бесплатный. ## Второе важное примечание В этой статье я описываю варианты поднятия сервера на виртуальных машинах, так как они предоставляют самые широкие возможности управления и настройки сервера. Однако стоит упомянуть и другие варианты предоставления услуг хостинга кода. Например [AWS Lambda][AWS_L], которая берёт плату за каждую обработку события (вроде загрузки страницы сайта), или [Google App Engine][GAE], позволяющий писать на ограниченном списке языков программирования с ограниченным инструментарием, но не требующий долгой настройки и с доменом *.appspot.com в комплекте. [AWS_L]: https://aws.amazon.com/lambda [GAE]: https://cloud.google.com/appengine ## Хостинги Бесплатные подачки на всех сервисах, которые я нашёл, делятся на временные и *"Always free"*. Среди первых больше вариантов и доступных мощностей, однако не хочется через 2-12 месяцев думать, куда и как переносить сервер, поэтому [Amazon Web Services][AWS_EC2] и [Microsoft Azure][MC_A], предоставляющие пробные виртуальные машины максимум на год, отпадают. Остаются [Google Cloud Platform][GCP] и [Oracle cloud][O_C]: | | Кол-во | Архитектура | CPU | Частота | RAM | Диск | Сеть | | ------------------- | ------ | -------------- | --- | -------- | ------ | ---------- | --------- | | GCP (e2-micro) | 1 | x86_64 (Intel) | 1 | 2.2 GHz | 800 Mb | До 40 Gb | -³ | | Oracle (E2.1.Micro) | 2 | x86_64 (AMD) | 1 | 2.0 GHz¹ | 1 Gb | До 200 Gb² | 480 Mbps | | Oracle (A1.Flex) | 1-4 | ARM | 4² | 3.0 GHz | 24 Gb² | До 200 Gb² | 1-4² Gbps | 1. 2.0-2.25 GHz, 3.0-3.4 GHz при максимальном разгоне 2. Бесплатные 200 Gb выделяются на все виртуальные машины Oracle суммарно, 4 процессора и 24 Gb оперативки - на все A1.Flex машины суммарно, 1 Gbps скорости сети - на каждый процессор. 3. Я не нашёл информацию про пропускную способность сети у гугла, но нашёл лимит на 1 Gb исходящих из Северной Америки данных. Конкретные ссылки с информацией из таблички: [GCP][GSP_AW] и [Oracle][O_AW]. ### Статические Ipv4 адреса GCP предоставляет бесплатный динамический адрес, который меняется каждый раз при перезапуске через сайт, однако если перезапускать машину командой `sudo reboot` он остаётся прежним. Oracle предоставляет 5 бесплатных адресов. [AWS_EC2]: https://aws.amazon.com/ec2 [MC_A]: https://azure.microsoft.com/free/virtual-machines [GCP]: https://cloud.google.com/free [O_C]: https://oracle.com/cloud/free "Java, MySQL, Virtual Box" [GSP_AW]: https://cloud.google.com/free/docs/gcp-free-tier/#compute [O_AW]: https://docs.oracle.com/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm ## Домен [Github student pack][GH_EP] предлагает студентам 3 сервиса - [Namecheap][NC], [Name.com][NmC] и [.TECH domains][TD], которые дают различные домены на год. Более универсальным решением (не только для студентов) является [Freenom][FN], предоставляющий домены .tk (Токелау), .ml (Мали), .ga (Габона), .cf (Центральноафриканской Республики) и .gq (Экваториальной Гвинеи) тоже на год. Эти страны разрешают бесплатную регистрацию национальных доменов ради повышения своей узнаваемости, вследствие чего на данный момент домен островов Токелау, появившийся ещё в 1997-ом, стал самым популярным из национальных, [обогнав в 2016 году Китайский][D_M] почти в два раза. Freenom для регистрации не требует карточку, только почту, но имеет крайне неинтуитивный интерфейс, который может врать про доступность доменов, но на ютубе нашёлся [хороший туториал от индуса][FN_YT], описывающий решения всех возникающих в процессе регистрации проблем. [GH_EP]: https://education.github.com/pack/offers?tag=Domains [NC]: https://nc.me [NmC]: https://www.name.com/partner/github-students [TD]: https://get.tech/github-student-developer-pack [FN]: https://www.freenom.com [D_M]: https://bigthink.com/strange-maps/tokelau-the-worlds-online-superpower/ [FN_YT]: https://youtu.be/3Uopc4AFjOY ## Сервер Есть много разных вариантов бесплатного программного обеспечения для поднятия сайтов, например [Wordpress][WP], но интереснее написать всё самому, поэтому дальше распишу полезные ссылки для написания сервера на Flask. Начать можно с [гайда от Oracle][O_Fl], который подробно включает в себя все этапы запуска Hello World на их виртуальных машинах. Отдельно выделю [параграф про открытие 5000 порта][O_Fl_Nw] и [6 подпункт про обновление настроек firewall-а][O_Fl_Fw], для запуска не тестового https сервера эти процедуры нужно повторить с 80 и 443 портами. [Чуть более продвинутый гайд][GN_NG] по тому как запускать сервер на Flask при помощи gunicorn и nginx, а также описание создания демона. Ещё можно почитать исходные коды [этого сайта][S] в качестве примера. ### https [Гайд Certbot-а][CB] довольно исчерпывающе описывает процедуру получения SSL-сертификата. {% set O_Fl -%} https://docs.oracle.com/iaas/developer-tutorials/tutorials/flask-on-ubuntu/01oci-ubuntu-flask-summary.htm {%- endset -%} [WP]: https://wordpress.com [YT_WP]: https://youtu.be/g7sP33QtuxM [O_Fl]: {{O_Fl}} [O_Fl_Nw]: {{O_Fl}}#add-ingress-rules [O_Fl_Fw]: {{O_Fl}}#create-a-flask-app [GN_NG]: https://dev.to/brandonwallace/deploy-flask-the-easy-way-with-gunicorn-and-nginx-jgc [CB]: https://certbot.eff.org/instructions?ws=nginx&os=ubuntubionic [S]: /source {%- endfilter -%} {%- endblock -%}