संस्थापन

Toutadmin संस्थापित करना

एक ही उत्पाद के दो संस्करण: एक आपके सर्वर पर सेवा की तरह चलता है, दूसरा साझा होस्टिंग पर रख दिया जाता है। न कोई डेटाबेस अनिवार्य, न कोई तीसरी सेवा — पर MySQL सर्वर हो तो वह भी चलाया जाता है। एक घंटा मानकर चलिए।

यूरोप में रखा हुआ, कुछ भी लगाना नहीं: पाँच कर्मचारियों तक मुफ़्त, और पहले ही दिन से पूरा उत्पाद।

उतारना सबके लिए खुला है

मुफ़्त योजना SaaS पर ख़त्म नहीं होती: पाँच कर्मचारियों तक आप उत्पाद को अपने ही यहाँ भी लगा सकते हैं — अपनी संचिकाएँ, अपना आधार, अपनी प्रतिलिपियाँ — बिना कुछ चुकाए। योजना तय करता है कर्मचारियों का बल, न कि वह जगह जहाँ उदाहरण चलता है। पाँच से ऊपर अभिदान चाहिए — चाहे उदाहरण हमारे यहाँ चले, चाहे आपके।

योजनाएँ देखें

कौन-सा संस्थापित करें

चुनाव आपकी होस्टिंग पर निर्भर है, आपकी ज़रूरतों पर नहीं: दोनों संस्करण बिलकुल एक ही काम करते हैं।

Node संस्करण

उस सर्वर के लिए जिसे आप स्वयं संभालते हैं: एक मशीन, लगातार चलती एक सेवा, और आगे एक रिवर्स प्रॉक्सी।

Node 22, एक C कम्पाइलर, एक स्थानीय डिस्क। कुछ दर्जन लोगों के लिए एक-कोर मशीन काफ़ी है। यदि आपके पास MySQL सर्वर है तो वह चलाया जाता है; अन्यथा SQLite कुछ नहीं माँगता।

PHP संस्करण

साझा होस्टिंग के लिए: चढ़ाने को एक फ़ोल्डर, भरने को एक फ़ाइल, और एक निर्धारित कार्य। कमांड लाइन की ज़रूरत नहीं।

PHP 8.1 और SQLite एक्सटेंशन। कोई निर्भरता स्थापित नहीं करनी: न Composer, न पैकेज प्रबंधक। यदि आप डेटाबेस सर्वर पसंद करते हैं तो साथ में PDO MySQL एक्सटेंशन।

चुनाव पलटा जा सकता है

दोनों संस्करणों का डेटाबेस ढाँचा और पासवर्ड का स्वरूप एक ही है। एक से दूसरे पर जाना यानी एक डेटाबेस फ़ाइल और पाँच फ़ोल्डर की नकल करना: कोई रूपांतरण नहीं, और किसी को पासवर्ड बदलना नहीं पड़ता।

SQLite या MySQL

और कौन-सा डेटाबेस

दूसरा चुनाव, और एकमात्र जो कठिनाई से बदलता है। यह संस्करण पर निर्भर नहीं: दोनों दोनों इंजन स्वीकार करते हैं, और चारों संयोजन वही परीक्षण उत्तीर्ण करते हैं।

SQLite

सर्वर की डिस्क पर एक फ़ाइल। संस्थापित करने को कुछ नहीं, प्रशासित करने को कुछ नहीं, देखने को कुछ नहीं — और प्रतिरूप एक फ़ोल्डर की प्रतिलिपि से खिसक जाता है।

यही पूर्वनिर्धारित है, और अधिकांश स्थितियों में सही उत्तर: एक अनुप्रयोग-सर्वर, और एक स्थानीय डिस्क जो एक परिनियोजन से दूसरे तक टिकती है।

MySQL या MariaDB

एक डेटाबेस सर्वर, उसी मशीन पर या नेटवर्क में कहीं और। आँकड़े वहीं रहते हैं जहाँ आपका सूचना-प्रौद्योगिकी विभाग उन्हें पहले से सहेजता, प्रतिकृत करता और देखता है।

तीन कारणों से लीजिए: एक ही आधार पर कई अनुप्रयोग-सर्वर, ऐसी आंतरिक नीति जो इसे अनिवार्य करती है, या क्षणभंगुर अनुप्रयोग-डिस्क — हर परिनियोजन पर पुनः रचा जाने वाला कंटेनर।

MySQL गति का चुनाव नहीं है

यही सबसे फैली हुई धारणा है, और वह ग़लत है: SQLite प्रक्रिया के भीतर रहता है, MySQL सॉकेट के पीछे। हमारे यहाँ दो हज़ार क्रियाओं पर मापा गया — SQLite क्रिया के अनुसार ढाई से एक सौ पचास गुना तेज़ है, और आठ एक साथ लिखने वालों के साथ भी तुलना में टिकता है। MySQL इसलिए चुना जाता है कि आँकड़े कहाँ रहें और उन्हें कौन सँभाले, प्रतिक्रिया-काल के लिए नहीं।

ब्योरा, अंकों के साथ

पाँच मिनट में

तेज़ संस्थापन

सहायक खोलने भर को। ब्योरा ठीक इसके बाद आता है, चरण दर चरण — कि हर आदेश क्या करता है और क्यों।

Node संस्करण

आपके अपने सर्वर पर तीन आदेश। अन्तिम आदेश संस्थापन-टोकन बनाता है और उदाहरण चालू करता है।

git clone <votre-dépôt> toutadmin
cd toutadmin && npm ci --omit=dev
INSTALL_TOKEN=$(openssl rand -hex 16) \
NODE_ENV=production node src/server.js

PHP संस्करण

आदेश-पंक्ति बिलकुल नहीं: एक फ़ोल्डर रखना, एक संचिका नक़ल करना, एक लेखन-अधिकार खोलना।

# 1. déposer le dossier (racine web → public/)
# 2. cp config.sample.php config.php
# 3. chmod 770 data/
# 4. ouvrir https://votre-domaine/install

फिर बाकी काम सहायक करता है

उदाहरण खाली चलता है और अपने ऊपर बन्द हो जाता है: जब तक संस्थापित न हो, हर पता सहायक तक ले जाता है; और संस्थापित होते ही सहायक हमेशा के लिए चला जाता है।

  1. 1 भाषाउदाहरण की भाषा, सोलह में से। बाद में बदलती है, और हर कोई अपनी रखता है।
  2. 2 पूर्वापेक्षाएँसहायक देखता है कि उसके पैरों तले क्या है: संस्करण, लेखन-अधिकार, आधार, फ़ोल्डर। जो नहीं है, उसका नाम लिया जाता है — अनुमान नहीं।
  3. 3 डेटाबेसएक फ़ाइल में SQLite, जो कुछ नहीं माँगता, या MySQL / MariaDB यदि आपके पास हो। सहायक स्वयं को बाँधने से पहले संयोजन आज़माता है।
  4. 4 संगठनकंपनी का नाम और वार्षिक अवकाश की मात्रा। दो उत्तर, बाद में बदले जा सकते हैं।
  5. 5 प्रशासकपहला खाता। कम से कम बारह अक्षर: यही एक खाता है जो और खाते बना सकता है।
  6. 6 संस्थापनसारांश, फिर स्क्रीन पर घोषित चार चरणों में स्थापना। सहायक सदा के लिए बंद हो जाता है।
https://votre-domaine/install

द्वार खोलने से पहले संस्थापन-टोकन रख दें

पहली बार चालू होने और आपके सहायक तक पहुँचने के बीच, जो पहले आ जाए वही प्रशासन-खाता बना लेता। INSTALL_TOKEN उस खिड़की को बन्द करता है: उसके बिना सहायक खुलने से मना कर देता है।

संस्थापन सहायक
संस्थापन सहायक संस्थापन सहायक
Node संस्करण

अपने सर्वर पर, चार चरणों में

  1. लाना और संस्थापित करना

    npm install के बजाय npm ci: यह ठीक वही संस्थापित करता है जो लॉक फ़ाइल कहती है। सर्वर पर खिसका हुआ संस्करण वह ख़राबी है जो किसी की समझ में नहीं आती।

    git clone <votre-dépôt> /var/www/toutadmin
    cd /var/www/toutadmin
    npm ci --omit=dev
  2. विन्यास करना

    सब कुछ पर्यावरण चरों से तय होता है, और कोई भी अनिवार्य नहीं। पोर्ट खोलने से पहले INSTALL_TOKEN रखें: पहली बार चालू होने और आपके सहायक तक पहुँचने के बीच, जो पहले आ जाए वही प्रशासन खाता बना लेता।

    cp .env.example .env
    # PORT, NODE_ENV=production, INSTALL_TOKEN…
  3. तंत्र को सौंपना

    हाथ से चलाया गया उत्पाद टर्मिनल बंद करते ही रुक जाता है। सेवा स्वयं फिर चालू होती है, और केवल अपने डेटा फ़ोल्डर में लिख सकती है।

    sudo systemctl enable --now toutadmin
    journalctl -u toutadmin -f
  4. संपर्क को गोपन करना

    अनुप्रयोग का पोर्ट कभी सीधे इंटरनेट पर न दें। प्रॉक्सी के पीछे उदाहरण स्वयं सुरक्षा शीर्षक लगाता है — HSTS सहित, और केवल पहले से गोपित संपर्क पर।

    sudo certbot --nginx -d intranet.exemple.fr
PHP संस्करण

साझा होस्टिंग पर, चार चरणों में

  1. फ़ाइलें चढ़ाना

    यही वह चरण है जहाँ चूक होती है। यदि सर्वर पूरा फ़ोल्डर परोसता है, तो डेटाबेस कोई भी उतार सकता है: खाते, पासवर्ड की छापें और तिजोरी समेत।

    # déposer le dossier ; la racine web pointe sur public/, pas sur le dossier
  2. विन्यास लिखना

    कॉन्फ़िगरेशन सहायक लिखता है, और सबसे अंत में: जब तक फ़ाइल नहीं है, बीच में रुकी स्थापना ने पीछे कुछ नहीं छोड़ा। वह उसमें इंस्टेंस की अपनी कुंजी रखता है, जो हस्ताक्षरों को सील करती है और बेस में रहस्यों को एन्क्रिप्ट करती है — उसे बाकी सबके साथ सहेजें।

    cp config.sample.php config.php
    php -r "echo bin2hex(random_bytes(32));"   # session_secret
  3. लिखने के अधिकार खोलना

    SQLite डेटाबेस के पास और फ़ाइलें लिखता है: लिखने योग्य फ़ोल्डर होना चाहिए, केवल फ़ाइल नहीं। बाक़ी उत्पाद केवल पढ़ने योग्य रह सकता है।

    chmod 770 data/     # le dossier, pas seulement la base
  4. फेरा निर्धारित करना

    PHP साइट केवल अनुरोध के समय जीती है। निर्धारित कार्य समाप्त अनुबंध बंद करता है, आवर्ती बीजक जारी करता है, वेबहुक भेजता है और बैकअप बनाता है।

    * * * * * /usr/bin/php /var/www/toutadmin/tools/cron.php

सहकर्मियों के लिए खोलने से पहले

एक बैकअप जो इमारत से बाहर जाए

अभी एक बना लें, जब तक डेटाबेस छोटा है, और दूरस्थ गंतव्य सेट करें। जिस सर्वर की रक्षा करता है उसी पर पड़ा अभिलेख किसी की रक्षा नहीं करता।

बिना अधिकारों का एक परख खाता

उसी से लॉगिन करके घूमिए। उपकरण को वैसा देखने का यही एकमात्र तरीका है जैसा आपके सहकर्मी देखेंगे — और यही जाँच सबसे अधिक छोड़ी जाती है।

दो प्रशासक, एक नहीं

यदि आप दो-चरणीय सत्यापन चालू करें और फ़ोन तथा बचाव कोड दोनों खो दें, तो दरवाज़ा केवल दूसरा प्रशासक ही खोल सकता है। कोई पिछला दरवाज़ा नहीं है।

पूरा निर्देश प्रलेखन में है

यह पृष्ठ रूपरेखा देता है। प्रलेखन बाक़ी सब देता है: अग्रिम सर्वर का विन्यास, सटीक अनुमतियाँ, प्रमाणपत्र, पुनर्स्थापन, उन्नयन, लक्षण के अनुसार समस्या-निवारण — और दोनों निर्देश पूरे, हर संस्करण के लिए एक।

नि:शुल्क शुरू करें, बढ़ने पर योजना बदलें

पहले पाँच कर्मचारी हमेशा निःशुल्क। उसके ऊपर, प्रति कर्मचारी प्रति माह 5 €। आज़माने के लिए कोई कार्ड नहीं।