{%- 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, а также описание создания <span title="daemon">демона</span>.
Ещё можно почитать исходные коды [этого сайта][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 -%}