Controlar varias impresoras usando instancias Docker
Otra alternativa que nos gusta mucho es el uso de Docker para que la creación, uso y mantenimiento de instancias de Octoprint sea más versátil
Última actualización
Otra alternativa que nos gusta mucho es el uso de Docker para que la creación, uso y mantenimiento de instancias de Octoprint sea más versátil
Última actualización
A continuación os detallamos los componentes que vamos a necesitar, indicar que vamos a centrar esta guía basada en Raspberry Pi pero podemos usar cualquier otro "host" que soporte Docker.
Raspberry Pi 3B+ o superior, idealmente una 4 con 2Gb al menos de RAM
Tarjeta Micro SD y un lector de estas si nuestro ordenador no tiene lector integrado, con un mínimo de 8Gb aunque lo aconsejable son 16Gb o más dado que vamos a tener varias instancias... es aconsejable que esta SD sea de la máxima calidad y velocidad posibles
Una imagen de Raspberry PiOS (idealmente la lite). Descargaremos e instalaremos el Raspberry Pi Imager en nuestro ordenador que nos facilitará la tarea de generar la SD para nuestra Raspberry.
Un cliente SSH para conectar por terminal a nuestra Pi, aconsejamos Terminus ya que es multiplataforma y dispone de versión para teléfono/tablet... además de que tiene un interfaz sencilla y funcional.
Un scanner de red para nuestro teléfono/tablet para poder detectar si nuestra Pi se enlazó correctamente en nuesta red. En este caso aconsejamos Fing.
Un editor de textos como Visual Studio Code, Notepad++ o Atom. Es importante usar uno de estos ya que algunos como Word, Wordpad o editores con formato enriquecido pueden añadir caracteres de escape en los ficheros de configuración y no funcionar correctamente.
Obviamente un par de impresoras 3D al menos y un par de webcams si queremos controlar visualmente estas
Podemos usar la herramienta Raspberry Pi Imager para personalizar, crear y quemar la imagen de PiOS que es quizás la forma más sencilla.
Descargaremos e instalaremos el Raspberry Pi Imager en nuestro ordenador
Buscaremos la imagen de PiOS en Choose OS y dentro de Raspberry Pi OS (other) y seleccionaremos Raspberry Pi OS Lite (32 o 64 bits dependiendo del modelo que Raspberry que tengamos)
Abriremos Advanced Options (icono de engranaje) para configurar las opciones de nuestra Wifi si es necesario para ello dentro de las opciones para seleccionar el OS pulsaremos CTRL+SHIFT+X (Windows) o CMD+SHIFT+X (MAC). En la nueva ventana aparecerán nuevas opciones avanzadas, la parte importante es la de configuración de nuestra wifi donde seleccionaremos nuestro SSID, contraseña y país. También es aconsejable:
Habilitar SSH usando autentificación por password
Configurar Time Zone y nuestro layout del teclado
Elegiremos la SD y grabaremos la imagen.
Extraeremos de forma segura la SD y la colocaremos en nuestra Raspberry, al encenderla y pasados unos segundos ya podremos conectarnos a ella tal como indicamos en los siguientes puntos de la guia.
Si hemos hecho todos los pasos de forma correcta y configurado nuestra Wifi o conectado por cable nuestra Raspberry ya podremos mirando en nuestro router o mediante Fing encontrar la IP de nuestra Raspberry.
Si hemos realizado el proceso anterior tenemos nuestra Pi lista para conectarnos, para ello usaremos Terminus que es un cliente SSH multiplataforma y bastante intuitivo. Básicamente añadiremos un nuevo host, le daremos un nombre, IP, puerto (22) y el usuario y password por defecto (pi/raspberry).
Por seguridad es muy aconsejable que cambiemos el password por defecto de nuestra Pi. Para ello usaremos el comando passwd
Una vez ya tenemos acceso SSH otro de los pasos es asegurarnos que nuestro PiOS está actualizado, usaremos el siguiente comando:
Una vez finalizado el proceso procederemos a instalar Docker:
Daremos permisos a nuestro usuario pi a Docker y reiniciamos:
En un mundo ideal lo aconsejable es que conozcamos los comandos Docker para gestionar nuestras instancias... la realidad es que es mucho más sencillo y visual usar una interfaz/UI web para gestionarlas de una forma sencilla. En nuestro caso siempre usamos Portainer.
Para instalar Portainer lanzaremos desde el terminal los siguientes comandos:
Donde el primer comando docker pull descargará la imagen del container Portainer a nuestra Pi y el segundo, docker run, lo ejecutará.
Si todo ha ido bien ya tendremos nuestro container con Portainer funcionando y solamente deberemos acceder a el desde nuestro browser usando http://RaspberrypiIP:9000 donde RaspberrypiIP es la IP que encontramos en nuestro router o mediante Fing y usamos para conectar por SSH.
El primer paso del asistente de Portainer es para ajustar el password del usuario admin, no te aconsejo por ahora cambiar el nombre del usuario, solamente seguiremos las indicaciones y daremos sobre Create user.
El siguiente paso es el seleccionar el tipo de entorno de containers a gestionar. En nuestro caso seleccionaremos Docker y daremos sobre Connect.
De nuevo si todo ha salido según lo esperado ya tenemo nuestro Portainer gestionando nuestro entorno Docker funcionando!!!
Ya estamos cerca de poder tener nuestra multi instancia de Octoprint listo, el siguiente paso es identificar nuestras impresoras y cámaras para preparar nuestros contenedores.
Asumiendo que tengamos nuestras impresoras y webcams conectadas a nuestra Pi lanzaremos el siguiente comando:
Este comando debería de mostrarnos los puntos de montaje de nuestras impresoras:
Ya tenemos nuestro par de impresoras detectadas y nos anotaremos sus nombres añadiendo /dev/ a lo detectatado en el punto anterior:
Ahora haremos algo similar pero para detectar nuestras cámaras:
De los dispositivos detectados solamentete usaremos los dos últimos que son nuestras cámaras. La información importante es:
Ya tenemos todo detectado!!! ahora volveremos a nuestro Portainer.
De vuelta a nuestro Portainer iremos en STACKS y ADD STACK:
Esto abrirá el interfaz de Docker-Compose donde nos pedirá el nombre del stack el cual es aconsejable usar un nombre fácil de identificar si tenemos pensado usar otros containers en el futuro... en nuestro caso usaremos multiinstance.
En la parte de web editor section, vamos a escribir el Compose que podéis encontrar más abajo.
Por favor asegúrate que pones correctamente los parámetros de impresora y cámara detectados en el punto anterior.
Una vez completado el Compose daremos en Deploy the stack.
Mágicamente si todo ha ido bien las dos instancias Octoprint estarán listas... para verificarlo iremos a Containers.
En la siguiente captura podemos ver los containers levantados con el estatus RUNNING y el puerto usado por cada uno de ellos:
Ahora ya podemos comenzar a configurar nuestros nuevos Octorpint siguiendo nuestra guía.
Para acceder a cada instancia pondremos en nuestro navegador la http://RaspberrypiIP:5001 para acceder a nuestra instancia de la impresora 1 y http://RaspberrypiIP:5002 para acceder a la instancia de la impresora 2.
Esperamos que os fuera de ayuda!!!
Una vez cambiado reiniciaremos usando el comando sudo reboot