Configurar Discourse para desarrollo en Fedora Linux

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 Me gusta

En Instalación de rbenv, ruby-build y ruby, la URL del script rbenv-doctor ya no funciona (aparentemente la rama ha sido renombrada de master a main), el comando correcto ahora es:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash
2 Me gusta

Gracias por la información @nicolas-jaussaud, he actualizado el OP.

Para tu información, ahora prefiero usar chruby y ruby-install en lugar de rbenv.

2 Me gusta

Me encontré con un problema al intentar ejecutar bundle install, ya que Fedora ahora tiene deshabilitado el transporte de archivos por defecto.

El error ocurre al intentar instalar la gema sprockets y termina con el mensaje:

transport 'file' not allowed

No sé cuál es la forma correcta de hacer esto, pero puedes permitir temporalmente el transporte inseguro:

git config --global protocol.file.allow always
# ejecuta la configuración de discourse aquí
git config --global protocol.file.allow never

Después de eso, me encontré con un error como este al ejecutar 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'

Parece que ocurrió después de que la migración terminara, así que como no pude averiguar cómo solucionarlo, lo ignoré, pero afortunadamente mi sitio de desarrollo parece estar funcionando.

Para el entorno de prueba, no obtuve el mismo error, pero sí un error sobre la falta de oxipng, que no parece estar disponible como paquete de Fedora.

Después de eso, no tuve más problemas, todo siguió funcionando más o menos bien en Fedora 38. Sin embargo, previamente había instalado rbenv usando algunas otras instrucciones de configuración.

Al ejecutar bundle exec rake autospec, obtuve algunas fallas en las pruebas (135), pero parece que tengo una configuración de desarrollo mayormente funcional.

2 Me gusta

Pude poner en marcha la versión de desarrollo hace algún tiempo, pero la versión de producción me resultó demasiado difícil. .

Acabo de seguir esta guía para instalar en Fedora 40 Workstation, tuve que añadir oxipng a las instalaciones de la distribución.
sudo dnf install oxipng

3 Me gusta

Gracias por informarnos, he actualizado la documentación en este commit: docs/fedora-setup: include oxipng package (#14) · discourse/discourse-developer-docs@eb51e54 · GitHub.

1 me gusta

Me he quedado atascado después de la instalación hoy en Fedora 41 con el siguiente problema cuando me conecto a localhost:3000 y hago clic en registrar:
“no se definieron correos electrónicos de administrador durante la configuración”; el mensaje proporciona cómo agregar un correo electrónico de administrador.

No he logrado agregar una cuenta de administrador con éxito siguiendo este procedimiento debido a 2 errores al usar ./launcher enter app:
1° El primer error resuelto fue: no hay archivo app.yml presente → Copié sampleapp.yml de la carpeta sample a la carpeta del contenedor, luego la modifiqué para agregar direcciones de correo electrónico, luego reconstruí con /var/discourse/launcher rebuild app
2° El segundo error no está resuelto:
Respuesta de error del demonio: No existe tal contenedor: app
Si uso los comandos rake para crear un administrador, me dice que no se encontró ningún rakefile

¿Alguien puede ayudarme, por favor?

Esta instalación no usa docker, por lo que no puedes entrar en un contenedor.

Intenta crear un administrador desde la carpeta de Discourse con este comando:

bin/rails admin:create
1 me gusta

Hola Coconut, eres rápido en responder y eficiente, ¡muchas gracias!
El comando devuelve gem bundler missing, que instalé con gem install bundler -v 2.6.2 y luego pude aplicar tu solución con éxito.

2 Me gusta

Acabo de intentar ejecutar una instalación local y encontré problemas con pgvector. Esto es en Fedora 42 y Postgres16. La versión empaquetada de pgvector es 0.6.2 y parece que necesito compilar desde la fuente para obtener una más reciente.

Luego encontré conflictos al intentar compilar pgvector, que parece requerir el paquete postgresql-private-devel que tenía solicitudes conflictivas con libpq-devel.

Lo resolví:

  •  sudo dnf install postgresql-server-devel --allowerasing
    
  • Compilar pgvector
  • Comprobar la versión instalada
    sudo -u postgres psql discourse_development -c "SELECT * FROM pg_available_extensions WHERE name = 'vector';"
    
  •  sudo systemctl restart postgresql
    
2 Me gusta