ترتیبات

Antimatter اپنی سیٹنگز کہاں رکھتا ہے، انہیں تبدیل کرنے کے تین طریقے (سسٹم کنسول، ماحولیاتی متغیرات، amctl)، اور لاگز کہاں جاتے ہیں۔

سیٹنگز کہاں موجود ہیں

ہر سرور سیٹنگ کا نام ایک سیکشن اور ایک کلید سے بنتا ہے، جیسے ServiceSettings.SiteURL یا EmailSettings.SMTPServer۔ یہ مل کر ایک کنفیگریشن بناتے ہیں جو دو مقامات میں سے کسی ایک میں محفوظ ہوتی ہے:

  • ڈیٹا بیس میں۔ سائٹ کا کمپوز فائل AM_CONFIG کو PostgreSQL کنکشن URL پر سیٹ کرتا ہے، اس لیے کنفیگریشن ڈیٹا بیس کی ایک قطار ہوتی ہے اور کنٹینر ڈسک پر کچھ نہیں رکھتا۔ ایک ڈیٹا بیس شیئر کرنے والے کئی سرورز اپنی کنفیگریشن بھی شیئر کرتے ہیں۔
  • فائل میں۔ AM_CONFIG کے بغیر، سرور اپنے bin/ ڈائریکٹری کے ساتھ config/config.json پڑھتا ہے (Docker امیج میں /antimatter/config/config.json)۔ antimatter-docker کی ریلیز آرکائیو اور پروڈکشن کمپوز فائلز اس طرح کام کرتی ہیں، اور .deb اور .rpm پیکیجز بھی، جن کی فائل /etc/antimatter/config/config.json ہے۔ اس فائل کو صرف سرور کے یوزر کے لیے قابلِ مطالعہ رکھیں: اس میں پاس ورڈز اور کلیدیں شامل ہیں۔

AM_CONFIG (یا antimatter کمانڈ کا --config فلگ) فائل کے پتھ یا postgres:// URL کو قبول کرتا ہے۔ جو سیٹنگز آپ چھوڑ دیں گی، وہ اپنی ڈیفالٹ ویلیو لیں گی۔

موجودہ کنفیگریشن کو فائل سے ڈیٹا بیس میں منتقل کرنے کے لیے، سرور پر یہ چلائیں، پھر AM_CONFIG کو اسی URL پر سیٹ کر کے سرور شروع کریں:

amctl --local config migrate /opt/antimatter/config/config.json \
    "postgres://antimatter:PASSWORD@localhost:5432/antimatter?sslmode=disable&connect_timeout=10"

ماحولیاتی متغیرات

کوئی بھی سیٹنگ ماحولیاتی متغیر کے طور پر بھی دی جا سکتی ہے۔ متغیرات محفوظ شدہ کنفیگریشن پر برتری حاصل کرتے ہیں، جو انہیں ڈیپلائمنٹ سے تعلق رکھنے والی چیزوں کے لیے موزوں بناتا ہے: ڈیٹا بیس، سائٹ URL، فائل اسٹوریج، اور پورٹس۔

نام دینے کا اصول

AM_ لکھیں، پھر سیکشن، پھر کلید، بڑے حروف میں اور انڈرسکورز سے الگ کریں۔ سیکشن یا کلید کے نام کے اندر الفاظ الگ نہیں کیے جاتے:

ترتیبمتغیر
ServiceSettings.SiteURLAM_SERVICESETTINGS_SITEURL
SqlSettings.DataSourceAM_SQLSETTINGS_DATASOURCE
EmailSettings.SMTPServerAM_EMAILSETTINGS_SMTPSERVER
PrivacySettings.EnableUserBlockingAM_PRIVACYSETTINGS_ENABLEUSERBLOCKING
  • سچ اور جھوٹ کی سیٹنگز true یا false لیتی ہیں؛ اعداد سادہ اعداد ہوتے ہیں۔
  • فہرست کی سیٹنگز اپنے اقدار کو خلا سے الگ کرتی ہیں، مثال کے طور پر AM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER="X-Forwarded-For X-Real-IP"۔
  • JSON قبول کرنے والی ترتیبات کے لیے JSON درکار ہے۔ ایپس کے لیے ایسی واحد متغیر AM_PLUGINSETTINGS_PLUGINS ہے، جو ایک ہی وقت میں ہر ایپ کی ترتیبات کو تبدیل کر دیتا ہے: ایپ کی ترتیبات کو سسٹم کنسول یا amctl کے ذریعے مقرر کریں (نیچے دیکھیں)۔
  • پرانے Mattermost سیٹ اپ MM_ پری فکس استعمال کرتے ہیں، مثال کے طور پر MM_SQLSETTINGS_DATASOURCE۔ یہ اب بھی ایک لیگی ایلیس کے طور پر کام کرتا ہے۔ جب دونوں مقرر ہوں، تو AM_ متغیر غالب آتا ہے۔

متغیر کے ذریعے دی گئی ترتیب سسٹم کنسول میں لاک ہو جاتی ہے، اس کے ساتھ نوٹ: "یہ ترتیب ایک ماحولیاتی متغیر کے ذریعے مقرر کی گئی ہے۔ اسے سسٹم کنسول کے ذریعے تبدیل نہیں کیا جا سکتا۔" یہ محفوظ شدہ کنفیگریشن میں لکھی نہیں جاتی: متغیر کو ہٹا دیں اور محفوظ شدہ قدر دوبارہ لاگو ہو جائے گی۔

Docker Compose کے ساتھ

antimatter سروس کے environment: کے نیچے متغیر شامل کریں، یا compose.yaml کے ساتھ compose.override.yaml میں (Compose خودکار طور پر اسے پڑھتا ہے، اور یہ ڈاؤن لوڈ شدہ فائل کے اپڈیٹس کے باوجود برقرار رہتا ہے):

services:
  antimatter:
    environment:
      AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
      AM_EMAILSETTINGS_SMTPPORT: "587"
      AM_LOGSETTINGS_CONSOLELEVEL: INFO

تبدیلیوں کو docker compose up -d کے ذریعے لاگو کریں، جو کنٹینر کو دوبارہ تخلیق کرتا ہے۔

ایپس کے ذریعے پڑھے جانے والے متغیر

کچھ متغیر ترتیبات نہیں ہیں اور ان کا کوئی سسٹم کنسول فیلڈ نہیں ہے: AM_CONFIG (جہاں کنفیگریشن ہے)، اور AM_AI_ENCRYPTION_KEY اور AM_AI_ENCRYPTION_PREVIOUS_KEYS، جو ماڈل کنکشنز کے API keys کو انکرپٹ کرنے والا کلید ہے (دیکھیں AI)۔

کچھ ایپس اپنے اپنے متغیر پڑھتی ہیں، جو antimatter سروس پر مقرر ہوتے ہیں: Calls ایپ AM_CALLS_* پڑھتی ہے (دیکھیں Calls and voice)، اور GIFs ایپ AM_GIFS_SERVICE_URL، AM_GIFS_API_KEY اور AM_GIFS_UPLOAD_KEY پڑھتی ہے (دیکھیں Bundled apps)۔

سسٹم کنسول

سسٹم کنسول ویب ایپ کا انتظامی حصہ ہے، جو سسٹم ایڈمنسٹریٹرز کے لیے ہے۔ اسے کھولنے کے لیے، ایپ ریل کے اوپر اپنی تصویر پر کلک کریں اور سسٹم کنسول منتخب کریں، یا https://chat.example.com/admin_console پر جائیں۔ اس کے سائیڈ بار میں ترتیبات تلاش کریں باکس ہے جو ہر صفحے کو تلاش کرتا ہے۔

The System Console, with its sidebar of sections on the left and the SAML 2.0 settings page on the right.
سسٹم کنسول۔ سائیڈ بار صفحات کو رپورٹنگ، صارفین کا انتظام اور ماحول جیسے حصوں میں تقسیم کرتا ہے۔

اس کے حصے یہ ہیں:

  • رپورٹنگ: اعداد و شمار اور سرور کے لاگز۔
  • صارفین کا انتظام: صارفین، گروپس، کمیونٹیز (جو ٹیمز کے طور پر درج ہیں)، چینلز، اجازتیں اور تفویض شدہ انتظام۔
  • سسٹم اٹری بیوٹس: کسٹم پروفائل اٹری بیوٹس اور اٹری بیوٹ پر مبنی رسائی۔
  • ماحول: ویب سرور، ڈیٹا بیس، فائل اسٹوریج، امیج پروکسی، SMTP، پش اطلاعات، ریٹ لیمٹنگ، لاگنگ، سیشن کی لمبائیاں، اور کارکردگی کی نگرانی۔
  • سائٹ کی ترتیبات: برانڈنگ، صارفین اور ٹیمز، اطلاعات، پوسٹس، فائل شیئرنگ اور دیگر سرور-وائیڈ رویے۔
  • تصدیق: سائن اپ، ای میل اور پاس ورڈ سے سائن ان، MFA، AD/LDAP، SAML 2.0، OAuth 2.0، OpenID Connect اور مہمان رسائی۔
  • AI: ماڈل کنکشنز اور درجہ بندی شدہ AI خصوصیات (دوبارہ لکھنا، خلاصے، خودکار ترجمہ، متن کو بول کر سننا)۔ دیکھیں AI۔
  • پلگ انز: ایپس کا انتظام اور ہر نصب شدہ ایپ کی ترتیبات۔
  • انضمامات: ویب ہکس، سلاش کمانڈز، بوٹ اکاؤنٹس، GIFs، متن کو بول کر سننا، CORS۔
  • مطابقت: ڈیٹا کی برقرار رکھت، مطابقت کی برآمد اور نگرانی، آڈٹ لاگنگ، اور کسٹم شرائطِ کار۔
  • تجرباتی: خصوصیات جو تبدیل ہو سکتی ہیں۔

اس رہنما میں، کوئی بھی ترتیب اس کے سسٹم کنسول میں موجود راستے کے طور پر لکھی گئی ہے، پھر اس کا لیبل، اور پھر اس کی کنفیگریشن کی، مثال کے طور پر سسٹم کنسول › سائٹ کی ترتیبات › صارفین اور ٹیمز › نظراندازی، بلاکنگ اور پیغام کی درخواستیں فعال کریں (PrivacySettings.EnableUserBlocking)۔

زیادہ تر تبدیلیاں اسی وقت لاگو ہو جاتی ہیں جب آپ محفوظ کریں پر کلک کرتے ہیں۔ کچھ (جیسے لیسن ایڈریس، کچھ ڈیٹا بیس اور کیچ کی ترتیبات) کو ری اسٹارت کی ضرورت ہوتی ہے، اور صفحہ اس بات کا ذکر کرتا ہے۔

ورک پلیس یا کمیونٹی

ہر کمیونٹی کی ایک قسم ہوتی ہے، جو اس کی کچھ ڈیفالٹس مقرر کرتی ہے:

  • کمیونٹی، عوامی یا شوقیہ کمیونٹی کے لیے: اس کے چینلز میں کالز بند ہوتی ہیں (لوگ وائس چینلز میں بات کرتے ہیں)، اور صرف اس کے ایڈمنز، اور چینلز کو منظم کرنے والے کردار، چینلز کو آرکائیو کرتے ہیں۔
  • ورک پلیس، کسی کمپنی یا تنظیم کے لیے: اس کے چینلز میں کالز فعال ہوتی ہیں، اور چینل کے ایڈمنز (جس نے اسے بنایا، اور جنہیں اس نے ایڈمن بنایا) اسے آرکائیو بھی کرتے ہیں۔

سسٹم کنسول › سائٹ کی ترتیبات › صارفین اور ٹیمز › نئی کمیونٹیوں کی قسم (TeamSettings.DefaultCommunityKind, AM_TEAMSETTINGS_DEFAULTCOMMUNITYKIND) اسی وقت سے بنائی گئی کمیونٹیوں کی قسم ہے: community (ڈیفالٹ) یا workplace۔ کمیونٹی بناتے وقت منتخب کردہ لے آؤٹ پری سیٹ اپنی قسم مقرر کرتا ہے۔ ہر کمیونٹی کے ایڈمنز بعد میں اس کی قسم بدل سکتے ہیں، ٹیم کی ترتیبات › چینلز › کمیونٹی کی قسم میں۔

کسی کمپنی کے لیے، پہلی کمیونٹی بنانے سے پہلے یا موجودہ سرور کو 0.9.0 تک اپ گریڈ کرنے سے پہلے اسے ورک پلیس پر سیٹ کریں: اپ گریڈ ہر موجودہ کمیونٹی کو اس سیٹنگ کی وہی قدر دیتا ہے جو اس وقت موجود ہو (دیکھیں 0.9.0 تک اپ گریڈ)۔

amctl کمانڈ لائن ٹول

amctl کمانڈ لائن سے سرور کو منظم کرتا ہے: صارفین، کمیونٹیز، چینلز، ایپس، کنفیگریشن، جابز اور بہت کچھ۔ یہ سرور سے بات چیت کے دو طریقوں میں سے ایک کے ذریعے کرتا ہے۔

لوکل موڈ، سرور پر

لوکل موڈ amctl کو یونیکس سوکٹ کے ذریعے سرور سے بات کرنے کی اجازت دیتا ہے، بغیر سائن ان کے۔ یہ ڈاکر امیج اور .deb اور .rpm پیکیجز میں فعال ہوتا ہے۔ آرکائیو سے انسٹال شدہ سرور پر اسے ServiceSettings.EnableLocalMode (AM_SERVICESETTINGS_ENABLELOCALMODE=true) کے ذریعے فعال کریں۔ سوکٹ بطورِ ڈیفالٹ /var/tmp/antimatter_local.socket ہوتا ہے (ServiceSettings.LocalModeSocketLocation)۔

# with Docker Compose
docker compose exec antimatter amctl --local system status
# with a release archive
sudo -u antimatter /opt/antimatter/bin/amctl --local system status
# with the .deb or .rpm package
sudo -u antimatter amctl --local system status
جو بھی اس سوکٹ کو استعمال کر سکے یا ہوسٹ پر docker compose exec چلا سکے، اس کے پاس مکمل سسٹم ایڈمنسٹریٹر کے اختیارات ہوتے ہیں۔

ریموٹ، اکاؤنٹ کے ساتھ

کسی بھی مشین سے، سسٹم ایڈمنسٹریٹر اکاؤنٹ (یا پرسنل ایکسیس ٹوکن) کے ساتھ سائن ان کریں، پھر اس سرور کے خلاف کمانڈز چلائیں:

amctl auth login https://chat.example.com --name prod --username admin
amctl system status

کنفیگریشن کمانڈز

کمانڈیہ کیا کرتا ہے
amctl config get ServiceSettings.SiteURLایک سیٹنگ پرنٹ کرتا ہے۔
amctl config set TeamSettings.EnableOpenServer falseایک سیٹنگ تبدیل کرتا ہے۔ لسٹ سیٹنگز کئی قدریں لیتے ہیں۔
amctl config patch settings.jsonسیٹنگز کا JSON فائل کنفیگریشن میں ملا دیتا ہے۔
amctl config showپوری کنفیگریشن JSON کے طور پر پرنٹ کرتا ہے۔
amctl config editکنفیگریشن کو آپ کے ایڈیٹر ($EDITOR) میں کھولتا ہے۔
amctl config resetسیٹنگز کو ان کی ڈیفالٹ قدروں پر ری سیٹ کرتا ہے۔
amctl config reloadسرور کے باہر کی تبدیلی کے بعد کنفیگریشن کو اس کی اسٹوریج جگہ سے دوبارہ لوڈ کرتا ہے۔

ایپ سیٹنگز PluginSettings.Plugins.<app id> کے تحت رہتی ہیں، اور کیز چھوٹے حروف میں ہوتے ہیں۔ مثال کے طور پر، ڈاکر ہوسٹ سے GIFs ایپ کی سروس URL اور کی سیٹ کرنے کے لیے:

docker compose exec -T antimatter amctl --local config patch /dev/stdin <<'EOF'
{"PluginSettings": {"Plugins": {"com.antimatterchat.gifs": {
  "serviceurl": "http://gifs:8080/v2",
  "apikey": "the GIFS_API_KEY of your .env"
}}}}
EOF

دیگر مفید کمانڈز: amctl user create, amctl user deactivate, amctl team create, amctl plugin list, amctl plugin enable, amctl system supportpacket اور amctl logs۔ ہر ایک کے اختیارات کے لیے amctl help <command> چلائیں۔

لاگز

سرور اپنا لاگ دو جگہوں پر لکھتا ہے، ہر ایک کا اپنا لیول (DEBUG, INFO, WARN یا ERROR) ہوتا ہے، جو سسٹم کنسول › ماحول › لاگنگ میں سیٹ کیا جاتا ہے:

منزلترتیباتڈیفالٹس
کنسول (اسٹینڈرڈ آؤٹ پٹ)لاگز کو کنسول پر آؤٹ پٹ کریں (LogSettings.EnableConsole)، کنسول لاگ لیول (LogSettings.ConsoleLevel)، کنسول لاگز کو JSON کے طور پر آؤٹ پٹ کریں (LogSettings.ConsoleJson)آن، DEBUG، JSON
ایک فائل، antimatter.logلاگز کو فائل میں آؤٹ پٹ کریں (LogSettings.EnableFile)، فائل لاگ لیول (LogSettings.FileLevel)، فائل لاگ ڈائریکٹری (LogSettings.FileLocation)آن، INFO، bin/ کے ساتھ logs/ ڈائریکٹری

لاگ فائلز 100 میگابائٹ پر روتےڈ ہوتی ہیں اور پرانی فائلز کمپریسڈ کر دی جاتی ہیں۔

سائٹ کا کمپوز فائل فائل لاگنگ بند کر دیتا ہے (AM_LOGSETTINGS_ENABLEFILE=false)، اس لیے لاگز صرف کنٹینر کے آؤٹ پٹ میں موجود ہیں:

docker compose logs -f antimatter
docker compose logs --since 1h antimatter | grep -i error

کنسول لیول کا ڈیفالٹ DEBUG ہے، جو کہ کافی تفصیلی ہے۔ مصروف سرور پر AM_LOGSETTINGS_CONSOLELEVEL=INFO سیٹ کریں۔ ریلیس آرکائیو اور پیکیجز کی config.json میں پہلے سے یہ INFO سیٹ ہے۔ systemd کے تحت ریلیس آرکائیو کے ساتھ، کنسول آؤٹ پٹ جرنل (journalctl -u antimatter) میں جاتا ہے اور فائل /opt/antimatter/logs/antimatter.log میں۔ پیکیجز فائل لاگنگ بند کر دیتے ہیں، اس لیے ان کے لاگز صرف جرنل میں موجود ہیں۔

جب فائل لاگنگ آن ہو، تو سسٹم ایڈمنسٹریٹرز سسٹم کنسول › رپورٹنگ › سرور لاگز میں بھی تازہ ترین لاگ لائنز پڑھ سکتے ہیں، یا amctl logs کے ذریعے۔