IT/Software/Octoprint
Jump to navigation
Jump to search
Octoprint
An application to control (usb) 3d-printers over the network.
- send .stl over the network (no sd cards needed)
- setup and control the print
- monitor the progress of ongoing prints (optionally, webcams can be added to see the visual state)
Multi 3D printer support
- Octoprint only supports one printer per instance
- in order to support multiple printers, we can deploy multiple docker containers
- the different printers can then be assigned to their respective instance
- this example sets up 2 instances for 2 priners, modify it to your needs
Requirements
Hardware
- Debian/Ubuntu based host (RPi, Laptop, ...)
- one USB port per 3d printer
- Recommended: network connectivity to host (if not, only control over localhost is possible)
- Optionally: one webcam per 3d-printer (needs additional USB ports)
Software
- Recommended: ssh enabled on host (required for ansible deployment >>
sudo apt install openssh-server -y
) - Docker installed https://docs.docker.com/engine/install/ubuntu/ / (TODO*: ansible playbook)
- Recommended: Portainer installed https://docs.portainer.io/start/install-ce/server/docker/linux / (TODO*: ansible playbook)
Deploy Octoprint with 2 printers
General
- modify the docker-compose.yml according to your printer and webcam devices (e.g. /dev/ttyACM0 /dev/video0)
- make sure each instance uses it's own port (default port 81 and 82)
Manual deployment with Portainer
- deploy the compose file on the hosts Portainer as a stack
- access and configure at http://<HOST_IP>:81/ http://<HOST_IP>:82
Plain Docker Compose without Portainer
- copy the compose file to /srv/docker/octoprint/docker-compose.yml on the host
cd /srv/docker/octoprint
- start the containers with
sudo docker compose up -d
- check if containers are running
sudo docker ps
- check for any errors with
sudo docker compose logs -f
- access and configure at http://<HOST_IP>:81/ http://<HOST_IP>:82
*TODO: Push the snippets to GitHub or so and link here, looks !nice...
version: '3.9'
services:
octoprint-1:
image: octoprint/octoprint
restart: unless-stopped
ports:
- 81:80
# devices:
# use `python -m serial.tools.miniterm` to see what the name is of the printer, this requires pyserial
# - /dev/ttyACM0:/dev/ttyACM0
# - /dev/video0:/dev/video0
volumes:
- octoprint-1:/octoprint
# uncomment the lines below to ensure camera streaming is enabled when
# you add a video device
#environment:
# - ENABLE_MJPG_STREAMER=true
octoprint-2:
image: octoprint/octoprint
restart: unless-stopped
ports:
- 82:80
# devices:
# use `python -m serial.tools.miniterm` to see what the name is of the printer, this requires pyserial
# - /dev/ttyACM1:/dev/ttyACM0
# - /dev/video1:/dev/video0
volumes:
- octoprint-2:/octoprint
# uncomment the lines below to ensure camera streaming is enabled when
# you add a video device
#environment:
# - ENABLE_MJPG_STREAMER=true
volumes:
octoprint-1:
octoprint-2: