These following instructions will download, compile and install Bacula and a couple of the best Web GUIs for it.
Inspired from the following German link. Thank you:
http://www.asconix.com/howtos/debian/bacula-backup-debian-lenny-howto

Install needed packages for Bacula server
aptitude install build-essential libpq-dev libncurses5-dev libssl-dev psmisc mysql-server libmysql++-dev
Download compile and install Bacuda and its web GUI
wget http://downloads.sourceforge.net/project/bacula/bacula/5.0.3/bacula-5.0.3.tar.gz
tar fvxz bacula-5.0.3.tar.gz
tar fvxz bacula-gui-5.0.3.tar.gz
cd bacula-5.0.3
./configure --prefix=/usr --sbindir=/usr/sbin --sysconfdir=/etc/bacula --with-scriptdir=/etc/bacula \
--enable-smartalloc --enable-conio --with-mysql --with-openssl --with-dir-user=bacula \
--with-dir-group=bacula --with-sd-user=bacula --with-sd-group=bacula --with-fd-user=root \
--with-fd-group=bacula --with-working-dir=/var/lib/bacula --with-pid-dir=/var/run \
--with-subsys-dir=/var/run/subsys
make && make install

Configuring MySQL for Bacula
/etc/bacuda/create_mysql_database -p
Enter password: (same for the following 2 scripts)
/etc/bacula/make_mysql_tables -p
/etc/bacula/grant_bacula_privileges -p

Set a password for the user bacula
echo "SET PASSWORD FOR 'bacula'@'localhost' = PASSWORD('bacula');FLUSH PRIVILEGES;" | mysql -p
Read and Edit its configuration files:
/etc/bacula/bacula-sd.conf (Storage drives)
Change the ‘Device’ -> ‘FireStorage’ -> ‘Archive device’ directory to ‘/backup’

/etc/bacula/bacula-dir.conf (dir and files to backup)
especially in the Fileset section where you define the directories/files to backup
IMPORTANT: Change the MySQL user’s Password to the above given password. eg.

# Generic catalog service
Catalog {
Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:mysql"; dbaddress = 127.0.0.1; dbport =
dbname = "bacula"; dbuser = "bacula"; dbpassword = "bacula"
}

Change the email addresses to the admin addres you want. Approx at line 254
eg.
mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = s-admin@itmatrix.de = all, !skipped
operator = s-admin@itmatrix.de = mount
console = all, !skipped, !saved

Configuration of bacula user/group and extra file access settings
groupadd bacula
useradd -g bacula -d /var/lib/bacula -c "Bacula User" -s /bin/bash bacula
passwd bacula
chown root:bacula /var/lib/bacula

Directory needed for the bacula daemons lock files
mkdir /var/run/subsys
chown -R bacula:bacula /var/run/subsys

Setting the backup destination directory
(this can be anything as long as it’s configured in the config file /etc/bacula/bacula-sd.conf)
mkdir /backup
chown -R bacula:bacula /backup

Creating the needed log files
touch /var/log/bacula.log
chown bacula:bacula /var/log/bacula.log

Changing the ownership of the files
# For backing-up the catalogs the following scripts will be used and need to be runnable by the user bacula:
# /etc/bacula/make_catalog_backup and /etc/bacula/delete_catalog_backup (Job definition for Katalog-Backup).
chown bacula:bacula /etc/bacula/make_catalog_backup /etc/bacula/delete_catalog_backup
Build the start/stop init script
head -n 11 /etc/init.d/skeleton > /etc/init.d/bacula
sed -e '1 d' -e 's/skeleton/bacula/' /etc/bacula/bacula >> /etc/init.d/bacula
chmod 755 /etc/init.d/bacula
update-rc.d bacula defaults

Start Bacula daemons
/etc/init.d/bacula start
This will start 3 daemons:
/etc/bacula/bacula-ctl-dir – Bacula Director daemon (The Bacula boss…ahumm, coordinator of all backups jobs)
/etc/bacula/bacula-ctl-sd – Bacula Storage daemon (Backup storage handler)
/etc/bacula/bacula-ctl-fd – Bacula File daemon (bacula client daemon for the local machine, can also used as bacula client in other servers)
Testing Bacula using the multi talent Bacula Console
/etc/bacula/bconsole
(Response example)
Connecting to Director xen2:9101
1000 OK: xen2-dir Version: 5.0.3 (04 August 2010)
Enter a period to cancel a command.
*
*status
*exit

BACULA CLIENTS

On our local machine where Bacula Director runs the /etc/bacula/bacula-ctl-fd is our Bacula Client.
To be able to create backups of remote servers each one of those servers needs to run a Bacula client daemon.
This daemon will communicate with the Bacula Director on our backup server.

If the remote servers are of the same architechture and version as where Bacula Director runs,
then both files /etc/bacula/bacula-ctl-fd and its configuration file /etc/bacula/bacula-fd.conf
can be copied to the remote server in /etc/bacula/ and adapt the configuration file to the environment.

In case the architechture is not the same eg. debian previsous version Etch,
then the Bacula client must be compiled in the client host.
In this case we use the same main Bacula source code but we compile only the client.
Here are the steps for Debian distribution.
To do so here are the steps:

# Login as root in the remote server and run the following commands:

Install the necessary Debian packages
aptitude install build-essential libssl-dev

Download compile and install Bacuda
cd /usr/local/src
wget http://downloads.sourceforge.net/project/bacula/bacula/5.0.3/bacula-5.0.3.tar.gz
tar fvxz bacula-5.0.3.tar.gz
cd bacula-5.0.3
./configure --prefix=/usr --sbindir=/usr/sbin --sysconfdir=/etc/bacula --with-scriptdir=/etc/bacula \
--enable-smartalloc --with-openssl --enable-client-only --with-working-dir=/var/bacula \
--with-pid-dir=/var/run --with-subsys-dir=/var/lock/subsys
make && make install

Edit the file /etc/bacula/bacula-fd.conf and adapt it to the needed values.
vim /etc/bacula/bacula-fd.conf
Create the needed ‘lock’ files directory /var/run/subsys.
# It should only be readable/writable by root only since we run the client daemon as root user.
mkdir /var/run/subsys
Build the start/stop init script
head -n 11 /etc/init.d/skeleton > /etc/init.d/bacula
sed -e '1 d' -e 's/skeleton/bacula/' /etc/bacula/bacula >> /etc/init.d/bacula
chmod 755 /etc/init.d/bacula
update-rc.d bacula defaults

Comment out all the lines concerning the non-compiled servers:
vim /etc/init.d/bacula
/bacula-ctl-sd
/bacula-ctl-dir

and leave the ones for /bacula-ctl-fd activated.

Bacula WEB GUIs installation

Download the software from:
wget http://downloads.sourceforge.net/project/bacula/bacula/5.0.3/bacula-gui-5.0.3.tar.gz

BWEB

Install the Debian packages necessary for bweb
apt-get install libgd-graph-perl libhtml-template-perl libexpect-perl libdbd-mysql-perl libdbd-pg-perl \
libdbi-perl libdate-calc-perl libtime-modules-perl
cd ../bacula-gui-5.0.3/bweb

Set the proper variables in the install file
vim install_bweb
Configuration directory for bweb
CONF_DIR=/etc/bacula
#
# Root directory of web files (Should be the same as your DocumentRoot VirtualHost Apache directive)
#
WEB_DIR=/www/bweb.itmatrix.eu/htdocs
#
# share directory for programs
#
SHARE_DIR=/usr/share
#
# cgi_bin location for web server
#
CGI_BIN=/usr/lib/cgi-bin/
#
# Userid the web server is running under
#
HTTP_USER=www-data
HTTP_GROUP=www-data
#
# Bacula database name and password
DB=bacula
DB_PW="bacula"
EMAIL_ADDR="michel@itmatrix.de"

Run the install script
./install_bweb
Check the result. Here is an example
1..8
ok 1 - require DBI;
ok 2 - require GD::Graph;
ok 3 - require GD;
ok 4 - require HTML::Template;
ok 5 - require CGI;
ok 6 - require Expect;
ok 7 - require Time::ParseDate;
ok 8 - require Date::Calc;
Checking if your kit is complete...
Looks good
Writing Makefile for Bweb
cp lib/GTime.pm blib/lib/GTime.pm
cp lib/Bconsole.pm blib/lib/Bconsole.pm
cp lib/Bweb.pm blib/lib/Bweb.pm
cp lib/GBalloon.pm blib/lib/GBalloon.pm
cp lib/CCircle.pm blib/lib/CCircle.pm
Manifying blib/man3/GTime.3pm
Manifying blib/man3/Bconsole.3pm
Manifying blib/man3/Bweb.3pm
Manifying blib/man3/GBalloon.3pm
Manifying blib/man3/CCircle.3pm
Installing /usr/local/share/perl/5.10.0/Bconsole.pm
Installing /usr/local/share/perl/5.10.0/GBalloon.pm
Installing /usr/local/share/perl/5.10.0/CCircle.pm
Installing /usr/local/share/perl/5.10.0/Bweb.pm
Installing /usr/local/share/perl/5.10.0/GTime.pm
Installing /usr/local/man/man3/GTime.3pm
Installing /usr/local/man/man3/CCircle.3pm
Installing /usr/local/man/man3/Bconsole.3pm
Installing /usr/local/man/man3/Bweb.3pm
Installing /usr/local/man/man3/GBalloon.3pm
Writing /usr/local/lib/perl/5.10.0/auto/Bweb/.packlist
Appending installation info to /usr/local/lib/perl/5.10.0/perllocal.pod

IMPORTANT TO DO
Please edit /etc/bacula/bweb.conf and ensure that all the paths to
the various programs and files such as bconsole, bconsole.conf
are correct, and that the DBI driver is correct (default mysql)
and has the right password for your DB

Preparing the MySQL database
You have to load sql scripts (in bweb/script) to your database by running the following command:
mysql -p bacula < script/bweb-mysql.sql

Apache configuration
Here is an example of a virtualhost configured only for the pweb interface.
AuthType Basic
AuthName "Private area"
AuthUserFile /etc/apache2/auth/web.auth
Require user admin
DirectoryIndex index.html
Options -Indexes +FollowSymLinks
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all

Enter the password for the login
touch /etc/apache2/auth/web.auth
htpasswd /etc/apache2/auth/web.auth admin

Restart Apache and try the interface in your browser:
http://www.example.com/bweb

You won’t be able to see or do much because the minimal configuration of bacula is limited.
You need to start trying to understand the syntax of the configuration files,
add your own configuration and restart the bacula daemon with:

/etc/init.d/bacula restart

Installing the Bacula Restore function of bweb

In order to allow su to use ‘bweb’ to restore backed-up files we need to add the functionallity
to ‘bweb’. This functionnality is found under the menu ‘Jobs’ ==>> ‘Web Restore’.
At the moment it turns a white page because the functionnality is not installed.
This functionnality is found as a package in Internet which will be added as subdirectory ‘ext’
in bweb DocumentRoot.

Install the necessary Debian packages
aptitude install libdbd-pg-perl libexpect-perl libwww-perl libgtk2-gladexml-perl unzip
Install the Glade-Interface as Perl Module:
cd ../brestore
mkdir -p /usr/share/brestore
install -m 644 -o root -g root brestore.glade /usr/share/brestore
install -m 755 -o root -g root brestore.pl /usr/bin

Install the AJAX-Framework Ext JS. We’ll add it to the existing docroot of bweb.
cd /var/www/bweb/
wget http://www.extjs.com/deploy/ext-3.1.0.zip
unzip ext-3.1.0.zip
mv ext-3.1.0 ext
chown -R bacula:bacula ext

Enter a MIME-Type text/brestore definition
for handling the typ text/brestore with the perl script brestore.pl .
/etc/mime.types (around the line 665)
text/brestore brestore.pl

BACULA-WEB

Read-only reporting Web interface (bacula-web) installation ——-
# Very well designed interface which packs a lot of info in one page
Install the needed Debian packages
apt-get install php-pear php-db php5-mysql php5-gd
cp -a bacula-web /var/www/

Edit the MySQL connection parameters as desired
expecially the bacula user DB password.
Here are some example:
vim /var/www/bacula-web/configs/bacula.conf
Content example
[.DATABASE]
# Your database host or IP
host = localhost
#
# Your database login
login = bacula
#
# Your database password.
# For empty passwords use this:
# pass =
pass = bacula
#
# Your database name
db_name = bacula
#
# Your database type: mysql,sqlite,pgsql
db_type = mysql
#
# Uncomment this and modify it if your database runs on a non standard port.
# db_port = 3306

Make a test run for checking the presence of needed components
http://www.example.com/bacula-web/test.php
If all ok then try access to bacula-web
http://www.example.com/bacula-web/index.php

NOTE: If there are no backups done yet you could get the following error in browser and nothing else:
‘Error query: 4’
Just make sure some backups have already run, then that should fix this error.

BACULA WEBMIN MODULE

Webmin standard has already the module for bacula.
Just click on it from the ‘unused modules’ link
Configure it’s connection to mysql database and enjoy the control and graphs.