GithubHelp home page GithubHelp logo

amedeebulle / octoprint-containers Goto Github PK

View Code? Open in Web Editor NEW
19.0 4.0 7.0 53 KB

Resin.io / Docker setup for OctoPrint on Raspberry Pi 3B/3B+

Shell 68.28% Python 31.72%
octoprint resin-io docker docker-compose raspberry-pi raspberry-pi-3 balena

octoprint-containers's Introduction

OctoPrint containers Build Status

Contents

Introduction

This is a Docker setup for OctoPrint on Raspberry Pi.
It can be run with balena.io or as Plain Docker on Raspbian.

The setup is made of 3 containers:

  • octoprint: runs the main OctoPrint application
  • webcam: runs the webcam streaming service (mjpg-streamer)
  • haproxy: exposes the above containers on http and https ports

The build will use by default the latest OctoPrint release, this can be overridden by changing the release argument in the docker-compose.yml file.

This setup will run on any Raspberry Pi, however OctoPrint recommends a Raspberry Pi 3 or 3+.

Balena.io setup

Although it may seem complex at first, balena.io allows you to install and configure OctoPrint on a Pi in a few clicks.
Also if you have multiple OctoPrint servers, they will be managed from a central place.

For additional help and nice screenshots of the balena.io interface look at Get started with Raspberry Pi 3 and Python on the balena.io site.

Install BalenaOS on your Pi

  1. Create an account at balena.io and sign in
  2. Add your public SSH key to your balena.io profile
  3. On balena.io, create an "Application" for managing your Pi.
    Choose "Raspberry Pi 3" as Device Type.
  4. Add a Device to your Application.
    • Configure WiFi here if your Pi is wireless.
    • Download the BalenaOS image for your Pi.
  5. Follow the instructions to write the OS on your SD-Card and boot your Pi.
    After a while your Pi will appear in your Application Dashboard.
  6. If you like you can change the name of your device.

Configure your OctoPrint device

The Environment Variables menu "E(x)" allows you to add variables to configure the device for your usage.

You can add the following variables:

Name Default Description
WEBCAM_START true Start the webcam streaming at boot time.
Use false if you have no webcam or want to start it from the OctoPrint menu
WEBCAM_INPUT input_raspicam.so -fps 5 The input plugin for mjpg-streamer.
Default is for the Raspberry Pi camera, see the documentation for others.
Example for an USB webcam: input_uvc.so -d /dev/video0 -r 640x480 -fps 5.

Install the software on the Device

The device is now ready, we need to push the containers through balena.io.
The following commands need to be executed from the terminal on your local machine -- not on the Raspberry Pi!
(On Windows, use Git BASH or something similar).

Clone this repository:

git clone https://github.com/AmedeeBulle/octoprint-containers.git
cd octoprint-containers/

Add the address of your balena.io repository. This command is displayed in the top-left corner of your application dashboard on the web site and looks like:

git remote add balena <USERNAME>@git.balena.io:<USERNAME>/<APPNAME>.git

Push the code to balena.io:

git push balena master

This will trigger a build on the balena.io servers. If all goes well it will finish with a nice unicorn ๐Ÿฆ„ ASCII art.
Your Raspberry Pi will download and run the containers automatically; after that your OctoPrint server will be ready to go!

For future updates, you simply need to pull the new code and push it back to balena.io and your device will be updated!

git pull origin master
git push balena master

Docker setup

If you do not want to use the balena.io services, you can run the exact same configuration directly on your Raspberry Pi.

Prepare the Raspberry Pi

Download and install Raspbian Buster Lite to your Pi (Follow the instructions from the Foundation).
Although it will work with the full Desktop environment, I strongly recommend the Lite version.

As root, install git, docker and docker-compose:

apt-get update
apt-get install git curl python-pip
curl -sSL https://get.docker.com | sh
pip install docker-compose

Ensure your linux user (pi or whatever you choose) is in the docker group:

usermod -a -G docker <YourLinuxUser>

At this point you need to completely logout and re-login to activate the new group.

From here, you don't need root access anymore.

Clone this repository:

git clone https://github.com/AmedeeBulle/octoprint-containers.git
cd octoprint-containers/

Get the containers

You have 2 options here: download the pre-build containers or re-build them.

Option 1: Download the containers

This is the easiest and fastest way. The pull command will download the containers from the Docker Hub:

docker-compose pull

If you are not using a Raspberry Pi 3: multiarch build does not work properly on ARM variants (See Moby issue 34875).
For older Raspberry Pi you need to amend the docker-compose files to pull the correct images:

sed -e 's/\(image:.*\)/\1:arm32v6-latest/' -i.orig docker-compose.yml

Option 2: Re-Build the containers

If for whatever reason you want to re-build the containers on your Pi, run:

docker-compose build

If you are not using a Raspberry Pi 3: copy the .env-distr to .env and select you Raspberry Pi version.

Configure and run the OctoPrint server

To customize your setup, create a file named .env with the environment variables described in the balena.io section. You can use the file .env-distr as template.

Important: in docker-compose.yml uncomment the following line:

      - /run/dbus:/host/run/dbus

If you don't do that, you won't be able to restart or shut down you Pi from the OctoPrint user interface.

Run the OctoPrint server:

docker-compose up

This will start the containers and remain attached to your terminal. If everything looks good, you can cancel it and restart the service in detached mode:

docker-compose up -d

This will keep he containers running, even after a reboot.

Updates

To update your setup with a newer version, get the latest code and containers and restart the service:

docker-compose down
git pull origin master
docker-compose pull # or build
docker-compose up -d

First run

For a Plain Docker setup, you know the IP address of your Pi; if you run balena.io, you will find the address in the application console.

Point your browser to the IP address of your Raspberry Pi and enjoy OctoPrint!

At first run, the haproxy container will generate a self-signed SSL certificate, so the service will be available on both http and https ports. If you want to share your printer with the world, only expose the https port...

Enjoy!

Note about persistence

All working files (configuration, G-Code, time-lapses, ...) are stored in the octoprint_vol Docker volume, so they won't disappear unless you explicitly destroy the volume.
If you really need/want to destroy the volume and re-start from scratch:

  • balena.io: select 'Purge Data' in the Device Menu
  • Plain Docker: run
docker-compose down -v

The same applies to the containers themselves: they won't be destroyed by default even if you reboot the Pi. To remove existing container and re-create them:

  • balena.io: click on the 'Restart' icon in the Device Dashboard
  • Plain Docker: run
docker-compose down
docker-compose up -d

By doing this, you will loose any change made to the code, in particular if you installed plugins you will have to re-install them (but their configuration will be preserved).

Multiple printers

Although driving multiple printers from the same Raspberry Pi is possible, it might lead to performance issues. This setup is nevertheless easy to achieve with the plain Docker setup.
It is a good solution if:

  • You have a powerful Raspberry Pi
  • You have multiple printers but use only one at a time

You can run any number of instances of this container stack by using a different project name and a different .env file.
The docker-compose-multi.sh convenience script is provided to simplify operations.

Assuming you already have a running instance, to add a new one simply copy the .env-extra-distr sample file to .env-<printer name>, review the configuration parameters and start the instance with ./docker-compose-multi.sh <printer name> up -d.

Main points of attention:

  • Do not configure more than one Raspberry Pi camera!
    (There is no limitation on the number of USB cameras)
  • Ensure all instances have their own unique HTTP and HTTPS ports.

Sample session:

# Start the main instance
$ docker-compose up -d
Creating network "octoprint_default" with the default driver
Creating octoprint_octoprint_1 ... done
Creating octoprint_webcam_1    ... done
Creating octoprint_haproxy_1   ... done
$ docker-compose ps
        Name                       Command               State                    Ports
---------------------------------------------------------------------------------------------------------
octoprint_haproxy_1     /usr/bin/entry.sh /opt/hap ...   Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
octoprint_octoprint_1   /usr/bin/entry.sh /opt/oct ...   Up      5000/tcp
octoprint_webcam_1      /usr/bin/entry.sh /opt/web ...   Up      5200/tcp, 8080/tcp

# Start an additional instance for the "extra" printer:
$ cp .env-extra-distr .env-extra
$ vi .env-extra
$ ./docker-compose-multi.sh extra up -d
Creating network "extra_default" with the default driver
Creating volume "extra_octoprint_vol" with default driver
Creating extra_webcam_1    ... done
Creating extra_octoprint_1 ... done
Creating extra_haproxy_1   ... done
$ ./docker-compose-multi.sh extra ps
      Name                     Command               State                      Ports
--------------------------------------------------------------------------------------------------------
extra_haproxy_1     /usr/bin/entry.sh /opt/hap ...   Up      0.0.0.0:8443->443/tcp, 0.0.0.0:8080->80/tcp
extra_octoprint_1   /usr/bin/entry.sh /opt/oct ...   Up      5000/tcp
extra_webcam_1      /usr/bin/entry.sh /opt/web ...   Up      5200/tcp, 8080/tcp

Notes:

  • As you can see in the above output, instances use a different network namespace as well as a different volume for storing data, so they are completely separated and independent.
  • Depending on when your printers / cameras are detected they might get different device names on your Raspberry Pi... Always check that you are driving the right printer!

octoprint-containers's People

Contributors

amedeebulle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

octoprint-containers's Issues

Cant install telegram plugin

Hi, First all congrats for this very good octoprint container.

I install on a RaspPi 3 very easily, but when I try to install the Telegram plugin (https://plugins.octoprint.org/plugins/telegram/) the installation process fail.

`

Installing plugin "OctoPrint-Telegram" from https://github.com/fabianonline/OctoPrint-Telegram/archive/stable.zip.../opt/octoprint/OctoPrint/venv/bin/python -m pip install https://github.com/fabianonline/OctoPrint-Telegram/archive/stable.zip --no-cache-dirLooking in indexes: https://pypi.org/simple, https://www.piwheels.org/simpleCollecting https://github.com/fabianonline/OctoPrint-Telegram/archive/stable.zipDownloading https://github.com/fabianonline/OctoPrint-Telegram/archive/stable.zipRequirement already satisfied: OctoPrint in ./OctoPrint/venv/lib/python2.7/site-packages/OctoPrint-1.3.10-py2.7.egg (from OctoPrint-Telegram==1.4.2) (1.3.10)Collecting pillow (from OctoPrint-Telegram==1.4.2)Downloading https://files.pythonhosted.org/packages/1b/e1/1118d60e9946e4e77872b69c58bc2f28448ec02c99a2ce456cd1a272c5fd/Pillow-5.3.0.tar.gz (15.6MB)Requirement already satisfied: flask<0.11,>=0.10.1 in ./OctoPrint/venv/lib/python2.7/site-packages/Flask-0.10.1-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.10.1)Requirement already satisfied: Jinja2<2.9,>=2.8.1 in ./OctoPrint/venv/lib/python2.7/site-packages/Jinja2-2.8.1-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (2.8.1)Requirement already satisfied: regex!=2018.11.6 in ./OctoPrint/venv/lib/python2.7/site-packages/regex-2018.11.22-py2.7-linux-armv7l.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (2018.11.22)Requirement already satisfied: werkzeug<0.9,>=0.8.3 in ./OctoPrint/venv/lib/python2.7/site-packages/Werkzeug-0.8.3-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.8.3)Requirement already satisfied: tornado==4.5.3 in ./OctoPrint/venv/lib/python2.7/site-packages/tornado-4.5.3-py2.7-linux-armv7l.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (4.5.3)Requirement already satisfied: PyYAML<3.11,>=3.10 in ./OctoPrint/venv/lib/python2.7/site-packages/PyYAML-3.10-py2.7-linux-armv7l.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (3.10)Requirement already satisfied: Flask-Login<0.3,>=0.2.11 in ./OctoPrint/venv/lib/python2.7/site-packages/Flask_Login-0.2.11-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.2.11)Requirement already satisfied: Flask-Principal<0.4,>=0.3.5 in ./OctoPrint/venv/lib/python2.7/site-packages/Flask_Principal-0.3.5-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.3.5)Requirement already satisfied: Flask-Babel<0.10,>=0.9 in ./OctoPrint/venv/lib/python2.7/site-packages/Flask_Babel-0.9-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.9)Requirement already satisfied: Flask-Assets<0.11,>=0.10 in ./OctoPrint/venv/lib/python2.7/site-packages/Flask_Assets-0.10-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.10)Requirement already satisfied: markdown<2.7,>=2.6.9 in ./OctoPrint/venv/lib/python2.7/site-packages/Markdown-2.6.11-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (2.6.11)Requirement already satisfied: pyserial<3.5,>=3.4 in ./OctoPrint/venv/lib/python2.7/site-packages/pyserial-3.4-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (3.4)Requirement already satisfied: netaddr<0.8,>=0.7.19 in ./OctoPrint/venv/lib/python2.7/site-packages/netaddr-0.7.19-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.7.19)Requirement already satisfied: watchdog<0.9,>=0.8.3 in ./OctoPrint/venv/lib/python2.7/site-packages/watchdog-0.8.3-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.8.3)Requirement already satisfied: sarge==0.1.5post0 in ./OctoPrint/venv/lib/python2.7/site-packages/sarge-0.1.5.post0-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.1.5.post0)Requirement already satisfied: netifaces<0.11,>=0.10.6 in ./OctoPrint/venv/lib/python2.7/site-packages/netifaces-0.10.7-py2.7-linux-armv7l.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.10.7)Requirement already satisfied: pylru<1.1,>=1.0.9 in ./OctoPrint/venv/lib/python2.7/site-packages/pylru-1.0.9-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (1.0.9)Requirement already satisfied: rsa<3.3,>=3.2.3 in ./OctoPrint/venv/lib/python2.7/site-packages/rsa-3.2.3-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (3.2.3)Requirement already satisfied: pkginfo<1.5,>=1.4.2 in ./OctoPrint/venv/lib/python2.7/site-packages/pkginfo-1.4.2-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (1.4.2)Requirement already satisfied: requests<3,>=2.18.4 in ./OctoPrint/venv/lib/python2.7/site-packages/requests-2.21.0-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (2.21.0)Requirement already satisfied: semantic_version<2.5,>=2.4.2 in ./OctoPrint/venv/lib/python2.7/site-packages/semantic_version-2.4.2-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (2.4.2)Requirement already satisfied: psutil<5.5,>=5.4.6 in ./OctoPrint/venv/lib/python2.7/site-packages/psutil-5.4.8-py2.7-linux-armv7l.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (5.4.8)Requirement already satisfied: Click<6.3,>=6.2 in ./OctoPrint/venv/lib/python2.7/site-packages/click-6.2-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (6.2)Requirement already satisfied: awesome-slugify<1.7,>=1.6.5 in ./OctoPrint/venv/lib/python2.7/site-packages/awesome_slugify-1.6.5-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (1.6.5)Requirement already satisfied: feedparser<5.3,>=5.2.1 in ./OctoPrint/venv/lib/python2.7/site-packages/feedparser-5.2.1-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (5.2.1)Requirement already satisfied: chainmap<1.1,>=1.0.2 in ./OctoPrint/venv/lib/python2.7/site-packages/chainmap-1.0.2-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (1.0.2)Requirement already satisfied: future<0.16,>=0.15.2 in ./OctoPrint/venv/lib/python2.7/site-packages/future-0.15.2-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.15.2)Requirement already satisfied: scandir<1.4,>=1.3 in ./OctoPrint/venv/lib/python2.7/site-packages/scandir-1.3-py2.7-linux-armv7l.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (1.3)Requirement already satisfied: websocket-client<0.41,>=0.40.0 in ./OctoPrint/venv/lib/python2.7/site-packages/websocket_client-0.40.0-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.40.0)Requirement already satisfied: python-dateutil<2.7,>=2.6.1 in ./OctoPrint/venv/lib/python2.7/site-packages/python_dateutil-2.6.1-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (2.6.1)Requirement already satisfied: wrapt<1.11,>=1.10.11 in ./OctoPrint/venv/lib/python2.7/site-packages/wrapt-1.10.11-py2.7-linux-armv7l.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (1.10.11)Requirement already satisfied: futures<3.2,>=3.1.1 in ./OctoPrint/venv/lib/python2.7/site-packages/futures-3.1.1-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (3.1.1)Requirement already satisfied: emoji<0.5,>=0.4.5 in ./OctoPrint/venv/lib/python2.7/site-packages/emoji-0.4.5-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (0.4.5)Requirement already satisfied: monotonic<1.4,>=1.3 in ./OctoPrint/venv/lib/python2.7/site-packages/monotonic-1.3-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (1.3)Requirement already satisfied: frozendict<1.3,>=1.2 in ./OctoPrint/venv/lib/python2.7/site-packages/frozendict-1.2-py2.7.egg (from OctoPrint->OctoPrint-Telegram==1.4.2) (1.2)Requirement already satisfied: itsdangerous>=0.21 in ./OctoPrint/venv/lib/python2.7/site-packages/itsdangerous-1.1.0-py2.7.egg (from flask<0.11,>=0.10.1->OctoPrint->OctoPrint-Telegram==1.4.2) (1.1.0)Requirement already satisfied: MarkupSafe in ./OctoPrint/venv/lib/python2.7/site-packages/MarkupSafe-1.1.0-py2.7-linux-armv7l.egg (from Jinja2<2.9,>=2.8.1->OctoPrint->OctoPrint-Telegram==1.4.2) (1.1.0)Requirement already satisfied: singledispatch in ./OctoPrint/venv/lib/python2.7/site-packages/singledispatch-3.4.0.3-py2.7.egg (from tornado==4.5.3->OctoPrint->OctoPrint-Telegram==1.4.2) (3.4.0.3)Requirement already satisfied: certifi in ./OctoPrint/venv/lib/python2.7/site-packages/certifi-2018.11.29-py2.7.egg (from tornado==4.5.3->OctoPrint->OctoPrint-Telegram==1.4.2) (2018.11.29)Requirement already satisfied: backports_abc>=0.4 in ./OctoPrint/venv/lib/python2.7/site-packages/backports_abc-0.5-py2.7.egg (from tornado==4.5.3->OctoPrint->OctoPrint-Telegram==1.4.2) (0.5)Requirement already satisfied: blinker in ./OctoPrint/venv/lib/python2.7/site-packages/blinker-1.4-py2.7.egg (from Flask-Principal<0.4,>=0.3.5->OctoPrint->OctoPrint-Telegram==1.4.2) (1.4)Requirement already satisfied: Babel>=1.0 in ./OctoPrint/venv/lib/python2.7/site-packages/Babel-2.6.0-py2.7.egg (from Flask-Babel<0.10,>=0.9->OctoPrint->OctoPrint-Telegram==1.4.2) (2.6.0)Requirement already satisfied: speaklater>=1.2 in ./OctoPrint/venv/lib/python2.7/site-packages/speaklater-1.3-py2.7.egg (from Flask-Babel<0.10,>=0.9->OctoPrint->OctoPrint-Telegram==1.4.2) (1.3)Requirement already satisfied: webassets>=0.10 in ./OctoPrint/venv/lib/python2.7/site-packages/webassets-0.12.1-py2.7.egg (from Flask-Assets<0.11,>=0.10->OctoPrint->OctoPrint-Telegram==1.4.2) (0.12.1)Requirement already satisfied: argh>=0.24.1 in ./OctoPrint/venv/lib/python2.7/site-packages/argh-0.26.2-py2.7.egg (from watchdog<0.9,>=0.8.3->OctoPrint->OctoPrint-Telegram==1.4.2) (0.26.2)Requirement already satisfied: pathtools>=0.1.1 in ./OctoPrint/venv/lib/python2.7/site-packages/pathtools-0.1.2-py2.7.egg (from watchdog<0.9,>=0.8.3->OctoPrint->OctoPrint-Telegram==1.4.2) (0.1.2)Requirement already satisfied: pyasn1>=0.1.3 in ./OctoPrint/venv/lib/python2.7/site-packages/pyasn1-0.4.4-py2.7.egg (from rsa<3.3,>=3.2.3->OctoPrint->OctoPrint-Telegram==1.4.2) (0.4.4)Requirement already satisfied: chardet<3.1.0,>=3.0.2 in ./OctoPrint/venv/lib/python2.7/site-packages/chardet-3.0.4-py2.7.egg (from requests<3,>=2.18.4->OctoPrint->OctoPrint-Telegram==1.4.2) (3.0.4)Requirement already satisfied: idna<2.9,>=2.5 in ./OctoPrint/venv/lib/python2.7/site-packages/idna-2.8-py2.7.egg (from requests<3,>=2.18.4->OctoPrint->OctoPrint-Telegram==1.4.2) (2.8)Requirement already satisfied: urllib3<1.25,>=1.21.1 in ./OctoPrint/venv/lib/python2.7/site-packages/urllib3-1.24.1-py2.7.egg (from requests<3,>=2.18.4->OctoPrint->OctoPrint-Telegram==1.4.2) (1.24.1)Requirement already satisfied: Unidecode<0.05,>=0.04.14 in ./OctoPrint/venv/lib/python2.7/site-packages/Unidecode-0.4.21-py2.7.egg (from awesome-slugify<1.7,>=1.6.5->OctoPrint->OctoPrint-Telegram==1.4.2) (0.4.21)Requirement already satisfied: six in ./OctoPrint/venv/lib/python2.7/site-packages/six-1.12.0-py2.7.egg (from websocket-client<0.41,>=0.40.0->OctoPrint->OctoPrint-Telegram==1.4.2) (1.12.0)Requirement already satisfied: backports.ssl_match_hostname in ./OctoPrint/venv/lib/python2.7/site-packages/backports.ssl_match_hostname-3.5.0.1-py2.7.egg (from websocket-client<0.41,>=0.40.0->OctoPrint->OctoPrint-Telegram==1.4.2) (3.5.0.1)Requirement already satisfied: pytz>=0a in ./OctoPrint/venv/lib/python2.7/site-packages/pytz-2018.7-py2.7.egg (from Babel>=1.0->Flask-Babel<0.10,>=0.9->OctoPrint->OctoPrint-Telegram==1.4.2) (2018.7)Installing collected packages: pillow, OctoPrint-TelegramRunning setup.py install for pillow: startedRunning setup.py install for pillow: finished with status 'error'Complete output from command /opt/octoprint/OctoPrint/venv/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-install-LXtTqc/pillow/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-record-4IFroF/install-record.txt --single-version-externally-managed --compile --install-headers /opt/octoprint/OctoPrint/venv/include/site/python2.7/pillow:running installrunning buildrunning build_pycreating buildcreating build/lib.linux-armv7l-2.7creating build/lib.linux-armv7l-2.7/PILcopying src/PIL/BdfFontFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/WmfImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/GimpGradientFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/IptcImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageStat.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PalmImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/GdImageFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PcfFontFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageQt.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/SpiderImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/features.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageMode.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PngImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/_tkinter_finder.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/GribStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/WebPImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/WalImageFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageSequence.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ExifTags.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/FontFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PcdImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageOps.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/DcxImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageMorph.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/CurImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PaletteFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/GbrImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/FliImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PixarImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/TarIO.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/JpegPresets.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageTransform.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PdfParser.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/FtexImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/FpxImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageChops.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/IcnsImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/XpmImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageColor.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ContainerIO.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/SunImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/MpoImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageShow.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PpmImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/TgaImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/EpsImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/XbmImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PSDraw.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/init.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/McIdasImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageGrab.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageCms.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/TiffTags.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/SgiImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/BmpImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/JpegImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageMath.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PdfImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImagePath.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/MspImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageTk.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/_binary.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageDraw.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PcxImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageWin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageFont.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/GimpPaletteFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImtImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/GifImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PsdImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/TiffImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageFile.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImagePalette.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/_version.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/PyAccess.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageEnhance.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageDraw2.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/MicImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/MpegImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/_util.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/Image.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/OleFileIO.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/IcoImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/BlpImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/DdsImagePlugin.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/ImageFilter.py -> build/lib.linux-armv7l-2.7/PILcopying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-armv7l-2.7/PILrunning egg_infowriting src/Pillow.egg-info/PKG-INFOwriting top-level names to src/Pillow.egg-info/top_level.txtwriting dependency_links to src/Pillow.egg-info/dependency_links.txtreading manifest file 'src/Pillow.egg-info/SOURCES.txt'reading manifest template 'MANIFEST.in'warning: no files found matching '.c'warning: no files found matching '.h'warning: no files found matching '.sh'no previously-included directories found matching 'docs/_static'warning: no previously-included files found matching '.appveyor.yml'warning: no previously-included files found matching '.coveragerc'warning: no previously-included files found matching '.codecov.yml'warning: no previously-included files found matching '.editorconfig'warning: no previously-included files found matching '.landscape.yaml'warning: no previously-included files found matching '.travis'warning: no previously-included files found matching '.travis/'warning: no previously-included files found matching 'tox.ini'warning: no previously-included files matching '.git*' found anywhere in distributionwarning: no previously-included files matching '.pyc' found anywhere in distributionwarning: no previously-included files matching '.so' found anywhere in distributionwriting manifest file 'src/Pillow.egg-info/SOURCES.txt'running build_extThe headers or library files could not be found for zlib,a required dependency when compiling Pillow from source.Please see the install instructions at:https://pillow.readthedocs.io/en/latest/installation.htmlTraceback (most recent call last):File "", line 1, in File "/tmp/pip-install-LXtTqc/pillow/setup.py", line 814, in raise RequiredDependencyException(msg)main.RequiredDependencyException:The headers or library files could not be found for zlib,a required dependency when compiling Pillow from source.Please see the install instructions at:https://pillow.readthedocs.io/en/latest/installation.html----------------------------------------Command "/opt/octoprint/OctoPrint/venv/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-install-LXtTqc/pillow/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-record-4IFroF/install-record.txt --single-version-externally-managed --compile --install-headers /opt/octoprint/OctoPrint/venv/include/site/python2.7/pillow" failed with error code 1 in /tmp/pip-install-LXtTqc/pillow/Error!Could not parse output from pip, see plugin_pluginmanager_console.log for generated output

`

Multiple printer / docker support

Hi,
I'm the guy who still wants to drive two docker instances for 2 3D printers and their according webcam.
Perhaps you remember me ? You helped me cloning the docker-compose file to instantiate a second three container scenario on different ports.
https://twitter.com/bommeltje/status/999634112989319169
I just updated to the December 2018 octoprint version and I'm still struggling with serial errors when even connecting both containers at the same time. So the print on my first printer stopped with serial timeout, when I tried to connect to the printer in the other container.

I think perhaps more ports must be separated because on docker ps (attachement) I see the ports 5000 and 5200,8080 exposed identically on both containers.
So my error when connecting could be a collision on port 5000 and when I come to my webcams I would expect problems on 5200/8080 also.
Could that be?

What should be done to separate the different container scenarios completely and make them accessable from the outside as well (remote control apps, etc.)?

Thanks for the help!

At the end I would ask if it at the end it is possible to transfer the port configurations in the env file or cfg file so that a possible multible printer usage can be easiliy setup.

docker-compose.yml.txt
docker-compose2.yml.txt
dockerPSOut.txt
haproxy.tar.gz
octoprint.tar.gz
webcam.tar.gz

Best regards,
Uwe

resin.io references should be balena.io

@AmedeeBulle -- thanks for making and maintaining this awesome project. Just so you're working with the most updated links/references/endpoints, please start using balena.io instead of resin.io.

If you want, I can push up changes to at least the readme to get things started. Let me know what you think! Thanks ahead.

Server not starting on base of octoprint 1.4.2

Hi,

I tried to rebuild the containers as described for octoprint 1.4.2 (latest)
There were several errors already in the build log, but at the end an image was created.
But the octoprint container doesn't start because of an error
File "/opt/octoprint/OctoPrint/venv/local/lib/python2.7/site-packages/zipp-3.4.0-py2.7.egg/zipp.py", line 240 def open(self, mode='r', *args, pwd=None, **kwargs): ^ SyntaxError: invalid syntax
Don't know what to do here?!

serverstartlog.txt
buildlog.txt
docker-compose.txt

Best regards,
Uwe

haproxy is looping in balena

haproxy is non-stop restarting on a clean install to rpi3
I am using a USB camera and have the env flags as per readme

Streaming not working on rpi3

Unfortunately the streaming container is not working for me with rpi cam

25.11.18 19:01:31 (+0100) webcam MJPG-streamer [82]: Perhaps you want to adjust the search path with:
25.11.18 19:01:31 (+0100) webcam
25.11.18 19:01:31 (+0100) webcam MJPG-streamer [82]: # export LD_LIBRARY_PATH=/path/to/plugin/folder
25.11.18 19:01:31 (+0100) webcam
25.11.18 19:01:31 (+0100) webcam MJPG-streamer [82]: dlopen: input_raspicam.so: cannot open shared object file: No such file or direct

input_raspicam.so fails to compile:

  • PLUGIN_INPUT_RASPICAM , Raspberry Pi input camera plugin (unmet dependencies)

Tried to install varies dependencies, but had no success.
Would appreciate your help.
Thanks a lot!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.