- Home »

Собственный 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, поэтому легко запускать любые окружения и зависимости
Алгоритм работы:
- Ты пушишь код в репозиторий
- Woodpecker получает вебхук, видит изменения
- Считывает
.woodpecker.yml
, запускает пайплайн в агенте - Агент запускает контейнеры, выполняет шаги
- Всё логируется, результаты отображаются в веб-интерфейсе
Почему 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 это свобода!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.