Guía para configurar el entorno de desarrollo de Discourse - Windows 11

Hola a todos,

Después de pasar un tiempo intentando poner en marcha un entorno de desarrollo funcional en Windows 11 / WSL2, pensé que compartiría los pasos que he seguido.

Esta es mi primera publicación aquí, ¡así que espero que sea útil para alguien! :slight_smile: Soy un administrador de sistemas acostumbrado a trabajar con Windows, por lo que ha sido un viaje interesante aprender Linux / Ruby / Discourse, etc.

Parece que algunas cosas han cambiado desde que se escribió la guía para Windows 10 y me encontré con algunos problemas en el camino (¡y por leer los comentarios, no fui el único!).

Puedo confirmar que las siguientes instrucciones funcionaron en mi instalación de Windows 11 Pro 22H2 y también en mi compilación de Windows Insider de la próxima versión de Windows 11 23H2 Release Preview.

Intentaré mantener las instrucciones lo más cortas y sencillas posible :slight_smile:

Preparación inicial

  1. Comprueba si hay actualizaciones de WSL e instálalas si corresponde. Desde una ventana de Windows Powershell, usa este comando: -

wsl.exe --update

  1. Instala Ubuntu en WSL2 usando este comando: -

wsl.exe --install -d Ubuntu

  1. Sigue las instrucciones en pantalla para crear el nombre de usuario y la contraseña.

  2. Una vez que estés en la terminal de Ubuntu, busca e instala todas las actualizaciones aplicables.

sudo apt update && sudo apt upgrade -y

  1. Ahora que todo está actualizado, podemos continuar :slight_smile:

Modificaciones de WSL

  1. Antes de clonar Discourse, ejecuta el siguiente comando para abrir el archivo /etc/wsl.conf: -

sudo nano /etc/wsl.conf

  1. En la parte inferior del archivo existente, añade lo siguiente, presiona Ctrl + X para guardar los cambios y presiona “Y” cuando se te solicite.
[automount]
enabled  = true
root     = /mnt/
options  = "metadata,umask=22,fmask=11"
  1. Cierra completamente la terminal de WSL y reiníciala para que estos cambios se apliquen correctamente.

  2. Ahora copia y pega el siguiente script de instalación de una línea para configurar el entorno de desarrollo. Dependiendo de la velocidad de tu ordenador y/o conexión a internet, esto puede tardar un poco en completarse, ¡así que ve a por un café o algo!

bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)

  1. Inicia el servicio de PostgreSQL: -
sudo service postgresql start

  1. Debido a que estamos ejecutando en WSL2, recibí un mensaje de advertencia sobre que la VM se estaba quedando sin memoria, lo que se puede solucionar ejecutando lo siguiente:
sudo sysctl vm.overcommit_memory=1

  1. Ejecuta lo siguiente para que redis-server se reinicie automáticamente: -
redis-server --daemonize yes
  1. Clona Discourse en la carpeta principal: -
git clone https://github.com/discourse/discourse.git ~/discourse

  1. Cambia a la carpeta de Discourse recién creada: -
cd ~/discourse

  1. Ejecuta los siguientes comandos (los hice una línea a la vez) (No estoy seguro de si esto es necesario o si se pueden copiar y pegar de una vez).
source ~/.bashrc

bundle install

yarn install

  1. Configura el entorno: -
RAILS_ENV=development bundle exec rake db:create db:migrate

  1. Inicia Discourse
DISCOURSE_HOSTNAME=localhost UNICORN_LISTENER=localhost:3000 bin/ember-cli -u

  1. Abre una terminal separada, cambia al directorio de Discourse usando cd ~/discourse y ejecuta rails admin:create - sigue las instrucciones para configurar tu cuenta de usuario administrador.

  2. Ve a http://localhost:4200 en un navegador web y Discourse debería estar funcionando :slight_smile:

10 Me gusta

Esta parte podría fallar. Si lo hace, haz clic en inicio, escribe activar o desactivar las características de Windows
Habilita la plataforma de máquina virtual
Reinicia

Reanuda los comandos.

4 Me gusta

¡Gracias por añadir esto, Andrew!

Una cosa muy importante con la que luché durante un tiempo para averiguar es que el repositorio debe estar en el sistema de archivos de WSL (es decir, NO en /mnt/*). De lo contrario, obtendrás todo tipo de errores extraños o tendrás una instancia muy, muy, muy lenta.

Se supone que esto es conocimiento común, pero por mi interacción con otros desarrolladores, resulta que no lo es.

2 Me gusta

Hola AliBenBongo :wave:

Gracias por esta guía.

Por curiosidad, ¿probaste Install Discourse on Windows for development pero tuviste problemas en Windows 11?

Seguí esta guía oficial hace menos de dos meses para configurar mi instalación de desarrollo en Win11, y funcionó sin problemas.

2 Me gusta

Sí, eso es interesante. De hecho, probé esa guía primero y me encontré con muchos mensajes de error. No recuerdo específicamente cuáles, pero algunos de los mensajes de error se mencionaron en la sección de comentarios de ese mismo hilo…

¡Creo que esto es algo bueno al final, ya que definitivamente tengo más conocimientos ahora al resolver el problema yo mismo y luego escribir esta guía! :slight_smile:

1 me gusta

Probablemente sea una pregunta tonta, pero tengo que preguntar. Suponiendo que pudiera poner esto en funcionamiento siguiendo tu guía. ¿Crees que es posible hacer un proxy inverso a un dominio?

¡No hay preguntas tontas, siempre podemos aprender algo nuevo! :slight_smile: No tengo mucha experiencia con cosas de proxy inverso, excepto por usar Nginx Proxy Manager en un contenedor Docker; quizás échale un vistazo, ya que hace la mayor parte del trabajo pesado e incluso genera certificados SSL gratuitos a través de Let’s Encrypt.

1 me gusta

Sospecho que vas a encontrar muchos puntos débiles. La instalación de desarrollo no está soportada para ejecutarse en producción.

Ejecutar la instalación estándar en la nube podría costar unos pocos dólares al mes, ¡pero ¿cuánto vale tu tiempo?! Con eso puedes estar funcionando en 30 minutos y terminar.

2 Me gusta

De hecho, eso es lo que he hecho. Empecé con communiteq, también probé DigitalOcean, pero finalmente me decidí por Contabo.

Creo que debo ser un lunático porque lo que intentaba hacer (solo para ver si podía), ejecutando Ubuntu en HyperV, incluso logré que la VM estuviera en la misma subred, ¡jaja!, pero no pude hacer que la verificación inicial del dominio funcionara. Creo que parte del problema es que ya estoy alojando un puñado de servicios en mi host de Windows y, en consecuencia, estoy reenviando los puertos 80/443 a la IP de esa máquina. Sé que está fuera del alcance de este hilo y no está soportado, pero ¿tienes alguna experiencia intentando hacer algo similar?

Cabe señalar que, si aún no tiene ningún subsistema instalado, este comando no funcionará.

1 me gusta

Me quedé atascado en la instalación de Ruby; esto me ayudó: ChatGPT - Ruby 3.2 Not Released

Hola, bienvenido :wave:

Si sigues los pasos de esta guía, no necesitarás instalar Ruby manualmente. El script “install-rails” lo hará automáticamente.

Para tu información, la última versión de Ubuntu, 24.04, no parece funcionar y tuve muchos problemas con ella

Así que al instalar con WSL, asegúrate de usar:

wsl.exe --install -d Ubuntu-22.04

Hola :waving_hand:, estoy usando WSL2 en Windows 11 y seguí los pasos de esta publicación para instalar una instancia de desarrollo local de Discourse. Me encontré con algunos problemas, pero finalmente pude resolverlos. Esto es lo que encontré:

(Al principio intenté con ubuntu-20.04 pero tuve un problema con la dependencia faltante libwebp7, que se requiere durante la instalación de ImageMagick. Parece que libwebp7 no está disponible para ubuntu-20.04) :right_arrow: Así que decidí usar ubuntu-22.04 en su lugar, lo cual funcionó para mí.

Siguiendo la guía de @AliBenBongo en la publicación inicial, todo antes del paso 9) funcionó como se esperaba. :+1:

En el paso 9) fueron necesarios algunos cambios:

Algunos de los recursos en https://raw.githubusercontent.com/discourse/install-rails/master/linux no están actualizados, parece:

  • Tuve que instalar Ruby 3.3.x en lugar de 3.2.1 cambiando ruby_version=“3.2.1” a ruby_version=“3.3.9”
  • Tuve que instalar Node 20 en lugar de 18 cambiando curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - a curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

En el paso 15) necesitas ejecutar pnpm install en lugar de yarn install.

Luego, al ejecutar las migraciones en el paso 16), arrojó un error para algunas migraciones que dependían de la extensión Postgres pgvector. Así que seguí la guía de instalación de Linux aquí: https://github.com/pgvector/pgvector/blob/master/README.md

:warning: Para estar seguro, es mejor copiar los comandos directamente del archivo readme. Sin embargo, si tienes curiosidad, esto es lo que funcionó para mí:

git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install

Después de eso, pude ejecutar las migraciones en el paso 16 y completé la instalación siguiendo el resto de la guía. :tada:

1 me gusta