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">
  Бастамас бұрын сервер мен клиенттердің [жүйелік талаптарға](/kk/platform/v3/requirements) сай
  екеніне көз жеткізіңіз.
</Alert>

## Орнату файлдарын жүктеп алу

IIoT платформасын орнату образдарын екі жолмен жүктеп алуға болады.

<Tabs labels={['Сыртқы тасығыштан', 'Интернет арқылы']}>
  <Fragment slot="panel-0">
    Серверде интернетке қол жеткізу болмаса — мысалы, кәсіпорынның қауіпсіздік саясатына сай —
    платформаны желіге қосылмай орнатуға болады. Орнату образдары серверге сыртқы тасығыштан
    көшіріледі.
  </Fragment>
  <Fragment slot="panel-1">
    Серверде интернетке қол жеткізу болса, орнату образдары серверге қашықтағы репозиторийден тартып
    алынады.
  </Fragment>
</Tabs>

## Орнату қадамдары

<Steps>

### Қажетті деректер дестесін көшіріп алыңыз

Орнату дестесін серверге көшіріңіз (әкімші құқықтары қажет):

- Жүктеп алынған `unicloud.tgz` архивін және `images` қалтасын (архивтелген образдары бар жеке орнату
  дестесі) пайдаланушының үй қалтасына көшіріңіз. Архивте `docker-compose.yml` және `.env` баптау
  файлдары да бар (`.env` жасырын, сондықтан жасырын файлдарды көрсетуді қосыңыз).

<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' },
      ],
    },
  ]}
/>

- Баптау файлдарын `/opt/vadtelnewweb/` қалтасына көшіріңіз.

- `.env` файлында жүйелік логиндер мен парольдерді орнатыңыз:

```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
```

### Docker мен Docker Compose орнатыңыз

#### CentOS негізіндегі дистрибутивте

Docker мен Docker Compose орнатыңыз:

```bash
sudo dnf install docker-ce docker-compose
```

Docker-ді іске қосып, жүктелу кезінде автоматты түрде қосылуын баптаңыз:

```bash
sudo systemctl enable --now docker && systemctl start docker
```

#### Debian негізіндегі дистрибутивте

Docker мен Docker Compose орнатыңыз:

```bash
sudo apt update
sudo apt install docker docker-compose
```

### Жүйені орнатыңыз

Қалған қадамдар барлық операциялық жүйеде бірдей. Қолданбаны іске қосатын пайдаланушыны `docker`
тобына қосыңыз:

```bash
sudo usermod -aG docker ${USER}
```

<Alert type="warning">
  Бұл команданы орындағаннан кейін жаңа рұқсаттардың күшіне енуі үшін сеансты аяқтап, жүйеге қайта
  кіріңіз.
</Alert>

`unicloud.tgz` архивін пайдаланушының үй қалтасында ашыңыз:

```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' },
      ],
    },
  ]}
/>

Пайдаланушының үй қалтасында ашылған `unicloud` қалтасын ашып, орнату скриптін іске қосыңыз:

```bash
sudo ./remote_install.sh
```

Десте орнатылғаннан кейін `/var/lib/unicloud` қалтасын әкімші құқықтарымен ашып, `.env` файлының иесі
мен тобын ағымдағы пайдаланушыға өзгертіңіз.

Скрипт деректер қорының логині мен паролін `/var/lib/unicloud/.env` файлында жасайды. Бұл мәндерді
`/opt/vadtelnewweb/.env` файлына көшіріңіз:

```bash
VADTEL_UNICLOUD_TEST_USERNAME=NEED_USERNAME

VADTEL_UNICLOUD_TEST_PASSWORD=NEED_PASSWORD
```

### Образдарды шығарып, жүктеңіз

Бұрын көшірілген `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
```

Образдарды 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
```

Образдардың қолжетімді екенін тексеріңіз:

```bash
docker images
```

Жүктеген тоғыз образдың бәрі тізімде көрінуі тиіс.

Образдар қатесіз жүктелсе, `/var/lib/unicloud` қалтасынан мына команданы орындаңыз:

```bash
docker-compose up -d
```

`/opt` астында `vadtelnewweb` қолданбасына арналған каталог жасаңыз:

```bash
sudo mkdir /opt/vadtelnewweb
cd /opt/vadtelnewweb
```

Содан кейін `docker-compose.yml` және `.env` файлдарын (жаңа орнату үшін оларды бұрын көшірмеген
болсаңыз) `/opt/vadtelnewweb` қалтасына көшіріңіз.

Алғаш іске қосқанда деректер қорын жасаңыз:

```bash
docker-compose run app bundle exec rails db:create
```

Енді қолданбаны іске қосыңыз:

```bash
docker-compose up -d
```

<Details title="Ақаулықтарды жою">
Қолданба іске қосылғаннан кейін мынадай қатені хабарласа:

```bash
network unicloud_unicloud-net declared as external, but could not be found
```

бұл — орнату кезінде сыртқы желі жасалмаған дегенді білдіреді. [Жүйені
орнатыңыз](#жүйені-орнатыңыз) бөлімінде сипатталғандай, `unicloud.tar.tgz` архивінен бастапқы
орнатуды орындаңыз да, қолданбаны қайта іске қосыңыз:

```bash
docker-compose up -d
```

</Details>

Жұмыс істеп тұрған контейнерлерді тексеріңіз:

```bash
docker ps
```

Барлық контейнер `Up` күйімен тізімде көрінуі тиіс.

### Жүйені тексеріңіз

Қолданба іске қосылғаннан кейін жүйенің жұмыс істеп тұрғанын растау үшін браузерде ол орналасқан
сервердің IP мекенжайын ашыңыз:

```bash
http://127.0.0.1/auth/users/sign_in
```

<Image
  src="/images/deployment/sign-in-en.webp"
  alt="Электрондық пошта мен пароль өрістері бар IIoT платформасының жүйеге кіру беті"
  caption="IIoT платформасының жүйеге кіру беті"
  width={1873}
  height={902}
/>

Жүйеге кіру электрондық поштасы мен паролі `/opt/vadtelnewweb/.env` файлында орнатылады:

```shell title=".env"
VADTEL_SUPER_ADMIN_EMAIL= (login)
VADTEL_SUPER_ADMIN_PASSWORD= (password)
```

</Steps>

## Келесі қадамдар

Платформа орнатылып, жұмыс істеп тұрғаннан кейін оны таза жаңартуға және сервермен бірге автоматты түрде қайта іске қосылуға баптаңыз.

<Cards>
  <Card
    icon="refresh-cw"
    title="Жаңарту және автоматты іске қосу"
    description="Платформаны образдардың жаңа нұсқаларына жаңартыңыз және оны сервермен бірге автоматты түрде іске қосылатын етіңіз."
    href="/kk/platform/v3/installation/updates"
  />
</Cards>