A quick Drone Installation with NPM (Nginx Proxy Manager) and Let's Encrypt

In this topic, We will address A quick installation using Docker-compose with Drone-Server, NPM with Let’s Encrypt certificate.

We assume you already have a Linux host with docker installed.

Here is an example of a docker-compose with Drone-Server and Nginx Proxy Manager:

version: '3.8'
services:
  drone-server:
    image: drone/drone:latest
    container_name: drone
    volumes:
        - CHANGE_ME:/var/lib/drone/
        - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    environment:
        - DRONE_DEBUG=true
        - DRONE_LOGS_TRACE=true
        - DRONE_ORGS=CHANGE_ME
        - DRONE_RUNNER_CAPACITY=20
        - DRONE_AGENTS_ENABLED=true
        - DRONE_GITHUB_SERVER=https://github.com
        - DRONE_GITHUB_CLIENT_ID=CHANGE_ME
        - DRONE_GITHUB_CLIENT_SECRET=CHANGE_ME
        - DRONE_USER_CREATE=CHANGE_ME
        - DRONE_RPC_SECRET=CHANGE_ME
        - DRONE_OPEN=false
        - DRONE_GITHUB=true
        - DRONE_ADMIN_ALL=false
        - DRONE_SERVER_HOST=drone.vinicima.com #CHANGE_ME
        - DRONE_SERVER_PROTO=http
        - DRONE_CONVERT_MULTI=false
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: npm
    ports:
        - 80:80
        - 443:443
        - 81:81
    environment:
        - X_FRAME_OPTIONS="sameorigin"
    volumes:
        - CHANGE_ME:/data
        - CHANGE_ME:/etc/letsencrypt
        - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped

Obs: Remember to change the variables according to your environment.

Run docker-compose:

#docker-compose up -d

After both Dockers are running, go to your host address on port 81:
http://yourhostaddress:81

Default Admin User:

Email:    admin@example.com
Password: changeme

Creating a Let`s Encrypt certificate:

Go to SSL Certificates, Add SSL Certificate and select Let`s Encrypt:

Obs: In this example, I’m using Cloudflare. However, NPM has support for other DNS Providers, configure it according to your preference.

Click Save, and After This, go to Hosts and then Proxy Hosts:

Add Proxy Host:
image

And the Domain Names:

SSL tab:
image

Then Just Save and Ready your drone-Server with Web-proxy with SSL configured:

image

4 Likes

If you prefer a video version of these instructions, here is how you can secure your docker containers using Let’s Encrypt and Nginx Proxy Manager. These two are awesome combinations.