Flowise на Pethost в один клик
Визуальная сборка ИИ-агентов и LLM-воркфлоу, которые затем вызываются по API или встраиваются как чат-виджет
Что произойдет
- Вы входите в Pethost или создаете аккаунт — с passkey, через GitHub или Google.
- Машины еще нет? Вы выбираете тариф, и мы готовим машину для вас. Ссылка ждет в вашем браузере, пока машина не будет готова.
- Окно «Новый проект» открывается на этом приложении. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: Электронная почта, Пароль администратора.
- Через минуту-две приложение работает по своему адресу с HTTPS. Его секреты создаются случайно, а данные попадают в ночной бэкап.
- Это проект как любой другой: его compose.yaml, .env, логи и терминал — в панели, а ваш агент может его изменить, откатить или восстановить.
Первые шаги
Войдите с почтой и паролем администратора, которые вы указали: шаблон регистрирует этого owner при первом запуске. Добавьте credential провайдера вашей модели, затем соберите chatflow или agentflow.
Что запускается
Шаблон — это этот compose.yaml и переменные, которые он пишет в .env проекта. Pethost запускает файл так, как он написан.
services:
flowise:
image: flowiseai/flowise:3.1.3
restart: unless-stopped
environment:
PORT: "3000"
APP_URL: ${URL}
JWT_AUTH_TOKEN_SECRET: ${JWT_AUTH_TOKEN_SECRET}
JWT_REFRESH_TOKEN_SECRET: ${JWT_REFRESH_TOKEN_SECRET}
EXPRESS_SESSION_SECRET: ${EXPRESS_SESSION_SECRET}
TOKEN_HASH_SECRET: ${TOKEN_HASH_SECRET}
NUMBER_OF_PROXIES: "1"
ADMIN_EMAIL: ${ADMIN_EMAIL}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# Flowise lets its first visitor register the owner. The first start runs it on a port no
# route reaches, registers the email and password given there, then serves it on 3000.
entrypoint: ["/bin/sh", "-c"]
command:
- |
PORT=3001 flowise start &
setup=$$!
node -e '
const base = "http://127.0.0.1:3001/api/v1";
const body = JSON.stringify({ user: { name: "Admin", email: process.env.ADMIN_EMAIL, credential: process.env.ADMIN_PASSWORD } });
const wait = (ms) => new Promise((done) => setTimeout(done, ms));
(async () => {
for (let tries = 0; tries < 300; tries++) {
try {
const ping = await fetch(base + "/ping");
if (ping.ok) break;
} catch {}
await wait(1000);
}
const answer = await fetch(base + "/account/register", { method: "POST", headers: { "Content-Type": "application/json" }, body });
const text = await answer.text();
if (answer.ok || /only have one organization/.test(text)) return;
console.error("registering the owner failed:", answer.status, text);
process.exit(1);
})();
' || exit 1
kill $$setup
wait $$setup
exec flowise start
volumes:
- data:/home/node
volumes:
data:
