A partir del año que viene en el centro queremos empezar a trabajar en profundidad con eXeLearning uno de los problemas con los que nos encontramos es la integración con Moodle, aunque en este magnifico vídeo Álvaro Pablos nos comenta las tres posibilidades que tenemos, hemos querido proponer una cuarta en nuestro centro que es la publicación del contenido como una página web directamente en un alojamiento web. En nuestro caso tenemos un alojamiento de 100Gb en OVH sin limite de transferencia al mes, que nos cuesta unos 24€ al año.
Para facilitar la labor de los compañeros a la hora de publicar en el alojamiento del centro, hemos implementado esta solución que ahora vamos a presentar por si algún centro la quiere copiar. Los profesores simplemente tienen que subir a una carpeta compartida en Google Drive la carpeta que les genera eXeLearning con el material en HTML y automáticamente se sube al alojamiento de OVH en un plazo máximo de 2 minutos.
Aquí tenéis un vídeo que explica como los compañeros pueden subir contenido al alojamiento que tiene el IPEP Córdoba en OVH
Es importante tener en cuenta que necesitamos un servidor con linux (yo he usado ubuntu server), siempre conectado a internet, tiene que ser un ordenador x86, no puede ser una RaspeBerry (ARM) pues eXelearning no esta para esa plataforma.
- Creamos una carpeta en una cuenta de Google que luego compartiremos con el resto de profesores. En mi caso la estructura que he seguido es crear una carpeta que se llama exe, y dentro de ella carpetas de matematicas, lengua, etc… (mejor no usar tíldes) así le comparto a cada compañero solo la carpeta de su departamento para que haya menos posibilidades de errores de borrado o mover carpetas, también se podría montar con una carpeta para cada profesor. Estas carpetas aparecerán luego en la ruta de nuestra página. P.e. ipepcordoba.com/exe/matematicas…
- Los primero que tenemos que hacer es configurar rclone con nuestra cuenta de Google Drive donde hayamos creado la carpeta anterior y el ftp que usemos en nuestro alojamiento. Y probamos ambas conexiones con los comandos ls de rclone
- Una vez tenemos las conexiones creadas, vamos a probarlas antes de configurar el servicio que mantendrá la carpeta de google drive sincronizada con el alojamiento, para ello escribimos en consola:
rclone sync –dry-run ipepcord:/ ftp_ovh:www/exe/
vamos a explicarlo por partes para que ajustéis el comando a vuestro nombres de conexiones y rutas.
- sync significa el comando de sincronizado de rclone,
- –dry-run(Cuidado que wp sustituye los dobles guiones por un guión largo) indica que es una prueba simplemente se nos va a informar de lo que haría el programa pero no hará nada.
- ipepcord:/ indica el nombre de la conexión de google drive, que yo le he puesto ese nombre y la / indica la ruta de la carpeta a sincronizar, en mi caso tengo / porque la conexión ya la hice con la carpeta a sincronizar como carpeta base, lo normal es que no la hayáis hecho así, y tengáis que poner exe o el nombre que le hayáis dado a la carpeta en Google Drive.
- ftp_ovh:www/exe/ indica la conexión de ftp, en mi caso le puse de nombre ftp_ovh en rclone, y la ruta donde vamos a sincronizar, y esto si es muy importante, por norma general en los alojamientos las web van en una carpeta www y luego ya la carpeta que hayáis elegido que tenga de nombre en vuestro alojamiento, en nuestro caso exe
Al ejecutar el comando si tanto la carpeta de Google Drive como la del alojamiento tienen los mismos contenidos no saldrá nada, añadir un nuevo elemento en Google Drive y volver a ejecutarlo, os indicará las acciones que hubiese llevado a cabo si lo ejecutáis sin el –dry-run. Cuando veáis que todo funciona bien pasamos a la siguiente fase. Muy importante asegurarse bien que habéis puesto bien las rutas de las carpetas, ya que podríais borrar todo lo que tengáis en el alojamiento, moodle, wordpress, etc incluido. por eso es importante meterlo todo en una carpeta que se llame exe o como queráis y ejecutar los comandos para que solo toquen a partir de esa carpeta hacia abajo.
- Creamos desde consola un archivo en /etc/systemd/system/ en mi caso le he puesto de nombre rclone_sync.service con el siguiente contenido, si no tenemos entorno gráfico sudo nano /etc/systemd/system/rclone_sync.service:
[Unit]
Description=Google Drive (rclone sync to ftp ovh)[Service]
Type=simple
ExecStart=/usr/bin/rclone sync ipepcord:/ ftp_ovh:www/exe/ –log-level INFO –log-file /home/jamelrom/rclone_sync.log –config /home/jamelrom/.config/rclone/rclone.conf
Fijaos que la orden de ejecución es identica salvo por lo que añado al final –log-level INFO –log-file /home/jamelrom/rclone_sync.log –config /home/jamelrom/.config/rclone/rclone.conf
- lo marcado en rojo va a sacar un log muy completo para saber como esta funcionando la sincronización
- lo marcado en verde hará que la ejecución de rclone (que se realiza como usuario root) acceda a la configuración del usuario con el que hemos creado las conexiones, aunque si las creáis como usuario root no tendréis que añadir esto.
Tendréis que cambiar jamelrom por vuestro usuario.
- Creamos el archivo /etc/systemd/system/rclone_sync.timer (tiene que tener el mismo nombre que el archivo anterior, pero en vez de .service tener .timer) si estamos por consola sudo nano /etc/systemd/system/rclone_sync.timer con el siguiente contenido
[Unit]
Description=Temporizador rclone sync[Timer]
OnBootSec=1m
OnUnitActiveSec=1m[Install]
WantedBy=timers.target
Esto ejecutará el servicio de rclone_sync al minuto de arrancar la máquina (OnBootSec) y cuando termine, cuando vuelva a pasar 1 minuto (OnUnitActiveSec). Así nos aseguramos que cuando cualquier docente actualice su carpeta de Google Drive, en 1 minuto o menos estará subido dicho cambio en el alojamiento web.
Una vez tengamos los archivos creados, podemos reiniciar el equipo para que empiece a funcionar, o usar el comando sudo systemctl daemon-reload esto debería lanzar el temporizador que acabamos de crear
Otro comando que nos será útil es sudo systemctl list-timers –all esto nos mostrá en una tabla los servicios que hay en ejecución incluido el nuestro, así como el último lanzamiento y cuando es el próximo, ambos valores estarán siempre expresados en segundos en nuestro caso.
Una vez comprobado que todo esta bien, es bueno reiniciar el equipo y con sudo systemctl list-timers –all volver a comprobar que todo esta funcionando correctamente.