Зміст
- Підготовка локально
- Створення нового проєкту на Railway
- Додавання pgvector та налаштування змінних
- Налаштування Dockerfile
- Вимкнення прямого зв'язку з клієнтом
- Додавання токенів Twitter
- Завершення налаштувань і перевірка
1. Підготовка локально
Перед тим як завантажити проєкт на Railway, переконайтесь, що ваш бот працює правильно на вашій машині. Цей крок допоможе уникнути помилок під час побудови проєкту.
Клонуйте репозиторій Eliza або ваш вибраний форк.
Встановіть залежності:
pnpm install
Перевірте, запустивши:
pnpm start - characters=characters/my.character.json
Переконайтесь, що ваш персонаж реагує у терміналі або іншому інтерфейсі, який ви вказали.
2. Створення нового проєкту на Railway
Перейдіть на Railway і створіть новий проєкт. Це ваша тестова платформа для хостингу коду:
Натискайте "New Project".
Виберіть "Deploy from GitHub repo" або імпортуйте джерело вручну, якщо вам так зручніше.
Слідкуйте за журналами побудови, щоб переконатися, що система хоча б намагається побудувати ваш код. Якщо все гаразд, контейнер запуститься (хоча, ймовірно, він не буде повністю функціональним до завершення решти кроків).
3. Додавання pgvector та налаштування змінних
Eliza добре зберігає дані про розмови за допомогою SQLite, але якщо вам потрібна глибша пам'ять або зберігання векторів, Postgres з pgvector — це саме те, що потрібно. Шаблон "pgvector" від Railway допоможе прискорити цей процес:
- У панелі керування вашим проєктом знайдіть "Add new service".
- Виберіть "Templates".
- Введіть "pgvector" у пошукову панель.
- Натисніть "Add pgvector service".
Ви отримаєте нову базу даних Postgres з доданим pgvector. Далі відкрийте сторінку цього сервісу та скопіюйте змінні середовища, які відображаються (такі як PGHOST, PGPORT, PGUSER, DATABASE_URL тощо).
Після цього перейдіть до вашого веб-контейнера (сервісу, що запускає ваш додаток) і під розділом "Variables" або "Settings → Variables" вставте те, що ви скопіювали — щоб веб-контейнер знав, як підключитися до pgvector. Переконайтесь, що ви вказали правильні значення для DATABASEURL або POSTGRESURL. Дехто надає перевагу використанню одного DATABASE_URL, інші адаптують імена змінних середовища в коді.
Якщо ваш код очікує DATABASEURL, назвіть його так. Якщо ви хочете використовувати POSTGRESURL, це теж підходить. Просто переконайтесь, що вони відповідають тому, що перевіряє ваш код.
Потенційна проблема
Іноді динамічне "посилання" на Railway не заповнює змінні середовища так, як ви очікуєте. Ви можете побачити, що вони порожні в журналах. У цьому випадку вручну скопіюйте та вставте кожну змінну з pgvector у ваш веб-контейнер.
Якщо ваш проєкт і база даних pgvector підключаються правильно, ви повинні побачити стрілку, що відображається між ними.
4. Налаштування Dockerfile
Стандартний Node образ разом з PNPM достатньо, але вам доведеться додавати код у певному порядку, щоб кеш побудови залишався ефективним.
Приклад Dockerfile з анотаціями:
# Почніть з Node.js 23.1.0
FROM node:23.1.0
# Встановіть pnpm глобально
RUN npm install -g [email protected]
# Встановіть робочий каталог
WORKDIR /app
# Скопіюйте конфігурації на верхньому рівні (workspace, lockfile тощо)
# Спочатку додаємо їх, щоб Docker міг кешувати встановлення залежностей, якщо вони не змінюються
ADD pnpm-workspace.yaml /app/
ADD package.json /app/
ADD .npmrc /app/
ADD tsconfig.json /app/
ADD pnpm-lock.yaml /app/
# Встановіть залежності
# Це залежить від файлів на верхньому рівні, які ми щойно скопіювали
RUN pnpm i
# Скопіюйте документи, якщо потрібно (необов'язковий крок)
ADD docs /app/docs
RUN pnpm i
# Скопіюйте пакети - це спільні бібліотеки або кілька підпакетів
ADD packages /app/packages
RUN pnpm i
# Скопіюйте папку агенту (де знаходиться основний код вашого агента Eliza)
# Ми робимо це останнім, щоб попередні кроки були кешовані, якщо вони не змінюються
ADD agent /app/agent
RUN pnpm i
# Скопіюйте скрипти, персонажі та інші елементи
ADD scripts /app/scripts
ADD characters /app/characters
# Побудуйте додаток
RUN pnpm build
# Відкрийте порт за замовчуванням (той, на якому працює ваш основний додаток Eliza)
EXPOSE 3000
# Команда запуску
CMD ["pnpm", "start", "--characters=characters/character.character.json"]
Примітки щодо Docker
Зберігайте кроки в логічному порядку: спочатку копіюйте конфігурацію, потім пакети, а потім ваш власний код агента.
При необхідності вимкніть прямий зв'язок з клієнтом (показано далі).
5. Вимкнення прямого зв'язку з клієнтом
Eliza за замовчуванням може мати прямий інтерфейс клієнта (дозволяє вводити дані в терміналі). На Railway ви можете побачити в журналах повідомлення про те, що він не може підключитися або запустити. Ви можете видалити або закоментувати посилання у вашому файлі “index.ts” або будь-якому іншому файлі, який запускає агента. Шукайте щось подібне:
// Приклад фрагмента коду (не включати номери рядків):
// import { DirectClientInterface } from "@ai16z/client-direct";
async function startAgents() {
// Видаліть або закоментуйте код прямого клієнта:
// const directClient = await DirectClientInterface.start();
// …
// directClient.registerAgent(runtime);
}
У вашому файлі персонажа також переконайтесь, що "clients": ["direct"] відсутнє.
6. Додавання токенів Twitter
Якщо ваш агент Eliza має публікувати в Twitter, вам знадобиться набір cookies або токенів, таких як TWITTER_COOKIES або CT0 токен. Наприклад, у вашому файлі .env або у змінних середовища Railway:
TWITTER_COOKIES='[{"name":"auth_token","value":"XXXXX","domain":".twitter.com"}, {"name":"ct0","value":"YourCt0Value","domain":".twitter.com"}]'
Додайте цей рядок у розділ "Variables" у вашому веб-сервісі Railway або в .env файл, якщо ви завантажуєте їх таким чином. Якщо ви також використовуєте інші соціальні конектори (як-от Telegram), додайте ваш TELEGRAMBOTTOKEN таким самим чином.
7. Завершення налаштувань і перевірка
Додайте або оновіть schema.sql
Якщо ваша збірка намагається створити певні таблиці або індекси в Postgres, у вашому репозиторії може бути schema.sql (наприклад, у packages/adapter-postgres/schema.sql). На Railway ви можете виконати таке:
psql "${DATABASE_URL}" < packages/adapter-postgres/schema.sql
Це забезпечить, що всі міграції пройдуть без проблем.
- Перегляд журналів
Перейдіть до журналів Deploy вашого проєкту на Railway, оновіть сторінку і переконайтесь, що немає помилок у консолі щодо бази даних або відсутніх змінних середовища.
- Перевірка кінцевої точки
Якщо ви налаштували агента для Twitter, спробуйте згадати його у Twitter або надіслати йому повідомлення. Якщо ваш агент наразі налаштований лише для Telegram, почніть з ним чат.
Додаткові поради
- Немає "Зв'язаного" стрілки сервісу?
Не хвилюйтеся, якщо ви не бачите стрілку між вашим веб-контейнером та контейнером pgvector. Як тільки ваші змінні середовища заповнені, а журнали показують, що бот реально взаємодіє з Postgres без помилок, все гаразд.
• Жорстке кодування проти динамічного зв'язування
Можливо, ви спробуєте динамічне зв'язування, дозволивши Railway налаштувати DATABASE_URL.
Якщо в журналах видно, що вони порожні, просто скопіюйте весь URL з сервісу pgvector у змінні середовища вашого веб-контейнера.
• Усунення неполадок
- Зустріли помилку “Could not open extension control file ‘pgvector.control’”? Це означає, що ви використали звичайний шаблон Postgres, а не pgvector. Перейдіть на шаблон, заснований на pgvector, або встановіть pgvector вручну.
- Переконайтесь, що ваші змінні середовища написані точно так, як це вказано в коді.
Заключні думки
Розгортання агента Eliza на Railway не повинно бути стресовим. Запустіть його локально, додайте правильні кроки в Dockerfile, налаштуйте вашу базу даних і підтримуйте стабільність змінних середовища. Коли ваша конфігурація стабільна, ваш бот може зберігати пам'ять про розмови та взаємодіяти з Twitter або Telegram, працюючи 24/7 на вашому сервері.
Ось і все. Насолоджуйтесь вашим новим агентом, що працює на Eliza, і нехай ваші журнали на Railway завжди будуть зеленими. Якщо виникли проблеми, поверніться до кроків вище, додайте більше журналів для налагодження і продовжуйте рухатись вперед.
Кінцевий результат вартий додаткових налаштувань. Якщо все працює, ви маєте хмарного розгорнутого співрозмовника, готового виконувати ваші накази.
Знайти мене в соцмережах:
[
x.com
Monsieurho
](https://x.com/MonsieurHo/?source=post_page-----e4c4c86c2618--------------------------------)
[
Crypto Scraper
Все про криптовалюти, блокчейн та web3. Відкривайте підручники про Ethereum, Solana та інші. Зв'язатися зі мною: [email protected]
www.youtube.com
](https://www.youtube.com/@monsieurho?source=post_page-----e4c4c86c2618--------------------------------)
Перекладено з: How to Deploy Eliza AI Agent on Railway