diff --git a/stack/klipper.yml b/stack/klipper.yml new file mode 100644 index 0000000..f816e85 --- /dev/null +++ b/stack/klipper.yml @@ -0,0 +1,41 @@ +version: "3" +services: + klipper: + hostname: klipper + image: mkuf/klipper:latest + devices: + - ${3d-printer-device}:${3d-printer-device} + volumes: + - /portainer/Files/AppData/Config/klipper/klipper/printer.cfg:/opt/printer_data/config/printer.cfg + - /portainer/Files/AppData/Config/klipper/klipper/logs:/opt/printer_data/logs + - /portainer/Files/AppData/Config/klipper/run:/opt/printer_data/run + - /portainer/Files/AppData/Config/klipper/gcode:/opt/printer_data/gcodes + restart: unless-stopped + networks: + - klipper + + moonraker: + hostname: moonraker + image: mkuf/moonraker:latest + ports: + - "7125:7125" + volumes: + - /portainer/Files/AppData/Config/klipper/moonraker/moonraker.conf:/opt/printer_data/config/moonraker.conf + - /portainer/Files/AppData/Config/klipper/moonraker/logs:/opt/printer_data/logs + - /portainer/Files/AppData/Config/klipper/run:/opt/printer_data/run + - /portainer/Files/AppData/Config/klipper/gcode:/opt/printer_data/gcodes + restart: unless-stopped + networks: + - klipper + + mainsail: + hostname: mainsail + image: mkuf/mainsail:latest + ports: + - "4070:80" + restart: unless-stopped + networks: + - klipper + +networks: + klipper: diff --git a/template/apps/klipper.json b/template/apps/klipper.json new file mode 100644 index 0000000..b6a9f79 --- /dev/null +++ b/template/apps/klipper.json @@ -0,0 +1,30 @@ +{ + "categories": [ + "Other", + "3d-printers", + "Tools" + ], + "description": "Klipper [Testing] Klipper is a 3d-Printer firmware. It combines the power of a general purpose computer with one or more micro-controllers. See the features document for more information on why you should use Klipper.", + "env": [ + { + "default": "/dev/ttymxc3", + "label": "3d-printer-device", + "name": "3d-printer-device" + } + ], + "logo": "https://raw.githubusercontent.com/pi-hosted/pi-hosted/master/images/drupal.png", + "name": "klipper-mainsail-moonraker", + "officialDoc": "https://hub.docker.com/r/mkuf/klipper", + "platform": "linux", + "preInstallScript": "install_klipper.sh", + "repository": { + "stackfile_arm32": "stack/klipper.yml", + "stackfile_arm64": "stack/klipper.yml", + "stackfile_amd64": "stack/klipper.yml", + "url": "https://github.com/pi-hosted/pi-hosted/" + }, + "restart_policy": "unless-stopped", + "title": "Klipper, Mainsail, Moonraker", + "type": 3, + "webpage": "https://hub.docker.com/r/mkuf/klipper" +} diff --git a/tools/install_klipper.sh b/tools/install_klipper.sh new file mode 100755 index 0000000..8253d1a --- /dev/null +++ b/tools/install_klipper.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +function error { + echo -e "\\e[91m$1\\e[39m" + exit 1 +} + +echo "Creating directories..." +sudo mkdir -p /portainer/Files/AppData/Config/klipper/klipper/ || error "Failed to create data directory for klipper / klipper!" +sudo mkdir -p /portainer/Files/AppData/Config/klipper/klipper/logs || error "Failed to create data directory for klipper / klipper!" +sudo mkdir -p /portainer/Files/AppData/Config/klipper/moonraker/ || error "Failed to create data directory for klipper / moonraker!" +sudo mkdir -p /portainer/Files/AppData/Config/klipper/moonraker/logs || error "Failed to create data directory for klipper / moonraker!" +sudo mkdir -p /portainer/Files/AppData/Config/klipper/run/ || error "Failed to create data directory for klipper / run!" +sudo mkdir -p /portainer/Files/AppData/Config/klipper/gcodes/ || error "Failed to create data directory for klipper / gcodes!" + +echo "Checking config file setup..." +if [ -d /portainer/Files/AppData/Config/klipper/klipper/printer.cfg ]; +then + echo "/portainer/Files/AppData/Config/klipper/klipper/printer.cfg is a directory removing" + rm -rf '/portainer/Files/AppData/Config/klipper/klipper/printer.cfg' +fi +sudo touch /portainer/Files/AppData/Config/klipper/klipper/printer.cfg || error "Failed to touch printer.cfg file!" + +if [ -d /portainer/Files/AppData/Config/klipper/moonraker/moonraker.conf ]; +then + echo "/portainer/Files/AppData/Config/klipper/moonraker/moonraker.conf is a directory removing" + rm -rf '/portainer/Files/AppData/Config/klipper/moonraker/moonraker.conf' +fi +sudo touch /portainer/Files/AppData/Config/klipper/moonraker/moonraker.conf || error "Failed to touch moonraker.conf file!" + +echo "Setting permissions..." +sudo chown -R 1000:1000 /portainer/Files/AppData/Config/klipper/ || error "Failed to set permissions for klipper data!" +echo "Done You are ready to goto next step."