Portainer Stack: ```yaml --- version: "3.9" services: drone: container_name: drone image: drone/drone:2 restart: ${RST-unless-stopped} environment: - DRONE_GITEA_SERVER= - DRONE_GITEA_CLIENT_ID= - DRONE_GITEA_CLIENT_SECRET= - DRONE_RPC_SECRET= - DRONE_SERVER_HOST= - DRONE_SERVER_PROTO=https - DRONE_USER_CREATE=username:myUsername,admin:true volumes: - /etc/localtime:/etc/localtime:ro - /drone/data:/data ports: - 80:80 - 443:443 labels: - com.centurylinklabs.watchtower.enable=${AutoUpdate-true} drone_runner: container_name: drone_runner image: drone/drone-runner-docker:1 restart: ${RST-unless-stopped} environment: - DRONE_GITEA_SERVER= - DRONE_RPC_PROTO=https - DRONE_RPC_HOST= - DRONE_RPC_SECRET= - DRONE_RUNNER_CAPACITY=2 - DRONE_RUNNER_NAME=drone_runner - DRONE_RUNNER_SECRETS=docker_username:myUsername,docker_password:myPassword volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock ports: - 3000:3000 labels: - com.centurylinklabs.watchtower.enable=${AutoUpdate-true} - hide_container=true ```

[Drone Documentation](https://docs.drone.io/) is very detailed and well constructed. Read it to complete the stack above and to find examples on how to use it.
![drone01](../images/drone/drone01.png){: align=center width=500 } Environments: ``` TAG=latest RST=unless-stopped NET=bridge PUID=${PUID-1000} PGID=${PGID-1000} TZ=${TZ-Europe/Amsterdam} AutoUpdate=true ```