HowTo: Install Kegbot Server on Digital Ocean

Set up Kegbot on a cloud server in under 15 minutes. This guide will walk you through deploying Kegbot Server on Digital Ocean, although the steps may work on other cloud providers.

##Step 1: Create a new Digital Ocean droplet

Sign Up for Digital Ocean, add your billing information, then create a new droplet (virtual server).

  • Under Droplet Hostname, enter a name like my-kegbot.
  • Under Size, you may select the smallest size droplet; larger servers will perform better.
  • Under Select Image, select Ubuntu 14.04 x64.

Press Create Droplet. You will receive a mail from Digital Ocean with the root password to your droplet.

Step 2: Connect to your droplet

Connect to your droplet using the ssh command-line tool (Mac, Linux) or using Putty on Windows::

ssh [email protected]

Replace 192.168.1.2 with the IP address of your Droplet.

You will be asked for permission to connect, type yes, then enter the root password from the email Digital Ocean sent you when the Droplet was set up.

Step 3: Install Kegbot Server using the Kegberry script

Paste and run the following commands exactly as shown below::

export INSTALLFLAGS="--nopycore --allow_root"
bash -c "$(curl -fsSL https://raw.github.com/Kegbot/kegberry/master/install.sh)"

While running, the script will:

  • Install all Ubuntu system dependencies (nginx, redis, and so on).
  • Create a new user named kegbot and home directory /home/kegbot.
  • Create and install the Kegbot MySQL database named kegbot.
  • Install the Kegbot daemons and start the server.

Step 4: Complete the setup wizard

Navigate to the IP address of your system: http://your-ip/. You should be greeted by the Kegbot Setup wizard. Complete the install and you’re ready to go!

Next steps

The kegbot user

Important: The server is installed under the kegbot user, so to update or modify the Kegbot install, you need to become the kegbot user first using sudo:

root@my-kegbot:~# su - kegbot
kegbot@my-kegbot:~$

To run kegbot commands such as kegbot upgrade, you also need to activate the virtualenv before running any command::

root@my-kegbot:~# su - kegbot
kegbot@my-kegbot:~$ . kegbot-server.venv/bin/activate
(kegbot-server.venv)kegbot@my-kegbot:~$ kegbot version
kegbot-server 1.1.0

Disable DEBUG mode

Once you’ve finished setting up the system, it’s a good idea to disable DEBUG mode. Open the local_settings.py file in an editor::

root@my-kegbot:~# su - kegbot
kegbot@my-kegbot:~$ nano ~/.kegbot/local_settings.py

Find DEBUG = True and replace with DEBUG = False, save and close the file.

Configure e-mail

Unlike most Kegbot options, e-mail configuration cannot be done in the browser. See the e-mail configuration portion of the Kegbot Server Install Guide for instructions.

1 Like

So how do I migrate my system to digital ocean?

(kegbot-server.venv)kegbot@BrewPalaceKegbot:~$ kegbot restore /home/kegbot/Downloads/123.zip

does not work.

nor does

kegbot@BrewPalaceKegbot:~$ kegbot restore /home/kegbot/Downloads/123.zip

I don’t know what I’m doing wrong, but nothing happens when I enter either of these commands.

which commands are you talkijng about?

The second install command. I was copying and pasting it. Didn’t notice it is missing a "

Whoops, fixed, thanks!

Hi, trying to upgrade to 1.1.1 and I’m getting the following error. Any idea why?

Running setup.py install for kegbot
Error [Errno 12] Cannot allocate memory while executing command /home/kegbot/kegbot-server.venv/bin/python -c "import setuptools, tokenize;__file__='/home/kegbot/kegbot-server.venv/build/kegbot/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-soS63h-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/kegbot/kegbot-server.venv/include/site/python2.7

Rolling back uninstall of kegbot
Cleaning up…
Exception:
Traceback (most recent call last):
File “/home/kegbot/kegbot-server.venv/local/lib/python2.7/site-packages/pip/basecommand.py”, line 122, in main
status = self.run(options, args)
File “/home/kegbot/kegbot-server.venv/local/lib/python2.7/site-packages/pip/commands/install.py”, line 283, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File “/home/kegbot/kegbot-server.venv/local/lib/python2.7/site-packages/pip/req.py”, line 1435, in install
requirement.install(install_options, global_options, *args, **kwargs)
File “/home/kegbot/kegbot-server.venv/local/lib/python2.7/site-packages/pip/req.py”, line 706, in install
cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)
File “/home/kegbot/kegbot-server.venv/local/lib/python2.7/site-packages/pip/util.py”, line 662, in call_subprocess
cwd=cwd, env=env)
File “/usr/lib/python2.7/subprocess.py”, line 710, in init
errread, errwrite)
File “/usr/lib/python2.7/subprocess.py”, line 1223, in _execute_child
self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory

Storing debug log for failure in /home/kegbot/.pip/pip.log

I’m curious about the “Size” of the droplet needed to run the server. I’ve had a server set up on a Raspberry and it its terribly slow at the 512 RAM. Should I expect the same speed from selecting “Smallest” (512) droplet?

I thought it worked fine as the smallest. However it did seem to hang when restoring a back up. I was able to restore a back up on the next larger size

I recently switched from a raspberry pi to digitalocean. Smallest is perfectly fine and way faster than the pi due to CPU.

1 Like

Hi - trying to get this working on Google Cloud Platform using a 14.04 Ubuntu VM.

Everything seems to be working during the installation process except for a few warnings:

/.cache/pip/log’ or its parent directory is not owned by the current user and the
debug log has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo,
you may want the -H flag.

However, when I try to visit the server, i’m getting 502s.

Checking the ngnix error log I see:

2015/02/17 02:55:09 [error] 10080#0: *1 connect() failed (111: Connection refused) while connecting to upstream, cl
ient: 74.102.113.58, server: , request: “GET / HTTP/1.1”, upstream: “http://127.0.0.1:8000/”, host: "104.154.93.119
"

I am getting your exact same error when I try and install on an Ubuntu VM, nothing but 502 errors. Did you ever figure it out? I’m kind of stuck right now since the little documentation I can find just says check ngnix and supervisor configurations which I’m not sure what to check for.

No, i haven’t gotten it working - probably need Mikey’s insight.

if someone with some good knowledge on get ting hegbot server running.Pleas help us out.I follow the easy digital ocean guide but some thing has changed and e server is installed. It seems after sending server command lines and it all installs but no luch access your server page.

best thing to do is destroy then create a new droplet, follow the instructions they provided here

then after step 3 follow the guidlines i posted here
how to edit kegbot.conf

1 Like

Hi All,

I received my KB hardware on Saturday and I’m setting everything up.

I see above I need to edit the local_settings.py file however as all I have is a command line, I don’t know the command to download (and then re-upload) the file.

Thanks

I got the above figured out however now the flow sensor shows as not being connected. The light on the board blinks when I pour…

?

Thanks!

have you added the tap and configured the flow meter to it on the android app? You can check under the admin page on your server. After clicking admin, look for “Taps” on the left, select your tap and you should have something like CD2552SA32.flow0 listed there (The naming will be different but should still say flow0). if not try deleting the tap and adding it through you Tablet again.

1 Like

Thanks for the reply!

have you added the tap and configured the flow meter to it on the android app?
<<

I added the tap but the app won’t allow the flow meter to be configured as it says it does not exist.

After clicking admin, look for “Taps” on the left, select your tap and you should have something like CD2552SA32.flow0 listed there
<<

flow0 isn’t listed. It says ‘not connected’.

I tried deleting the tap and setting it up again but no change.

Edit:
I just had a thought - the Nexus 7 I have is running Lollipop. Could that be an issue?

Screenshots: