User guide

Design goals

  • each release is pinned to bacula-director specific major version
  • simple is better than complicated
  • inline documentation
  • convention over configuration
  • can act as view interface only (optional configuration functionality)
  • plugin into existing bacula instance
  • total control of bacula through existing bacula api


Almir will install everything inside one directory, which must be empty. Application is meant to be self-contained, meaning no additional administrator is needed besides upgrading to a newer version. Almir should be always installed on a system together with bacula-director.


  • Bacula 5.x.x is installed and bacula-director is running
  • installed python2.6 or python2.7 (compiled with sqlite support)
  • using postgresql: make sure postgresql.conf includes a line client_encoding = utf8

Installer (interactive)

Install prerequesities (Debian based):

$ sudo apt-get install git bacula-console python-distribute gcc python-dev wget


Installer will ask you few questions about SQL database and configuration for bconsole.

Install almir (recommended: under same user as bacula):

$ cd /some/empty/directory/to/install/almir/
$ sh -xec "$(wget -O -"

You can continue with configuring Configuring Nginx as a frontend.

Configuring Nginx as a frontend

It is wise to use frontend HTTP server and proxy HTTP requests to python web server. Following is an example for nginx, you could also use papache2 or lighthttpd.

You would normally put this in /etc/nginx/sites-enabled/

server {
    listen          80;

    location / {
            proxy_pass http://localhost:2500;

            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header  Host $http_host;
            proxy_redirect off;

            # optional authentication - recommended
            auth_basic "Restricted";
            # how to correctly write htpasswd:
            auth_basic_user_file /some/directory/to/install/almir/.htpasswd;


Then run:

$ /etc/init.d/nginx reload

Now try to access (if you have an error, follow instructions at Reporting bugs)

Configuring Apache2 as a frontend

<VirtualHost *:80>

DocumentRoot "/var/www/"

ProxyPreserveHost On

<Location />

ErrorLog /var/log/httpd/
CustomLog /var/log/httpd/ combined


Do not forget to restrict access to almir, either by IP or by username/password.

Upgrading to a newer release


$ cd almir_install_directory
$ git pull
$ python
$ bin/buildout
$ bin/supervisorctl shutdown
$ bin/supervisord

You can also use that in crontab to auto upgrade on new releases, if you are crazy enough. You would probably extra check if upgrade is needed, something like running following and checking for any output:

$ git log latests..origin/latests

Reporting bugs

Check if an issue already exists at, otherwise add new one with following information:

  • bacula-director version, operating system and browser version
  • include screenshot if it provides any useful information
  • pastebin ( output of $ cat ALMIR_ROOT/var/logs/almir-stderr*
  • pastebin ALMIR_ROOT/buildout.cfg, but be careful to remove any sensitive data

Filesystem structure