سرور چت رمزنگاریشده از سرتاسر به سرتاسر (E2E). فقط HTTP و WebSocket. رمزنگاری بین کاربران؛ سرور فقط نام کاربری→کلید عمومی و صف آفلاین موقت (پس از تحویل حذف میشود) را ذخیره میکند. بقیه روی کلاینت است. کاملاً آفلاین کار میکند—بدون اسکریپت یا CDN خارجی.
برای کاربران ایرانی که به ابزار چت امن و خصوصی نیاز دارند—بدون وابستگی به سرویسهای خارجی، بدون نیاز به اینترنت برای بارگذاری، و با امکان اجرا روی سرور داخلی یا شبکه محلی.
- رمزنگاری سرتاسر — پیامها بین کلاینتها رمز میشوند؛ سرور هرگز متن ساده را نمیبیند
- کلید عبور یا عبارت بازیابی — ورود با پاسکی (WebAuthn) یا عبارت ۱۲ کلمهای
- ذخیرهسازی رمزشده محلی — پیامها در IndexedDB با کلید مشتقشده از اعتبار شما رمز میشوند
- لیست کاربران — مرور و جستجوی کاربران ثبتشده برای شروع چت
- چت گروهی — ساخت گروه، دعوت کاربران، قبول یا رد دعوت؛ پیامهای گروهی رمزنگاری E2E
- لینک قابل اشتراک — اشتراک
/u/usernameتا دیگران مستقیماً به شما پیام دهند - QR کد — QR پروفایل برای اشتراک آسان (همه چیز داخلی، بدون اینترنت)
- سازگار با موبایل — چیدمان واکنشگرا، اعلانها
- چند حساب — چند حساب در هر مرورگر؛ پیامها به تفکیک کاربر
- آفلاینمحور — همه داراییها داخلی؛ در شبکههای ایزوله یا محدود کار میکند
docker compose up -dباز کنید: http://localhost:8080
go run ./cmd/server- راهاندازی — با پاسکی وارد شوید یا عبارت ۱۲ کلمهای را وارد کنید (یا بسازید) و ادامه دهید
- ثبتنام — نام کاربری انتخاب کنید و ثبتنام کنید
- چت جدید — روی «چت جدید» کلیک کنید، کاربران را مرور و جستجو کنید و گفتگو را شروع کنید
- اشتراک — لینک چت خود را کپی کنید (مثلاً
http://localhost:8080/u/alice) یا QR کد را از پروفایل به اشتراک بگذارید - چت — پیامها رمزنگاری E2E هستند؛ فقط شما و گیرنده میتوانید بخوانید. از گروه جدید برای ساخت چت گروهی و دعوت دیگران استفاده کنید.
- تست واحد (Vitest):
npm test - تست E2E (Playwright، چت گروهی): ساخت گروه، دعوت کاربر، قبول/رد دعوت، ارسال پیام در گروه.
# یکبار: نصب وابستگیهای Node و مرورگر Playwright
npm install
npm run e2e:install
# اجرای E2E (سرور بهصورت خودکار راه میافتد، یا از سرور در حال اجرا استفاده میشود)
npm run e2eبرای استفاده از سرور در حال اجرا روی پورت 8080: SKIP_WEB_SERVER=1 npm run e2e.
PORT(پیشفرض: 8080)DATA_DIR(پیشفرض:./dataیا/dataدر داکر)
# ساخت و ارسال هر دو پلتفرم (برای K8s، Docker Hub و غیره)
./scripts/build-docker.sh YOUR_USERNAME/war-chat:latest
# ساخت محلی (فقط amd64، بارگذاری در داکر)
./scripts/build-docker.sh war-chat:latest --load# ابتدا وارد شوید (یکبار)
docker login
# ساخت و ارسال (YOUR_USERNAME را با نام کاربری Docker Hub خود جایگزین کنید)
./scripts/build-docker.sh YOUR_USERNAME/war-chat:latestدانلود و اجرا:
docker run -d -p 8080:8080 -v war-chat-data:/data YOUR_USERNAME/war-chat:latestKubernetes: ساخت از
--provenance=falseاستفاده میکند تا manifest فقط تصاویر amd64 و arm64 را داشته باشد. این از خطای "exec format error" در K8s جلوگیری میکند.
تصویر از base حداقلی scratch استفاده میکند (بدون OS، بدون پکیج) برای صفر آسیبپذیری. برای تأیید اجرا کنید: docker scout quickview war-chat:latest.