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 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
- Debian/Ubuntu based host (RPi, Laptop, ...)
- one USB port per 3d printer
- Recommended: network connectivity to host (if not, only local control possible)
- Optionally: one webcam per 3d-printer (needs additional USB ports)
- Recommended: ssh enabled on host (needed for ansible deployment)
- Docker installed https://docs.docker.com/engine/install/ubuntu/ / (TODO*: ansible playbook)
- Optionally: Portainer installed https://docs.portainer.io/start/install-ce/server/docker/linux / (TODO*: ansible playbook)
Deploy Octoprint with 2 printers
Manual deployment
- modify the docker-compose.yml according to your printers and webcams
- make sure each instance uses it's own port
- deploy the compose file on the hosts Portainer
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
*TODO: Push the snippets to GitHub or so, they look !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: