Command line interface

You can perform several operations from the command line using the fleio command, Django commands, BASH scripting and the MariaDB/MySQL console.

fleio command

Use the fleio command to manage your installation. For instance, connect with SSH to the machine where Fleio is installed and check for available updates by running:

fleio updates
Current version: 2022.11.1
No updates found

You can upgrade your Fleio installation, start, stop, restart or backup now. For a complete list of Fleio commands run:

fleio --help

As of version 2022.12, you will get the following output:

Usage: fleio [OPTIONS] COMMAND [ARG...]

Installs, manages and upgrades Fleio.
If not ran as fleio user, the command will try to 'sudo -u fleio' itself.
Make sure your user has 'sudo -u fleio' rights.

Commands:
  backup            Backups or restores Fleio database. Options:
                      - now - creates a new database backup, takes a file name as parameter
                      - list - list existing database backups
                      - restore - restores a database backup, takes a file name as parameter
  bash [command]    Launches the Bash inside the utils container with access to all volumes if no command is specified.
                    If command is specified, runs the command instead of bash inside the utils container.
                    By default Bash is ran as fleio user. Use "--root" flag to run Bash as root.
  django [command]  Launches django command with specified arguments inside utils container.
  build             Build Docker Compose services. Run "build" if you have local customizations of Docker images and
                    you have made changes. It does nothing if you're using vanilla Fleio images.
                    (runs "docker compose build" command)
  edit <file>       Edit one of Fleio configuration files: settings.py
  enduser.config.json staff.config.json
  help              Show help.
  import-domains    Receives a csv file from where domains pricing is imported into Fleio. Use "skip-relative-prices"
                    to not override relative prices. Usage example: "cat template.csv | fleio import-domains".
  info              Shows debugging information about settings and environment. Send the output when contacting Fleio
                    support.
  issue letsencrypt Issues a Let's Encrypt certificate on an existing Fleio installation. Requires that Let's Encrypt
                    was chosen on installation. Useful when DNS entry was not pointing to local IP during installation
                    (and for this reason the certificate could not be issued) and DNS entry was later pointed to local
                    IP.
  license           Reads and updates Fleio license. Use "--refresh" to only refresh your license.
  list periodic     List periodic tasks that are currently running.
  manage            Executes Fleio management commands like "disable-periodic-tasks" or "enable-periodic-tasks"
  mysql             Starts the mysql client on the Fleio database.
  mysqldump         Output a dump of the Fleio database. Any arguments will be passed to the mysqldump command.
  nuke              Stop containers and PERMANENTLY DELETE Fleio database, data volumes and settings.
                    WARNING: you will lose data when using this command.
  reconfigure       Use to change URL of Fleio, including HTTP to/from HTTPS.
  recreate          Recreate the Fleio containers performing a full reset: changes in Docker Compose YAML files,
                    environment variables are reloaded and applies changes from "settings.py".
                    (runs "docker compose down && docker compose up -d" command)
  resetdb           Drop the database tables and recreate them with the SQL query used on install.
                    WARNING: you will lose everything in the Fleio database when using this command.
  restart           Perform a simple Fleio restart without loading any possible changes to Docker Compose
                    YAML files or environment variables. Applies changes from "settings.py".
                    (runs "docker compose stop && docker compose start" commands)
  shell             Opens an interactive Python prompt with Django and models loaded.
  start             Starts Fleio services.
  status            Show Fleio containers status.
  stop              Stops Fleio services.
  sync              Synchronizes OpenStack objects into the Fleio database.
  updates           Checks and lists available Fleio updates.
  upgrade [version] Upgrade to the latest version or to the specified version .
                    Use "--include-beta" option if you want to consider beta releases when determining "latest".
  version           Shows installed Fleio version.

Options:
  -b, --include-beta Include beta versions when installing latest version or checking for updates.
                     If you specify a version when installing, this flag doesn't make sense and will result in error.
  -f, --force        Skips confirmation on upgrade, nuke or resetdb.
                     Performs upgrade even if version already installed.
  -r, --refresh      Just refresh Fleio license when running license command.
  --root             Option for "fleio bash" command. Runs Bash inside the container as root.
  --no-backup        Skips database backup on upgrade, resetdb or nuke.
  --no-restart       On refresh license will not restart Fleio - note that you have to restart Fleio in order to use the
                     new license.
  --no-wait          On upgrade, restart or recreate, do not wait for current running tasks, terminate them abruptly.

fleio django command

The fleio django (sub)command gives you access to a whole new set of commands implemented in Python.

For a full list of Django commands, run fleio django --help. Below is the output for Fleio 2022.12. Note that manage.py is used internally, so, to get help on a Django command you run fleio django help changepassword.

Type 'manage.py help <subcommand>' for help on a specific subcommand.

Available subcommands:

[auth]
    changepassword
    createsuperuser

[authtoken]
    drf_create_token

[billing]
    refresh_eu_tax_exempt

[contenttypes]
    remove_stale_contenttypes

[core]
    dbbackup
    feature_enabled
    fleio_edition
    fleio_info
    testdbconn

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    optimizemigration
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver

[django_extensions]
    admin_generator
    clean_pyc
    clear_cache
    compile_pyc
    create_command
    create_jobs
    create_template_tags
    delete_squashed_migrations
    describe_form
    drop_test_database
    dumpscript
    export_emails
    find_template
    generate_password
    generate_secret_key
    graph_models
    list_model_info
    list_signals
    mail_debug
    managestate
    merge_model_instances
    notes
    pipchecker
    print_settings
    print_user_for_session
    raise_test_exception
    reset_db
    reset_schema
    runjob
    runjobs
    runprofileserver
    runscript
    runserver_plus
    set_default_site
    set_fake_emails
    set_fake_passwords
    shell_plus
    show_template_tags
    show_urls
    sqlcreate
    sqldiff
    sqldsn
    sync_s3
    syncdata
    unreferenced_files
    update_permissions
    validate_templates

[rest_framework]
    generateschema

[sessions]
    clearsessions

Django shell

The Django shell is a command line environment where you can run Python commands in the context of the Fleio project, that is the settings are loaded, including things like database connection settings and the Django model classes (used to interact with the database tables).

To enter the Django shell run:

fleio shell

Once you’re into the shell, you can can for instance list the Fleio users:

>>> AppUser.objects.all()
<QuerySet [<AppUser: demo2@demo2.com>, <AppUser: osuser489595>, <AppUser: demo>, <AppUser: demoadmin>]>
>>>

Just press CTRL + D to exit the Django shell or type in exit().

Reset user password

You can change any Fleio user password from the command line, including the admin/staff user password.

Connect via SSH to the machine where Fleio and run:

fleio django changepassword user_email@address

If you can’t remember the username either, you can run a query on the Fleio database and see the list of users:

fleio mysql

MariaDB [fleio]> SELECT email FROM core_appuser;
+---------------+
| username      |
+---------------+
| demo@demo.com |
| joen@doe.com  |
+---------------+
2 rows in set (0.00 sec)

Create staff user

Create a staff user by running the following command. The new user will have is_admin = True, so she has full staff user privileges. You can later change this from the staff panel.staff

fleio django createsuperuser

bash command

You can interactively browse through Fleio files or create a staff user with commands like

fleio bash
fleio@utils:~/project$ ls
binaries  common  common_admin  enduser  fleio  fleiodockerutils  fleiostaff  locale  manage.py  plugins  requirements.txt
fleio@utils:~/project$ cat fleio/core/views.py

fleio bash enters the Docker utils container and you can browse Python source code and minified JavaScript code. Use vim or nano editor to easily navigate through source code. Note that editing files here will not affect your Fleio application and any changes are lost on fleio restart or fleio upgrade. To apply and permanently keep code changes you actually need to change code in other containers (backend, celery etc.) and by using a custom Dockerfile. See Adding or changing files in Fleio Docker images.

You can run BASH commands non-interactively, directly from the host where Fleio is installed. For instance to list the contents of you settings.py file:

fleio bash cat fleio/fleiosettings/settings.py

and even run django commands one-liners that also require the Python virtual environment to be activated:

# show Django version
echo ". ../env/bin/activate; django version" | fleio bash
Creating fleio_utils_run ... done
4.0.7

Database (MariaDB) console

You can authenticate and open the MySQL/MariaDB console with:

fleio mysql

and you can get a dump of your database with:

fleio mysqldump