> 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/ustanovka-node/tron-node.md).

# Tron Node

{% hint style="warning" %}
Документация описана для установки на чистую VDS без стороннего ПО и других программ учитывайте это при установке.
{% endhint %}

{% tabs %}
{% tab title="Mainnet" %}

### Сборка Tron Node

1. Установите необходимые пакеты:

   ```shell
   apt update && apt install -y git wget curl nano
   ```
2. Установите Docker по официальной документации <https://docs.docker.com/engine/install/#server>
3. Клонируйте репозиторий с докер-образом:

   ```bash
   git clone https://github.com/boxexchanger/docker-java-tron.git
   ```
4. Переходим в директорию с проектом

   ```
   cd docker-java-tron/
   ```
5. Создайте конфигурационный файл и задайте нужные адреса контрактов и топики событий: (не обезательно но рекомендуем дабы не обрабатывать лишнии транзакции)

   ```bash
   nano ~/docker-java-tron/tron.conf
   ```

   пример конфигурации для обработки только USDT событий

   ```
   EVENT_PLUGIN_ADDRESS_FILTER=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t
   ```
6. Создаем папку для данный ноды&#x20;

   ```bash
   mkdir -p ~/docker-java-tron/data/node
   ```
7. Скачиваем Lite версию данных ноды с открытого источника (<http://34.143.247.77/>) ([документация](https://developers.tron.network/docs/main-net-database-snapshots#lite-fullnode-data-snapshot))

   ```bash
   wget http://34.143.247.77/backup20250611/LiteFullNode_output-directory.tgz -O ~/LiteFullNode_output-directory.tgz
   ```
8. Распаковать архив (папку `output-directory)` в `~/docker-java-tron/data/node/`

   ```bash
   tar xvf ~/LiteFullNode_output-directory.tgz -C ~/docker-java-tron/data/node/ --strip-components=1
   ```
9. Удаляем архив со Lite данными &#x20;

   ```
   rm ~/LiteFullNode_output-directory.tgz
   ```

   Теперь наша Tron node готова к запуску&#x20;
   {% endtab %}

{% tab title="Testnet Nile" %}

### Сборка Tron Node

1. Установите необходимые пакеты:

   ```shell
   apt update && apt install -y git wget curl nano
   ```
2. Установите Docker по официальной документации <https://docs.docker.com/engine/install/#server>
3. Клонируйте репозиторий с докер-образом:

   ```bash
   git clone https://github.com/boxexchanger/docker-java-tron.git
   ```
4. Переходим в директорию с проектом

   ```bash
   cd docker-java-tron/
   ```
5. Устанавливаем ветку nile

   ```bash
   git checkout nile
   ```
6. Создайте конфигурационный файл и задайте нужные адреса контрактов и топики событий: (не обезательно но рекомендуем дабы не обрабатывать лишнии транзакции)

   ```bash
   nano ~/docker-java-tron/tron.conf
   ```

   пример конфигурации для обработки только JST событий

   ```
   EVENT_PLUGIN_ADDRESS_FILTER=TF17BgPaZYbz8oxbjhriubPDsA7ArKoLX3
   ```
7. Создаем папку для данный ноды&#x20;

   ```bash
   mkdir -p ~/docker-java-tron/data/node
   ```
8. Скачиваем Lite версию данных ноды с открытого источника (<https://database.nileex.io/#>)&#x20;

   ```bash
   wget _URL_ -O ~/LiteFullNode_output-directory.tgz
   ```
9. Распаковать архив (папку `output-directory)` в `~/docker-java-tron/data/node/`

   ```bash
   tar xvf ~/LiteFullNode_output-directory.tgz -C ~/docker-java-tron/data/node/ --strip-components=1
   ```
10. Удаляем архив со Lite данными &#x20;

    ```
    rm ~/LiteFullNode_output-directory.tgz
    ```

    Теперь наша Tron node готова к запуску&#x20;

Теперь наша Tron node готова к запуску&#x20;
{% endtab %}
{% endtabs %}

### Запускаем Node

1. Переходим в дерикторию проекта:&#x20;

   ```bash
   cd ~/docker-java-tron/
   ```
2. Запускаем Tron node&#x20;

   ```
   ./start.sh
   ```

### Как добавить еще один адрес контракта

1. Нужно зайти в конфигурацию:

   ```
   nano ~/docker-java-tron/tron.conf
   ```
2. Добавить еще один адрес в блок `EVENT_PLUGIN_ADDRESS_FILTER` разделив адреса контрактов знаком запятой **,** при этом не используйте перенос строк или пробелы между адресами.\
   \
   Пример USDT + USDC:&#x20;

   ```
   EVENT_PLUGIN_ADDRESS_FILTER=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t,TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8
   ```

### Авто-очистка данных:&#x20;

По умолчанию мы установили 5 дней хранения данных которые вы можете синхронизировать&#x20;

Если вы хотите изменить данный параметр вам нужно добавить в вашу конфигурацию другое количество дней&#x20;

1. Нужно зайти в конфигурацию:

   ```bash
   nano ~/docker-java-tron/tron.conf
   ```
2. Добавить строку со своим значением:

   ```
   MONGO_RETENTION_DAYS=5
   ```

### Как получать логи:

```
docker exec -it tron-node tail -f logs/tron.log
```

### Открываем порт доступа:

Создаем прокси с портов \
&#x20; \- localhost:8080 на порт **2080** для EventServer \
&#x20; \- localhost:18090 на порт **2090** для fullNode \
&#x20; \- localhost:18091 на порт **2091** для solidityNode

<details>

<summary>Настраиваем прокси на caddy</summary>

Устанавливаем caddy <https://caddyserver.com/docs/install>\
\
Документация подготовлена для операционной системы **Debian 11 и 12**.

```shell
apt install -y debian-keyring debian-archive-keyring apt-transport-https
```

```shell
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
```

```shell
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' |  tee /etc/apt/sources.list.d/caddy-stable.list
```

```shell
apt update
```

```shell
apt install caddy
```

конфигурируем caddy  для прокси \
&#x20; 8080,18090,18091 на порты 2080,2090,2091 для внешней сети&#x20;

Caddyfile будет перезаписан полностью!

```
echo -e ':2080 {\n reverse_proxy :8080\n}\n:2090 {\n reverse_proxy :18090\n}\n:2091 {\n reverse_proxy :18091\n}' > /etc/caddy/Caddyfile 
```

запускаем caddy

```bash
systemctl enable --now caddy
```

или перезагружаем если необходимо `systemctl restart caddy`

</details>

### Доступы:&#x20;

**EventServer:** `http://ip.host:2080`\
**Node:** `http://ip.host:2090`\
**Solidity:** `http://ip.host:2091`

### Как обновить tron-node контейнер.

Обновить версию в .env файле <https://github.com/tronprotocol/java-tron/releases>

{% code title=".env" %}

```bash
JAVA_TRON_VERSION="GreatVoyage-v4.8.0"
```

{% endcode %}

Пересобираем docker и перезапускаем node:&#x20;

```bash
docker compose build
./start.sh
```
