October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk9 min

How to Set Up Continuous Integration Pipelines with Drone on a VPS

Deploy Drone CI on an Ubuntu VPS by running the server and Docker runner as Compose services, securing them with HTTPS and a shared RPC secret, then activating a repository and testing a pipeline.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Run Drone as two Docker containers on your VPS: a server that handles the web interface, repository events and scheduling, and a Docker runner that executes each build. Put the server behind HTTPS, give both containers the same RPC secret, and grant the runner access to the host Docker socket. The procedure below uses Ubuntu 22.04 or 24.04, Docker Compose, the drone/drone:2 server image and the drone/drone-runner-docker:1 runner image.

Use a real DNS name and a trusted certificate for a production installation. A raw IP address, plain HTTP or an ngrok tunnel is suitable only for temporary experiments. Keep the Docker socket risk in mind: a compromised build can potentially control Docker and the VPS, so this stack belongs on a host you can dedicate and harden.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How Drone is arranged on a VPS

Drone is not a single container. The server stores configuration and build state, authenticates users through your Git provider and assigns jobs. The runner polls the server over Drone’s RPC interface, starts short-lived build containers and reports their logs and status.

Component Container image Purpose Important setting
Server drone/drone:2 Web UI, repository integration, scheduling and API Server host, protocol, OAuth credentials and RPC secret
Docker runner drone/drone-runner-docker:1 Executes pipeline steps as Docker containers RPC host, RPC protocol, matching RPC secret and capacity
Docker socket /var/run/docker.sock Lets the runner create and control build containers Mount only on a dedicated or tightly controlled host

The RPC secret is the trust boundary between server and runner. Generate it once and use the identical value in both services. If the values differ, the runner will usually remain offline even when the containers are otherwise healthy.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.

Prerequisites and sizing

VPS requirements

  • Ubuntu 22.04 or Ubuntu 24.04 is the recommended operating-system baseline in the deployment guidance.
  • Allocate at least 2 GB of RAM and 2 vCPUs. Increase both when builds are CPU- or memory-intensive or when several jobs run concurrently.
  • Use a real domain name such as ci.example.com, with DNS pointing to the VPS.
  • Plan for HTTPS at that domain. Keep the Drone container bound to localhost and let a reverse proxy terminate TLS.
  • Install Docker from Docker’s own apt repository, including the Compose plugin.

Network and account preparation

Allow SSH and the web ports used by your reverse proxy (normally 80 and 443). Do not expose Drone’s internal port directly to the internet. Create an OAuth application in the Git provider you plan to use and keep its client ID and secret available. The exact environment-variable names and callback URL differ by provider; confirm them in the current provider section of docs.drone.io before starting the stack.

Install Docker and Compose

Configure Docker’s official Ubuntu apt repository first, then install the engine, Buildx and the Compose plugin:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
docker --version
docker compose version

The last command must return a Compose v2 command-line plugin. If docker compose is missing, stop here and install the plugin rather than substituting an unrelated legacy docker-compose binary.

Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.

Create the deployment directory and RPC secret

  1. Create a directory that only administrators can modify:
    sudo mkdir -p /opt/drone
    sudo chown "$USER":"$USER" /opt/drone
    cd /opt/drone
  2. Generate a 16-byte secret represented as hexadecimal text:
    openssl rand -hex 16
  3. Save the output in /opt/drone/.env. Protect the file because it will contain the RPC secret and OAuth credentials:
    umask 077
    nano /opt/drone/.env
    chmod 600 /opt/drone/.env

A minimal .env file for a GitHub-backed example looks like this:

DRONE_RPC_SECRET=paste-the-output-of-openssl-here
DRONE_GITHUB_CLIENT_ID=your-oauth-client-id
DRONE_GITHUB_CLIENT_SECRET=your-oauth-client-secret

Those variable names are for GitHub. GitLab, Bitbucket and other providers use their own Drone variables. Do not copy the names blindly; use the provider-specific names documented for your chosen integration.

Write the Docker Compose file

Create /opt/drone/compose.yaml:

services:
  drone-server:
    image: drone/drone:2
    restart: unless-stopped
    ports:
      - '127.0.0.1:8080:80'
    volumes:
      - drone_data:/data
    environment:
      DRONE_SERVER_HOST: ci.example.com
      DRONE_SERVER_PROTO: https
      DRONE_RPC_SECRET: ${DRONE_RPC_SECRET}
      DRONE_USER_CREATE: username:admin,admin:true
      DRONE_GITHUB_CLIENT_ID: ${DRONE_GITHUB_CLIENT_ID}
      DRONE_GITHUB_CLIENT_SECRET: ${DRONE_GITHUB_CLIENT_SECRET}

  drone-runner:
    image: drone/drone-runner-docker:1
    restart: unless-stopped
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      DRONE_RPC_HOST: drone-server
      DRONE_RPC_PROTO: http
      DRONE_RPC_SECRET: ${DRONE_RPC_SECRET}
      DRONE_RUNNER_CAPACITY: 2

volumes:
  drone_data:

Replace ci.example.com with your real hostname. The server publishes port 80 inside the container but binds it to 127.0.0.1:8080 on the VPS, so only a local reverse proxy can reach it. The named volume preserves the server’s data when containers are recreated.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by

Why the runner uses the service name

In this single-Compose-file arrangement, drone-server resolves to the server container on Docker’s private network. The example therefore uses DRONE_RPC_HOST: drone-server and DRONE_RPC_PROTO: http for internal traffic. A runner on another host must use a resolvable server address and the protocol that endpoint actually serves; use HTTPS for traffic crossing host boundaries as the conservative choice. The precise remote-runner requirement should be checked against the current Drone documentation because community guides disagree on when HTTP is acceptable.

Capacity is a concurrency limit

DRONE_RUNNER_CAPACITY: 2 permits two jobs at once. A third job waits until one finishes. Set the value according to the VPS’s CPU, memory and build times; raising it does not add capacity to the machine and can make unrelated jobs fail under pressure.

Register the OAuth application and configure HTTPS

  1. In your Git provider, create an OAuth application for the Drone hostname. Use the callback URL and provider-specific scope required by the current Drone integration guide. Keep the client secret private.
  2. Put the resulting credentials in .env and ensure the Compose environment keys match your provider.
  3. Configure a reverse proxy with a certificate for ci.example.com. Proxy HTTPS requests to http://127.0.0.1:8080 and preserve the host and upgrade headers required by the proxy.
  4. Set DRONE_SERVER_PROTO=https and DRONE_SERVER_HOST to the public hostname, without a path.
  5. Check DNS and certificate issuance before asking users to log in. A certificate for a different hostname causes OAuth redirects and browser security checks to fail.

Do not publish port 8080 in a firewall rule or a cloud security group. The localhost binding in the Compose file is intentional.

Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.

Start the stack and verify both containers

  1. From /opt/drone, pull the selected image tags and start the services:
    docker compose pull
    docker compose up -d
  2. Confirm that both services are running:
    docker compose ps
  3. Follow server logs while opening the public URL:
    docker compose logs -f drone-server
  4. In another terminal, inspect the runner log:
    docker compose logs -f drone-runner
  5. Open the HTTPS hostname and sign in through the Git provider. If DRONE_USER_CREATE names your provider username, that account is created as the initial administrator.

A healthy runner should register with the server and become available in the Drone interface. A running container alone is not proof of registration; the runner must authenticate successfully over RPC.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Activate a repository and add your first pipeline

Activate the repository

  1. Sign in as the administrator.
  2. Allow Drone to synchronize repositories from the connected Git provider.
  3. Open the repository in Drone and activate it. Activation authorizes Drone to receive repository events and read the pipeline configuration.
  4. Commit a file named .drone.yml at the repository root and push it to the branch you want to build.

Use a small Docker pipeline as a smoke test

The following configuration checks that the runner can pull an image, execute commands and return logs. Replace the image with a versioned image appropriate for your project; pin production build images rather than relying on a moving latest tag.

kind: pipeline
type: docker
name: default

steps:
  - name: smoke-test
    image: alpine:3.20
    commands:
      - echo 'Drone runner is executing this step'
      - uname -a

trigger:
  branch:
    - main

Commit and push the file. Drone should create a build for the matching branch. Open the build in the UI and verify that the step log contains both commands. This test does not validate your application’s own toolchain; it validates the server-to-runner path and Docker execution.

Expand the pipeline deliberately

Add separate steps for dependency installation, linting, unit tests, packaging and deployment. Use a purpose-built build image for each toolchain, pass non-secret configuration as repository variables, and store credentials in Drone secrets rather than in .drone.yml. Keep deployment steps behind branch or event triggers so a pull request cannot publish unintentionally.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Security controls that matter on a VPS

Treat the Docker socket as privileged access

The runner mounts /var/run/docker.sock so it can start sibling containers. Docker socket access is effectively powerful control over the host: a malicious or compromised build may inspect other containers, mount host paths or launch a privileged container. Do not place unrelated tenants or sensitive services on the same VPS. Restrict repository membership, review pipeline changes, and isolate production workloads from the build host.

Protect credentials and the web endpoint

  • Keep .env mode 600 and never commit it to a repository.
  • Use HTTPS for the public UI and webhook endpoint.
  • Expose only the reverse proxy ports publicly; keep 8080 on localhost.
  • Use a firewall, SSH keys and timely Ubuntu security updates.
  • Store Drone’s /data volume on persistent disk and back it up before upgrades.
  • Rotate the RPC secret only as a coordinated change: update server and runner together, then restart both.

Pin versions and plan upgrades

The major tags in this guide (drone/drone:2 and drone/drone-runner-docker:1) identify the current image lines used by the deployment guidance. For a production installation, resolve and pin a current patch tag after checking the official Drone documentation and image registry. Recheck the release notes before upgrading the server and runner together.

Some older tutorials use images such as drone/drone:1.9.1, and the harryuan65/Drone-CI-Setup template pins old versions. Treat those examples as historical references, not as a production baseline. The current stable Drone release as of October 2026 was not established in the available material, so do not infer it from an old tutorial.

  1. Back up the Drone data volume and copy of compose.yaml and .env.
  2. Read the current server and runner installation notes for changed environment variables.
  3. Update image tags in a maintenance window.
  4. Run docker compose pull, then docker compose up -d.
  5. Watch both logs and run a representative pipeline before declaring the upgrade complete.

Troubleshoot the common failures

Symptom Likely cause What to check
Runner stays offline RPC secret mismatch Compare the exact value of DRONE_RPC_SECRET in both services, then recreate both containers.
Runner cannot resolve the server Incorrect RPC host or network For one Compose project, use the service name drone-server. For a separate host, use a resolvable DNS name or address.
RPC connection errors Protocol does not match the endpoint Set DRONE_RPC_PROTO to exactly http or https as appropriate; do not include ://.
Login redirects repeatedly or returns an OAuth error Host, protocol or callback mismatch Confirm the public hostname, HTTPS certificate and provider callback URL, then verify the provider-specific client ID and secret variable names.
Browser shows a 502 or connection refused Reverse proxy cannot reach Drone Run docker compose ps, confirm the server is listening on 127.0.0.1:8080, and inspect proxy and server logs.
Build remains pending No registered runner or all capacity is occupied Check runner logs and the runner status in Drone; lower the queue or raise capacity only when the VPS has enough resources.
Pipeline fails before the first command Runner cannot start a build container Check Docker daemon health, socket mounting and available disk, memory and CPU.

When this VPS design is appropriate

This design is a good fit when you need control over build data, can maintain a Linux host and are prepared to secure a Docker socket. It keeps the server and runner close together, which simplifies networking and avoids exposing the RPC endpoint publicly. The trade-off is operational responsibility: you manage TLS, operating-system updates, backups, image updates and the security impact of every pipeline.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If you need stronger tenant isolation, do not place untrusted repositories on the same Docker-socket runner. Use separate hosts or a runner architecture that does not grant builds direct control of the host daemon. Whichever model you choose, verify environment-variable names and version compatibility in the current Drone documentation before applying a community Compose example.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

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

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.