> For the complete documentation index, see [llms.txt](https://manual.boxexchanger.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manual.boxexchanger.net/dlya-razrabotchikov/nastroika-bekap-na-b2.md).

# Настройка бекап на B2

1. &#x20;Создайте аккаунт в системе <https://www.backblaze.com/>&#x20;
2. Активируйте **B2 cloud storage** для этого: \
   Войдите в аккаунт -> My Settings -> Enabled Products -> \[+] B2 Cloud Storage\
   ![](/files/t41BSSzrQZt04XZrhTLV)
3. Создаем basket куда будем сохранять:\
   ![](/files/glxvd5OmjS7BVlpnMwsh)\
   ![](/files/Ubkv63wfD6uFJ3Z26HFX)
4. После нужно создать **App key** который сможет только делать запись без возможности удалять уже созданный бекап к сожалению через панель это сделать не получится поэтому мы [сделали готовый скрипт](https://gitlab.com/BoxExchanger-public/b2-backups/-/raw/main/b2-new-key.js) который умеет создавать безопасный ключ через API backblaze)\
   **Для этого необходимо:**&#x20;
   1. Клонировать репо:

      <pre class="language-bash"><code class="lang-bash"><strong>cd /root/
      </strong><strong>git clone https://gitlab.com/BoxExchanger-public/b2-backups.git
      </strong></code></pre>
   2. Перейти в папку с проектом:&#x20;

      ```bash
      cd b2-backups
      ```
   3. Установить пакеты:&#x20;

      ```bash
      npm i
      ```
   4. Получить Master KEY (после создания нужно сменить)\
      ![](/files/VzBPW1acwVBWSBHQcaa1)\
      ![](/files/SQwonQ3xJUAUn4RnNHKT)\
      ![](/files/l3GTTJzwHFTsbkTn126j)
   5. Создать ключ:

      ```bash
      npm run new-key
      ```

      B2 application key ID: **keyID** полученный на предыдущем шаге\
      B2 application key: **applicationKey** полученный на предыдущем шаге&#x20;

      ![](/files/2hODUQvSBPbLEd1eobqc)\
      B2 buckets ID:  Buckets -> Your bucket -> **Bucket ID**![](/files/dbLVLHqVJuT5I2IOwGMq)
   6. Копируем полученные ключи для установки их на нашем сервере. (временно сохраняем их у себя в текстовом файле)\
      ![](/files/cdhpBwAj2JZVKmmL8l33)
   7. Пересоздаем ключ полученный на 4.4 шаге для того чтоб старый был более не доступен (копировать его уже не нужно)
5. [Установить rclone](https://rclone.org/install/) на сервер.
6. Установить полученные ключи на сервер для этого используем следующие команды:&#x20;

   ```bash
   rclone config
   ```

   Далее нас запросит ответить на вопросы:

   <pre><code><strong>e/n/d/r/c/s/q> n
   </strong>name> b2
   Storage> 5
   account> (App Key Id c шага 4.6)
   key> (App Key c шага 4.6)
   </code></pre>
7. Конфигурируем `backup.sh` для правильного создания бекап и уведомления администратора.

   ```bash
   cd /root/b2-backups
   nano backup.sh
   ```

   Конфигурируем блок `# -- Configuration --`

   <pre class="language-bash" data-title="backup.sh" data-overflow="wrap"><code class="lang-bash"># rclone remote name.
   RCLONE_REMOTE="b2"
   # b2 bucket name.
   B2_BUCKET="name-project"
   # Telegram Bot Token
   BOT_TOKEN="1234567890:ABCDEF1234567890ABCDEF1234567890ABC"
   # (list) of Telegram Chat IDs.
   # e.g: CHAT_IDS=("1234567890" "0987654321")
   CHAT_IDS=("1234567890")
   </code></pre>

   Описание конфигураций: \
   **RCLONE\_REMOTE** - имя конфигурации rclone (6 шаг указали как name> **b2**)\
   **B2\_BUCKET** - имя корзины в BackBlaze (3 шаг)\
   **BOT\_TOKEN** - Токен телеграм бота полученный в [@BotFather](https://t.me/BotFather) в котором вы нажали кнопку /start\
   **CHAT\_IDS** - ид клиентов telegram которые должны получать уведомление о бекап статусе получить свой ид можно в телеграм боте [@myidbot](https://t.me/myidbot)&#x20;
8. Даем права на запуск bash-script файлу `backup.sh`

   ```bash
   chmod +x backup.sh
   ```

   &#x20;Если скрипт выполнил работу верно последняя строка будет:\
   `Backup completed successfully.`\
   Также в .телеграм вам должно прийти сообщение: \
   `📦 Backup on`` `*`hostname`*` ``completed successfully.`
9. Проверяем работу бекап скрипта&#x20;

   ```bash
   ./root/b2-backups/backup.sh
   ```
10. Устанавливаем авто бекап по крону (в примере каждый день в 4 ночи по времени сервера обычно по GMT)&#x20;

    ```bash
    (crontab -l; echo "0 */4 * * * bash /root/b2-backups/backup.sh >> /tmp/bk.log 2>&1") | crontab -
    ```

{% hint style="info" %}
Для работы скрипта необходимы права **root**.\
\
По умолчанию скрипт ищет конфигурацию API в папке \
`/var/www/exchanger-api/config/app_config.json`.\
Если у вас иной путь исправьте `BOXEXCHANGER_API_PATH` в файле `backup.sh` в разделе \
`# -- Init Default Vars --`\
`В файле конфигурации обязательно должен быть uri к mongodb`&#x20;
{% endhint %}
