the only supported setup method involves Docker. If your server does not yet support Docker, installing it may be difficult. Using Docker requires root or root-equivalent privileges.
Docker is a wrapper around recent kernels’ LXC framework. It allows you to run applications in a container that is isolated from the rest of the operating system; almost like a virtual machine, except that LXC virtualizes certain kernel interfaces and data structures, not the hardware.
If you do run Discourse in a Docker container, be aware that the default setup assumes that it will be the only webserver running on the machine and will try to grab the HTTP and HTTPS port. It is, however, possible to chain Discourse behind another webserver such as Apache, and there’s a howto regarding this topic in this forum.
If you want to use Apache as the frontend server, you should definitely use the event MPM. The default prefork MPM can not deal efficiently with long-lived connections, and Discourse uses longpolling to push notifications from the server to active clients.
Installing Discourse without Docker is a bit of an adventure. It can be done but requires a fair bit of experience with general Linux admin, Ruby, and good Google-fu; and there is no official support. The biggest hurdle is that you will almost certainly require root privileges to install missing dependencies along the way; among other things, you will need:
PostgreSQL 9.2 or newer,
Ruby 2.0 or later, with Rubygems
A working C compiler with libtools, bintools, etc.
Yes and no: What is Docker? some call it a lightweight VM, it basically offers some of the advantages of virtualization, but comes along with a smaller memory footprint because the Docker images share the OS with the “host”.