Recommend method of installation?

I’ll be in the market for a forum soon. Unlike PHP forums, Discourse doesn’t make me want to put down a small animal upon first impressions.

What I have Available

  • I’m sharing a dedicated server with one other person. (I’m not the owner)
  • Support for Rails applications
  • Jailed shell access (full access may be an option)

Other Info

  • Never worked with Ruby applications
  • What exactly is Docker?

Couple points you’ll want to consider:

  • 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:

  • Redis,

  • PostgreSQL 9.2 or newer,

  • Ruby 2.0 or later, with Rubygems

  • A working C compiler with libtools, bintools, etc.

  • ImageMagick, pngcrush

3 Likes

:+1: :rabbit: :gun:

I think you’ll be happy with Discourse, but you must be on the Docker install, it is the only one we support.

I come from a community that switched to Discourse a little over a year ago and has 3.2K active members on the forums alone.

I love it as a member of said community, but it doesn’t seem like its the most user friendly when it comes to installation. I suppose that’s the price to pay.

From a security standpoint, you would do note that Linux containers only prevent well-behaving applications from accidentally causing damage, they do not prevent intentional damage.

That being said, if you have a recent enough kernel with AUFS, add your user to the docker group and it should work.

Should probably also read this:

https://meta.discourse.org/t/advanced-troubleshooting-with-docker/15927

Why do you say that? I can install Discourse in 15 minutes and anyone can do it in 30… http://blog.discourse.org/2014/04/install-discourse-in-under-30-minutes/

As long as your server is Docker compatible it is quite easy.

I can see what you mean. Also i’m a bit confused about Docker. Its basically a virtual machine to host the rails application for my web server- to my understanding.

As for Docker’s services, it looks like its bills you monthly in order to continue using its services. Much like any other hosting provider, correct?

No, Docker is free software and runs on your server. It is not an external service.

That said, you can build a Docker “image” and distribute this through Docker’s image repository, and this may involve some costs, but Discourse does not use this feature.

3 Likes

Yes and no: What is a Container? | 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”.

1 Like

Thanks for the help everyone.

Turns out the latest version of CentOS (CentOS 7) comes with Docker support, so it looks like I’m set for that part.

Now to get over possible conflicts with SSH access.

1 Like

What SSH access conflicts are you afraid of? Should be straight forward: use the exposed SSH port if you want to connect from the outside…

Never used it before. That and its “Jailed Access”.