What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
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.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
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.
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
- [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:
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorssudo 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
- 【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
- Create a directory that only administrators can modify:
sudo mkdir -p /opt/drone sudo chown "$USER":"$USER" /opt/drone cd /opt/drone - Generate a 16-byte secret represented as hexadecimal text:
openssl rand -hex 16 - 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.
Rank #3
- [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
- 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.
- Put the resulting credentials in
.envand ensure the Compose environment keys match your provider. - Configure a reverse proxy with a certificate for
ci.example.com. Proxy HTTPS requests tohttp://127.0.0.1:8080and preserve the host and upgrade headers required by the proxy. - Set
DRONE_SERVER_PROTO=httpsandDRONE_SERVER_HOSTto the public hostname, without a path. - 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
- 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
- From
/opt/drone, pull the selected image tags and start the services:docker compose pull docker compose up -d - Confirm that both services are running:
docker compose ps - Follow server logs while opening the public URL:
docker compose logs -f drone-server - In another terminal, inspect the runner log:
docker compose logs -f drone-runner - Open the HTTPS hostname and sign in through the Git provider. If
DRONE_USER_CREATEnames 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.
Activate a repository and add your first pipeline
Activate the repository
- Sign in as the administrator.
- Allow Drone to synchronize repositories from the connected Git provider.
- Open the repository in Drone and activate it. Activation authorizes Drone to receive repository events and read the pipeline configuration.
- Commit a file named
.drone.ymlat 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.
Best Value
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.
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
.envmode 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
/datavolume 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.
- Back up the Drone data volume and copy of
compose.yamland.env. - Read the current server and runner installation notes for changed environment variables.
- Update image tags in a maintenance window.
- Run
docker compose pull, thendocker compose up -d. - 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.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →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.
Quick Recap
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.




