# 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manual.boxexchanger.net/dlya-razrabotchikov/ustanovka-node/tron-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
