 Autor: [Monika Wojciechowska](/autorzy/monika-wojciechowska) Specjalistka SEO i treści webowych · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Drone CI — self-hosted CI/CD

# Drone CI — lekki self-hosted CI/CD dla projektów Git

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS i serwery

GitHub Actions jest wygodne, ale każde uruchomienie pobiera minuty z puli i każde zużycie kosztuje przy prywatnych repozytoriach. Jenkins jest potężny, ale rozbudowany — kilkaset MB JAR, Groovy DSL i dziesiątki wtyczek do skonfigurowania. Drone CI to złoty środek: **kontenerowy CI/CD w Go**, konfigurowany jednym plikiem YAML, działający na VPS za kilkanaście złotych. Ten artykuł przeprowadza przez instalację Drone Server i Docker Runner, integrację z Gitea przez OAuth, definiowanie pipeline .drone.yml i zarządzanie sekretami.

## Instalacja Drone Server

Drone Server i Runner uruchamiamy przez Docker Compose. Server obsługuje UI, API i webhooki z repozytorium Git. Runner pobiera zadania z Servera i wykonuje je w kontenerach Docker.

\# docker-compose.yml
version: "3.9"

services:
  drone-server:
    image: drone/drone:2
    container\_name: drone-server
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./drone-data:/data
    environment:
      # Gitea OAuth (patrz nizej jak uzyskac)
      - DRONE\_GITEA\_SERVER=https://git.example.com
      - DRONE\_GITEA\_CLIENT\_ID=GITEA\_OAUTH\_CLIENT\_ID
      - DRONE\_GITEA\_CLIENT\_SECRET=GITEA\_OAUTH\_CLIENT\_SECRET
      # Konfiguracja serwera
      - DRONE\_RPC\_SECRET=losowy-secret-min-32-znaki
      - DRONE\_SERVER\_HOST=drone.example.com
      - DRONE\_SERVER\_PROTO=https
      # Opcjonalnie: tylko wybrani admini
      - DRONE\_USER\_FILTER=myuser,teamuser

  drone-runner:
    image: drone/drone-runner-docker:1
    container\_name: drone-runner
    restart: unless-stopped
    depends\_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE\_RPC\_PROTO=http
      - DRONE\_RPC\_HOST=drone-server
      - DRONE\_RPC\_SECRET=losowy-secret-min-32-znaki
      - DRONE\_RUNNER\_CAPACITY=2      # max 2 rownoczesne pipeline
      - DRONE\_RUNNER\_NAME=vps-runner

## Konfiguracja OAuth w Gitea

Drone loguje użytkowników przez OAuth z serwera Git. W Gitea tworzysz Application OAuth2 w ustawieniach konta lub (jako admin) globalnie.

\# W Gitea UI:
# Settings → Applications → OAuth 2.0 Applications → Create OAuth2 Application
# Application Name: Drone CI
# Redirect URI: https://drone.example.com/login
# Kliknij "Create Application"
# Skopiuj Client ID i Client Secret → wklej do docker-compose.yml

# Dla GitHub zamiast Gitea:
# github.com → Settings → Developer Settings → OAuth Apps → New OAuth App
# Homepage URL: https://drone.example.com
# Authorization callback URL: https://drone.example.com/login
# Zamien DRONE\_GITEA\_\* na DRONE\_GITHUB\_CLIENT\_ID i DRONE\_GITHUB\_CLIENT\_SECRET

# Uruchom Drone
docker compose up -d
# Otwórz https://drone.example.com → zaloguj sie przez Gitea OAuth

## Plik .drone.yml — pipeline stages i steps

Pipeline definiujesz w pliku `.drone.yml` w root repozytorium. Każdy step wykonuje się w oddzielnym kontenerze Docker — możesz używać dowolnego obrazu z Docker Hub lub prywatnego rejestru Harbor.

\---
kind: pipeline
type: docker
name: default

# Trigger: tylko na push do main i PR
trigger:
  branch:
    - main
    - develop
  event:
    - push
    - pull\_request

steps:
  # Step 1: instalacja zależności
  - name: install
    image: node:20-alpine
    commands:
      - npm ci

  # Step 2: testy (równolegle z lintem po zainstalowaniu)
  - name: test
    image: node:20-alpine
    depends\_on:
      - install
    commands:
      - npm test

  # Step 3: lint (równolegle z testem)
  - name: lint
    image: node:20-alpine
    depends\_on:
      - install
    commands:
      - npm run lint

  # Step 4: build i push do Harbor (tylko main)
  - name: docker-build
    image: plugins/docker
    depends\_on:
      - test
      - lint
    settings:
      registry: harbor.example.com
      repo: harbor.example.com/myproject/myapp
      tags:
        - latest
        - ${DRONE\_COMMIT\_SHA:0:8}
      username:
        from\_secret: harbor\_user
      password:
        from\_secret: harbor\_password
    when:
      branch:
        - main
      event:
        - push

  # Step 5: deploy przez SSH (tylko main)
  - name: deploy
    image: appleboy/drone-ssh
    depends\_on:
      - docker-build
    settings:
      host: prod.example.com
      username: deploy
      key:
        from\_secret: ssh\_deploy\_key
      script:
        - docker pull harbor.example.com/myproject/myapp:latest
        - docker compose -f /opt/myapp/docker-compose.yml up -d myapp
    when:
      branch:
        - main
      event:
        - push

## Zarządzanie sekretami

\# Instalacja Drone CLI
curl -L https://github.com/harness/drone-cli/releases/latest/download/drone\_linux\_amd64.tar.gz \\
  | tar zx
sudo mv drone /usr/local/bin/drone

# Konfiguracja CLI (token z Settings → User → API Keys)
export DRONE\_SERVER=https://drone.example.com
export DRONE\_TOKEN=twoj-token-api

# Dodaj sekrety (dla konkretnego repozytorium)
drone secret add --repository owner/myapp --name harbor\_user --data robot\\$ci
drone secret add --repository owner/myapp --name harbor\_password --data ROBOT\_TOKEN
drone secret add --repository owner/myapp --name ssh\_deploy\_key --data @/path/to/id\_rsa

# Secrets globalne (dla wszystkich repo organizacji)
drone orgsecret add myorg harbor\_user robot\\$ci

# Lista sekretów
drone secret ls --repository owner/myapp

## Porównanie Drone CI vs Jenkins vs GitHub Actions

Cecha

Drone CI

Jenkins

GitHub Actions

Min. RAM

256 MB (server)

512 MB (JVM)

N/A (SaaS)

Koszt dla prywatnych repo

Koszt VPS

Koszt VPS

$4/msc (2000 min free)

Format konfiguracji

YAML (.drone.yml)

Groovy (Jenkinsfile)

YAML (.github/workflows/)

Izolacja kroków

Każdy step = kontener

Agenci, węzły, Docker

Każdy job = VM lub kontener

Trudność setup

Łatwa (Docker Compose)

Średnia (wiele wtyczek)

Brak (SaaS)

Marketplace wtyczek

Drone Plugins (~100)

Jenkins Plugins (1900+)

GitHub Marketplace (20k+)

Zgodność z GitHub Actions

Nie

Nie

Tak (natywne)

## Najczęstsze pytania

Czym jest Drone CI i czym się różni od Jenkins? +

Drone CI to lekki, kontenerowy CI/CD napisany w Go. Każdy krok pipeline wykonuje się w oddzielnym kontenerze Docker — brak globalnych wtyczek, pełna izolacja, deterministyczne środowisko. Jenkins to dojrzalsze narzędzie z bogatszym ekosystemem wtyczek i GUI, ale wymaga więcej zasobów (JVM) i konfiguracji. Drone jest prostszy w setup i idealny dla małych i średnich projektów, Jenkins lepszy dla złożonych enterprise pipeline.

Jak Drone CI zarządza sekretami? +

Drone Secrets to zmienne środowiskowe zaszyfrowane w bazie Drone Server. Definiujesz je przez UI (Settings → Secrets) lub CLI (drone secret add). W .drone.yml odwołujesz się przez from\_secret: nazwa\_sekretu. Sekrety można ograniczyć do konkretnych zdarzeń (np. tylko dla push do main) i repozytoriów. Drone nie loguje wartości sekretów — nawet w debug mode pojawiają się jako \*\*\*\*.

Czy Drone CI działa z Gitea i GitLab? +

Tak — Drone ma oficjalne integracje przez OAuth dla: GitHub, GitLab, Gitea, Gogs i Bitbucket. Konfiguracja wymaga stworzenia OAuth Application na serwerze Git i przekazania client\_id + client\_secret do Drone Server. Po zalogowaniu przez OAuth użytkownicy widzą tylko swoje repozytoria i mogą aktywować CI jednym kliknięciem.

Co to jest Drone Runner i ile ich potrzeba? +

Drone Runner to agent, który faktycznie wykonuje pipeline. Drone Server tylko przyjmuje webhooki i kolejkuje zadania. Runnerów może być wiele — na różnych maszynach lub na tej samej (z różnymi limitami równoczesnych zadań). Drone oferuje kilka typów runnerów: Docker Runner (najpopularniejszy), SSH Runner (wykonuje komendy przez SSH na serwerze docelowym), Exec Runner (natywnie na hoście) i Kubernetes Runner.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS pod Drone CI server + runner — Docker i tanie zasoby

VPS + Docker

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

ProSerwer.pl

Polski VPS pod Drone CI — pipeline w Polsce, zgodność z RODO

Polski VPS

[Aktywuj rabat →](/out/proserwer-pl)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/proserwer)

Mikr.us

Budżetowy VPS dla małych projektów z Drone CI i Gitea

Budżetowy

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

## Powiązane strony

-   [Gitea — self-hosted Git server](/baza-wiedzy/gitea-self-hosted-git)
-   [Jenkins CI/CD na VPS — instalacja i pipeline](/baza-wiedzy/jenkins-cicd-vps)
-   [Harbor — prywatny rejestr Docker](/baza-wiedzy/harbor-docker-registry)
-   [Wszystkie artykuły](/baza-wiedzy/)