Installing Manually

See also Quick Start, as it automates many of the steps below.

More general details and background may be found in the Rattail Manual; see Base Layer for that. Here of course we will focus on Theo, so will be less generic.

The initial setup below will not include any POS integration, but that may optionally be added, and is described in another section.

Prerequisites

  • Python 3.6+

  • PostgreSQL

Note that PostgreSQL need not run on the same machine as the Theo app, it just needs to be accessible over the network by Theo.

These docs assume Linux for the Theo machine, but it is believed that with minimal tweaks this should work on Windows as well. However it should be noted that Windows does pose some issues, and this all likely will work “better” on Linux at this point. Windows support should be considered experimental.

(In any case PostgreSQL can run on a Windows machine if you prefer that.)

Virtual Environment

These docs will assume /srv/envs for the “home folder” of your virtual environments.

Create a virtual environment for Theo:

mkdir -p /srv/envs
python3 -m venv /srv/envs/theo

Now activate it with:

source /srv/envs/theo/bin/activate

Remember you can deactivate the virtual environment with:

deactivate

But your environment should be active for all commands below.

Install Packages

In a production environment you probably would want to install “official” released packages for Theo etc. That can be done for instance like:

pip install tailbone-theo[app]

That is just an example and would not install any POS integration packages, only Theo proper.

However in practice you may want to clone the source packages and install those in “editable” mode instead. In a true development environment we would suggest keeping the source code outside of the virtual environment, so that is what we’ll describe here.

First make and/or move to the parent folder for your source code, e.g.:

mkdir -p ~/src
cd ~/src

Then clone any packages you don’t yet have, e.g.:

git clone https://kallithea.rattailproject.org/rattail-project/rattail
git clone https://kallithea.rattailproject.org/rattail-project/tailbone
git clone https://kallithea.rattailproject.org/rattail-project/theo

Finally install all packages to your virtual environment, e.g.:

pip install -e ~/src/rattail
pip install -e ~/src/tailbone
pip install -e ~/src/theo

But just to be sure no dependencies are missed, you still should run the same command as would be used in production, e.g.:

pip install tailbone-theo[app]

Note that this command should always be ran last after you have installed all your source packages.

Make Config Files

The dev/bootstrap.py script referenced by Quick Start will install four different config files, but we’ll only install three here.

First create the “app” folder (will be at /srv/envs/theo/app):

cd /srv/envs/theo
bin/rattail make-appdir

One of the config files is quite simple and can be copied “as-is” from elsewhere, but two of them will require some modification depending on your setup etc. Starting point examples are available for the latter two, but cannot be used “as-is” due to their nature.

Note that all config files will go directly in the “app” folder we just made above.

We’ll do the more complicated ones first. You can grab copies of them from Theo source code:

Put each copy in your Theo “app” folder and edit as needed, in particular replacing <ENVDIR> and similar strings (e.g. <SEP> should be either / on Linux or \ on Windows).

And now for the easy one, you can do this:

cd /srv/envs/theo
bin/rattail -c app/rattail.conf make-config -T quiet -O app

Initialize Database

On your PostgreSQL server, if you haven’t already, create the user with which Theo should connect. We suggest “rattail” for the username:

sudo -u postgres createuser -P rattail

Also create the database for Theo:

sudo -u postgres createdb -O rattail theo

Now back on the Theo server (if different), install the schema to the database (NB. this assumes your rattail.conf file correctly points to the PostgreSQL DB):

cd /srv/envs/theo
bin/alembic -c app/rattail.conf upgrade heads

You also should create your admin user in Theo, named whatever you like:

bin/rattail -c app/quiet.conf make-user myusername --admin --full-name "My Actual Name"

Run Web App

With all the above in place you can run the web app:

cd /srv/envs/theo
bin/pserve --reload file+ini:app/web.conf

And then browse the app at http://localhost:9080/

Note that this is a basic setup and does not cause the web app to run in the background or after reboot etc. This type of setup is most useful for development.