Stuck setting up drone server despite reading many tutorials

Hi, I am new to drone ci, and I tried to read the documentation to get it set up but did not have much success.

I tried to follow some tutorials, in particular this one but always got stuck at some point. Here’s what I did:

I created an OAuth application in Github. I did not really understand what the Authorization Callback URL is for, and if I change it to different things nothing happens. Also don’t know what the Homepage URL is for.

I launched an EC2 instance on AWS. I ssh’d into it and installed Docker and drone. Then I wrote a big command setting some environment variables and I think starting the drone server. At this point I don’t know what to do, and the tutorial simply says: “Your instance should now be up and running, simply log in and use it!”

What does it mean to log in and use it.

I found the drone docs to be very short and not very beginner friendly. I’ve set up Circle CI before and I did it pretty easily. I am willing to write up a detailed tutorial but first I need to understand how to get this to work.

I tried to follow some tutorials, in particular this one but always got stuck at some point. Here’s what I did:

Have you taken a look at our official installation instructions?
https://docs.drone.io/server/provider/github/

Once installed, have you tried our quick start to setup your first pipeline?
https://docs.drone.io/quickstart/docker/

I found the drone docs to be very short and not very beginner friendly.

I am always interested in feedback to improve our documentation, however, there is no actionable feedback in this thread. What specifically in our official documentation is too short or not descriptive enough? Which pages did you read and what did you find confusing about them?

I’ve set up Circle CI before and I did it pretty easily.

Circle CI is a managed service which means you do not need to install a server or agents. Drone, on the other hand, is self-hosted which means setup is more complicated because you need to install, configure and run the software on your own servers. This is not an apples to apples comparison.

Sure I’ve looked at the official documentation; because it wasn’t enough I searched out alternative tutorials. As an example of actionable feedback, why isn’t there an actual real-world example of the setup instructions? Part of the documentation is “Start the server”, and there is a docker run command with lots of environment variables set to placeholders. How are these placeholders related to the inputs to the Github OAuth form filled out in the previous step (other than the obvious client ID and secret)?

For dev ops people, I think the succinctness of the documentation is probably well-received; but what about for people that don’t do this sort of thing all the time?

In particular, I don’t see any documentation laying out the core concepts of how drone ci actually works; how it is integrated with Github OAuth exactly; again this sort of stuff is probably obvious to some people, but not to everyone.

And again, in my case, I think I have the server running in EC2. The first instruction in the docker quickstart says: “First, navigate to your Drone server URL in your browser. If you are not already authenticated, Drone will redirect you to GitHub to login.” How do I know if the drone server is actually running?

When I run the huge docker run command, I get a hash of some sort as output. What is this output? What did the command do actually?

Perhaps this is by design and intentional, but you can’t really say that anyone can just read the docs and get things up and running; it is assumed the user already knows a few things, so the documentation is definitely not beginner friendly.

Thanks for providing more actionable feedback. Some follow-up questions / comments below:

why isn’t there an actual real-world example of the setup instructions?

The example command in step 4 is a real world command. Are you suggesting we use sample values instead of variable names? We use variable names by design because it prevents people from copy / pasting the command and using as-is.

We tried using sample values in the past and this ended up causing problems because so many people would copy / paste without replacing the sample values. This caused a lot of problems and created support burden.

This is the challenge with documentation. An approach that may benefit some users may cause confusion or be more error prone to other users.

If you have examples of (complex) systems that do a good job documenting installation commands, without being subject to the copy / paste issues described above, please post links so we can take a look and see if there is anything we can learn / borrow.

How are these placeholders related to the inputs to the Github OAuth form filled out in the previous step

The placeholders in the sample command are described in step 3. Do you have any suggestions for making this more clear?

In particular, I don’t see any documentation laying out the core concepts of how drone ci actually works; how it is integrated with Github OAuth exactly; again this sort of stuff is probably obvious to some people, but not to everyone.

Fair point.

Drone does not have its own login. Instead you Login with your GitHub account which is why you have to configure oauth2.

When I run the huge docker run command, I get a hash of some sort as output. What is this output? What did the command do actually?

The documentation should probably state that a working knowledge of Docker is a prerequisite to installing this software.

it is assumed the user already knows a few things, so the documentation is definitely not beginner friendly.

This is true and we should do a better job of documenting prerequisites.

For dev ops people, I think the succinctness of the documentation is probably well-received; but what about for people that don’t do this sort of thing all the time?

I agree.

It is important to remember that writing documentation that targets a wide audience requires a significant time investment and takes many iterations. When we write documentation the first draft may not appeal to a broad audience — this is because we are constrained by time and resources, because we may not know enough about our audience and their skill levels, and because we prefer to release early and gather feedback. Over time we collect feedback (like yours) and make improvements to appeal to a wider audience with varying backgrounds and experience levels.