Home » Собственный CI-сервер: установка и запуск Woodpecker CI на вашем VPS
Собственный CI-сервер: установка и запуск Woodpecker CI на вашем VPS

Собственный CI-сервер: установка и запуск Woodpecker CI на вашем VPS

Ты устал от вечных ограничений облачных CI/CD? Не хочешь платить за каждый дополнительный билд или ждать, пока очередь на бесплатном GitHub Actions освободится? Хочется полного контроля, чтобы пайплайны не тормозили из-за чужих проектов? Тогда добро пожаловать в мир самостоятельных CI-серверов! В этой статье расскажу, как быстро поднять свой собственный CI на базе Woodpecker CI на VPS, почему это круто и чем это реально поможет тебе, если ты занимаешься автоматизацией, деплоем и поддержкой серверов.

О чём эта статья и зачем тебе свой CI-сервер

Речь пойдёт о практической установке Woodpecker CI на VPS (или выделенный сервер), чтобы полностью контролировать свои пайплайны, не зависеть от внешних сервисов и не платить за каждый чих. Если ты админ, девопс, или просто любишь настраивать всё под себя — эта статья для тебя.

  • Покажу, как работает Woodpecker CI и почему он крут
  • Пошагово объясню установку и настройку на VPS
  • Разберём типовые ошибки, сравним с конкурентами и подскажу, что делать, если что-то пошло не так
  • Покажу, как автоматизировать свои задачи и где это реально экономит время и деньги

Почему вообще стоит заморачиваться с собственным CI?

Облачные CI/CD — это удобно, но часто:

  • Есть лимиты на количество билдов, минут и параллельные задания
  • Ты не всегда знаешь, на каком железе твой код собирается
  • Платишь за приватные репозитории или за расширенные возможности
  • Иногда нужно запускать специфические тесты, требующие нестандартных зависимостей

Свой CI — это:

  • Полный контроль над окружением
  • Гибкость (любые плагины, любые образы, любые скрипты)
  • Безопасность (никто не увидит твой код и секреты)
  • Минимальные расходы (VPS дешевле подписки на облачный CI)

Что такое Woodpecker CI и как он работает

Woodpecker CI — это лёгкий, open-source CI/CD-сервер с минимальными требованиями и очень понятной архитектурой. Он вырос из Drone CI (форк), но развивается своей дорогой и поддерживает современные фишки.

Архитектура в двух словах

  • Woodpecker Server — основной сервис, который слушает вебхуки от твоего Git-сервера (GitHub, Gitea, GitLab, Bitbucket и др.), хранит настройки и управляет пайплайнами
  • Woodpecker Agent — исполнитель задач (build runner). Может быть один или несколько, можно запускать на разных машинах или контейнерах
  • Пайплайны описываются в YAML-файле .woodpecker.yml прямо в репозитории
  • Всё работает через Docker, поэтому легко запускать любые окружения и зависимости

Алгоритм работы:

  1. Ты пушишь код в репозиторий
  2. Woodpecker получает вебхук, видит изменения
  3. Считывает .woodpecker.yml, запускает пайплайн в агенте
  4. Агент запускает контейнеры, выполняет шаги
  5. Всё логируется, результаты отображаются в веб-интерфейсе

Почему Woodpecker CI?

  • Очень лёгкий и быстрый
  • Поддерживает плагины, кастомные шаги, секреты
  • Можно запускать на любом VPS (Linux, ARM, x86)
  • Не требует гигантских ресурсов
  • Интегрируется с большинством Git-серверов
  • Простой веб-интерфейс

Официальный сайт: https://woodpecker-ci.org/

Быстрая и простая установка Woodpecker CI на VPS

Сначала тебе понадобится VPS или выделенный сервер. Если ещё не выбрал — вот VPS или выделенный сервер. Для теста хватит даже самого дешёвого тарифа (1-2 ГБ RAM, 1 CPU).

Минимальные требования

  • Linux (Ubuntu/Debian/CentOS/Alpine — без разницы)
  • Docker (обязательно)
  • Доступ к своему Git-серверу (GitHub, Gitea, GitLab и т.д.)
  • Открытые порты 80/443 (или любой другой для веб-интерфейса)

Установка Docker (если ещё не стоит)


curl -fsSL https://get.docker.com | sh

Запуск Woodpecker Server и Agent через Docker Compose

Создаём файл docker-compose.yml (можно в домашней папке):


version: '3'

services:
  woodpecker-server:
    image: woodpeckerci/woodpecker-server:latest
    container_name: woodpecker-server
    restart: always
    ports:
      - "8000:8000"  # Веб-интерфейс
      - "9000:9000"  # RPC для агентов
    environment:
      - WOODPECKER_OPEN=true
      - WOODPECKER_HOST=http://your-server-ip:8000
      - WOODPECKER_GITEA=true
      - WOODPECKER_GITEA_URL=https://your.gitea.server
      - WOODPECKER_GITEA_CLIENT=your_gitea_oauth_client
      - WOODPECKER_GITEA_SECRET=your_gitea_oauth_secret
      # или для GitHub/GitLab/Bitbucket свои переменные
    volumes:
      - woodpecker-data:/var/lib/woodpecker

  woodpecker-agent:
    image: woodpeckerci/woodpecker-agent:latest
    container_name: woodpecker-agent
    restart: always
    depends_on:
      - woodpecker-server
    environment:
      - WOODPECKER_SERVER=woodpecker-server:9000
      - WOODPECKER_AGENT_SECRET=supersecretkey
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

volumes:
  woodpecker-data:

Важно: Замени your-server-ip, your.gitea.server, your_gitea_oauth_client и your_gitea_oauth_secret на свои значения. Для других Git-сервисов смотри официальную документацию.

Запуск


docker-compose up -d

После этого веб-интерфейс будет доступен на http://your-server-ip:8000

Подключение к Git-серверу

  • Настраиваешь OAuth-приложение в своём Git-сервере (GitHub, Gitea, GitLab и т.д.)
  • Указываешь callback-URL: http://your-server-ip:8000/login
  • Вводишь client ID и secret в docker-compose.yml

После этого можно логиниться через свой Git-аккаунт.

Пример пайплайна .woodpecker.yml


pipeline:
  build:
    image: node:18
    commands:
      - npm install
      - npm run build
  test:
    image: node:18
    commands:
      - npm test

Пушишь файл в репозиторий — Woodpecker автоматически запустит сборку.

Плюсы и минусы: сравнение с другими CI/CD

Woodpecker CI GitHub Actions GitLab CI Drone CI
Лёгкий, open-source, работает где угодно, простая настройка, нет лимитов Удобно, интеграция с GitHub, но лимиты, очереди, приватность под вопросом Мощный, гибкий, но требует GitLab, может быть тяжеловесным Похож на Woodpecker, но менее свободен, сложнее настроить плагины
Работает даже на ARM и старых VPS Требует аккаунта GitHub, нет контроля над железом Можно поставить self-hosted, но ресурсов требует больше Требует лицензии для расширенных фич

Положительные кейсы:

  • Ты делаешь pet-проекты, хочешь быстро билдить и деплоить — Woodpecker идеально подойдёт
  • Нужен CI/CD для приватных репозиториев без лишних затрат
  • Есть специфические требования по окружению (например, rare Linux-дистрибутивы или ARM)
  • Автоматизация деплоя на свои сервера

Отрицательные кейсы:

  • У тебя нет доступа к серверу (VPS) — тут только облачные CI
  • Нужна интеграция с экзотическими сервисами, которых нет в плагинах (но можно написать свой)
  • Требуется масштабирование на десятки агентов — тут уже придётся подумать о Kubernetes или более сложной архитектуре

Типовые ошибки и мифы

  • Ошибка: Не открыты порты 8000/9000 — агенты не могут подключиться, веб-интерфейс недоступен
  • Ошибка: Не настроен OAuth — не можешь войти под своим Git-аккаунтом
  • Ошибка: Не примонтирован /var/run/docker.sock — пайплайны не стартуют
  • Миф: “Свой CI — это сложно, нужен DevOps” — на самом деле, с Docker Compose всё поднимается за 10 минут
  • Миф: “Это небезопасно” — если не открываешь сервер в интернет без защиты, всё ок. Используй HTTPS и секреты!

Похожие решения и альтернативы

  • Drone CI — предок Woodpecker, но менее свободен
  • Gitea Actions — если используешь Gitea, можно встроить CI прямо в него
  • Jenkins — олдскульный, мощный, но сложный в настройке
  • Concourse CI — контейнерный, но требует больше ресурсов

Статистика и сравнение

  • Woodpecker CI стартует за 1-2 секунды, билд пайплайна — столько же, сколько и в облачных CI
  • Потребление RAM — от 100 до 300 МБ на сервер, агент — 30-100 МБ
  • Можно запускать десятки проектов на одном VPS без тормозов
  • Ограничение только по ресурсам VPS (CPU/RAM/диск)

Интересные фишки и нестандартные применения

  • Запускать тесты под ARM на Raspberry Pi — просто ставишь агента на Pi
  • Делать nightly билды своих pet-проектов — cron-триггеры поддерживаются
  • Автоматический деплой контейнеров на свои сервера через ssh/scp
  • Интеграция с Telegram/Slack через плагины для уведомлений
  • Можно собрать свой marketplace плагинов (open-source)
  • Легко масштабировать: просто добавь ещё один агент на другой машине

Какие новые возможности открываются

  • Автоматизация всего процесса CI/CD без ограничений облака
  • Возможность запускать любые скрипты, даже нестандартные (например, сборка .deb/.rpm пакетов для своих серверов)
  • Интеграция с внутренними сервисами, которые не доступны из публичного облака
  • Эксперименты с инфраструктурой без риска блокировки аккаунта
  • Секреты и переменные хранятся только у тебя — безопасность на высоте

Выводы и рекомендации

Свой CI-сервер на базе Woodpecker CI — это реально круто, если хочешь:

  • Максимум контроля над сборкой и деплоем
  • Автоматизировать свои проекты без лишних затрат
  • Избавиться от очередей, лимитов и платных подписок
  • Учиться и экспериментировать с DevOps-инструментами

Всё, что нужно — это VPS (или выделенный сервер), Docker и немного времени. Woodpecker CI — отличный выбор для быстрых, лёгких и надёжных пайплайнов. А если захочешь перейти на что-то более сложное — опыт настройки своего CI всегда пригодится!

Официальная документация: https://woodpecker-ci.org/docs/

Если ещё не выбрал сервер — вот VPS и выделенные сервера для старта.

Автоматизируй, экспериментируй, экономь время и ресурсы — свой CI это свобода!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked