Как РКН улучшил мою инфраструктуру
Предыстория
Это не первая моя попытка в личный сайт, но пока самая удачная. Три года назад я выложил в сеть страничку на чистом HTML и минимальных CSS. Спустя пару лет я открыл для себя Eleventy — так родилась нынешняя версия сайта. При пуше в main запускался GitHub Actions, который собирал сайт и деплоил его в GitHub Pages, к которым был привязан домен tropin.one. Счастье моё длилось полгода, пока GitGub не глюканул, неявно заблокировав мне Actions, а заодно сломав доступ к Pages и просмотру репозитория без авторизации.
Кто виноват?
Пока я ждал ответа от поддержки GitHub'а, надо было что-то делать с сайтом. В результате я перенёс репозиторий на GitLab, а сайт стал собирать — также по пушу в main — в Cloudflare Pages. И всё работало прекрасно до того момента, когда я попробовал открыть tropin.one из России с выключенным VPN. И ничего не открылось. Я совершенно забыл о том, что живу в эпоху, когда в некоторых странах блокируют половину интернета...
Что делать?
Кинул старик в море невод в третий раз...
Стало понятно, что нужно искать что-то для деплоя в РФ. Поднимать и настраивать собственный VPS — самое простое и очевидное решение — мне очень не хотелось. Поэтому я попробовал настроить деплой через S3-хранилище в timeweb.cloud. И, о чудо, оно заработало. Но оказалось, что статический хостинг у их S3 работает довольно странно: чтобы открыть страницу, нужно явно писать /index.html для каждого адреса. Плюс даже «серое» облачко в DNS Cloudflare не помогло.
Зато у того же ТаймВеба обнаружилась некая App Platform, которая делает ровно то, что мне нужно: по пушу в main вытягивает изменения из GitLab'а, собирает билд сайта и затем выкладывает его в сеть. NS-записи пришлось перенести из Cloudflare обратно на ТаймВеб, поскольку без этого App Platform не позволяет привязать кастомный домен.
Инфраструктура сайта теперь такая:
GitLab (source repo)
│
├── Timeweb App Platform → tropin.one
│
└── Cloudflare Pages → mirror.tropin.one
GitHub (repository mirror / backup)
Билд на Cloudflare Pages тоже пригодился: там теперь живёт зеркало сайта.
Репу на GitHub'е я тоже оставил: теперь туда прилетают бекапы с основного репозитория. Для сохранности.
Итог
Я давно хотел настроить бекапы репозитория и сделать зеркало сайта, но никак не находил для этого времени. А тут всё само так совпало, что теперь у меня и код зеркалится в два места в сети, и два параллельных деплоя идут для основного сайта и его зеркала. Не то чтобы я был в восторге от всей этой нервотрёпки, зато смог протестировать деплой сайта в различных условиях. А главное, теперь всё снова работает. Ну, пока у нас тут опять чего-нибудь не заблокируют или «улучшат».
