Путь к независимости! Сборка из исходников и Push-деплой (HomeLab) №12.2
Доброго времени суток! В прошлой части мы успешно подняли наше файловое облако на базе SFTPGo. Но мы делали это вручную. В серьезном дата-центре ходить по SSH и обновлять каждый контейнер руками — это не просто неудобно, это верный путь к ошибкам и падению сервисов. Сегодня мы делаем первый, но самый важный шаг к Инфраструктуре как Коду (IaC) и внедряем настоящий GitOps. Мы перестанем бездумно скачивать чужие готовые контейнеры из интернета, защитив себя от блокировок публичных реестров (Docker Hub) и "кривых" обновлений, реализуя на полную функционал CI/CD В этом видео мы построим свою собственную суверенную фабрику программного обеспечения. Наш сборочный робот (Runner) будет сам скачивать исходный код, компилировать чистые бинарники и доставлять их на боевые серверы. В этом выпуске: Фабрика Сборки (CI): Пишем пайплайн, который компилирует SFTPGo из исходников с нужными нам флагами, избавляясь от лишних зависимостей. Свой Реестр Пакетов (S3): Настраиваем загрузку собранных бинарников в локальный Package Registry внутри нашего Forgejo (с физическим хранением на NAS). Push-модель (CD): Пишем скрипт развертывания. По нажатию одной кнопки наш робот сам зайдет на рабочий LXC-сервер по SSH, скачает обновление, подменит файлы и бесшовно перезапустит службу. Аптайм провалится всего на миллисекунды. Магия откатов (Rollback): Разбираемся, как строгое версионирование сборок позволяет нам за пару секунд откатиться на старую, стабильную версию в случае аварии. Сборка кастомного Caddy (L4): Чтобы мобильные клиенты могли подключаться по SFTP через красивый домен (а не по IP), нам нужен прокси, работающий на транспортном уровне (TCP). Мы на лету скомпилируем ядро Caddy, "пришив" к нему сторонний плагин layer4. Теперь весь жизненный цикл наших сервисов, от исходного кода до перезапуска службы, находится под нашим полным контролем! 🔗 Официальные репозитории проекта : 🔹 Мой домашний сервер (Оригинал): https://git.alexrus1234.ru/AlexRus1234/AlexRus1234-HomeLab-Commands 🔹 Зеркало на GitHub: https://github.com/AlexRus1234/AlexRus1234-HomeLab-Commands 🔹 Зеркало на Mos.Hub: https://hub.mos.ru/AlexRus1234/AlexRus1234-HomeLab-Commands 🔹 Зеркало на Codeberg: https://codeberg.org/AlexRus1234/AlexRus1234-HomeLab-Commands 🔗 Социальные сети: 🔹 Мой Телеграм (Анонсы и обсуждения): https://t.me/AlexRus1234Chanel 🔹 Группа в ВК: https://vk.com/club195345569 Таймкоды: Теоретическая часть: Архитектура и проблемы 00:00 Проблема ручной настройки и переход к IaC (Infrastructure as Code) 00:45 Фабрика сборки (Continuous Integration / CI) 01:20 Локальный реестр пакетов и хранение сборок 01:43 Магия отката версий (Rollback) 02:02 Ограничения: зависимость сборки от глобального интернета 02:37 Модели деплоя: Pull-модель 03:09 Модели деплоя: Push-модель (выбор для этого видео) 03:37 Зачем нужен кастомный Caddy (L4 Plugin) для SFTP 04:15 Что именно мы автоматизируем сегодня? Практическая часть: Настройка сборки (CI) 04:34 Настройка организаций в Forgejo (Archive и Build) 05:01 Зеркалирование репозитория SFTPGo из GitHub 06:03 Создание форка SFTPGo для сборки 06:45 Создание токена доступа для загрузки пакетов в реестр 07:16 Добавление токена в секреты репозитория 08:21 Создание пайплайна сборки (workflow) для SFTPGo 09:50 Первый запуск пайплайна сборки SFTPGo 11:30 Проверка готового пакета в реестре Практическая часть: Настройка деплоя (CD) 12:04 Переход к автоматизации деплоя 12:22 Создание главного репозитория инфраструктуры (homelab-deploy) 12:54 Написание пайплайна для Push-деплоя SFTPGo по SSH 14:09 Добавление SSH-ключа в секреты 14:34 Запуск деплоя SFTPGo на сервер и проверка обновления Практическая часть: Сборка и деплой кастомного Caddy 18:34 Переход к сборке прокси-сервера Caddy с L4 19:39 Создание пайплайна сборки Caddy (через xcaddy) 20:30 Исправление ошибки с именем ветки (master/main) и успешная сборка 21:35 Создание пайплайна для деплоя Caddy на сервер 23:33 Настройка Caddyfile для работы с TCP-трафиком (L4) 24:33 Проверка подключения к SFTP через кастомный порт в FileZilla 24:53 Подведение итогов и планы на следующее видео (Pull-модель)
Доброго времени суток! В прошлой части мы успешно подняли наше файловое облако на базе SFTPGo. Но мы делали это вручную. В серьезном дата-центре ходить по SSH и обновлять каждый контейнер руками — это не просто неудобно, это верный путь к ошибкам и падению сервисов. Сегодня мы делаем первый, но самый важный шаг к Инфраструктуре как Коду (IaC) и внедряем настоящий GitOps. Мы перестанем бездумно скачивать чужие готовые контейнеры из интернета, защитив себя от блокировок публичных реестров (Docker Hub) и "кривых" обновлений, реализуя на полную функционал CI/CD В этом видео мы построим свою собственную суверенную фабрику программного обеспечения. Наш сборочный робот (Runner) будет сам скачивать исходный код, компилировать чистые бинарники и доставлять их на боевые серверы. В этом выпуске: Фабрика Сборки (CI): Пишем пайплайн, который компилирует SFTPGo из исходников с нужными нам флагами, избавляясь от лишних зависимостей. Свой Реестр Пакетов (S3): Настраиваем загрузку собранных бинарников в локальный Package Registry внутри нашего Forgejo (с физическим хранением на NAS). Push-модель (CD): Пишем скрипт развертывания. По нажатию одной кнопки наш робот сам зайдет на рабочий LXC-сервер по SSH, скачает обновление, подменит файлы и бесшовно перезапустит службу. Аптайм провалится всего на миллисекунды. Магия откатов (Rollback): Разбираемся, как строгое версионирование сборок позволяет нам за пару секунд откатиться на старую, стабильную версию в случае аварии. Сборка кастомного Caddy (L4): Чтобы мобильные клиенты могли подключаться по SFTP через красивый домен (а не по IP), нам нужен прокси, работающий на транспортном уровне (TCP). Мы на лету скомпилируем ядро Caddy, "пришив" к нему сторонний плагин layer4. Теперь весь жизненный цикл наших сервисов, от исходного кода до перезапуска службы, находится под нашим полным контролем! 🔗 Официальные репозитории проекта : 🔹 Мой домашний сервер (Оригинал): https://git.alexrus1234.ru/AlexRus1234/AlexRus1234-HomeLab-Commands 🔹 Зеркало на GitHub: https://github.com/AlexRus1234/AlexRus1234-HomeLab-Commands 🔹 Зеркало на Mos.Hub: https://hub.mos.ru/AlexRus1234/AlexRus1234-HomeLab-Commands 🔹 Зеркало на Codeberg: https://codeberg.org/AlexRus1234/AlexRus1234-HomeLab-Commands 🔗 Социальные сети: 🔹 Мой Телеграм (Анонсы и обсуждения): https://t.me/AlexRus1234Chanel 🔹 Группа в ВК: https://vk.com/club195345569 Таймкоды: Теоретическая часть: Архитектура и проблемы 00:00 Проблема ручной настройки и переход к IaC (Infrastructure as Code) 00:45 Фабрика сборки (Continuous Integration / CI) 01:20 Локальный реестр пакетов и хранение сборок 01:43 Магия отката версий (Rollback) 02:02 Ограничения: зависимость сборки от глобального интернета 02:37 Модели деплоя: Pull-модель 03:09 Модели деплоя: Push-модель (выбор для этого видео) 03:37 Зачем нужен кастомный Caddy (L4 Plugin) для SFTP 04:15 Что именно мы автоматизируем сегодня? Практическая часть: Настройка сборки (CI) 04:34 Настройка организаций в Forgejo (Archive и Build) 05:01 Зеркалирование репозитория SFTPGo из GitHub 06:03 Создание форка SFTPGo для сборки 06:45 Создание токена доступа для загрузки пакетов в реестр 07:16 Добавление токена в секреты репозитория 08:21 Создание пайплайна сборки (workflow) для SFTPGo 09:50 Первый запуск пайплайна сборки SFTPGo 11:30 Проверка готового пакета в реестре Практическая часть: Настройка деплоя (CD) 12:04 Переход к автоматизации деплоя 12:22 Создание главного репозитория инфраструктуры (homelab-deploy) 12:54 Написание пайплайна для Push-деплоя SFTPGo по SSH 14:09 Добавление SSH-ключа в секреты 14:34 Запуск деплоя SFTPGo на сервер и проверка обновления Практическая часть: Сборка и деплой кастомного Caddy 18:34 Переход к сборке прокси-сервера Caddy с L4 19:39 Создание пайплайна сборки Caddy (через xcaddy) 20:30 Исправление ошибки с именем ветки (master/main) и успешная сборка 21:35 Создание пайплайна для деплоя Caddy на сервер 23:33 Настройка Caddyfile для работы с TCP-трафиком (L4) 24:33 Проверка подключения к SFTP через кастомный порт в FileZilla 24:53 Подведение итогов и планы на следующее видео (Pull-модель)




