Home Download Direct linkSettings
Aa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
Copy
{%- 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 -%}