I also recent ran into an issue similar to @Sonosus, and found that it was being caused by the latest version of Ubuntu (20.04) coming preinstalled with OpenSSL 3.0.2. This situation may also be present with other versions of Ubuntu/Debian that come preinstalled with OpenSSL. If you’re encountering this you’ll likely want to compile an earlier version of OpenSSL from source (I used OpenSSL-1.1.1n), and then re-run the bundle install
command. Essentially, this error message is about OpenSSL >= 1.0.1, < 3.0.0, and turns out 1.1 is the only alternative.
You’ll also want to check what version of Ruby you’re using with ruby --version
Discourse still uses Ruby 2, so if you’re using Ruby 3.x or later you’ll need to use an earlier version. Depending on how you’re installing Ruby, you’re likely to run into a similar OpenSSL issue with installing an earlier version, so I would recommend using a version manager for Ruby here, and I’ve found that Ruby 2.7.6 is currently the best version to use with Discourse.
After installing a fresh instance of Ubuntu 20.04, here’s what I did to get bundle install
to run correctly:
Install Discourse Dependencies, asdf
, and Clone Discourse
bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)
sudo apt install build-essential checkinstall zlib1g-dev
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0
git clone https://github.com/discourse/discourse.git ~/discourse
Setup Database
Create role with the same name as your ubuntu system username :
sudo -u postgres createuser -s "$USER"
Install OpenSSL-1.1.1n from Source
wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
tar -zxf openssl-1.1.1n.tar.gz && cd openssl-1.1.1n
./config --prefix=/opt/openssl-1.1.1n --openssldir=/opt/openssl-1.1.1n shared zlib
make
make test
make install
sudo rm -rf /opt/openssl-1.1.1n/certs
sudo ln -s /etc/ssl/certs /opt/openssl-1.1.1n
I then added the following line to my .bashrc
file
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/openssl-1.1.1n/"
While we’re here, I also added the following lines for asdf
. $HOME/.asdf/asdf.sh
. $HOME/.asdf/completions/asdf.bash
Save and exit, and then
source ~/.bashrc
Install Ruby 2.7.6
asdf plugin add ruby
asdf install ruby 2.7.6
You might be good to run bundle install
now, however, I ran into a couple other issues during the Discourse installation process that I’ll mention here for reference in case these happen to anyone else.
An error occurred while installing mini_racer
While running bundle install
I kept running into after installing OpenSSL-1.1.1n and Ruby 2.7.6
An error occurred while installing mini_racer (0.6.1), and Bundler cannot continue.
Which can be solved by editing the following line in your local version of discourse/Gemfile:
And replacing it with
gem 'mini_racer', github: 'rubyjs/mini_racer', branch: 'refs/pull/186/head'
After this step I was able to get bundle install
to run successfully.
This is similar to an issue happening on MacOS that you can read more about here
No such file or directory - convert
In the later steps of installing Discourse, I also ran into the following issue when running bundle exec rake autospec
Failures:
1. AboutController.index should display the about page for logged in user when login_required is true
Failure/Error: expect(response.status).to eq(200)
expected: 200
got: 500
(comparted using ==)
#./spec/requests/about_controller_spec.rb:27:in 'block (3 levels) in <main>'
#./spec/rails_helper.rb:277:in 'block (2 levels) in <top (required)>
#---------------------
#---Caused by:---
# Errno::ENOENT
# No such file or directory - convert
# ./lib/letter_avatar.rb:105:inc ``'
This error means the ImageMagick
package is not installed (it provides the convert
binary)
Supposedly this script at the beginning of the Discourse install process should have all the necessary packages, but it looks like this one may have been excluded.
Finally, after installing ImageMagick
with sudo apt install imagemagick
I was able to get my Discourse server running successfully!
I hope this information is helpful to anyone who’s going through this process and having some trouble.