सामग्री पर जाएँ

विन्यास ​

Arkvory में दो तरह की सेटिंग्स होती हैं:

  • सर्वर सेटिंग्स फ़ाइल config/runtime.json में ARKVORY_* वेरिएबल हैं। वे पता, सीमाएँ, स्टोरेज और ऐसी ही चीज़ें तय करते हैं। API, वर्कर और बैकअप एजेंट शुरू होते समय इन्हें पढ़ते हैं।
  • इंस्टॉलेशन नीति अपडेट नीति, HTTPS फ़ाइलें, बैकअप स्टोरेज (vault) और मिरर है। आप इसे arkvory configure कमांड से बदलते हैं। कमांड बदलाव की जाँच करता है, ज़रूरत के अनुसार रीस्टार्ट करता है और सेवाएँ शुरू न होने पर पुरानी स्थिति बहाल कर देता है।

यह पृष्ठ दिखाता है कि फ़ाइलें कहाँ हैं, कौन-से कमांड मौजूद हैं और मुख्य सेटिंग्स कैसे काम करती हैं। डिफ़ॉल्ट और श्रेणियों सहित वेरिएबल की पूरी सूची एनवायरनमेंट वेरिएबल में है।

विन्यास कहाँ रहता है ​

इंस्टॉलेशन रूट में सब कुछ रहता है। यह Windows पर C:\ProgramData\ProAnima\Arkvory और Linux पर /opt/proanima-arkvory है। Compose इंस्टॉलेशन होस्ट पर वही रूट इस्तेमाल करता है। नीचे के पथ रूट के सापेक्ष हैं।

फ़ाइलसामग्रीइसे बदलें
config/runtime.jsonसर्वर सेटिंग्स। कुंजियाँ ARKVORY_ से शुरू होती हैं, और हर मान एक स्ट्रिंग होता है। इसमें डेटाबेस का पासवर्ड रहता हैहाथ से, या configure से
config/keys.jsonपुनर्प्राप्ति कुंजी और रेडीनेस कुंजी के SHA-256 हैश। इसमें कभी कोई कुंजी नहीं होतीकेवल पुनर्प्राप्ति कुंजी बदलने के लिए
config/bootstrap-token.txtपुनर्प्राप्ति कुंजीकेवल इसे बदलने के लिए
config/health-token.txtवह कुंजी जो इंस्टॉलेशन टूल्स रेडीनेस जाँच के लिए इस्तेमाल करते हैंन बदलें
config/hub.jsonहब का पता, अपडेट चैनल और सांख्यिकी सेटिंगconfigure से
config/install-idएक यादृच्छिक इंस्टॉलेशन ID, जो हब को केवल सांख्यिकी चालू होने पर भेजा जाता हैन बदलें
config/mirrors/मिरर सूची और वे कुंजियाँ जो वर्कर स्रोतों के लिए इस्तेमाल करता हैconfigure --mirror से
config/webhooks/सब्सक्रिप्शन की सूची, हस्ताक्षर सीक्रेट और रिसीवरों के प्रमाणन प्राधिकरण जिन्हें worker इस्तेमाल करता हैconfigure --webhook से
installation.jsonमोड, इंजन, स्वचालित अपडेट सेटिंग, संस्करण पिन और इंस्टॉल किया गया रिलीज़केवल कमांड से
github-token.txtरिलीज़ डाउनलोड के लिए वैकल्पिक GitHub टोकन। अपडेट देखेंहाथ से
config/compose.env, config/compose.vault.yml, config/compose.mirrors.ymlकेवल Compose: इमेज, बैकअप स्टोरेज माउंट और मिरर माउंटकेवल कमांड से

नेटिव Linux इंस्टॉलेशन पर runtime.json और keys.json root:arkvory के साथ मोड 0640 होते हैं, और config/ में क्रेडेंशियल फ़ाइलें केवल root पढ़ सकता है। Compose इंस्टॉलेशन उन फ़ाइलों के लिए मोड 0644 इस्तेमाल करता है जिन्हें कंटेनर पढ़ते हैं: Docker Compose देखें। इंस्टॉलर ने जो स्वामी और मोड सेट किए हैं, उन्हें वैसे ही रखें।

लाइफ़साइकल कमांड ​

सभी कमांड के लिए व्यवस्थापक अधिकार और इंस्टॉलेशन रूट के साथ --root विकल्प चाहिए।

इंस्टॉलेशनकमांड कैसे चलाएँ
Linux पैकेजsudo arkvory <command> --root /opt/proanima-arkvory
Windows, ग्राफ़िकल इंस्टॉलरउन्नत PowerShell में: & 'C:\Program Files\ProAnima\Arkvory\arkvory.ps1' <command> --root C:\ProgramData\ProAnima\Arkvory
स्क्रिप्ट इंस्टॉलेशन, Composesudo <root>/runtime/node-v24.21.0-linux-x64/bin/node <root>/manage.mjs <command> --root <root>. Windows पर runtime\node-v24.21.0-win-x64\node.exe इस्तेमाल करें

arkvory help बिना विशेष अधिकार के कमांड की सूची दिखाता है। इस साइट के उदाहरण छोटा रूप arkvory <command> इस्तेमाल करते हैं।

कमांडउपयोग
statusइंस्टॉलेशन मोड, इंजन, स्वचालित अपडेट सेटिंग, पिन और इंस्टॉल किया गया रिलीज़ दिखाता है
configureकोई नीति बदलता है। configure कमांड देखें
updateअभी कोई नया स्थिर रिलीज़ इंस्टॉल करता है। अपडेट देखें
upgradeडेटाबेस स्कीमा बदलने वाला रिलीज़ आपके अपने बैकअप रिकॉर्ड के साथ इंस्टॉल करता है। अपडेट देखें
recoverबाधित अपडेट पूरा करता है। अपडेट देखें
finish-installबाधित पहला इंस्टॉलेशन जारी रखता है
updates-connectकंसोल और अपडेट टाइमर को जोड़ता है, और वे सेवाएँ पंजीकृत करता है जो पुराने इंस्टॉलेशन में नहीं हैं
updates-poll, updates-reset, changes-resetअपडेट टाइमर द्वारा और रिकवरी के लिए चलाए जाते हैं। अपडेट देखें

एक समय पर केवल एक कमांड चलता है। दूसरा कमांड Installation is locked के साथ रुक जाता है। किसी कमांड विकल्प में कभी कुंजी या पासवर्ड न डालें: फ़ाइलों का इस्तेमाल करें।

configure कमांड ​

एक कॉल एक तरह की सेटिंग बदलती है। छहों तरह की चीज़ें एक कॉल में नहीं मिलाई जा सकतीं।

प्रकारविकल्पप्रभाव
HTTPS--tls-cert FILE --tls-key FILE [--listen-host ADDRESS], या --tls-off [--listen-host ADDRESS]अंतर्निहित HTTPS चालू या बंद करता है। सेवाएँ रीस्टार्ट करता है और रेडीनेस जाँचता है। HTTPS देखें
बैकअप स्टोरेज--backup-vault DIRECTORY [--vault-key-file FILE | --init-vault --vault-no-encryption], या --backup-vault-offबैकअप स्टोरेज को जोड़ता या हटाता है। केवल बैकअप एजेंट रीस्टार्ट करता है। बैकअप देखें
मिरर--mirror REPOSITORY --mirror-upstream URL --mirror-token-file FILE [--mirror-source REPOSITORY] [--mirror-stages LIST] [--mirror-ca-file FILE], या नई कुंजी के लिए --mirror REPOSITORY --mirror-token-file FILE, या --mirror-detach REPOSITORY[,REPOSITORY…] या --mirror-detach allकिसी रिपॉज़िटरी को मिरर या आयात लक्ष्य बनाता है, या फिर से साधारण बनाता है। मिरर देखें
वेबहुक--webhook ID --webhook-repository REPOSITORY --webhook-url URL --webhook-secret-file FILE [--webhook-next-secret-file FILE] [--webhook-actions LIST] [--webhook-allow-private LIST] [--webhook-ca-file FILE], या --webhook-detach IDवेबहुक सब्सक्रिप्शन जोड़ता, बदलता या हटाता है। सेवाएँ पुनः आरंभ करता है और तैयारी जाँचता है। देखें वेबहुक
क्लस्टर--cluster ha-2 या ha-3 [--cluster-resource NAME]रेप्लिकेटेड वॉल्यूम के प्राइमरी पर: क्लस्टर मोड चालू करता है। उच्च उपलब्धता क्लस्टर देखें
अपडेट--enable-updates, --disable-updates, --pin [--version X.Y.Z], --unpin, --update-channel stable या beta, --statistics on या off, --hub-url URL, --hub-offअपडेट नीति बदलता है। अपडेट देखें

HTTPS, बैकअप स्टोरेज और मिरर के बदलाव सेवाएँ रीस्टार्ट करते हैं और बदलाव काम न करने पर पिछला विन्यास बहाल कर देते हैं। अपडेट विकल्प केवल installation.json और hub.json फिर से लिखते हैं; वे कुछ भी रीस्टार्ट नहीं करते। फ़ाइल पथ निरपेक्ष होते हैं।

कार्य के अनुसार सेटिंग्स ​

पता और पोर्ट ​

वेरिएबलडिफ़ॉल्टअर्थ
ARKVORY_HOST127.0.0.1वह पता जिस पर API सुनता है
ARKVORY_PORT8080TCP पोर्ट

डिफ़ॉल्ट के साथ केवल सर्वर पर मौजूद प्रोग्राम जुड़ सकते हैं। दूसरे कंप्यूटर स्वीकार करने के लिए, दो में से एक तरीका चुनें:

  • अंतर्निहित HTTPS। arkvory configure --tls-cert … --tls-key … --listen-host 0.0.0.0. HTTPS देखें।
  • दूसरे कंप्यूटर पर रिवर्स प्रॉक्सी। ARKVORY_HOST को प्रॉक्सी के नेटवर्क इंटरफ़ेस के पते पर सेट करें और प्रॉक्सी को ARKVORY_TRUSTED_PROXIES में सूचीबद्ध करें। runtime.json संपादित करें, या arkvory configure --tls-off --listen-host <address> चलाएँ। पोर्ट को फ़ायरवॉल से प्रॉक्सी तक सीमित करें।

--listen-host अकेले अस्वीकार कर दिया जाता है: इसे TLS फ़ाइलों के साथ या --tls-off के साथ इस्तेमाल करें। --tls-off के बाद, लूपबैक पर लौटने के लिए --listen-host 127.0.0.1 जोड़ें, वरना API उसी सेट किए गए पते पर सुनता रहेगा।

जब API बिना TLS और बिना भरोसेमंद प्रॉक्सी के नॉन-लूपबैक पते पर सुनता है, तो शुरू होते समय चेतावनी http.plaintext_exposed लॉग करता है। कंप्यूटरों के बीच कभी सादे HTTP पर कुंजियाँ न भेजें।

Linux पर सेवाएँ एक अपरिविलेज्ड खाते के रूप में चलती हैं, जो सामान्यतः 1024 से नीचे के पोर्ट पर नहीं सुन सकता। कंसोल के शॉर्टकट (Start मेनू, मेनू प्रविष्टि) पोर्ट 8080 की ओर इशारा करते रहते हैं। लाइफ़साइकल कमांड runtime.json में दिए पते और पोर्ट का पालन करते हैं। Compose इंस्टॉलेशन में पता और पोर्ट तय होते हैं: Docker Compose देखें।

सार्वजनिक पता और अग्रेषित हेडर ​

सार्वजनिक URL के लिए कोई सेटिंग नहीं है। सर्वर अनुरोध से निरपेक्ष लिंक बनाता है, जैसे Git LFS और npm उत्तरों के लिंक: कनेक्शन TLS होने पर या प्रॉक्सी X-Forwarded-Proto: https भेजने पर योजना https होती है, और होस्ट Host हेडर होता है। ARKVORY_TRUSTED_PROXIES में सूचीबद्ध प्रॉक्सी X-Forwarded-Host से होस्ट भी सेट कर सकता है। इसलिए आपके प्रॉक्सी को सार्वजनिक नाम अग्रेषित करना चाहिए। HTTPS देखें।

ARKVORY_TRUSTED_PROXIES कॉमा से अलग किए गए, अधिकतम 32 पते या CIDR श्रेणियाँ लेता है। केवल यही पीयर X-Forwarded-For से क्लाइंट पता और X-Request-Id से अनुरोध ID सेट कर सकते हैं। सूची के बिना, हर क्लाइंट प्रॉक्सी के पते से आता दिखता है, और साइन-इन सीमा उन्हें एक ही गिनती है।

दूसरे पते पर ब्राउज़र ​

ARKVORY_CORS_ORIGINS किसी दूसरे पते पर चलने वाले कंसोल या अन्य वेब एप्लिकेशन के अधिकतम 16 ओरिजिन की सूची देता है, कॉमा से अलग। हर ओरिजिन में एक योजना, एक होस्ट और वैकल्पिक पोर्ट होता है, और कोई पथ नहीं। इसे HTTPS इस्तेमाल करना चाहिए; सादा HTTP केवल localhost, 127.0.0.1 और [::1] के लिए स्वीकार्य है। HTTPS देखें। ARKVORY_ALLOW_REGISTRATION=true लोगों को साइन-इन पृष्ठ पर अपने खाते बनाने देता है; यह डिफ़ॉल्ट रूप से बंद है।

डेटाबेस ​

वेरिएबलडिफ़ॉल्टअर्थ
ARKVORY_DATABASE_URLइंस्टॉलर द्वारा सेटPostgreSQL कनेक्शन URL। प्रबंधित डेटाबेस 127.0.0.1 पर इंस्टॉलेशन के दौरान चुने गए पोर्ट पर सुनता है
ARKVORY_DATABASE_POOL_SIZE10API कनेक्शन पूल का आकार, 4 से 200 तक

किसी इंस्टॉलेशन को दूसरे डेटाबेस की ओर न इंगित करें। सहेजी गई फ़ाइलें और कैटलॉग साथ-साथ रहते हैं। नए डेटाबेस पर जाना बैकअप से पुनर्स्थापना है: बैकअप देखें। किसी बाहरी PostgreSQL के लिए, API पूल के लिए max_connections पर्याप्त ऊँचा सेट करें, write लॉक के लिए हर समवर्ती अपलोड पर एक कनेक्शन, वर्कर के लिए 5 और बैकअप एजेंट के कनेक्शन।

स्टोरेज डायरेक्टरी और खाली जगह ​

वेरिएबलडिफ़ॉल्टअर्थ
ARKVORY_DATA_DIR<root>/dataजहाँ फ़ाइल सामग्री सहेजी जाती है। इंस्टॉलर द्वारा सेट। स्थानीय डिस्क इस्तेमाल करें
ARKVORY_CAPACITY_BYTES10 TiBवह अधिकतम जो सभी आरक्षित सामग्री इस्तेमाल कर सकती है। यह आरक्षणों की सीमा है, डिस्क माप नहीं
ARKVORY_STORAGE_RESERVE_BYTES1 GiBखाली जगह जो अपलोड कभी इस्तेमाल नहीं करते। 0 रिज़र्व बंद कर देता है
ARKVORY_MAX_OBJECT_BYTESलगभग 10 TiBसबसे बड़ा एकल ऑब्जेक्ट। फ़ाइल आकार सीमित करने के लिए कम मान सेट करें

ARKVORY_DATA_DIR को वहीं रखें जहाँ इंस्टॉलर ने रखा था। Linux यूनिट्स रूट के केवल data/, logs/ और updates/inbox/ में लिख सकती हैं, इसलिए उनके लिए कोई दूसरा पथ रीड-ओनली होता है। बड़ी डिस्क इस्तेमाल करने के लिए, सेवाएँ रोकें, सामग्री नई डिस्क पर कॉपी करें, डिस्क को data/ पर स्वामी arkvory के साथ माउंट करें, और सेवाएँ शुरू करें। Windows और Linux पर स्क्रिप्ट (-Root, ARKVORY_INSTALL_ROOT) से इंस्टॉल करते समय रूट स्वयं भी चुन सकते हैं। स्टोरेज देखें।

ट्रांसफ़र सीमाएँ ​

सीमाएँ एक API प्रोसेस की होती हैं। दर 0 का अर्थ कोई सीमा नहीं।

वेरिएबलडिफ़ॉल्टअर्थ
ARKVORY_MAX_UPLOADS2एक ही समय पर अपलोड, 1 से 32
ARKVORY_MAX_DOWNLOADS16एक ही समय पर डाउनलोड, 1 से 256
ARKVORY_MAX_UPLOADS_PER_PRINCIPAL1एक खाते या कुंजी के एक ही समय पर अपलोड
ARKVORY_MAX_DOWNLOADS_PER_PRINCIPAL4एक खाते या कुंजी के एक ही समय पर डाउनलोड
ARKVORY_DOWNLOAD_STRATEGYorderedडाउनलोड कतार का क्रम: ordered (वर्ग और बारी), smallest-first या shared (कतार नहीं, पहले जैसा)
ARKVORY_UPLOAD_BYTES_PER_SECOND0बाइट प्रति सेकंड में कुल अपलोड दर
ARKVORY_DOWNLOAD_BYTES_PER_SECOND0बाइट प्रति सेकंड में कुल डाउनलोड दर
ARKVORY_UPLOAD_DEADLINE_MS1800000एक अपलोड अनुरोध का सबसे लंबा समय, 30 मिनट
ARKVORY_UPLOAD_IDLE_TIMEOUT_MS30000इतने समय तक कोई डेटा न भेजने वाला अपलोड अनुरोध रुक जाता है

API के सामने वाले प्रॉक्सी को कम से कम ARKVORY_UPLOAD_DEADLINE_MS जितना लंबा अनुरोध अनुमत करना चाहिए। HTTPS देखें। अन्य सभी सीमाएँ, जैसे प्रतीक्षा कतार और प्रति-खाता दरें, एनवायरनमेंट वेरिएबल में हैं।

डाउनलोड कतार के मान (रणनीति, एक साथ डाउनलोड, आरक्षण, भार और अन्य) बिना रीस्टार्ट भी बदले जा सकते हैं: साइटें → इस साइट की सेटिंग, या PUT /api/v1/system/downloads/settings। लेखन प्रक्रिया पर सहेजे गए मान इन वेरिएबल से ऊपर रहते हैं; देखें साइटें।

बैकअप और मिरर ​

दोनों के लिए configure इस्तेमाल करें। --backup-vault ARKVORY_BACKUP_VAULT लिखता है, सेवा खाते को डायरेक्टरी तक पहुँच देता है, केवल बैकअप एजेंट रीस्टार्ट करता है, और बदलाव तभी रखता है जब एजेंट बैकअप स्टोरेज को उपलब्ध बताता है। बैकअप स्टोरेज इंस्टॉलेशन रूट से बाहर और स्टोरेज से बाहर होना चाहिए। --mirror ARKVORY_MIRRORS_FILE और कुंजी फ़ाइलें लिखता है, API और वर्कर रीस्टार्ट करता है, और कुछ भी बदलने से पहले आपकी कुंजी से स्रोत जाँचता है।

अपडेट और हब ​

अपडेट नीति installation.json और config/hub.json में है। विकल्प configure कमांड में हैं, और उनका अर्थ अपडेट में है। runtime.json में ARKVORY_HUB_URL अलग है: यह तय करता है कि कंसोल फ़ीडबैक कहाँ भेजता है। configure --hub-url या --hub-off दोनों बदलता है, और सेवाओं के अगले रीस्टार्ट के बाद फ़ीडबैक पता उसका पालन करता है।

लॉग और शटडाउन ​

वेरिएबलडिफ़ॉल्टअर्थ
ARKVORY_LOG_LEVELinfodebug, info, warning या error। स्तर warning और error एक्सेस लॉग भी छिपा देते हैं
ARKVORY_ACCESS_LOGtrueहर HTTP अनुरोध के लिए एक JSON रिकॉर्ड। क्वेरी स्ट्रिंग कभी नहीं लिखी जाती
ARKVORY_DRAIN_TIMEOUT_MS30000रोकने के अनुरोध के बाद, चल रहे अनुरोधों के पूरा होने का समय

सुपरवाइज़र किसी सेवा को रुकने के लिए 120 सेकंड देते हैं। यदि आप लगभग 90 सेकंड से अधिक ड्रेन समय सेट करते हैं, तो सेवा प्रबंधक का स्टॉप टाइमआउट भी बढ़ाएँ: systemd यूनिट्स में TimeoutStopSec, Windows सेवाओं का स्टॉप टाइमआउट, और Compose में stop_grace_period। मॉनिटरिंग देखें।

बदलाव लागू करें ​

configure अपना बदलाव स्वयं लागू करता है। config/runtime.json में आप जो भी संपादित करें, उसके लिए:

  1. फ़ाइल की एक प्रति बनाएँ, उदाहरण के लिए sudo cp -p /opt/proanima-arkvory/config/runtime.json /root/runtime.json.bak। इसमें डेटाबेस का पासवर्ड है: प्रति को निजी रखें।

  2. फ़ाइल को यथास्थान संपादित करें। JSON को मान्य रखें, हर मान एक स्ट्रिंग के साथ।

  3. स्वामी और मोड जाँचें। Linux पर उन्हें root:arkvory और 0640 रहना चाहिए। sudo chown root:arkvory runtime.json और sudo chmod 0640 runtime.json से उन्हें ठीक करें।

  4. सेवाएँ रीस्टार्ट करें। सेटिंग्स केवल शुरू होते समय पढ़ी जाती हैं।

    bash
    sudo systemctl restart arkvory-api arkvory-worker arkvory-backup
    powershell
    Restart-Service Arkvoryapi, Arkvoryworker, Arkvorybackup

    Compose इंस्टॉलेशन में, Docker Compose से compose कमांड के साथ कंटेनर रोकें और शुरू करें:

    bash
    "${compose[@]}" stop --timeout 120 backup worker api
    "${compose[@]}" up -d --wait api worker
    "${compose[@]}" up -d backup
  5. परिणाम जाँचें। अपनी श्रेणी से बाहर का मान प्रोसेस को शुरू होते समय वेरिएबल का नाम बताने वाले संदेश के साथ रोक देता है, उसका मान कभी नहीं। Linux पर इसे journalctl -u arkvory-api -n 50 से पढ़ें। उस स्थिति में Arkvory किसी डिफ़ॉल्ट पर वापस नहीं जाता।

रीस्टार्ट चल रहे ट्रांसफ़र बाधित करता है। क्लाइंट उन्हें जारी रखते हैं।

पुनर्प्राप्ति कुंजी बदलें ​

अगर आपको संदेह हो कि किसी ने config/bootstrap-token.txt पढ़ लिया है, तो पुनर्प्राप्ति कुंजी बदलें। कुंजी दो जगह सहेजी जाती है जिन्हें साथ-साथ बदलना होता है: फ़ाइल bootstrap-token.txt में कुंजी रहती है, और keys.json में प्रविष्टि bootstrap-owner उसका SHA-256 रखती है। प्रविष्टि deployment-health को वैसा ही रखें।

  1. config/keys.json की एक प्रति बनाएँ।

  2. इस स्क्रिप्ट को replace-recovery-key.mjs के रूप में सहेजें:

    js
    import { createHash, randomBytes } from 'node:crypto';
    import { readFileSync, writeFileSync } from 'node:fs';
    
    const directory = process.argv[2];
    const token = randomBytes(32).toString('hex');
    const keys = JSON.parse(readFileSync(`${directory}/keys.json`, 'utf8'));
    const owner = keys.find((key) => key.id === 'bootstrap-owner');
    if (!owner) throw new Error('No bootstrap-owner entry');
    owner.sha256 = createHash('sha256').update(token).digest('hex');
    writeFileSync(`${directory}/keys.json`, JSON.stringify(keys, null, 2));
    writeFileSync(`${directory}/bootstrap-token.txt`, token);
  3. इसे root या Administrator के रूप में इंस्टॉलेशन के Node.js से चलाएँ। स्क्रिप्ट मौजूदा फ़ाइलों में लिखती है, इसलिए स्वामी और एक्सेस नियम वैसे ही रहते हैं।

    bash
    sudo /opt/proanima-arkvory/runtime/node ./replace-recovery-key.mjs /opt/proanima-arkvory/config
    powershell
    & 'C:\ProgramData\ProAnima\Arkvory\runtime\node.exe' .\replace-recovery-key.mjs 'C:\ProgramData\ProAnima\Arkvory\config'

    स्क्रिप्ट इंस्टॉलेशन के बाद, इसके बजाय runtime\node-v24.21.0-… के अंतर्गत Node.js इस्तेमाल करें।

  4. बदलाव लागू करें में दिखाए अनुसार सेवाएँ रीस्टार्ट करें।

  5. config/bootstrap-token.txt से नई कुंजी पढ़ें, और स्क्रिप्ट तथा keys.json की प्रति हटाएँ।

खाते, व्यक्तिगत टोकन और सेवा कुंजियाँ प्रभावित नहीं होतीं। वे डेटाबेस में रहते हैं।

Arkvory · ProAnimaStudio