Fedora LinuxでDiscourseを開発用にセットアップ

This guide has been tested against a fresh install of Fedora 31 and 33, but may work on older versions that also use dnf as the package management tool. This is not an official guide but may be useful for other developers using Fedora. This is largely based on the Ubuntu development guide, with changes for the different packages for dnf. The assumption is that you do not have any of the packages installed already, although most will be skipped by the tooling if it is already installed.

If you’re looking to install Discourse for a production environment, prefer the docker install instructions on github.

Install required system and development packages

sudo dnf update
sudo dnf install -y "@development-tools" git rpm-build zlib-devel ruby-devel readline-devel libpq-devel ImageMagick sqlite sqlite-devel nodejs npm curl gcc g++ bzip2 openssl-devel libyaml-devel libffi-devel zlib-devel gdbm-devel ncurses-devel optipng pngquant jhead jpegoptim gifsicle oxipng

Install required npm packages

sudo npm install -g svgo pnpm

Install and setup postgres

sudo dnf install postgresql-server postgresql-contrib
sudo postgresql-setup --initdb --unit postgresql
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo -u postgres -i createuser -s $USER

Install and setup redis

sudo dnf install redis
sudo systemctl enable redis
sudo systemctl start redis

Installing rbenv, ruby-build, and ruby

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
~/.rbenv/bin/rbenv init
printf 'export PATH="$HOME/.rbenv/bin:$PATH"\n' >> ~/.bashrc
printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.bashrc
source ~/.bashrc
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
# confirm the install is correct
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
rbenv install 2.7.1
rbenv global 2.7.1
rbenv rehash

Install Ruby dependencies

gem update --system
gem install bundler mailcatcher rails

Clone Discourse code

git clone https://github.com/discourse/discourse.git ~/discourse
cd ~/discourse

Install Discourse dependencies

bundle install
pnpm install

Create the required databases and load the schema

bundle exec rake db:create db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

Test installation by running the tests

bundle exec rake autospec

Run the application

bundle exec rails server

You should now be able to see the Discourse setup page at http://localhost:3000.

For further setup, see the existing official install guides.


This document is version controlled - suggest changes on github.

「いいね!」 27

rbenv、ruby-build、および ruby のインストール の rbenv-doctor スクリプトへの URL が機能しなくなりました(どうやらブランチが master から main にリネームされたようです)。正しいコマンドは次のとおりです。

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
「いいね!」 2

情報ありがとうございます @nicolas-jaussaud、OPを更新しました。

参考までに、現在は rbenv よりも chrubyruby-install を使用する方が好みです。

「いいね!」 2

Fedora ではデフォルトでファイルトランスポートが無効になっているため、bundle install を実行しようとすると問題が発生しました。

sprockets gem をインストールしようとするとエラーが発生し、メッセージは次のように終わります。

transport 'file' not allowed

正しい方法はわかりませんが、一時的に安全でないトランスポートを許可することができます。

git config --global protocol.file.allow always
# ここで discourse setup を実行します
git config --global protocol.file.allow never

その後、db:migrate を実行すると、次のようなエラーが発生しました。

At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
Deprecation notice: `SiteSetting.enable_personal_messages` has been deprecated. Please use `SiteSetting.personal_message_enabled_groups` instead. (removal in Discourse 3.0)
At /home/hhyyrylainen/Projects/discourse/lib/site_setting_extension.rb:199:in `public_send`
#<Thread:0x00007f94c3342600 /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:83 run> terminated with exception (report_on_exception is true):
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
    from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management/rails_61_compat.rb:8:in `current'
    from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:115:in `current_db_hostnames'
    from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:111:in `current_hostname'
    from /home/hhyyrylainen/Projects/discourse/lib/discourse.rb:232:in `handle_job_exception'
    from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:114:in `rescue in do_work'
    from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:113:in `do_work'
    from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'
/home/hhyyrylainen/.gem/ruby/3.2.0/gems/activerecord-7.0.4.3/lib/active_record/connection_handling.rb:309:in `connection_pool': ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished)
    from /home/hhyyrylainen/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:79:in `with_connection'
    from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:96:in `do_work'
    from /home/hhyyrylainen/Projects/discourse/lib/scheduler/defer.rb:85:in `block (2 levels) in start_thread'

マイグレーション完了後に発生したように見えるため、修正方法がわからず無視しましたが、幸い開発サイトは動作しました。

テスト環境では同じエラーは発生しませんでしたが、Fedora パッケージとしては利用できないように見える oxipng の不足に関するエラーが発生しました。

その後、他に問題は発生せず、Fedora 38 ではすべて概ね問題なく動作しました。ただし、以前に別のセットアップ手順を使用して rbenv をインストールしていました。

bundle exec rake autospec を実行すると、テストで失敗が 135 件ありましたが、開発環境はほぼ動作する状態になりました。

「いいね!」 2

以前、開発者バージョンは動作させることができましたが、本番バージョンは私には難しすぎました。

Fedora 40 Workstation にインストールするためにこのガイドに従いましたが、ディストリビューションのインストールに oxipng を追加する必要がありました。
sudo dnf install oxipng

「いいね!」 3

お知らせいただきありがとうございます。このコミットでドキュメントを更新しました: https://github.com/discourse/discourse-developer-docs/commit/eb51e543efb91b4efb1974625e69c41846832039。

「いいね!」 1

Fedora 41 で本日インストールした後、localhost:3000 に接続して登録をクリックすると、以下の問題が発生して行き詰まっています。
「セットアップ中に管理者メールが定義されていません」というメッセージが表示され、管理者メールの追加方法が示されています。

この手順に従って管理者アカウントを追加しようとしましたが、./launcher enter app を使用した際に 2 つのエラーが発生したため、成功しませんでした。
1° 最初に解決したエラーは、「app.yml ファイルが存在しない」というものでした。-> サンプルフォルダから sampleapp.yml をコンテナフォルダにコピーし、メールアドレスを追加するように変更してから、/var/discourse/launcher rebuild app で再構築しました。
2° 解決していない 2 つ目のエラーは次のとおりです。
デーモンからのエラー応答: コンテナ ‘app’ が見つかりません
管理者を作成するために rake コマンドを使用すると、rakefile が見つからないと表示されます。

どなたか助けていただけますか?

このインストールではDockerを使用しないため、コンテナに入ることはできません。

Discourseフォルダから、このコマンドで管理者の作成を試してください。

bin/rails admin:create
「いいね!」 1

ココナッツさん、迅速かつ効率的なご対応ありがとうございます!

コマンドを実行したところ、「gem bunder missing」と表示されました。これは、gem install bundler -v 2.6.2 でインストールした後、貴殿のソリューションを正常に適用できたためです!

「いいね!」 2

ローカルインストールを試したところ、pgvector で問題が発生しました。これは Fedora 42 と Postgres16 で発生しています。パッケージ化された pgvector のバージョンは 0.6.2 で、より新しいバージョンを取得するにはソースからコンパイルする必要があるようです。

その後、pgvector のビルド中に競合が発生しました。これは postgresql-private-devel パッケージが必要で、libpq-devel と競合する要求がありました。

以下の手順で解決しました。

  •  sudo dnf install postgresql-server-devel --allowerasing
    
  • pgvector をビルド
  • インストールされているバージョンを確認
    sudo -u postgres psql discourse_development -c "SELECT * FROM pg_available_extensions WHERE name = 'vector';"
    
  •  sudo systemctl restart postgresql
    
「いいね!」 2