Bacula&Baculum Kurulumu
Tags: bacula, baculum, backup, installation
Published: 2023-08-01 08:05:50

Bu yazımda açık kaynak kodlu yedekleme yazılımı olan Bacula kurulumu ve yönetim arayüzü olan Baculum kurulumunu anlatacağım.

Kurulumu Ubuntu Server 20.04 üzerinden yapacağız.

Öncelikle Ubuntu Server kurulumunu yaparak temel ayarlarını (IP, Hostname, Depo Tanımları) tamamlıyoruz.

## BACULA KURULUMU

Paket veritabanlarının güncel olduğuna emin oluyoruz.

```
apt-get update
```

Uygulamanın kullanacağı veritabanı olarak PostgreSql kurulumu yapıyoruz. Sadece kurulum yapacağız. Gerekli konfigurasyonlar otomatik olarak tamamlanacaktır.

```
 apt-get install postgresql -y
```
Bacula kurulumunu yapıyoruz.

```
apt-get install bacula -y
```
Kurulum sonrasında aldığımız yedeklerin saklanacağı dizini oluşturuyoruz. Bu alan Storage üzerinden linux sunucuya mount edebileceğiniz herhangi bir alan(nfs gibi) olabilir.Biz kuruluma standart Linux file sisteminden dizin oluşturarak devam edeceğiz.İlgili dizin için yetkilendirme yapacağız.

```
mkdir /backup
chown -R bacula:bacula /backup
```
`/etc/bacula/bacula-sd.conf` konfigurasyon dosyasında `Archive Device` gördüğümüz tüm satırların karşılıklarını yedeklerin saklanacağı dizin olarak ayarlıyoruz.

```
Device {
  Name = FileChgr2-Dev2
  Media Type = File2

  Archive Device = /bacula   ####################

  LabelMedia = yes;                   
  Random Access = Yes;
  AutomaticMount = yes;               
  RemovableMedia = no;
  AlwaysOpen = no;
  Maximum Concurrent Jobs = 5
}

```
Store alanı ile ilgili konfigurasyon değişikliğinden sonra ilgili servisi yeniden başlatarak bacula konsola bağlanıp test yapabiliriz.

```
systemctl restart bacula-sd.service
bconsole 
```

## BACULUM KURULUMU

Baculum reposunun public key'ini APT repomuzun güvenilir anahtarlar listesine ekliyoruz.

```
wget -qO - http://www.bacula.org/downloads/baculum/baculum.pub | apt-key add -
```
Baculum depo adreslerini ekleyebilmek için dosya oluşturuyoruz.

```
touch /etc/apt/sources.list.d/baculum.list
```
Oluşturduğumuz dosyanın içeriğini düzenliyoruz. `nano /etc/apt/sources.list.d/baculum.list`

```
deb [ arch=amd64 ] http://www.bacula.org/downloads/baculum/stable-11/ubuntu focal main
deb-src http://www.bacula.org/downloads/baculum/stable-11/ubuntu focal main
```
Paket veritabanlarını güncelliyoruz.

```
apt-get update
```

Baculum Web ve API uygulaması için paket kurulumlarımızı yapıyoruz.

```
apt-get install baculum-common baculum-web baculum-api baculum-web-apache2
```
Gerekli konfigurasyonların otomatik olarak yapılması için aşağıdaki komutları çalıştırıyoruz.

```
a2enmod rewrite
a2ensite baculum-web
a2ensite baculum-api
systemctl restart apache2
```
Bu aşamada apache servisi aracılığıyla 9095 portundan web uygulamasının, 9096 portundan ise API'nin ayağa kalktığını görmemiz gerekiyor.Cli üzerinden portun hizmet verdiğini kontrol etmek için aşağıdaki komutu kullanabilirsiniz.

```
ss -tlpn
```
Apache'nin bacula servislerini yönetebilmesi için `/etc/sudoers.d/`'nin altına `baculum-api` isminde bir dosya oluşturarak içeriğini aşağıdaki şekilde düzenliyoruz.

```
nano /etc/sudoers.d/baculum-api
```

```
Defaults:www-data !requiretty
www-data ALL = (root) NOPASSWD: /usr/bin/bconsole
www-data ALL = (root) NOPASSWD: /opt/bacula/bin/bdirjson
www-data ALL = (root) NOPASSWD: /opt/bacula/bin/bsdjson
www-data ALL = (root) NOPASSWD: /opt/bacula/bin/bfdjson
www-data ALL = (root) NOPASSWD: /opt/bacula/bin/bbconsjson
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl start bacula-dir
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl stop bacula-dir
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl restart bacula-dir
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl start bacula-sd
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl stop bacula-sd
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl restart bacula-sd
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl start bacula-fd
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl stop bacula-fd
www-data ALL = (root) NOPASSWD: /usr/bin/systemctl restart bacula-fd

```
(Extra Bilgi)Yetki verdiğimiz dosya içerisinde belirtilen bacula çalıştırılabilir dosyalarının (bdirjson,bsdjson,bfdjson,bbconsjson) dizinleri değişkenlik gösterebiliyor. Bu sebeple ilgili dosyaların dizinlerini mlocate paketi ile tespit edebilirsiniz.

```
   apt install mlocate
   updatedb
   locate bfdjson
   locate bacula-fd.conf
   locate bbconsjson
```
Kurulumun bundan sonraki adımlarına arayüz üzerinden devam ediliyor.
Kurumulum yaptığımız sunucunun IP adresinin 9096 portuna Web Browser üzerinden istekte bulunuyoruz.Karşımıza kullanıcı adı ve parola ekranı geliyor.

```
#API SERVER YAPILANDIRMA ICIN
http://Server_IP:9096
Username:admin
Password:admin

#WEB SERVER YAPILANDIRMA ICIN
http://Server_IP:9095
Username:admin
Password:admin
```

Her iki servis için ekrana gelen adımları Test butonundan Başarılı cevabını alacak şekilde doldurarak tamamlıyoruz.
Gelen formlarda bazı dosyaların bulunduğu dizinlerde hatalar olabiliyor. Yukarıda extra bilgi kısmında paylaştığım gibi `mlocate` paketi ile doğru dizinleri bulabilirsiniz.

Tüm adımları tamamladıktan sonra Sunucunun 9095 portuna istek attığınızda aşağıdaki gibi bir ekran ile karşılaşmanız gerekmetedir.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7jhc6izyqkf7bdxvdt18.png)