Before touching bconsole and bacula-dir, you need to master basic Linux admin (daemons, users, file permissions), understand the concept of full/incremental backups and TCP networking, and prepare a server with Bacula 15.0.4 and the File Daemon client. In this episode the entire environment is visualized and verified.

Welcome to the Learn Bacula series! This series will take you through mastering Bacula — an enterprise open source backup suite that manages backups for cross-platform servers and workstations with a distributed architecture: Director, Storage Daemon, File Daemon, and Catalog. In total there are 23 episodes arranged across six phases, from conceptual foundations to large-scale production readiness.
Before writing any bacula-dir.conf configuration, there are basic skills and tools you must prepare. Why are these prerequisites important? Because Bacula consists of many daemons that communicate over the network, manage file permissions, and work directly with a database. Without understanding these layers, you will struggle when backups fail, daemon authentication is rejected, or the catalog becomes locked.
Episode 0 is your roadmap: we make sure the basic skills are in place, map out the server architecture to be built, and verify the environment for the first time.
Bacula runs as daemons (bacula-dir, bacula-sd, bacula-fd) that are usually run by a dedicated user (for example bacula) or root. You must understand init systems (systemd), users/groups, and file permissions. A real example: config files contain daemon passwords, so their permissions must be kept strict. Check these basics first:
id bacula
systemctl status bacula-dir
ls -l /etc/bacula/Usually /etc/bacula/*.conf belongs to root:bacula with mode 0640, and some sensitive files use 0600. We cover hardening in detail in episode 14.
The three Bacula daemons connect to each other over the network. The Director listens on port 9101, the Storage Daemon on 9102, and the File Daemon on 9103. You need to understand the concepts of ports, firewalls, and some basic troubleshooting with ss/netstat — because in production, the Director and Storage Daemon usually run on a server separate from the client File Daemons.
Understand the difference between a full backup (copying all data), an incremental backup (changes since the last backup), and a differential backup (changes since the last full backup). Bacula stores these files on Volumes (media: files on disk or tape) and records the metadata of every file in the Catalog (database). The concepts of retention and rotation will determine how much media you need — we break that down in episodes 6 and 7.
For this series we use Bacula 15.0.4 (released 23 May 2026) on a Linux distribution (Debian/Ubuntu/RHEL). One minimum server holds three components: Director (control), Storage Daemon (media), and Catalog (metadata database). Recommended baseline specs:
uname -r
nproc
free -h
df -h /var/lib/baculaDisk space in /var/lib/bacula (or whichever storage location you choose) is the most important part — because all backup volumes will live there.
Bacula Community supports PostgreSQL, MySQL, and SQLite. For production, choose PostgreSQL or MySQL; SQLite is fine for a small lab. If you have never managed a database, the learn-sql-postgresql series will be very helpful.
In the early episodes, one client is enough: the server itself can be the client (backing up local directories). For cross-platform practice, prepare one more node (Linux, Windows, or macOS) as a File Daemon client. Clients are optional at the start — but without a second client, you won't yet feel the power of Bacula's distributed architecture.
Start with disk storage (a directory on the filesystem) because it is the simplest. Tape libraries and autoloaders are covered in episodes 11 and 19 — don't rush to buy hardware before understanding the concepts of pools and volumes.
Before moving to episode 1, make sure the base packages are available:
which curl wget postgres mysql sqlite3
sudo apt list --installed 2>/dev/null | grep -i baculaIf the Bacula packages are not there yet, that's fine — full installation happens in episode 3. What matters now: you understand where each component will live and why the architecture is separated.
Note
Bacula has two editions: Community (open source AGPL, complete backup core) and Enterprise (commercial, with application/VM plugins, dedup, and encryption). This series uses Community as the foundation, with Enterprise discussed in episode 18.
Here's what you've prepared in episode 0:
If anything is missing, complete it before continuing. The next 22 episodes will go far more smoothly with this strong foundation.
Key takeaways:
In the next episode, episode 1, we'll cover the history, background, and why you need Bacula — from its birth in 2000 as a fork of the V6 project, the AGPL license for Community and a commercial license for Enterprise, to the reasons why its distributed architecture and tape support have kept it alive for more than two decades. Make sure your environment is ready, because the Learn Bacula journey has just begun!