Узел Chainlink не запускается из-за ошибки “не предоставлен пароль”, даже когда пароль установлен.

Вопрос или проблема

Я пытаюсь настроить ноду Chainlink с помощью Docker Compose, но постоянно сталкиваюсь с проблемой. Контейнер с нодой Chainlink стартует, но продолжает выдавать следующую ошибку:

...
2024-11-09T15:59:49.588Z [INFO]  Служба Nurse (автоматическое профилирование pprof) отключена chainlink/application.go:229     версия=1.13.3@47c02ec 
2024-11-09T15:59:49.588Z [INFO]  DatabaseBackup: периодические резервные копии базы данных отключены. Чтобы включить автоматические резервные копии, установите DATABASE_BACKUP_MODE=lite или DATABASE_BACKUP_MODE=full chainlink/application.go:272     версия=1.13.3@47c02ec 
2024-11-09T15:59:49.590Z [WARN]  P2P_LISTEN_PORT не установлен, прослушивание на случайном порту 43519. Новый случайный порт будет генерироваться при каждом запуске, для стабильности рекомендуется установить P2P_LISTEN_PORT на фиксированное значение в вашем конфигурационном файле config/p2p_v1_config.go:87       логгер=GeneralConfig p2pPort=43519 версия=1.13.3@47c02ec 
ошибка аутентификации ключевого хранилища: не указан пароль

Вот моя настройка:

Я использую Docker Compose для запуска ноды Chainlink, Postgres, Grafana и Prometheus.

pickycamel@chainlink-node:~/chainlink_node_project$ ls -al
всего 36
drwxr-xr-x  3 pickycamel pickycamel 4096 Nov  9 15:59 .
drwxr-xr-x 13 pickycamel pickycamel 4096 Nov  9 15:17 ..
-rw-r--r--  1 pickycamel docker       15 Nov  9 14:58 .chainlink_password
-rw-r--r--  1 pickycamel docker     1024 Nov  9 15:07 .docker-compose.ymldocker-compose.swp
-rw-r--r--  1 pickycamel docker      371 Nov  9 15:14 .env
-rw-r--r--  1 pickycamel docker     1024 Nov  9 15:07 .up.swp
drwxr-xr-x  2 root       root       4096 Nov  9 15:52 chainlink_password
-rw-r--r--  1 pickycamel docker     1357 Nov  9 15:59 docker-compose.yml
-rw-r--r--  1 pickycamel docker      135 Nov  9 15:11 prometheus.yml

Ниже мой docker-compose.yml:

pickycamel@chainlink-node:~/chainlink_node_project$ cat docker-compose.yml 
версия: '3'
сервисы:
  chainlink:
    образ: smartcontract/chainlink:1.13.3
    имя_контейнера: chainlink-node
    перезапуск: всегда
    окружение:
      ETH_URL: ${ETH_URL}
      ETH_CHAIN_ID: ${ETH_CHAIN_ID}
      CHAINLINK_EMAIL: ${CHAINLINK_EMAIL}
      CHAINLINK_PASSWORD: ${CHAINLINK_PASSWORD}
      DATABASE_URL: postgresql://chainlink:${POSTGRES_PASSWORD}@chainlink-postgres:5432/chainlink
    тома:
      - ~/.chainlink-kovan:/chainlink
    порты:
      - "6688:6688"
    сети:
      - chainlink_network

  chainlink-postgres:
    образ: postgres:13
    имя_контейнера: chainlink-postgres
    перезапуск: всегда
    окружение:
      POSTGRES_USER: chainlink
      POSTGRES_PASSWORD: MyNewComplexPassword!2024
      POSTGRES_DB: chainlink
    тома:
      - chainlink_data:/var/lib/postgresql/data
    порты:
      - "5432:5432"
    сети:
      - chainlink_network

  prometheus:
    образ: prom/prometheus
    имя_контейнера: prometheus
    перезапуск: всегда
    тома:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    порты:
      - "9090:9090"
    сети:
      - chainlink_network

  grafana:
    образ: grafana/grafana
    имя_контейнера: grafana
    перезапуск: всегда
    порты:
      - "3000:3000"
    сети:
      - chainlink_network

сети:
  chainlink_network:
    драйвер: bridge

тома:
  chainlink_data:

Файл .env выглядит так:

pickycamel@chainlink-node:~/chainlink_node_project$ cat .env 

ETH_URL=https://rinkeby.infura.io/v3/##########################

ETH_CHAIN_ID=4

[email protected]
CHAINLINK_PASSWORD=MyPassword123@

POSTGRES_PASSWORD=MyNewComplexPassword!2024
  • Контейнер Chainlink запускается, но я всегда получаю ошибку: ошибка аутентификации ключевого хранилища: не указан пароль.

  • Контейнеры Postgres и другие работают нормально, и я могу получить доступ к базе данных вручную.

  • Файл пароля .chainlink_password содержит правильный пароль, и он совпадает с тем, что в файле .env.

pickycamel@chainlink-node:~/chainlink_node_project$ cat .chainlink_password 
MyPassword123@
pickycamel@chainlink-node:~/chainlink_node_project$ cat prometheus.yml 
глобальный:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'chainlink'
    static_configs:
      - targets: ['chainlink-node:6688']
pickycamel@chainlink-node:~/chainlink_node_project$ 

Что я уже пробовал:

  1. Проверил, что пароль в .chainlink_password совпадает с CHAINLINK_PASSWORD.

  2. Убедился, что в файле .chainlink_password нет опечаток или лишних пробелов.

  3. Обновил пароль базы данных с помощью psql внутри контейнера.

  4. Пробовал удалить и заново создать контейнеры с помощью docker-compose down, а затем docker-compose up -d.

Вопросы:

  1. Существует ли конкретный способ предоставить пароль ключевого хранилища ноде Chainlink в Docker Compose?

  2. Кто-то сталкивался с подобной проблемой и нашел решение?

Любая помощь будет очень полезна. Заранее спасибо!

Ответ или решение

Решение проблемы: Ошибка "no password provided" при запуске узла Chainlink в Docker

Если вы столкнулись с ошибкой "error authenticating keystore: no password provided" во время запуска узла Chainlink с использованием Docker Compose, несмотря на то что паролей заданы правильно, сначала убедитесь в правильности конфигурации и окружения. Вот пошаговое руководство, следуя принципам ясности и структуры для эффективного решения вашей проблемы.

1. Проверьте конфигурационные файлы

Файл .env:
Убедитесь, что ваш файл .env правильно загружен в ваши переменные окружения. Вы указали переменную CHAINLINK_PASSWORD. Убедитесь, что ни одно из значений не содержит лишних пробелов.

echo $CHAINLINK_PASSWORD

Этот вызов должен вывести ваш пароль. Если вывод пуст, проверьте корректность чтения файла.

Файл .chainlink_password:
Также убедитесь, что .chainlink_password содержит правильный пароль и присвоен нужный уровень доступа:

cat .chainlink_password
Примечание по правам доступа:

Убедитесь, что файл .chainlink_password доступен для чтения контейнером. Иногда недостаточные права доступа могут препятствовать чтению файла.

2. Правильная настройка Docker Compose

В вашем файле docker-compose.yml убедитесь, что переменная CHAINLINK_PASSWORD правильно ссылается на файл с паролем. Убедитесь, что вы используете env_file или правильно указываете ссылки.

Пример настройки с использованием env_file:

services:
  chainlink:
    ...
    env_file:
      - .env

Если вы используете environment для указания переменных, убедитесь, что они правильно формулированы:

environment:
  ...
  CHAINLINK_PASSWORD: ${CHAINLINK_PASSWORD}

3. Перезапуск контейнеров

После внесения изменений необходимо перезапустить контейнеры, чтобы они применили обновленные настройки. Выполните следующие команды в терминале:

docker-compose down
docker-compose up -d

4. Проверьте логи

После перезапуска контейнеров, проверьте логи узла Chainlink для обнаружения любых новых ошибок или предупреждений:

docker logs chainlink-node

Это поможет выявить, начинается ли контейнер без ошибок или нет.

5. Валидация конфигурации Ethereum

Проверьте правильность настройки подключения к Ethereum. Убедитесь, что ETH_URL и ETH_CHAIN_ID указаны верно. Ошибки в данном параметре могут также препятствовать корректной работе узла.

6. Общие рекомендации

  • Проверка пробелов: Убедитесь, что нет лишних пробелов в вашем .env и .chainlink_password.
  • Справочная документация: Ознакомьтесь с официальной документацией Chainlink и Docker на предмет известных проблем, связанных с конфигурацией узлов.
  • При необходимости: Проверьте также GitHub Issues на наличие аналогичных отчетов о проблемах.

Следуя этим шагам, вы сможете диагностировать и, возможно, решить ошибку "no password provided" в вашем узле Chainlink. Если проблема сохраняется, рассмотрите возможность обращения за поддержкой на форумы сообщества или к вашему поставщику облачных услуг, если вы используете облачное окружение.

Оцените материал
Добавить комментарий

Капча загружается...