نصب و اجرا از باینری ازپیشساختهشده#
برای وقتی که فقط باینری opendray را میخواهید — بدون wizard نصبکننده که دست به تنظیمات ماشین شما بزند. این مسیر مناسب است برای:
npm install -g opendray/npx opendray— پکیج npm باینری رسمی Go release را شامل میشود (ببینید README → npm / npx).- دانلود Release — فایل
opendray_*_<os>_<arch>.tar.gzرا از صفحه Releases بردارید. - محیطهای scripted / ephemeral — CI runnerها، golden imageها، config management (Ansible، Nix، Docker)، یا هر hostی که Postgres و process supervisor خودتان را دارید.
باینری همان کل gateway است — web admin SPA داخلش embed شده، پس نه Node runtime لازم است، نه static server جداگانه، و نه چیزی برای build کردن. آنچه نمیکند این است که چیزی را برای شما setup نکند. این همان معامله است: شما یک دیتابیس PostgreSQL و روشی برای نگهداشتن فرایند میآورید، و در عوض هیچچیزی بدون اطلاع شما نصب، تنظیم، یا ثبت نمیشود.
میخواهید همهچیز برایتان انجام شود؟ روی یک Linux / macOS تازه، installer تکخطی Postgres را provision میکند، AI CLIها را نصب میکند، config را مینویسد، و یک service را در ۵ تا ۱۰ دقیقه ثبت میکند. ببینید README → نصبکننده تکخطی یا راهنمای دستی getting-started.fa.md.
این راهنما شما را از «باینری روی PATH» به «gateway در حال اجرا» در پنج گام میرساند، سپس نشان میدهد چطور آن را بهصورت یک service اجرا کنید.
گام ۱ — باینری را بگیرید#
از طریق npm (هر OS با Node ≥ 18)#
باینری پلتفرم متناظر (opendray-{linux,darwin}-{x64,arm64}) بهصورت خودکار از طریق optionalDependencies انتخاب میشود — هیچ postinstall hookی وجود ندارد و هیچ network call هنگام نصب زده نمیشود. از دادن --no-optional خودداری کنید: این پکیج پلتفرم را رد میکند و launcher را بدون باینریای که exec کند رها میکند.
از طریق آرشیو release#
تأیید#
پلتفرمهای پشتیبانیشده: Linux (x64, arm64) و macOS (x64, arm64). Windows بومی بستهبندی نشده — از WSL2 استفاده کنید و مسیر Linux را دنبال کنید.
گام ۲ — PostgreSQL 15+ با pgvector را فراهم کنید#
opendray همهچیز (سشنها، حافظه، audit log) را در PostgreSQL ذخیره میکند، و زیرسیستم حافظهاش به extension pgvector نیاز دارد. نسخههای server پشتیبانیشده: 15، 16، 17.
اگر از قبل Postgres دارید، یک دیتابیس و یک نقش CRUD-only بسازید، سپس extension را یک بار با superuser فعال کنید:
وقتی extension موجود باشد، نقش CRUD-only opendray بدون هیچ دسترسی superuser بیشتری migration اجرا میکند. هرگز opendray را به یک نقش superuser در زمان اجرا وصل نکنید — به آن یک حساب scoped به پروژه بدهید و رمز عبورش را جداگانه rotate کنید.
گام ۳ — تنظیم کنید#
opendray config خود را از یک فایل TOML یا صرفاً از متغیرهای محیط (12-factor) میخواند — env همیشه بر فایل ارجحیت دارد. تنها نیاز اجباری database URL است؛ بقیه مقادیر پیشفرض دارند.
گزینه الف — متغیرهای محیط (مناسب برای containerها / hostهای ephemeral)#
| متغیر | اجباری | پیشفرض | هدف |
|---|---|---|---|
OPENDRAY_DATABASE_URL |
بله | — | Postgres DSN |
OPENDRAY_ADMIN_PASSWORD |
توصیه میشود | — | رمز ادمین وب/موبایل |
OPENDRAY_ADMIN_USER |
خیر | admin |
نام کاربری ادمین |
OPENDRAY_LISTEN |
خیر | 127.0.0.1:8770 |
آدرس bind |
OPENDRAY_LOG_LEVEL |
خیر | info |
debug/info/warn/error |
OPENDRAY_LOG_FORMAT |
خیر | text |
text/json |
opendray serve را بدون flag مربوط به -config اجرا کنید و کاملاً از محیط بارگذاری میشود.
گزینه ب — config.toml#
حداقل چیزی که باید ویرایش کنید:
فایل کاملاً annotated را در config.example.toml ببینید (logging، session idle detection، backupها، vault، MCP). آن را با -config config.toml به دستورات زیر بدهید. secretها را روی hostهای shared داخل TOML نگذارید — OPENDRAY_DATABASE_URL / OPENDRAY_ADMIN_PASSWORD را از طریق env تنظیم کنید و فایل را non-secret نگه دارید.
گام ۴ — schema را اعمال کنید#
Idempotent است — اجرای مجدد وقتی schema جاری است no-op میشود. این باید قبل از اولین serve با موفقیت اجرا شود.
گام ۵ — اجرا کنید#
این در foreground اجرا میشود (Ctrl-C آن را متوقف میکند). حالا باید داشته باشید:
| آدرس | کاربرد |
|---|---|
http://127.0.0.1:8770/admin/ |
ادمین وب — با admin + رمز عبورتان وارد شوید |
http://127.0.0.1:8770/api/v1/... |
REST + WebSocket API |
این یک gateway کامل و در حال اجرا است. برای هر چیزی فراتر از یک تست سریع، آن را زیر یک supervisor اجرا کنید تا از reboots جان سالم به در ببرد و در صورت crash دوباره راهاندازی شود — ادامه میدهیم.
اجرا بهعنوان service#
opendray serve دقیقاً همان دستوری است که start command یک service unit باید فراخوانی کند.
opendray unitهای hardened و آمادهبهاستفاده ارائه میکند؛ مراحل زیر همان README → انتشار عملیاتی است که مرجع اصلی است (bootstrap کامل، نکات sandboxing، reverse-proxy/TLS).
Linux — systemd#
این repo یک unit hardened در
deploy/systemd/opendray.service
ارائه میکند
(اجرای migrate بهعنوان ExecStartPre، secretها از طریق EnvironmentFile،
restart با on-failure، syscall/filesystem sandboxing).
systemd ندارید؟ (LXC بدون آن، OpenRC، runit، s6، supervisord…) supervisor خودتان را به opendray serve -config /etc/opendray/config.toml اشاره دهید و opendray migrate را یک بار بهعنوان pre-start step اجرا کنید. ببینید
README → انتشار عملیاتی §B.
macOS — launchd#
این repo یک LaunchDaemon در
deploy/launchd/com.opendray.opendray.plist
ارائه میکند
(در boot شروع میشود، در صورت crash دوباره راهاندازی میشود، در /usr/local/var/log/opendray/ لاگ مینویسد).
Restart: sudo launchctl kickstart -k system/com.opendray.opendray.
Unload: sudo launchctl bootout system/com.opendray.opendray.
هر دو unit بهطور کامل — شامل چیدمان secretها و دلیل خاموش گذاشتن
MemoryDenyWriteExecute— درdeploy/README.mdمستند شدهاند.
بهروز نگه داشتن#
نحوه بهروزرسانی به روش نصب بستگی دارد:
- از طریق npm نصب شده — با package manager خود بهروز کنید.
opendray updateباینری را داخلnode_modulesپشت npm جایگزین میکند و با اجرای بعدی install بازنویسی میشود؛ پس اینجا از آن استفاده نکنید.
- دانلود release / نصب wizard — باینری خودش را in-place بهروز میکند (آخرین release را دانلود میکند، SHA-256 آن را تأیید میکند، بهصورت atomic خودش را swap میکند):
عیبیابی#
the matching platform package "opendray-…" was not installed
npm با --no-optional اجرا شده، یا نصب قطع شده است. npm install -g opendray را دوباره اجرا کنید (بدون --no-optional).
unsupported platform
پکیج npm فقط Linux/macOS روی x64/arm64 را پوشش میدهد. روی targetهای دیگر، از source بسازید — ببینید quickstart.md.
config: database.url is empty
نه OPENDRAY_DATABASE_URL و نه [database].url تنظیم نشدهاند. یکی را تنظیم کنید (گام ۳).
connection refused هنگام migrate/serve
Postgres اجرا نمیشود یا DSN اشتباه است. مطمئن شوید server up است و host/port/credentials داخل DSN شما درست هستند.
pgvector / extension "vector" is not available
Extension روی server نصب نشده، یا داخل دیتابیس opendray فعال نشده است. گام ۲ را دوباره انجام دهید (پکیج OS را نصب کنید، سپس CREATE EXTENSION vector را بهعنوان superuser اجرا کنید).
Port در حال استفاده است
OPENDRAY_LISTEN (یا listen در config.toml) را به یک port آزاد تغییر دهید.
گامهای بعدی#
- README → انتشار عملیاتی — مرجع کامل deploy (systemd / launchd / own-supervisor، hardening، reverse proxy)
docs/operator-guide.md— ops: توپولوژی reverse-proxy/TLS، backupهای رمزنگاریشده DB، data export/importdocs/integration-guide.md— ساختن یک integration خارجی با REST + WebSocket APIdocs/getting-started.fa.md— راهاندازی راهنما و all-in-one اگر ترجیح میدهید قطعات را خودتان سر هم نکنید