# Kaptan Sunucu Kurulumu

## Database Hazırlanması

#### Postgre Kurulumu <a href="#kullan-c4-b1c-c4-b1-olu-c5-9fturma" id="kullan-c4-b1c-c4-b1-olu-c5-9fturma"></a>

```
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo apt install gnupg2 ca-certificates -y
wget -O- https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor > pgsql.gpg
sudo mv pgsql.gpg /etc/apt/trusted.gpg.d/pgsql.gpg
sudo apt update
apt install postgresql -y
```

#### Kullanıcı Oluşturma <a href="#kullan-c4-b1c-c4-b1-olu-c5-9fturma" id="kullan-c4-b1c-c4-b1-olu-c5-9fturma"></a>

```
sudo -u postgres createuser kaptan
```

Bu örnekte *kaptan* adında bir kullanıcı oluşturmuş olduk.

#### Database Oluşturma <a href="#database-olu-c5-9fturma" id="database-olu-c5-9fturma"></a>

```
sudo -u postgres createdb kaptan
```

Bu örnekte *kaptan* adında bir database oluşturmuş olduk.

#### Kullanıcıya Şifre Verme <a href="#kullan-c4-b1c-c4-b1ya-c5-9fifre-verme" id="kullan-c4-b1c-c4-b1ya-c5-9fifre-verme"></a>

```
sudo -u postgres psql

psql=# alter user <username> with encrypted password '<password>';

```

Komuttaki **username** oluşturduğunuz kullanıcı adıdır. Bizim örneğimizde bu kaptan'dır.\
Komuttaki **password** oluşturduğumuz kullanıcıya atamak istediğiniz şifredir.

Bu örnekte *kaptan* adında kullanıcıya şifre ataması gerçekleştirdik.

## Kaptan Kurulumu

* Öncelikle .deb uzantılı paket şu komut ile indirilir:

```
sudo apt install ./kaptan.deb
```

Paket isimlendirmenize göre *kaptan.deb* değişkenlik gösterebilir.

* Paket indirildikten sonra **/usr/share/kaptan/kaptan.conf** dosyasının içine girilir:

```
sudo nano /usr/share/kaptan/kaptan.conf
```

**kaptan.conf** dosyamıza kendi yapılandırmalarımıza göre aşağıdaki satırları ekleyelim.<br>

```
[kaptan]
hostname-check = n
postgresql-server-ip =  192.168.122.16
ad-server-address = 192.168.122.15
key-path=/usr/share/kaptan/
db-path=/usr/share/kaptan/
log-dir=/usr/share/kaptan/log/
client-log-dir = /usr/share/kaptan/clientlogs/
db-type=postgresql
```

**postgresql-server-ip:** Kaptan için PostgreSQL database'i kullanılacak makinenin IP adresi yazılır.\
**ad-server-address:** AD için kullanacağınız makinenin IP adresi yazılır.

**kaptan.conf** dosyamız şu şekilde gözükecektir:

<figure><img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc8nxx42j5zqw2i6s3bsp.png" alt=""><figcaption></figcaption></figure>

Sonrasında **Kaptan** sunucumuzda şu komut ile PostgreSQL bilgileri eklenir:

```
kaptan -q postgresql_username
```

Bizim örneğimizde *postgresql\_username* = kaptan olarak belirlenmişti. (*kaptan -q kaptan*)

* Bu komut girildikten sonra şifre istenecektir, db oluşturulurken girilien şifre girilir.
* Daha sonra servis yeniden başlatılır

```
systemctl restart kaptan
```

## Lisans İşlemleri

* Şu komut ile makinenin ID'si kontrol edilir ve ardından HAVELSAN A.Ş.'den veya yetkili bir satıcıdan alınan lisans istenir:

```
kaptan -i
```

* **/usr/share/kaptan/licence** dosyasının içine girilir ve lisans eklenip kaydedilir:

```
nano /usr/share/kaptan/licence
```

* Son olarak şu komut ile lisans'ın yolu verilerek lisans eklenir:

```
kaptan -l /usr/share/kaptan/licence
```

* Ayrıca **Kaptan**'ın sağlık durumunu kontrol edebilirsiniz:

{% hint style="warning" %} <mark style="color:orange;">**Kontrol Noktası**</mark>

Servisin çıktısınnda aşağıdaki gibi "**Error codes db init succes"** yazmalı.

```bash
kaptan# systemctl status kaptan
● kaptan.service - kaptan service
Loaded: loaded (/etc/systemd/system/kaptan.service; enabled; vendor
preset: enabled)
Active: active (running) since Thu 2021-07-01 15:45:52 +03; 7s ago
Main PID: 890 (kaptan)
Tasks: 3 (limit: 1135)
Memory: 19.1M
CGroup: /system.slice/kaptan.service
└─890 /usr/bin/kaptan
Jul 01 15:45:54 kaptan kaptan[890]: NOTICE:
column "ipaddress" of relation
"MACHINE" already exists, skipping
Jul 01 15:45:54 kaptan kaptan[890]: NOTICE:
column "tayfaversion" of
relation "MACHINE" already exists, skipping
Jul 01 15:45:54 kaptan kaptan[890]: NOTICE:
column "accesstime" of relation
"MACHINE" already exists, skipping
Jul 01 15:45:54 kaptan kaptan[890]: NOTICE:
column "domainname" of relation
"MACHINE" already exists, skipping
Jul 01 15:45:54 kaptan kaptan[890]: Machine db init success
Jul 01 15:45:54 kaptan kaptan[890]: NOTICE:
column "lastlogin" of relation
"USER" already exists, skipping
Jul 01 15:45:54 kaptan kaptan[890]: Machine db init success
Jul 01 15:45:54 kaptan kaptan[890]: Updating error codes database
Jul 01 15:45:56 kaptan kaptan[890]: Error codes db init succes
```

{% endhint %}

{% hint style="warning" %} <mark style="color:orange;">**Kontrol Noktası**</mark>

Kaptan sağlık durumu kontrol edilmeli

```
sudo kaptan -a
```

Çıktısında aşağıdaki değerlerin hepsinden geçmiş olması gerekmektedir.

> Postgresql connection is ok
>
> Current licence is valid
>
> This server is master
>
> All controls passed successfully
> {% endhint %}
