Install#
Prerequisites#
Kegbot Server is installed and supported through Docker and docker-compose, which are available for Mac, Windows, and Linux.
Ensure you have both of these installed before continuing.
Create the data directory#
Kegbot needs a place to store certain data, like image uploads. Create a place on your filesystem and remember the path; we’ll need this in the next step:
$ mkdir /home/user/kegbot-data
Create the config file#
Kegbot and its essential services will be configured and launched using the
docker-compose
tool and a corresponding config file, docker-compose.yml
.
Create a new filed called docker-compose.yml
starting with the following contents:
version: '3'
services:
kegbot:
image: ghcr.io/kegbot/server:stable
restart: unless-stopped
command: run_server
ports:
- "8000:8000"
volumes:
- kegbot-data:/kegbot-data
tmpfs:
- /tmp
- /var/tmp
environment:
REDIS_URL: redis://redis:6379/0
DATABASE_URL: mysql://kegbot:changeme@mysql/kegbot
KEGBOT_ENV: "debug"
KEGBOT_SECRET_KEY: "changeme"
workers:
image: ghcr.io/kegbot/server:stable
restart: unless-stopped
command: run_workers
volumes:
- kegbot-data:/kegbot-data
tmpfs:
- /tmp
- /var/tmp
environment:
REDIS_URL: redis://redis:6379/0
DATABASE_URL: mysql://kegbot:changeme@mysql/kegbot
KEGBOT_ENV: "debug"
KEGBOT_SECRET_KEY: "changeme"
mysql:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'changeme'
MYSQL_USER: 'kegbot'
MYSQL_PASSWORD: 'changeme'
MYSQL_DATABASE: 'kegbot'
tmpfs:
- /tmp
- /var/tmp
volumes:
- mysql-data:/var/lib/mysql
redis:
image: redis:latest
restart: always
volumes:
mysql-data:
kegbot-data:
Note
What it’s doing: This configuration file launches Kegbot Server, a MySQL database, and Redis.
You don’t need to edit anything in this file yet, with one exception: Be sure to update the path
to the kegbot-data
directory. Using the example path from the
previous step, you would change this line:
volumes:
- kegbot-data:/kegbot-data
To this:
volumes:
- /home/user/kegbot-data:/kegbot-data
Start the services#
Now, ask docker-compose
to launch these services. We will launch them in the
foreground:
$ docker-compose up
This may take a while, as the Docker system works to download the images it needs. Eventually, you should start seeing a series of output like the following:
Attaching to kegbot-server-kegbot-1, kegbot-server-mysql-1, kegbot-server-redis-1, kegbot-server-workers-1
kegbot-server-mysql-1 | 2022-07-23 17:20:14+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started.
kegbot-server-redis-1 | 1:C 23 Jul 2022 17:20:14.333 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
kegbot-server-redis-1 | 1:C 23 Jul 2022 17:20:14.334 # Redis version=7.0.4, bits=64, commit=00000000, modified=0, pid=1, just started
kegbot-server-mysql-1 | 2022-07-23 17:20:14+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
kegbot-server-mysql-1 | 2022-07-23 17:20:14+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started.
kegbot-server-mysql-1 | 2022-07-23 17:20:14+00:00 [Note] [Entrypoint]: Initializing database files
kegbot-server-mysql-1 | 2022-07-23T17:20:14.439962Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.29) initializing of server in progress as process 41
kegbot-server-mysql-1 | 2022-07-23T17:20:14.445084Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
kegbot-server-kegbot-1 | ██╗ ██╗███████╗ ██████╗ ██████╗ ██████╗ ████████╗
kegbot-server-kegbot-1 | ██║ ██╔╝██╔════╝██╔════╝ ██╔══██╗██╔═══██╗╚══██╔══╝
kegbot-server-kegbot-1 | █████╔╝ █████╗ ██║ ███╗██████╔╝██║ ██║ ██║
kegbot-server-kegbot-1 | ██╔═██╗ ██╔══╝ ██║ ██║██╔══██╗██║ ██║ ██║
kegbot-server-kegbot-1 | ██║ ██╗███████╗╚██████╔╝██████╔╝╚██████╔╝ ██║
kegbot-server-kegbot-1 | ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝
Congratulations! Your Kegbot Server, along with its MySQL database and Redis cache, have been launched.
Run the setup wizard#
Now that the server is running, visit the Kegbot Server web page. It should be running at: http://localhost:8000/
Once loaded, you should should see a series of steps to walk through. Walk through each step until you have completed setup.
Restart in production mode#
Once you have completed setup, you should restart the system so it runs in the background.
Before we do that, let’s enable production mode. First, press CTRL-C
to shut down the running services. Next, in your config file,
change this line:
KEGBOT_ENV: "debug"
To this:
KEGBOT_ENV: "production"
This will cause the Kegbot server to launch with various setup and debug features disabled, for security and performance purposes.
Finally, restart the services with the -d
(detach) flag to launch
them in the background:
$ docker-compose up -d
This time, you should see only a few brief lines of output:
[+] Running 4/4
⠿ Container kegbot-server-kegbot-1 Started 0.6s
⠿ Container kegbot-server-mysql-1 Started 0.6s
⠿ Container kegbot-server-redis-1 Started 0.6s
⠿ Container kegbot-server-workers-1 Started 0.6s
You can verify everything is running with the docker-compose ps
command:
$ docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
kegbot-server-kegbot-1 "gunicorn pykeg.web.…" kegbot running 0.0.0.0:8000->8000/tcp
kegbot-server-mysql-1 "docker-entrypoint.s…" mysql running 3306/tcp, 33060/tcp
kegbot-server-redis-1 "docker-entrypoint.s…" redis running 6379/tcp
kegbot-server-workers-1 "bin/kegbot run_work…" workers running 8000/tcp