آپریشنز

سرور پر نظر رکھیں، اس کی گنجائش بڑھائیں تاکہ زیادہ لوگ استعمال کر سکیں، طے کریں کہ ڈیٹا کتنی دیر تک محفوظ رکھا جائے، اور ایڈمنسٹریٹرز کو اکثر پیش آنے والے مسائل کو حل کریں۔

ہیلتھ چیکس

  • amctl --local system status (کنٹینر میں: docker compose exec antimatter amctl --local system status)۔ ڈاکر امیج کا ہیلتھ چیک ہر 30 سیکنڈ بعد یہ چلا تاہم docker compose ps میں healthy یا unhealthy دکھاتا ہے۔
  • GET /api/v4/system/ping سائن ان کے بغیر جواب دیتا ہے، جو بیرونی مانیٹر یا لوڈ بالینسر کے لیے مفید ہے: curl -fsS https://chat.example.com/api/v4/system/ping۔
  • antimatter db ping چیک کرتا ہے کہ ڈیٹا بیس سیٹ کردہ ترتیبات کے ساتھ رسائی پذیر ہے۔
  • سسٹم کنسول › رپورٹنگ › سسٹم کے اعداد و شمار صارفین، پوسٹس اور سیشنز کی تعداد دکھاتا ہے، اور ورک اسپیس کی بہتری میں ان کنفیگریشن مسائل کی فہرست موجود ہے جن پر توجہ دینی ہوگی۔

میٹرکس

سرور Prometheus میٹرکس شائع کر سکتا ہے: درخواستوں کی شرح اور مدت، websocket کنکشنز، ڈیٹا بیس اور کیچ کا استعمال، جابز، پلگ ان ہکس وغیرہ۔ انہیں سسٹم کنسول › ماحول › پرفارمنس مانیٹرنگ میں فعال کریں:

ترتیبکلید اور متغیرڈیفالٹ
پرفارمنس مونٹرینگ فعال کریںMetricsSettings.Enable, AM_METRICSSETTINGS_ENABLEغیر فعال
Listen AddressMetricsSettings.ListenAddress, AM_METRICSSETTINGS_LISTENADDRESS:8067
کلائنٹ پرفارمنس مونٹرینگ فعال کریںMetricsSettings.EnableClientMetricsآن: براؤزرز اور ایپس اپنے اوقات رپورٹ کرتے ہیں

Prometheus پھر http://<server>:8067/metrics سے ڈیٹا اکٹھا کرتا ہے۔ ہر میٹرک اپنے Mattermost نام (mattermost_…) اور Antimatter نام (antimatter_…) کے تحت شائع ہوتا ہے، تاکہ موجودہ Mattermost ڈیش بورڈز کام جاری رکھ سکیں۔ ایپس اپنے میٹرکس شائع کرتی ہیں، مثال کے طور پر ایجنٹس ایپ /plugins/mattermost-ai/metrics پر۔

میٹرکس پورٹ کے لیے سائن ان کی ضرورت نہیں ہے: اسے نجی نیٹ ورک پر رکھیں۔ سائٹ کا compose فائل اسے پبلش نہیں کرتا؛ اسے ہوسٹ سے اسکریپ کرنے کے لیے antimatter سروس کے ports میں "127.0.0.1:8067:8067" شامل کریں۔

میٹرکس ایپ

اگر Prometheus سرور دستیاب نہ ہو، تو Metrics ایپ (جو پہلے سے غیر فعال ہوتی ہے، دیکھیں Bundled apps) Antimatter کے اندر ایک چھوٹے time-series ڈیٹا بیس میں اسی طرح کے میٹرکس جمع کرتی ہے: ہر 60 سیکنڈ بعد، 15 دن تک محفوظ۔ یہ شروع ہوتے ہی metrics endpoint کو فعال کر دیتی ہے۔ سسٹم کنسول › پلگ انز میں اس کا صفحہ ڈیٹا بیس کا سائز دکھاتا ہے اور ڈیٹا کے ڈمپس ڈاؤن لوڈ کرنے کی اجازت دیتا ہے، چاہے وہ آپ کی اپنی تجزیے کے لیے ہو یا کسی bug report کے ساتھ منسلک کرنے کے لیے؛ تازہ ترین دن کا ڈیٹا support packets میں بھی شامل کیا جاتا ہے۔

Support packet

support packet ایک zip فائل ہے جس میں مسئلے کی تشخیص کے لیے ضروری چیزیں ہوتی ہیں: ورژنز، اعداد و شمار، secrets ہٹا کر کنفیگریشن، ایپس اور jobs کی فہرست، ڈیٹا بیس کا schema، حالیہ log اور performance profiles۔ اسے amctl system supportpacket کے ذریعے بنائیں، یا System Console میں اس کے سائیڈ بار کے اوپری حصے والے مینیو سے (کامریل سپورٹ، جہاں آپ شامل کرنے والی چیزیں منتخب کر سکتے ہیں)۔ اسے شیئر کرنے سے پہلے پڑھ لیں: اس میں پیغامات شامل نہیں ہوتے، لیکن communities، صارفین اور ترتیبات کے نام شامل ہوتے ہیں۔

کارکردگی اور پیمانہ بندی

ایک سرور جس میں 2 CPU کورز اور 4 GB میموری ہو، کئی سو لوگوں کی خدمت کر سکتا ہے۔ نئے سرور شامل کرنے سے پہلے، درج ذیل چیزوں پر غور کریں:

  • ڈیٹا بیس۔ PostgreSQL زیادہ تر کام کرتا ہے: اسے تیز storage اور memory دیں۔ Read replicas پڑھنے کی لوڈ کو سنبھال سکتے ہیں (SqlSettings.DataSourceReplicas، جو connection URLs کی فہرست ہے)۔
  • تلاش۔ پیغامات بطورِ ڈیفالٹ ڈیٹا بیس میں تلاش کیے جاتے ہیں۔ بڑے سرورز کے لیے Elasticsearch یا OpenSearch تلاش اور indexing کے لیے استعمال ہو سکتے ہیں: سسٹم کنسول › ماحول › Elasticsearch (ElasticsearchSettings: بیک اینڈ کی قسم Elasticsearch یا OpenSearch، سرور کنکشن ایڈریس، credentials، پھر indexing فعال کریں، index بنائیں، اور تلاش فعال کریں)۔
  • کالز۔ Call media سب سے بھاری لوڈ ہوتے ہیں۔ انہیں rtcd سرور پر منتقل کریں: دیکھیں Calls and voice۔
  • کھلی فائلیں۔ ہر جوڑے ہوئے صارف ایک websocket کھلا رکھتا ہے۔ antimatter-docker کی production compose فائل حد کو 49152 تک بڑھا دیتی ہے (ulimits: nofile)؛ systemd کے ساتھ بھی ایسا ہی کریں (LimitNOFILE)۔
  • Logs۔ LogSettings.ConsoleLevel کو INFO یا WARN تک گھٹائیں: DEBUG ایک مصروف سرور پر بہت کچھ log کرتا ہے۔

High availability

کئی Antimatter سرورز load balancer کے پیچھے بغیر کسی لائسنس کے cluster کے طور پر چل سکتے ہیں۔ انہیں ایک ہی PostgreSQL ڈیٹا بیس، ایک ہی S3 فائل اسٹوریج، اور ڈیٹا بیس میں موجود کنفیگریشن (AM_CONFIG) شیئر کرنی ہوگی۔ سسٹم کنسول › ماحول › ہائی ایویلیبلٹی (ClusterSettings) میں: High Availability موڈ فعال کریں (ClusterSettings.Enable) کو آن کریں، ہر node کو ایک ہی کلسٹر کا نام (ClusterSettings.ClusterName) دیں، اور nodes کو gossip port 8074 TCP اور UDP (ClusterSettings.GossipPort) پر ایک دوسرے تک پہنچنے دیں۔ nodes ڈیٹا بیس کے ذریعے ایک دوسرے کو تلاش کرتے ہیں۔ load balancer کو websockets کو pass کرنا ہوگا۔ cluster میں کالز کے لیے rtcd استعمال کریں۔

ڈیٹا رٹینشن

طے شدہ طور پر Antimatter ہر پیغام اور فائل کو ہمیشہ کے لیے محفوظ رکھتا ہے۔ پرانے پیغامات کو خودکار طور پر حذف کرنے کے لیے جائیں سسٹم کنسول › مطابقت › ڈیٹا ریٹینشن پالیسیاں:

  • جہاں گیر رٹینشن پالیسی پورے سرور کے لیے چینلز اور براہِ راست پیغامات کی رٹینشن اور فائلوں کی رٹینشن طے کرتی ہے: ہمیشہ کے لیے محفوظ رکھیں، یا گھنٹوں، دنوں یا سالوں کی تعداد (DataRetentionSettings.EnableMessageDeletion، MessageRetentionHours، EnableFileDeletion، FileRetentionHours)۔
  • حسبِ ضرورت رٹینشن پالیسیاں منتخب کمیونٹیز اور چینلز کے لیے ایک مختلف مدت طے کرتی ہیں۔
  • حذف کرنے والا جاب ہر دن آپ کے منتخب کردہ وقت پر چلتا ہے (DataRetentionSettings.DeletionJobStartTime، طے شدہ طور پر UTC میں 02:00)۔ حذف کرنے والا جاب ابھی چلائیں اسے فوراً چلاتا ہے، اور پالیسی ریکارڈ میں ہر رن کے ذریعے کون سا مواد ہٹایا گیا اس کی فہرست موجود ہے۔
حذف شدہ پیغامات اور فائلیں ڈیٹا بیس اور فائل اسٹوریج سے ہمیشہ کے لیے غائب ہو جاتی ہیں۔ کسی پالیسی کو آن کرنے سے پہلے مددوں کی تصدیق کریں، اور یاد رکھیں کہ آپ کے بیک اپ حذف شدہ ڈیٹا کو اس وقت تک برقرار رکھتے ہیں جب تک وہ ختم نہ ہو جائیں۔

کمپلائنس ایکسپورٹ اور آڈٹ لاگز

  • سسٹم کنسول › مطابقت › کمپلائنس ایکسپورٹ ہر دن تمام پیغامات اور فائلوں کو ایکسپورٹ کرتا ہے (کمپلائنس ایکسپورٹ فعال کریں، MessageExportSettings.EnableExport، طے شدہ طور پر غیر فعال؛ معاہدہ ایکسپورٹ کا وقت، طے شدہ طور پر 01:00) آرکائیو سسٹمز کے قابل پڑھنے والے فارمیٹس میں سے کسی ایک میں: CSV، Actiance XML، یا Global Relay (ایک zip فائل، یا SMTP کے ذریعے بھیجی گئی EML)۔ amctl compliance-export کمانڈ لائن سے ایکسپورٹس کو چلاتا اور ڈاؤن لوڈ کرتا ہے۔
  • کمپلائنس مانیٹرنگ (ComplianceSettings) ہر دن رپورٹس کو ایک ڈائریکٹری میں لکھتی ہے۔ یہ پرانا میکانزم ہے؛ کمپلائنس ایکسپورٹ کو ترجیح دیں۔
  • آڈٹ لاگنگ (بیٹا، ExperimentalAuditSettings) انتظامی اور سیکیورٹی واقعات (لاگ ان، اجازتوں اور ترتیبات میں تبدیلیاں) کو ایک الگ فائل میں ریکارڈ کرتا ہے۔
  • کسٹم سروس کے شرائط ہر شخص کو Antimatter استعمال کرنے سے پہلے آپ کے شرائط کو قبول کرنے پر مجبور کرتا ہے، اور ان میں تبدیلی کے بعد دوبارہ۔

عام مسائل

"سرور سے رابطہ نہیں ہو سکا"، یا پیغامات صرف ری لوڈ کے بعد نظر آتے ہیں

ویب ساکٹ نہیں گزرتا۔ چیک کریں کہ ریورس پراکسی Upgrade اور Connection ہیڈرز کو گزار رہا ہے (دیکھیں nginx کا مثال)، اور کہ سائٹ کا URL براؤزر میں موجود پتے سے بالکل مماثل ہے، بشمول https۔

اپ لوڈز "413 Request Entity Too Large" کے ساتھ ناکام ہو جاتے ہیں

پروکسی سائز کو مسترد کر رہا ہے۔ اس کی حد (nginx client_max_body_size) کو کم از کم زیادہ سے زیادہ فائل سائز کے برابر یا اس سے زیادہ کریں، جو سسٹم کنسول › ماحول › فائل اسٹوریج میں مقرر ہے (FileSettings.MaxFileSize، پہلے سے 100 MB)۔

لوگ کالز شروع نہیں کر سکتے، یا شامل ہو جاتے ہیں مگر کچھ نہیں سنتے

اگر صرف ایڈمنز کال شروع کر سکتے ہیں، تو Test mode کو بند کریں۔ اگر کسی کمیونٹی کے چینلز میں کال کا بٹن موجود نہیں ہے، تو اس کا مطلب ہے کہ کمیونٹی کی قسم کمیونٹی ہے، جہاں کالز پہلے سے بند ہوتی ہیں: چینل یا کمیونٹی کے ایڈمنز چینل میں کالز کو فعال کر سکتے ہیں، یا کمیونٹی کی قسم تبدیل کر سکتے ہیں (تفصیل کے لیے دیکھیں کالز کہاں فعال ہوتی ہیں)۔ اگر لوگ شامل ہو رہے ہیں مگر کچھ نہیں سن پا رہے، تو میڈیا پورٹ بلاک ہے یا سرور غلط ایڈریس بتا رہا ہے: 8443 UDP اور TCP کو کھولیں، اور NAT کے پیچھے ICE Host Override سیٹ کریں۔ ایسے نیٹ ورکس پر موجود لوگوں کو TURN سرور کی ضرورت ہوتی ہے۔ مزید دیکھیں کالز اور وائس۔

GIF پکر خالی ہے

سسٹم کنسول › پلگ انز › GIFs میں GIF سروس URL (http://gifs:8080/v2 سائٹ کے compose فائل کے ساتھ) اور API کلید (.env کی GIFS_API_KEY) کو چیک کریں، اور یہ بھی کہ gifs سروس چل رہی ہے: docker compose ps gifs۔

ای میلز نہیں آتے

سسٹم کنسول › ماحول › SMTP میں کنکشن ٹیسٹ کریں استعمال کریں، چیک کریں کہ اطلاعات کے لیے فرم ایڈریس ابھی بھی test@example.com نہیں ہے، اور لاگ میں smtp یا mail کی تلاش کریں۔

ایک ایپ "Failed to start" دکھاتی ہے

لاگ میں اس کے آئی ڈی کی تلاش کریں (docker compose logs antimatter | grep <app id>)۔ اسے دوبارہ شروع کرنے کے لیے پلگ ان مینجمنٹ میں اسے غیر فعال اور فعال کریں۔

سرور شروع نہیں ہوتا

اس کے لاگ کے آخر کو پڑھیں۔ اکثر ڈیٹا بیس تک رسائی ممکن نہیں ہوتی (antimatter db ping کے ساتھ AM_SQLSETTINGS_DATASOURCE چیک کریں)، ڈیٹا بیس مائیگریشن ناکام ہو جاتی ہے (اپ گریڈ سے پہلے لیا گیا بیک اپ بحال کریں اور غلطی رپورٹ کریں)، یا لسن پورٹ پہلے سے استعمال میں ہے۔

ایڈمنسٹریٹر اکاؤنٹ سے قفل ہو جانا

سرور سے، لوکل موڈ کے لیے کوئی پاس ورڈ درکار نہیں:

docker compose exec antimatter amctl --local user change-password admin --password 'a-new-password'
docker compose exec antimatter amctl --local user resetmfa admin
docker compose exec antimatter amctl --local roles system-admin admin

بگ کی رپورٹ

Antimatter community repository میں ایک issue کھولیں، جس میں ورژن، آپ نے کیسے انسٹال کیا، آپ نے کیا کیا اور متعلقہ لاگ لائنز شامل ہوں۔ سیکیورٹی کے مسائل کو نجی طور پر رپورٹ کریں، جیسا کہ سیکیورٹی پالیسی میں بیان کیا گیا ہے۔