import Tabs from '@/components/docs/Tabs.astro';
import Steps from '@/components/docs/Steps.astro';
import FileTree from '@/components/docs/FileTree.astro';
import Image from '@/components/docs/Image.astro';
import Alert from '@/components/docs/Alert.astro';
import Details from '@/components/docs/Details.astro';
import Cards from '@/components/docs/Cards.astro';
import Card from '@/components/docs/Card.astro';

<Alert type="note">
  Prije nego što počnete, uvjerite se da poslužitelj i klijenti ispunjavaju [zahtjeve
  sustava](/hr/platform/v3/requirements).
</Alert>

## Preuzimanje instalacijskih datoteka

Instalacijske slike (image) za Data Platform možete preuzeti na dva načina.

<Tabs labels={['S vanjskog medija', 'Preko interneta']}>
  <Fragment slot="panel-0">
    Kada poslužitelj nema pristup internetu – na primjer, zbog sigurnosne politike poduzeća –
    platformu možete instalirati izvan mreže (offline). Instalacijske slike prenose se na
    poslužitelj s vanjskog medija.
  </Fragment>
  <Fragment slot="panel-1">
    Kada poslužitelj ima pristup internetu, instalacijske slike preuzimaju se na poslužitelj iz
    udaljenog repozitorija.
  </Fragment>
</Tabs>

## Koraci instalacije

<Steps>

### Kopirajte potrebni paket s podacima

Kopirajte instalacijski paket na poslužitelj (potrebna su administratorska prava):

- Kopirajte preuzetu arhivu `unicloud.tgz` i direktorij `images` (samostalni instalacijski paket
  s arhiviranim slikama) u matični direktorij korisnika. Arhiva sadrži i konfiguracijske datoteke
  `docker-compose.yml` i `.env` (datoteka `.env` je skrivena, pa uključite prikaz skrivenih
  datoteka).

<FileTree
  tree={[
    {
      name: 'images',
      children: [
        { name: 'vadtel-nginx-latest.tar.gz' },
        { name: 'vadtel-app-latest.tar.gz' },
        { name: 'anytelemetry-latest.tar.gz' },
        { name: 'pgbouncer-latest.tar.gz' },
        { name: 'vadteljsondaemon-latest.tar.gz' },
        { name: 'logrotate-latest.tar.gz' },
        { name: 'postgres-15.1-alpine.tar.gz' },
        { name: 'redis-6.0.16-alpine.tar.gz' },
        { name: 'vector-latest.tar.gz' },
      ],
    },
  ]}
/>

- Kopirajte konfiguracijske datoteke u direktorij `/opt/vadtelnewweb/`.

- U datoteci `.env` postavite korisnička imena i lozinke sustava:

```bash title=".env"
#key
SECRET_KEY_BASE=0356080kcn0ejgk4lwekrf

#DB PGSQL login
PG_APP_USER=ppppp

#DB PGSQL password
PG_APP_PASSWORD= ppppp

#WEB interface login
VADTEL_SUPER_ADMIN_EMAIL=NEED_USERNAME

#WEB interface password
VADTEL_SUPER_ADMIN_PASSWORD=NEED_PASSWORD

#DB PGSQL unicloud login
VADTEL_UNICLOUD_TEST_USERNAME=NEED_USERNAME

#DB PGSQL unicloud password
VADTEL_UNICLOUD_TEST_PASSWORD=NEED_PASSWORD
```

### Instalirajte Docker i Docker Compose

#### Na distribuciji temeljenoj na CentOS-u

Instalirajte Docker i Docker Compose:

```bash
sudo dnf install docker-ce docker-compose
```

Pokrenite Docker i uključite njegovo automatsko pokretanje pri podizanju sustava:

```bash
sudo systemctl enable --now docker && systemctl start docker
```

#### Na distribuciji temeljenoj na Debianu

Instalirajte Docker i Docker Compose:

```bash
sudo apt update
sudo apt install docker docker-compose
```

### Instalirajte sustav

Preostali koraci isti su na svim operacijskim sustavima. Dodajte u grupu `docker` korisnika koji
će pokretati aplikaciju:

```bash
sudo usermod -aG docker ${USER}
```

<Alert type="warning">
  Kada izvršite ovu naredbu, završite sesiju i ponovno se prijavite kako bi se nove ovlasti
  primijenile.
</Alert>

Raspakirajte arhivu `unicloud.tgz` u matičnom direktoriju korisnika:

```bash
tar -xf unicloud.tgz
```

<FileTree
  tree={[
    {
      name: 'unicloud',
      children: [
        {
          name: 'run',
          state: 'closed',
          children: [{ name: 'db-unicloud', type: 'folder', state: 'closed' }],
        },
        { name: 'remote_install.sh' },
        { name: 'init-db', children: [{ name: 'create_tables.sql' }] },
        { name: 'script_conf.sh' },
        { name: 'docker-compose.yml' },
        {
          name: 'logs',
          state: 'closed',
          children: [
            { name: 'crontab', type: 'folder', state: 'closed' },
            { name: 'vadteljsondaemon', type: 'folder', state: 'closed' },
            { name: 'anytelemetry', type: 'folder', state: 'closed' },
          ],
        },
        { name: 'backups', type: 'folder', state: 'closed' },
        {
          name: 'data',
          state: 'closed',
          children: [{ name: 'db-unicloud', type: 'folder', state: 'closed' }],
        },
        {
          name: 'local-images',
          children: [
            { name: 'pgbouncer.tar.gz' },
            { name: 'postgres.tar.gz' },
            { name: 'vadteljsondaemon.tar.gz' },
            { name: 'anytelemetry.tar.gz' },
            { name: 'logrotate.tar.gz' },
          ],
        },
        { name: 'unicloud.service' },
      ],
    },
  ]}
/>

U matičnom direktoriju korisnika otvorite raspakirani direktorij `unicloud` i pokrenite
instalacijsku skriptu:

```bash
sudo ./remote_install.sh
```

Kada se paket instalira, otvorite direktorij `/var/lib/unicloud` s administratorskim
privilegijama, pa za vlasnika i grupu datoteke `.env` postavite trenutačnog korisnika.

Skripta generira korisničko ime i lozinku za bazu podataka u datoteci `/var/lib/unicloud/.env`.
Kopirajte te vrijednosti u datoteku `/opt/vadtelnewweb/.env`:

```bash
VADTEL_UNICLOUD_TEST_USERNAME=NEED_USERNAME

VADTEL_UNICLOUD_TEST_PASSWORD=NEED_PASSWORD
```

### Raspakirajte i učitajte slike

Raspakirajte datoteke slika u prethodno kopiranom direktoriju `images`:

```bash
gunzip vadtel-nginx-latest.tar.gz
gunzip vadtel-app-latest.tar.gz
gunzip anytelemetry-latest.tar.gz
gunzip pgbouncer-latest.tar.gz
gunzip vadteljsondaemon-latest.tar.gz
gunzip logrotate-latest.tar.gz
gunzip postgres-15.1-alpine.tar.gz
gunzip redis-6.0.16-alpine.tar.gz
gunzip vector-latest.tar.gz
```

Učitajte slike u Docker:

```bash
docker load -i vadtel-nginx-latest.tar
docker load -i vadtel-app-latest.tar
docker load -i anytelemetry-latest.tar
docker load -i pgbouncer-latest.tar
docker load -i vadteljsondaemon-latest.tar
docker load -i logrotate-latest.tar
docker load -i postgres-15.1-alpine.tar
docker load -i redis-6.0.16-alpine.tar
docker load -i vector-latest.tar.gz
```

Provjerite jesu li slike dostupne:

```bash
docker images
```

Na popisu bi se trebalo pojaviti svih devet slika koje ste učitali.

Ako su slike učitane bez pogrešaka, izvršite sljedeću naredbu iz direktorija `/var/lib/unicloud`:

```bash
docker-compose up -d
```

Stvorite direktorij za aplikaciju `vadtelnewweb` unutar `/opt`:

```bash
sudo mkdir /opt/vadtelnewweb
cd /opt/vadtelnewweb
```

Zatim kopirajte datoteke `docker-compose.yml` i `.env` u direktorij `/opt/vadtelnewweb` (ako ih
pri novoj instalaciji niste ranije kopirali).

Pri prvom pokretanju stvorite bazu podataka:

```bash
docker-compose run app bundle exec rails db:create
```

Sada pokrenite aplikaciju:

```bash
docker-compose up -d
```

<Details title="Rješavanje problema">
Ako aplikacija nakon pokretanja prijavi sljedeću pogrešku:

```bash
network unicloud_unicloud-net declared as external, but could not be found
```

to znači da tijekom instalacije nije stvorena vanjska mreža. Provedite početnu instalaciju iz
arhive `unicloud.tar.tgz` kako je opisano u koraku [Instalirajte sustav](#instalirajte-sustav),
a zatim ponovno pokrenite aplikaciju:

```bash
docker-compose up -d
```

</Details>

Provjerite pokrenute kontejnere:

```bash
docker ps
```

Svi kontejneri trebali bi biti na popisu sa statusom `Up`.

### Provjerite rad sustava

Kada se aplikacija pokrene, u pregledniku otvorite IP adresu poslužitelja na kojem radi kako biste
se uvjerili da je sustav pokrenut:

```bash
http://127.0.0.1/auth/users/sign_in
```

<Image
  src="/images/deployment/sign-in-en.webp"
  alt="Stranica za prijavu u Data Platform s poljima za adresu e-pošte i lozinku"
  caption="Stranica za prijavu u Data Platform"
  width={1873}
  height={902}
/>

Adresa e-pošte i lozinka za prijavu zadaju se u datoteci `/opt/vadtelnewweb/.env`:

```shell title=".env"
VADTEL_SUPER_ADMIN_EMAIL= (login)
VADTEL_SUPER_ADMIN_PASSWORD= (password)
```

</Steps>

## Sljedeći koraci

Kada je platforma instalirana i pokrenuta, konfigurirajte je tako da se ažurira bez problema i da se automatski ponovno pokreće zajedno s poslužiteljem.

<Cards>
  <Card
    icon="refresh-cw"
    title="Ažuriranje i automatsko pokretanje"
    description="Ažurirajte platformu na nove verzije slika i konfigurirajte je tako da se automatski pokreće zajedno s poslužiteljem."
    href="/hr/platform/v3/installation/updates"
  />
</Cards>