Streamlined BrewPi Install Option (BETA TESTERS NEEDED!)

Hi everyone,

As part of trying to improve the BrewPi user experience, we’ve been working on an improved installation process. We’ve come up with something using Docker as a method to by which to provide every user the same image from which to start from. Before we make any long term decisions on this versus some of the other options, we’d love to get BrewPi Community feedback on what you like, what you don’t like, or if there are any bugs in the process. If you are interested in trying this install process, you’ll need a blank SD card to begin.

Step 1: Set up your Pi with Hypriot Docker Image

Step 2: Connect to Pi

  • Next, you’ll need to find out the IP of your new system. The easiest method of doing this is usually to use your router’s web interface to view connected devices- the Hypriot OS uses ‘black-pearl’ as it’s default hostname, so look for that (To connect via SSH on Windows, you will need an SSH client such as Putty ).

  • Connect to the IP address you found on port 22, and use the username root and password hypriot

Step 3: Install Docker and download BrewPi Docker files

  • At the command line, type
    apt-get update && apt-get install -y docker-hypriot docker-compose

  • Then, download config files by typing
    git clone https://github.com/vanosg/brewpi-docker.git

Step 4: Start BrewPi!

  • Type

cd brewpi-docker/raspberrypi_arm/brewpi_single_container/

if you are using a Spark, start BrewPi by simply typing
docker-compose up -d

If you are using an Arduino, you’ll want to use
system=arduino docker-compose up -d

At this point, you should be up and running just like normal! Your configuration and other persistent files are stored in /root/brewpi-data on the host.

From this point, you’ll pick up the normal BrewPi install process where you program the Arduino (I believe the Spark comes pre-loaded). For now, I have not set this image to start automatically on reboot, but it will be enabled if we move to this method.

Feedback needed!

Please use this thread to detail any feedback you have with the process. I’m sure this walk-through could use some clarification. And, while this process worked for me, you may encounter some issues or find some bug in the state of the initial setup. Please let us know how we can improve this! Hopefully it makes setup far simpler and quicker. We look forward to your questions and input!

  • Geo

Nice work!
I am going to try this after the weekend. Have to do my tax report first :frowning:

This would be very usefull to me if the connection between SPARK and RPI (or docker instance) could be over LAN or WLAN. I could install on it on a synology NAS running docker.

Is there an URL to the docker image instead of the git link?

1 Like

Sure, you can also just do a ‘docker pull vanosg/rpi-brewpi-omni’ and that will pull down the image. The benefit of cloning the git repo is that you get the docker-compose.yml file, which is what enables the simple ‘docker-compose up’ command to work. Alternatively, you can run a container using
docker run --device=/dev/ttyACM0:/dev/ttyACM0 -v ~/brewpi-data:/brewpi -p 80:80 -e system='arduino' rpi-brewpi-omni
(delete the -e system=‘arduino’ if you’re on a Spark) and that should run it as well.

Let me know how that goes for you! Thanks for giving this a try

Installs and runs fine but useless for now until IP connection to the spark is supported.

Excellent, I’m glad it ran for you. IP support is on the to-do list, we promise!

Works great! :+1: +1 for a Docker installation and updates in the future.

You may want to update the HypriotOS image download link in your post to 0.7.0. I got stuck when I downloaded the linked 0.6.1 image in which docker-compose is too old to work with the current yaml file.

Thanks for the feedback, Dave! I’ll update the link. I’ll also push out updates with every named release update of Brewpi (0.4.3, 0.4.4, etc). Please let me know if you run in to any issues in your future use, or if there is any other constructive feedback. Good luck!

Ah, I also forgot to mention there is an extra apt-get in the line:

apt-get update && apt-get install -y apt-get docker-hypriot docker-compose

It’s the same in the README.md on the git repo.

It’s almost like I copy/pasted from there :slight_smile: Updated, thanks for the catch!

Now working fine on Ubuntu 16.04 as well :slight_smile:

@vanosg

Tried the install but gets the following error

`$ docker-compose up -d
WARNING: The system variable is not set. Defaulting to a blank string.
Creating network “raspberrypiarm_default” with driver "bridge"
Pulling brewpi (vanosg/rpi-brewpi-omni:latest)…
latest: Pulling from vanosg/rpi-brewpi-omni
7e6c16797c81: Pull complete
ac94b12db295: Pull complete
d405a4db0bb1: Pull complete
a3ed95caeb02: Pull complete
69384837bba8: Pull complete
503404e957c6: Pull complete
82b2ca8186af: Pull complete
4801db755d71: Pull complete
a6dc78dc5052: Pull complete
fb9944e5b47b: Pull complete
7fadbad6d3d3: Pull complete
188271c61b75: Pull complete
cb89d754c2eb: Pull complete
ec210c0d0347: Pull complete
18d6ff5657ba: Pull complete
4f9bb3d67fbb: Pull complete
6a426622350a: Pull complete
Digest: sha256:03452662e69dccbe1c0d781191d50798ec2d9f68bd5be87243170340480cefd9
Status: Downloaded newer image for vanosg/rpi-brewpi-omni:latest
Creating brewpi

ERROR: for brewpi linux runtime spec devices: error gathering device information while adding custom device “/dev/ttyAMA0”: lstat /dev/ttyAMA0: no such file or directory
Traceback (most recent call last):
File “”, line 3, in
File “compose/cli/main.py”, line 63, in main
AttributeError: ‘ProjectError’ object has no attribute 'msg’
docker-compose returned -1`

Here is a list of tty devices in /dev

/dev/tty /dev/tty15 /dev/tty22 /dev/tty3 /dev/tty37 /dev/tty44 /dev/tty51 /dev/tty59 /dev/tty9 /dev/tty0 /dev/tty16 /dev/tty23 /dev/tty30 /dev/tty38 /dev/tty45 /dev/tty52 /dev/tty6 /dev/ttyACM0 /dev/tty1 /dev/tty17 /dev/tty24 /dev/tty31 /dev/tty39 /dev/tty46 /dev/tty53 /dev/tty60 /dev/ttyAMA1 /dev/tty10 /dev/tty18 /dev/tty25 /dev/tty32 /dev/tty4 /dev/tty47 /dev/tty54 /dev/tty61 /dev/ttyprintk /dev/tty11 /dev/tty19 /dev/tty26 /dev/tty33 /dev/tty40 /dev/tty48 /dev/tty55 /dev/tty62 /dev/ttyS0 /dev/tty12 /dev/tty2 /dev/tty27 /dev/tty34 /dev/tty41 /dev/tty49 /dev/tty56 /dev/tty63 /dev/tty13 /dev/tty20 /dev/tty28 /dev/tty35 /dev/tty42 /dev/tty5 /dev/tty57 /dev/tty7 /dev/tty14 /dev/tty21 /dev/tty29 /dev/tty36 /dev/tty43 /dev/tty50 /dev/tty58 /dev/tty8

I was wondering how long before someone ran into this! Yes, we’re having trouble intelligently selecting the USB port to forward. As AMA0 is used less, I think I’ll just take it out. While I do that, you can open the docker-compose.yml and delete

- "/dev/ttyAMA0:/dev/ttyAMA0"

I’ll update and push now with those changes as well. Thanks!

@vanosg

I assumed that’s what i needed to change and already altered it to.

“/dev/ttyAMA1:/dev/ttyAMA1”

which continued with the install.

All is working now.

Rich

AMA0 is the internal serial port of the Raspberry Pi, so it should never be used.
ACM0 is the Spark or Arduino