HeKoti

Hekoti

Self‑hosted public wiki archive with an admin cockpit: Monaco editor, AI chat, webhooks, 2FA, multi‑language UI.

EnglishРусский

Hekoti screenshot


Docker Compose topology

Схема из docker-compose.yml (docker-compose-viz-mermaid): обновить локально — python scripts/update_compose_mermaid_readme.py (нужен Docker); на push CI сам подставит актуальный граф.

Service graph from docker-compose.yml via docker-compose-viz-mermaid. Refresh locally with python scripts/update_compose_mermaid_readme.py (Docker required); CI updates this block when compose or the script changes.

%%{init: {'theme': 'default'}}%%
flowchart TB
  Vhekotipgdata([hekoti_pg_data]) x-. /var/lib/postgresql/data .-x hekotipostgres[hekoti-postgres]
  Vhekotiredisdata([hekoti_redis_data]) x-. /data .-x hekotiredis[hekoti-redis]
  Vhekotiuploads([hekoti_uploads]) x-. /app/public/uploads .-x hekotiapp[hekoti-app]
  hekotiapp --> hekotipostgres
  hekotiapp --> hekotiredis
  hekotipostgres -.- default[/default/]
  hekotiredis -.- default
  hekotilanguagetool[hekoti-languagetool] -.- default
  hekotiapp -.- default
  hekotiapp -.- proxynetwork[/proxy-network/]

  classDef volumes fill:#fdfae4,stroke:#867a22
  class Vhekotipgdata,Vhekotiredisdata,Vhekotiuploads volumes
  classDef nets fill:#fbfff7,stroke:#8bc34a
  class default,proxynetwork nets

English

What is Hekoti?

Hekoti is a lightweight, self‑hosted wiki engine for publishing knowledge pages and maintaining them through a modern admin UI.

It’s designed for “public read + private write” deployments: visitors can browse, admins can edit, publish, reorder, and structure pages.

Killer features

Core / Engine / Frontend

Quick start (Docker)

Requires Docker Compose v2.24+.

Zero‑config (defaults live in docker-compose.yml):

docker compose up -d --build

Optional tuning:

cp .env.example .env
# Edit: POSTGRES_*, HEKOTI_ADMIN_*, WEBHOOK_SECRET, etc.
docker compose up -d --build

Migrations: on each hekoti-app start, docker-entrypoint.sh runs scripts/check-prisma-migrations-destructive.cjs, then prisma migrate deploy (unless HEKOTI_SKIP_MIGRATE=1).

Migration safety (git pull / deploy): the check script scans prisma/migrations/*/migration.sql for destructive patterns (DROP DATABASE, DROP SCHEMA, DROP TABLE, DROP TYPE, TRUNCATE). If any match, the container exits before migrate deploy so you can read the diff and back up PostgreSQL. To apply an intentional destructive migration once, set HEKOTI_MIGRATE_ALLOW_DESTRUCTIVE=1 for that deploy only. To disable the guard entirely (not recommended), set HEKOTI_SKIP_DESTRUCTIVE_MIGRATION_CHECK=1. Never run prisma migrate reset against production data.

Telemetry / counters (no SSH): Admin → SettingsHTML / telemetry — paste Yandex.Metrica, Google Analytics (<script>, <meta>, <link>, <noscript>). Use the template buttons, replace IDs, Save.

First admin user / demo pages (seed):

docker compose exec hekoti-app npx --yes tsx prisma/seed.ts

Open: http://localhost:3310

Quick start (local)

cp .env.example .env
npm install
npm run db:generate
npx prisma migrate dev
npm run db:seed
npm run dev

Configuration highlights

See .env.example. Most important:

Health checks

Credits

Developed and created by @hehestl
https://t.me/hehestl
https://github.com/hehestl
https://t.me/PhiloraBot


Русский

Что такое Hekoti?

Hekoti — лёгкий self‑hosted движок вики: публикуешь страницы знаний и управляешь ими через современную админку.

Проект заточен под режим “публичное чтение + приватное редактирование”: гости читают, админ создаёт, редактирует, публикует и наводит порядок.

Киллер‑фичи

Ядро / Движок / Фронтенд

Быстрый старт (Docker)

Нужен Docker Compose v2.24+.

Запуск без конфигурации (дефолты в docker-compose.yml):

docker compose up -d --build

С настройками:

cp .env.example .env
# Настрой POSTGRES_*, HEKOTI_ADMIN_*, WEBHOOK_SECRET и т.д.
docker compose up -d --build

Миграции: перед деплоем запускается проверка scripts/check-prisma-migrations-destructive.cjs, затем prisma migrate deploy (если не выставлен HEKOTI_SKIP_MIGRATE=1).

Безопасность миграций: скрипт ищет в SQL опасные конструкции (DROP DATABASE/SCHEMA/TABLE/TYPE, TRUNCATE). При совпадении контейнер не применяет миграции — сделайте бэкап БД, разберите diff. Одноразово для осознанного патча: HEKOTI_MIGRATE_ALLOW_DESTRUCTIVE=1. Полностью отключить проверку: HEKOTI_SKIP_DESTRUCTIVE_MIGRATION_CHECK=1 (нежелательно). Не используйте prisma migrate reset на продакшене.

Счётчики без SSH: Админка → Настройки — блок HTML/телеметрия: вставка Яндекс.Метрики, Google Analytics и шаблоны кнопками.

Первый админ / демо‑страницы (seed):

docker compose exec hekoti-app npx --yes tsx prisma/seed.ts

Открыть: http://localhost:3310

Быстрый старт (локально)

cp .env.example .env
npm install
npm run db:generate
npx prisma migrate dev
npm run db:seed
npm run dev

Важные настройки

Смотри .env.example. Главное:

Хелсчеки

Автор

Разработано и создано @hehestl
https://t.me/hehestl
https://github.com/hehestl
https://t.me/PhiloraBot