Instancia esclavo de Discourse con acceso offline

Antecedentes
Tenemos una instancia de Discourse alojada en la nube para la comunidad Ruby de Australia (me referiré a ella como Maestra). Dos veces al año organizamos eventos de RailsCamp. Es cuando pasamos un fin de semana completo juntos en un lugar remoto (50-150 personas por evento). A menudo hay poca o ninguna cobertura de telefonía móvil, lo que hace difícil la coordinación.

Estaba pensando que sería ideal tener una instancia de Discourse alojada en la red local durante el evento (me referiré a ella como Esclava). Podríamos usarla para publicar anuncios, horarios, compartir fotos, etc.

Dado que ya tenemos una comunidad en crecimiento en la Maestra, sería excelente aprovecharla. Por ejemplo, tu perfil ya estaría configurado cuando llegues al evento y tendrías una copia de todo el contenido.

Desafío
¿Cómo tener la instancia de Discourse Esclava funcionando junto con la Maestra cuando la Esclava está desconectada durante tres días?

Solución propuesta
Entiendo que Discourse no está diseñado para eso. Pero creo que hay una manera de adaptarlo a nuestras necesidades. Estoy interesado en sus ideas al respecto.

El plan:

  • Configuramos una instancia de Discourse Esclava en la red local durante el evento.
  • Justo antes del evento, hacemos una copia de seguridad de la Maestra y la restauramos en la Esclava.
  • En la Esclava:
    • Todas las categorías se marcarán como solo lectura.
    • Creamos una nueva categoría de lectura/escritura para el evento.
  • Después del evento, utilizamos un script en Ruby para transferir información de la Esclava a la Maestra:
    • Nuevos usuarios creados.
    • Todos los temas y publicaciones de la categoría creada para el evento.
  • Éxito.

Preguntas

  • ¿Ven algún problema con la solución propuesta?
  • ¿Pueden ver un enfoque mejor?

Sería genial permitir el acceso de escritura a todas las categorías en la Esclava, pero siento que el proceso de sincronización podría ser muy complicado. Además, eso podría ser confuso, ya que algunas personas aún podrían acceder a la Maestra si tienen cobertura.

4 Me gusta

Hello from a fellow Australian Rubyist… :wave:

This all sounds fine to me. To sync stuff up after the event I would recommend writing a small script that zooms through your read write categories and then makes API requests using our JSON API to create the topics / posts on the master.

I definitely recommend strongly against having any kind of merge topic scenario, it will be full of dragons and not worth the effort.

8 Me gusta

@antulik

Did you try anything for the same ?
I am into a similar thing where I need to take discourse offline with sync.
I have a master server and I will be having more than 100-200 slave instance. Slave instance can be online/offline but will be used by users. But whenever an offline instance comes online it should be able to sync with master server without creating conflicts and all update all the latest data. I do not want to create any code related changes as discourse keeps updating itself quite often and don’t want to break instance due to code changes.

I am thinking of tweaking postgresql to some extent. Other files related data can be synced using syncthing. But updating postgresql data is something which worries me because if i directly sync master data then the work done by offline user will get erased after the sync. How was your experience writing scripts for the same ?

1 me gusta

We didn’t do it yet as we had internet access at all event locations.