On va installer la version 5 qui est sur le “backports”.
# aptitude install exim4
# aptitude install mysql-server
# aptitude -t lenny-backports install bacula-director-mysql
# aptitude -t lenny-backports bacula-console
# aptitude -t lenny-backports install bacula-fd bacula-sd-mysql
Si on “blacklist ipv6” , alors “bacula” doit être forcé afin de ne fonctionner qu'en ipv4… sinon, les communications echouent silencieusement (les jobs ne se terminent jamais).
Exemple de conf, pour “bacula-dir.conf” :
# TJ --------- #DirAddress = 127.0.0.1 #DIRport = 9101 # where we listen for UA connections DirAddresses = { ipv4 = { addr = 0.0.0.0; } }
Adapter pour chaque daemon.
Dans la version 5.0.2 de bacula-sd, il y a un bug genant: il ne peut pas executer plusieurs “job” sur un “device”… grrrr
Donc, on doit “installer” la version 5.0.3 … et voila comment j'ai fait.
Sur Debian Lenny/Squeeze 64 bit:
Télécharger les sources “bacula-5.0.3.tar.gz” par là: http://www.bacula.org/en/?page=downloads
Déposer l'archive dans /usr/local/src
…
$ cd /usr/local/src ... $ tar xvzf bacula-5.0.3.tar.gz $ cd bacula-5.0.3
Pré-requis qui m'ont été nécessaire:
# aptitude install gcc make g++ # aptitude -t testing install libsqlite3-dev
On va compiler en “static” avec “sqlite”: mais on ne s'interesse vraiment qu'a bacula-sd
, et pas aux autres…
$ ./configure --with-sqlite3 --enable-build-dird=no --enable-static --disable-libtool CFLAGS="-O2" CXXFLAGS="-O2" $ make
Mais on n'installe pas!!!
Ce qui nous interesse est simplement là: /usr/local/src/bacula-5.0.3/src/stored/bacula-sd
$ su # /etc/init.d/bacula-sd stop # mv /usr/sbin/bacula-sd /usr/sbin/DPKG-bacula-sd # ln -s /usr/local/src/bacula-5.0.3/src/stored/bacula-sd /usr/sbin/. # /etc/init.d/bacula-sd start
Et voila. Le risque, c'est qu'au prochain upgrade, on est besoin de recréer le lien symbolique, a moins que le bug soit corrigé!
Pour “Ubuntu 6.06.2 LTS”, j'ai ça:
... Compiling bscan.c make[1]: *** No rule to make target `../cats/libbacsql.a', needed by `bscan'. Stop. make[1]: Leaving directory `/home/thierry/tmp/bacula-5.0.3/src/stored' ...
Que faire ?
Je renonce a “sqlite” et remplace par “mysql”, avec en passant:
# aptitude install libmysqlclient15-dev
Note: “bacula-sd” n'a pas besoin de base de données… donc, je m'en fous.
# aptitude install apache2 libapache2-mod-php5 php5-mysql # aptitude install php5-gd
![]() |
# a2enmod rewrite # /etc/init.d/apache2 restart
$ cd /usr/local/src $ wget .... webacula-5.0.2.tar.gz $ tar xvzf ....
etc…
$ wget .... ZendFramework-1.10.8-minimal.tar.gz
Dans /etc/php5/apache2/php.ini
, ajouter au parametre include_path
:
; TJ ; ------------------ include_path = "/usr/local/src/ZendFramework/library" ; ------------------
Ou bien:
# cd /var/www/webacula/library # ln -s /usr/local/src/ZendFramework/library/Zend .
# /etc/init.d/apache2 restart
: copier dans /var/www/webacula
# adduser www-data bacula
Test:
# su -l www-data -s /bin/sh -c "/usr/bin/bconsole -n -c /etc/bacula/bconsole.conf"
Dans /etc/apache2/sites-available
, creer le fichier 200-webacula
contenant:
Alias "/webacula" "/var/www/webacula/html" <Directory "/var/www/webacula/html"> RewriteEngine on Options FollowSymLinks AllowOverride All Order deny,allow Allow from 127.0.0.1 # your network Allow from 192.168.1.0/255.255.255.0 AuthType Basic AuthName "Webacula" #AuthUserFile /etc/apache2/conf.d/webacula.users AuthUserFile /var/www/webacula/passwd/.webacula.users # a creer! Require valid-user </Directory>
Activer:
# a2ensite 200-webacula
Modifier /etc/php5/apache2/php.ini
pour avoir:
max_execution_time = 600 memory_limit = 256M
# apache2ctl graceful
: modifier conf de
bacula-dir.conf
???
Dans /var/www/webacula/html/.htaccess
, faire en sorte d'avoir (?) :
SetEnv APPLICATION_ENV production
Dans le fichier /var/www/webacula/application/config.ini
modifier pour avoir:
... db.config.username = webacula db.config.password = <MOT_DE_PASSE> ... bacula.sudo = "" bacula.bconsole = "/usr/bin/bconsole" ...
Dans ../install
, modifier avec le fichier webacula_mysql_create_database.sh
avec les parametres de son choix. Par exemple:
... db_user="webacula" db_password="<MOT_DE_PASSE>" ...
Et puis:
# ./webacula_mysql_create_database.sh -u root -p Enter password: Creation of webacula database succeeded.
Et aussi:
# ./webacula_mysql_make_tables.sh -u root -p Enter password: Creation of webacula MySQL tables succeeded.
Completer afin que ce compte puisse aussi modifier le “catalog” bacula ( : lire ne suffit pas ? ) :
mysql> GRANT ALL ON bacula.* TO webacula@localhost; Query OK, 0 rows affected (0.00 sec)
Creer le fichier de mots de passe:
# mkdir passwd # cd passwd # htpasswd -c .webacula.users Webacula
Fournir le mot de passe pour le compte Webacula
(Ne pas utiliser “-c”, pour creer d'autres comptes!)
: d'aprés la doc, y a des CRON a installer
C'est mieux que rien.
C'est extremement lent. Il faut peut envisager autre chose que MySQL !?
![]() |
J'ai mounter un fichier “tmp” pour “mysql” comme ça:
# mkdir /mnt/mysql-tmp # chmod 0777 /mnt/mysql-tmp
Dans fstab:
tmpfs /mnt/mysql-tmp tmpfs defaults,size=512M 0 0
Et puis:
# mount -a
Tweaks des options de MySQL ? dans my.cnf ?
$ dpkg -S my-huge.cnf
Ce que j'ai fait:
... tmpdir = /mnt/mysql-tmp # <--- seulement si on utilise "tmpfs" ... skip-locking key_buffer = 384M max_allowed_packet = 1M table_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 ... [isamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M ...
Ce qui a fonctionné pour moi:
$ mysql -u root -p mysql> use bacula;
Examinons avec:
mysql> show index from File;
Mais j'y comprend que dalle en fait, et donc je fais :
mysql> CREATE INDEX file_jobid_idx on File (JobId); mysql> CREATE INDEX file_jpf_idx on File (JobId, FilenameId, PathId);
Les perfs sont booooooostés. Je peus enfin restaurer des fichiers d'une grosse base.
Lien: http://www.mail-archive.com/bacula-users@lists.sourceforge.net/msg11973.html
Il faut que j'essaye…
# /etc/bacula/scripts/make_catalog_backup --user=<USER> --password=<MOT_DE_PASSE>
DROP de la database
# mysql --user=<USER> --password=<MOT_DE_PASSE> < bacula.sql
Lien: http://edin.no-ip.com/content/bacula-backup-with-gzip-compress-on
…
Software Compression: 53.9 %
…
On va recupere “easy-rsa” dans le package “openvpn”.
On est dans le cas où l'on n'installera pas le package “openvpn”, on veut juste “easy-rsa” :
$ dpkg --print-architecture amd64
Je suis dans un DomU 64bit, donc, on recupère le package “openvpn” qui va bien.
$ cd ~/tmp $ mkdir openvpn $ cd openvpn $ wget http://ftp.fr.debian.org/debian/pool/main/o/openvpn/openvpn_2.1~rc11-1_amd64.deb $ dpkg -x openvpn_2.1~rc11-1_amd64.deb ./
“easy-rsa” est dans usr/share/doc/openvpn/examples/easy-rsa/2.0/
. Donc:
$ su # mkdir /etc/bacula/easy-rsa # cp -Rp usr/share/doc/openvpn/examples/easy-rsa/2.0/. /etc/bacula/easy-rsa # cd /etc/bacula/easy-rsa/ # chown -R root: *
Modifier “vars” car par defaut il contient:
# cat vars | grep -v "^#" | grep -v "^$" export EASY_RSA="`pwd`" export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR="$EASY_RSA/keys" echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR export PKCS11_MODULE_PATH="dummy" export PKCS11_PIN="dummy" export KEY_SIZE=1024 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain"
Il me semble judicieux d'adapter au moins:
KEY_COUNTRY KEY_PROVINCE KEY_CITY KEY_ORG KEY_EMAIL
… et peut etre:
KEY_SIZE CA_EXPIRE KEY_EXPIRE
Faire:
# . ./vars # ./clean-all # ./build-ca
car :
Un répertoire “./keys” est maintenant peuplé…
Important:
Common Name : Bacula CA
# ./build-dh
Aussi la premiere fois, il faut dire qui est le maitre des clés (en quelques sortes):
./build-key-server bacula-server Common Name : my-bacula-server.fqdn
En “CN”, le nom fqdn. svp.
Faire en sorte que “bacula” est accès aux fichiers dans “keys” (pas forcément a tous).
Donc:
# cd /etc/bacula # chown -R :bacula easy-rsa # cd easy-rsa # chmod g+rxs keys
Afin d'autoriser “bacula” a lire dans le repertoire “keys” et a creer ulterieurement les fichiers avec le groupe “bacula” qui va bien.
# . ./vars # ./build-key tj-debcave
Et CN = tj-debcave
On se demerde pour envoyer les fichiers suivant:
.../keys/ca.crt .../keys/tj-debcave.crt .../keys/tj-debcave.key
… a la machine “tj-debcave”.
# . ./vars # ./revoke-full tj-debcave ... <snip> ... error 23 at 0 depth lookup:certificate revoked
La dernière ligne indique simplement que le certificat génère bien une erreur, maintenant qu'il est “revoké”.
Mais en pratique, avec Bacula, ca ne fonctionne pas.
C'est avec “openvpn” que ca fonctionne en combinaison avec : “crl-verify …”
Lien: http://openvpn.net/index.php/open-source/documentation/howto.html#revoke
Sur le serveur, dans bacula-dir.conf
:
... <snip> ... Director { # define myself ... <snip> ... # -- TLS -- TLS Enable = yes TLS Require = no TLS CA Certificate File = /etc/bacula/easy-rsa/keys/ca.crt TLS Certificate = /etc/bacula/easy-rsa/keys/bacula.crt TLS Key = /etc/bacula/easy-rsa/keys/bacula.key # ------------ } ... <snip> ...
“TLS Require = no” afin de toléré l'absence de chiffrement… notamment a cause de “webacula”
Dans bconsole.conf
:
... <snip> ... Director { ... <snip> ... address = bacula.fqdn ... <snip> ... # ---------- TLS Enable = yes TLS Require = yes TLS CA Certificate File = /etc/bacula/keys/ca.crt TLS Certificate = /etc/bacula/keys/tj-debcave.crt TLS Key = /etc/bacula/keys/tj-debcave.key # ---------- } ... <snip> ...
dans “address”, mettre l'adresse FQDN et non pas l'IP !!!
… sinon ca marche po
et faire gaffe aux droits d'accès aux fichiers.