दस्तावेज़

त्वरित शुरुआत + हर हिस्से और हर डिवाइस की सुविधाओं का विवरण (लगातार अपडेट हो रहा है)

SSH Everywhere आर्किटेक्चर और टेक स्टैक

> यह लेख आसान भाषा में SSH Everywhere की समग्र आर्किटेक्चर, इस्तेमाल किए गए प्रोटोकॉल और टेक स्टैक को समझाता है। यह उन पाठकों के लिए उपयुक्त है जो जानना चाहते हैं कि “यह असल में कैसे काम करता है” — बिना किसी तकनीकी पृष्ठभूमि के भी समझ आ सकता है।

---

पूरा प्रोजेक्ट एक वाक्य में

SSH Everywhere एक ऑल-इन-वन सर्वर/डिवाइस रिमोट ऑप्स पैनल है, जिसकी तुलना 1Panel / बाओता से की जा सकती है। इसकी मुख्य क्षमता यह है: आपका डिवाइस नेटवर्क के किसी भी कोने में हो — पब्लिक IP हो, पब्लिक IP न हो (NAT के पीछे), या Android फ़ोन हो — आप इस एक पैनल से उसे SSH की तरह प्रबंधित कर सकते हैं।

पैनल खुद एक पब्लिक IP वाले सर्वर पर तैनात होता है (0.0.0.0:5501 पर सुनता है)। आप ब्राउज़र से पैनल खोलते हैं, और पैनल अलग-अलग “कनेक्शन तरीकों” से हर लक्ष्य डिवाइस तक पहुँचता है।

---

समग्र आर्किटेक्चर (एक नज़र में)

┌─────────────────────────────────────────────────────────────┐
│  ब्राउज़र फ़्रंटएंड (सिंगल-पेज ऐप, नकली डेस्कटॉप OS)             │
│  डेस्कटॉप विंडो · टास्कबार · स्टार्ट मेन्यू · कार्ड डैशबोर्ड        │
│  · असली टर्मिनल · आइकन लाइब्रेरी · शुद्ध वैनिला JS (कोई फ़्रेमवर्क नहीं) │
└──────────────────────────┬──────────────────────────────────┘
                           │ HTTP REST + SocketIO
┌──────────────────────────┴──────────────────────────────────┐
│  पैनल बैकएंड (Flask + Flask-SocketIO, Python)                │
│  मुख्य प्रोग्राम · रिवर्स टनल सर्वर · SocketIO सर्वर · फ़ाइल ट्रांसफ़र │
│  क्रैश रोकथाम · वेबसाइट प्रबंधन · बैकअप · SQLite डेटाबेस          │
└───┬───────────────┬──────────────────┬──────────────────────┘
    │ SSH           │ रिवर्स टनल        │ SocketIO
    │ सीधा/टनल से    │ (0.0.0.0:4433)   │ (HTTP से)
    ▼                ▼                  ▼
┌────────┐    ┌──────────────┐    ┌─────────────────┐
│ पब्लिक  │    │ बिना पब्लिक IP │    │ Android फ़ोन     │
│ IP सर्वर│    │ Linux/NAS/    │    │ (Termux)        │
│        │    │ रास्पबेरी पाई   │    │                 │
└────────┘    └──────────────┘    └─────────────────┘

---

चार कनेक्शन तरीके (प्रोटोकॉल)

SSH Everywhere अंदर से 4 प्रोटोकॉल इस्तेमाल करता है, हर एक का अपना काम है और वे अलग-अलग डिवाइस प्रकारों के लिए हैं:

1. SSH — मुख्य चैनल

उपयोग: सभी “सामान्य Linux सर्वर” को प्रबंधित करने की मुख्य सुविधा।

  • सिस्टम प्रबंधन (अवलोकन, प्रोसेस, शेड्यूल कार्य, फ़ायरवॉल, Docker, वेबसाइट, इमेज स्रोत, क्रैश रोकथाम)
  • टर्मिनल (इंटरैक्टिव shell)
  • फ़ाइल प्रबंधन (अपलोड/डाउनलोड/एडिट/कंप्रेस)
  • हेल्थ चेक (CPU/मेमोरी/डिस्क/तापमान)
  • कमांड चलाना

कनेक्शन तरीका:

  • पब्लिक IP हो: पैनल सीधे host:port से जुड़ता है
  • पब्लिक IP न हो: पैनल पहले रिवर्स टनल से एक लोकल प्रॉक्सी पोर्ट बनाता है, फिर उससे SSH जोड़ता है

> दूसरे शब्दों में, रिवर्स टनल का मूल काम है “SSH को उन डिवाइस तक पहुँचाना जिनके पास पब्लिक IP नहीं है”, इसलिए SSH ही अंतिम लैंडिंग प्रोटोकॉल है।

2. रिवर्स टनल प्रोटोकॉल — टनलिंग चैनल

उपयोग: ताकि “बिना पब्लिक IP वाले डिवाइस” तक पैनल पहुँच सके। डिवाइस खुद पैनल की तरफ़ “बाहर जाकर” कनेक्ट करता है और एक रिवर्स TCP लंबा कनेक्शन बनाता है; पैनल इसी टनल से कमांड भेजता और पोर्ट फ़ॉरवर्ड करता है।

विशेषताएँ: TCP लंबा कनेक्शन + एन्क्रिप्शन (AES-256-GCM), सर्वर 0.0.0.0:4433 पर सुनता है।

आम परिदृश्य:

  • बिना पब्लिक IP वाले Linux सर्वर की SSH टनल ऑप्स (टनल के अंदर फिर SSH चलता है)
  • पोर्ट टनलिंग: डिवाइस के सेवा पोर्ट (जैसे 8090) को पैनल के पब्लिक पोर्ट पर मैप करना

> अक्सर उलझने वाली बात: पोर्ट फ़ॉरवर्डिंग बनाम पोर्ट टनलिंग

>

> | | पोर्ट फ़ॉरवर्डिंग | पोर्ट टनलिंग |

> |---|---|---|

> | किन डिवाइस के लिए | पब्लिक IP वाले सर्वर | बिना पब्लिक IP वाले टनल डिवाइस |

> | तरीका | सिस्टम फ़ायरवॉल DNAT, लक्ष्य सर्वर पर ही | रिवर्स टनल से |

> | डेटा फ़्लो | विज़िटर → लक्ष्य पब्लिक → लक्ष्य पोर्ट | विज़िटर → पैनल का पब्लिक पोर्ट → रिवर्स टनल → डिवाइस पोर्ट |

> | डिवाइस ऑनलाइन होना ज़रूरी | नहीं | हाँ (डिवाइस का Agent ऑनलाइन रहना ज़रूरी) |

>

> एक वाक्य में: “फ़ॉरवर्डिंग” पब्लिक IP वाले सर्वर के लिए; “टनलिंग” बिना पब्लिक IP वाले डिवाइस के लिए।

3. SocketIO — Android फ़ोन का खास चैनल

उपयोग: Android फ़ोन पर Termux प्रबंधित करना। फ़ोन के मोबाइल नेटवर्क में NAT बार-बार बदलता है और SSH अस्थिर रहता है, इसलिए SocketIO का स्थिर लंबा पोलिंग चैनल इस्तेमाल किया जाता है (असली डिवाइस पर परखा हुआ भरोसेमंद तरीका)।

फ़ोन पर चलने वाला Agent SocketIO से ये देता है:

  • सिस्टम प्रबंधन (अवलोकन/प्रोसेस/शेड्यूल कार्य)
  • टर्मिनल (PTY ब्रिज)
  • फ़ाइल प्रबंधन
  • हेल्थ मॉनिटरिंग (हर 30 सेकंड में रिपोर्ट: लोड/मेमोरी/डिस्क/बैटरी/तापमान)

> यह प्रोजेक्ट का एकमात्र ऐसा चैनल है जो SSH से नहीं चलता — क्योंकि Android फ़ोन sshd इस्तेमाल नहीं करता, बल्कि SocketIO के लंबे कनेक्शन से चलता है।

4. HTTP REST — फ़्रंटएंड और बैकएंड के बीच

ब्राउज़र फ़्रंटएंड REST API से पैनल बैकएंड को कॉल करता है, और टर्मिनल जैसे रियल-टाइम दो-तरफ़ा संवाद के लिए SocketIO का उपयोग करता है।

---

तीन डिवाइस प्रकारों तक पहुँचने के रास्ते

डिवाइस प्रकारकनेक्शन तरीकाअंतिम लैंडिंग प्रोटोकॉलविवरण
पब्लिक IP वाला Linux सर्वरपैनल सीधा कनेक्टSSHसबसे सीधा परिदृश्य
बिना पब्लिक IP वाला Linux सर्वर (NAS/रास्पबेरी पाई आदि)रिवर्स टनल से प्रॉक्सी → SSHSSH (टनल के रास्ते)टनल SSH का “कुली” है
Android फ़ोन (Termux)SocketIO लंबा पोलिंगSocketIO (एकमात्र जो SSH नहीं है)फ़ोन का खास स्थिर चैनल

---

डेटा स्टोरेज

  • SQLite डेटाबेस (data/ssheverywhere.db): सर्वर कार्ड, पोर्ट फ़ॉरवर्डिंग, टनल रिकॉर्ड, उपयोगकर्ता, कार्य आदि।
  • फ़ाइल सिस्टम: बैकअप फ़ाइलें, टनल कुंजियाँ, स्टैटिक संसाधन।

---

डिप्लॉयमेंट का रूप

  • पैनल: systemd सेवा ssh-everywhere.service, जो 0.0.0.0:5501 पर सुनती है।
  • रिवर्स टनल: 0.0.0.0:4433 पर सुनता है।
  • लक्ष्य डिवाइस का Agent सेवा के रूप में लगातार चलता है (Linux पर systemd / Termux पर termux-services)।

---

प्रोजेक्ट के नाम “SSH Everywhere” के बारे में

प्रोजेक्ट का नाम SSH Everywhere है, जिसका अर्थ है “SSH की तरह, हर जगह प्रबंधन”। SSH पूरे प्रोजेक्ट का सबसे प्रमुख कनेक्शन तरीका है: Android फ़ोन वाले एक उप-परिदृश्य को छोड़कर, बाकी सभी सुविधाएँ (Linux सर्वर प्रबंधन, टनल ऑप्स, फ़ाइल ट्रांसफ़र, हेल्थ चेक) अंत में SSH पर ही टिकती हैं। और रिवर्स टनल का मूल भी यही है — “SSH को कहीं भी पहुँचाना”। इसलिए “SSH Everywhere” नाम प्रोजेक्ट की मुख्य क्षमता को ठीक-ठीक बताता है।