С этой записи я начинаю цикл статей по настройке собственного облачного сервера для размещения любых своих личных web проектов. Цель такого сервера:
- Получить максимум возможностей за минимальные деньги;
- Сделать процесс размещения и обновления ваших сервисов максимально простым и приятным;
- Легко переносить всю систему на любую другую площадку, если нужно;
- Масштабировать систему при необходимости в дальнейшем, создав полноценный кластер;
- Научиться чему-то новому и полезному, попробовав использовать вполне себе современные и мощные технологии для простых задач.
В первой статье будет рассказано о первоначальной настройке системы на базе любой виртуальной машины с Ubuntu 18.04 LTS. Итак, давайте начнём.
Стек технологий
Что мы будем устанавливать? А вот что:
- Сервер под управлением серверной ОС Ubuntu 18.04 LTS;
- GitLab CI для хранения кода проектов, их сборки и деплоя на сервер;
- Docker и docker compose для контейнеризации;
- Traefik для маршрутизации запросов между приложениями;
- В конце мы попытаемся развернуть полноценный масштабируемый кластер на базе Kubernetes.
Что нам потребуется
Чтобы осуществить задуманное, нам понадобится две вещи:
- Хостинг
- Домен
Покупаем хостинг
Итак, какой хостинг нам потребуется?
Подойдёт любой VPS с достаточным количеством памяти, на который можно установить серверную Ubuntu. Минимальная конфигурация, на которой я разворачивал всю эту систему, включая несколько проектов, комплектовалась 4 Gb, но, думаю, можно пробовать и меньшим количеством. Если у вас есть реальная железка с постоянным доступом в интернет и статическим IP, это тоже прекрасно.
Но по моему опыту, сейчас можно достаточно легко найти недорогую и производительную виртуальную машину за смешные деньги. Этот хостинг провайдер, например, предлагает за 4.99 Eur в месяц такую конфигурацию: 4 ядра с 8Gb RAM, 200 Gb SSD и безлимитным трафиком на 200Mbit канале.
Другой вариант — облачный хостинг от Amazon или Google. Новым пользователям там выделяют весьма ощутимый кредит на первый год, которого вполне хватит для разных экспериментов. A если вы не планируете ничего, кроме как что-то попробовать и поучиться, то виртуальную машину можно включать, когда вы садитесь за компьютер, и выключать после. Тогда материальные затраты будут составлять буквально несколько центов, т.к. оплата начисляется поминутно.
Домен
С доменом всё гораздо проще. Покупаем его у любого регистратора. Единственное, в чём стоит убедиться дополнительно — это то, что регистратор также предоставляет услуги хостинга DNS записей (также известные как name servers).
Если платить совсем не хочется, можно получить домен и бесплатно. Один из таких сервисов Freenom предоставляет бесплатные домены в зонах .tk, .ml, .ga, .cf, .gq. Будьте осторожны. Использовать такой бесплатный домен для реальных сервисов очень не рекомендуется, т.к. если домен взят бесплатно, то он может быть зарегистрирован за деньги любым желающим. Или по крайней мере не забудьте выкупить его сами, как только на этот домен появится какая-то реальная посещаемость, чтобы у вас его не увели.
Подготовка к работе
Итак, хостинг и домен куплены. Осталось сделать пару дополнительных вещей и можно приступать к работе.
SSH доступ к серверу
Убедитесь, что SSH доступ подключен и настроен на вашем компьютере. То, как это делается, полностью зависит от хостинг провайдера. В Google cloud доступ к консоли осуществляется через браузер. Некоторые хостинг провайдеры открывают доступ по логину/паролю, где-то доступ осуществляется по ключу. Если доступ по умолчанию предоставляется для root пользователя, я настоятельно рекомендую завести обычного, добавить его в список sudoer-ов и, по возможности, отключить ssh для root пользователя вообще.
Настройте DNS
Добавьте DNS запись с типом A для вашего приобретённого домена (например domainname.com), а также для его поддоменов (*.domainname.com) и направьте их на IP адрес вашего сервера. Желательно, чтобы адрес был статическим. В большинстве случаев он статический по умолчанию, но некоторые сервисы вроде google cloud меняют адрес после каждой перезагрузки виртуальной машины, если вы не зарезервировали статический адрес специально. Сделайте это, чтобы избежать проблем в дальнейшем. Сервера иногда перезагружаются, а DNS не обновляется мгновенно.
На этом подготовка к работе полностью завершена. В следующей статье мы будем устанавливать и настраивать GitLab CI для хранения и сборки наших проектов.