
छोटे नेटवर्कों के लिए हल्का OpenWRT डिवाइस प्रबंधन प्लेटफ़ॉर्म। 2–20 डिवाइसों के लिए केंद्रीकृत कॉन्फ़िगरेशन, निगरानी और WiFi प्रबंधन, सरल डिप्लॉयमेंट और OpenWISP संगतता के साथ।
*चेतावनी यह एक प्रारंभिक रिलीज़ है, कृपया अब तक की सभी रिलीज़ों के रिलीज़ नोट्स पढ़ें*
# <img src="https://raw.githubusercontent.com/rubenbe/opensoho/HEAD/logo.svg" alt="OpenSOHO logo" width="40" /> OpenSOHO
परियोजना का समर्थन करने पर विचार करने के लिए धन्यवाद!
<a href="https://www.buymeacoffee.com/rubenbe" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/9350/485b634752d0d832ed936de61544bf16e5e54dc05146ccca080333c15097d455.png" alt="Buy Me A Coffee" height="41" width="174"></a>
[दस्तावेज़ीकरण](https://opensoho.github.io/docs)
OpenSOHO को OpenWRT आधारित कुछ नेटवर्क उपकरणों को प्रबंधित करने के लिए बनाया गया है। इसलिए SOHO नाम Small Office Home Office (SOHO) नेटवर्क से आया है।
* 2 से 20 उपकरणों तक (कोई कठोर सीमा नहीं है)
* कोई मल्टी-टेनेंसी नहीं
* openwisp-config और openwisp-monitoring के साथ संगत।
* तैनात करने में सरल
यह OpenWISP से प्रेरित है, लेकिन उन नेटवर्क्स को लक्षित करता है जो OpenWISP के साथ बनाए रखने के लिए बहुत छोटे हैं।
जैसा कि OpenWisp ने उल्लेख किया:
> हालाँकि, OpenWISP बहुत छोटे नेटवर्क्स (20 से कम उपकरण), IT विशेषज्ञता की कमी वाले संगठनों, या केवल लागत बचाने के उद्देश्य से ओपन-सोर्स विकल्प चाहने वाले उद्यमों के लिए सबसे उपयुक्त नहीं हो सकता है।
<p align="center">
<a href="https://raw.githubusercontent.com/opensoho/assets/074a4c5c353fcbb295e2da84fb3490869c6c4de0/devices.png" target="_blank">
<img src="https://assets.kitploit.com/production/public/readmes/9350/5d363839ee3d28ed044c4de8249f4944be3e18ef8cb2e13d7b1c1a6a487fa1ce.png" width="80%" />
</a>
</p>
निम्नलिखित संस्करणों का परीक्षण किया गया है
* OpenWRT 24.10.x DSA (legacy समर्थन)
* OpenWRT 25.12.x DSA
# OpenSOHO के साथ शुरुआत करना
## अवलोकन
OpenSOHO सेट करने के लिए कुछ सरल चरणों की आवश्यकता होती है, जिनमें से प्रत्येक का विवरण नीचे दिए गए अनुभागों में दिया गया है:
* अपने सर्वर पर OpenSOHO इंस्टॉल करें।
* अपने OpenWRT उपकरणों पर OpenWisp पैकेज इंस्टॉल करें।
* OpenSOHO से कनेक्ट करने के लिए अपने प्रत्येक OpenWRT उपकरण पर OpenWisp कॉन्फ़िगर करें।
* OpenSOHO में कॉन्फ़िगर करना शुरू करें!
## OpenSOHO इंस्टॉल करें
* नवीनतम OpenSOHO रिलीज़ डाउनलोड करें (या docker कंटेनर का उपयोग करें)
[रिलीज़](https://github.com/rubenbe/opensoho/releases)
[Docker, Podman या Kubernetes के साथ सेटअप](https://opensoho.github.io/docs/containers/)
* OpenSOHO प्रारंभ करें
पहले, एक साझा गुप्त (shared secret) चुनें जो OpenWRT उपकरणों (openwisp-config का उपयोग करते हुए) को OpenSOHO के साथ पंजीकरण करने की अनुमति देता है।
इष्टतम सुरक्षा के लिए एक लंबी यादृच्छिक स्ट्रिंग चुनें।
यह उससे मेल खाना चाहिए जो आप अगले चरणों में LuCI में कॉन्फ़िगर करते हैं।
```sh
OPENSOHO_SHARED_SECRET=randompassphrase ./opensoho serve --http 0.0.0.0:8090
```
अब, OpenSOHO कमांड-लाइन पर एक URL आउटपुट करता है जिससे आप एडमिन खाता बना सकते हैं।
बस URL को अपने ब्राउज़र में खोलें।
वैकल्पिक रूप से, कमांड-लाइन के माध्यम से एडमिन खाता बनाएं:
```sh
./opensoho superuser upsert EMAIL PASS
```
## OpenWRT डिवाइसों को कॉन्फ़िगर करना (अपनाना)
### OpenWISP पैकेज इंस्टॉल करें
```sh
opkg install openwisp-config openwisp-monitoring luci-app-openwisp # OpenWRT 24.10
apk add openwisp-config openwisp-monitoring luci-app-openwisp # OpenWRT 25.12+
```
यदि आप 802.11v क्लाइंट स्टीयरिंग का उपयोग करना चाहते हैं, तो पूर्ण wpad-mbedtls आवश्यक है।
OpenWRT 24.10 पर
```sh
opkg remove wpad-basic-mbedtls && \
opkg install wpad-mbedtls && \
service wpad restart
```
OpenWRT 25.12+ पर
```sh
apk del wpad-basic-mbedtls && \
apk add wpad-mbedtls && \
service wpad restart
```
wpad-mbedtls इंस्टॉल होने के बाद, पहले `service restart wpad` आज़माएँ, अन्यथा नए wpad बाइनरी पर स्विच करने के लिए रीबूट की आवश्यकता हो सकती है। यदि नहीं, तो आपको इस तरह की त्रुटि मिल सकती है: `daemon.notice netifd: radio1 (28210): WARNING (wireless_add_process): executable path /usr/sbin/wpad does not match process 1842 path (/usr/sbin/wpad (deleted))`।
(कृपया ध्यान दें कि 802.11v क्लाइंट स्टीयरिंग अभी भी प्रगति पर है)
### LuCI में OpenWISP कॉन्फ़िगर करें:
* केवल `Server URL` और `Shared secret` सेट करें।
* `Server URL` के अंत में स्लैश *न* लगाएँ। एक उदाहरण URL: `http://192.168.1.1:8090`
* शेयर्ड सीक्रेट वह मान है जो आपने पहले चुना था (`OPENSOHO_SHARED_SECRET`)।
* तेज़ अपडेट के लिए वैकल्पिक रूप से `Update Interval` को 30 सेकंड तक कम करें। (यदि आप नहीं करते हैं तो OpenSOHO यह आपके लिए करता है)
* OpenSOHO मॉनिटरिंग भी सक्षम करता है और नेटवर्क स्थिति के तेज़ अपडेट के लिए मॉनिटरिंग अंतराल को 15 सेकंड तक कम करता है।
मॉनिटरिंग सक्षम करने की अत्यधिक अनुशंसा की जाती है, क्योंकि OpenSOHO वर्तमान OpenWRT सेटिंग्स का बहुत कुछ अनुमान लगाता है और आसान कॉन्फ़िगरेशन के लिए उन्हें भर देता है।
## OpenSOHO कॉन्फ़िगर करें
* OpenWrt डिवाइस(ों) के शेयर्ड सीक्रेट का उपयोग करके स्वयं-पंजीकरण करने की प्रतीक्षा करें।
* डिवाइस का `Enabled` फ़्लैग true पर सेट करें।
* `numradios` को सही मान पर सेट करें। उदाहरण के लिए 2.4 + 5GHz डिवाइस के लिए, यह मान 2 होगा।
* एक Wifi एक्सेस पॉइंट (SSID+KEY) सेट करें। यह प्रक्रिया OpenSOHO को डिवाइस पंजीकरण पर रेडियो कॉन्फ़िगरेशन को सही ढंग से पहचानने की अनुमति देती है।
* कॉन्फ़िगर किए गए Wifi एक्सेस पॉइंट को किसी डिवाइस से जोड़ें ताकि उसे कॉन्फ़िगर किया जा सके।
* वर्तमान में प्रत्येक नेटवर्क सभी रेडियो पर स्वचालित रूप से कॉन्फ़िगर हो जाएगा (`numradios` का उपयोग करके कॉन्फ़िगर किया गया)।
* वैकल्पिक रूप से LEDs को भी चालू या बंद किया जा सकता है (अभी केवल स्टैटिक कॉन्फ़िग)।
* रेडियो फ़्रीक्वेंसी कॉन्फ़िगर करना अब समर्थित है। OpenSOHO वर्तमान रेडियो कॉन्फ़िग को एक बार पढ़ता है और इसे रेडियो कॉन्फ़िग के अंतर्गत उपलब्ध कराता है। रेडियो कॉन्फ़िग दिखने में एक या दो मिनट लग सकते हैं (कॉन्फ़िगरेशन और मॉनिटरिंग चरणों को पूरा होने में कुछ समय लगता है)।
## डैशबोर्ड
OpenSOHO एक बुनियादी डैशबोर्ड के साथ आता है। यह सबसे बाएँ साइडबार में, OpenSOHO लोगो के ठीक नीचे स्थित बटन के माध्यम से सुलभ है।
<p align="center">
<a href="https://raw.githubusercontent.com/opensoho/assets/636c6966e5bb33f6ef1fc0a7b0188307ad6865b6/dashboard.png" target="_blank">
<img src="https://assets.kitploit.com/production/public/readmes/9350/3b8f95d6bd1a3860d0aac83aa3e54eccb115aef24273ab9ba6d5d9a7591304e1.png" width="70%" />
</a>
</p>
कृपया ध्यान दें कि यह अधिक उन्नत ग्राफ़िंग टूल के विकल्प के रूप में नहीं है, यह जानबूझकर बुनियादी रखा गया है और रखा जाएगा।
## कॉन्फ़िगर करें
अब OpenSoho को http://ipaddress:8090/_/ के माध्यम से एक्सेस किया जा सकता है
कई कॉन्फ़िगरेशन संग्रह हैं:
### क्लाइंट्स
ये Wifi से जुड़े क्लाइंट हैं। यह तालिका केवल-पढ़ने योग्य है, सिवाय alias के।
इसका उपयोग डिवाइस को मानव-पठनीय नाम देने के लिए किया जा सकता है। यह तभी ठीक से काम करता है जब क्लाइंट अपना mac-address रैंडमाइज़ न करे।
#### कनेक्टेड क्लाइंट्स
इसमें उन क्लाइंट्स की सूची है जो वर्तमान में आपके wifi से जुड़े हैं। डिवाइस का IP पता दिखाने के लिए, OpenSOHO को आपके DHCP लीज़ तक पहुँच की आवश्यकता होती है। ऐसा करने के लिए, आपके पास उस डिवाइस पर openwisp मॉनिटरिंग डेमन चल रहा होना चाहिए जिसमें DHCP सर्वर है। स्टैटिक IP वाले डिवाइस को IP नहीं मिलेगा। यह 0.12.0 तक एक ज्ञात सीमा है।
### डिवाइसेस
ये जुड़े हुए डिवाइस हैं।
* कॉन्फ़िगरेशन अपडेट को अक्षम करने के लिए enable/disable का उपयोग करें। यह एक साथ सभी डिवाइस को अपडेट करने से बचने के लिए उपयोगी है। मॉनिटरिंग सक्रिय रहती है।
* Health status केवल-पढ़ने योग्य फ़ील्ड है। `healthy` का अर्थ है कि डिवाइस ने पिछले एक मिनट के भीतर संचार किया है। यदि नहीं, तो health status `unhealthy` हो जाती है और डिवाइस या उसके कनेक्शन में कुछ गड़बड़ हो सकती है।
* Leds led कॉन्फ़िग चुनने की अनुमति देता है
* Numradios डिवाइस पर रेडियो की संख्या सेट करने की अनुमति देता है। यह शुरू में OpenWisp द्वारा नहीं भेजा जाता, इसलिए इसे उपयोगकर्ता द्वारा सेट करना आवश्यक है।
* Wifis इस डिवाइस पर लागू करने के लिए SSIDs चुनने की अनुमति देता है।
### DHCP आरक्षण
एक होस्टनेम, MAC पता, IPv4 पता और एक या
अधिक DHCP सर्वर के साथ एक आरक्षण बनाएँ। OpenSOHO प्रत्येक चयनित सर्वर पर
`/etc/config/dhcp` में समान नाम वाला `config host` अनुभाग जोड़ता है। आरक्षण को हटाए बिना
अक्षम करने के लिए DHCP सर्वर चयन साफ़ करें। नाम, MAC पते और IP
पते आरक्षण सूची में अद्वितीय होते हैं।
### Leds
* बुनियादी LED कॉन्फ़िगरेशन (इस समय यह अधिक एक POC है)
### Radios
* प्रत्येक रेडियो की आवृत्ति सेट करने की अनुमति देता है।
* बैंड को संशोधित नहीं किया जाना चाहिए, क्योंकि इससे OpenSOHO आवृत्ति कॉन्फ़िगरेशन को सत्यापित कर सकता है। PocketBase के भीतर सीमाओं के कारण यह आवश्यक है।
### Wifi
* विभिन्न SSID सेट करने की अनुमति देता है। एन्क्रिप्शन मोड का चयन वर्तमान में सीमित है। WEP या Open डिज़ाइन के अनुसार समर्थित नहीं है।
## Monitoring
### Device monitoring
सत्यापित करें कि डिवाइस का स्वास्थ्य `healthy` है।
### Connected clients
यह दृश्य उन सभी wifi क्लाइंट्स को दिखाता है जो पिछले 30 सेकंड के भीतर अभी भी कनेक्टेड हैं।
### Home Assistant integration
OpenSOHO मॉनिटरिंग को Home Assistant के साथ एकीकृत किया जा सकता है। [(अधिक जानकारी)](https://opensoho.github.io/docs/home-assistant/)
यह REST API Home Assistant के साथ उपयोग के लिए डिज़ाइन किया गया है, लेकिन इसे अन्य टूल्स के साथ भी एकीकृत किया जा सकता है।
## Troubleshooting
### Reregister a device
जब LuCI में OpenWISP `Server URL` बदलने पर नए कंट्रोलर के साथ ठीक से पंजीकरण नहीं होता प्रतीत होता है।
इसे ठीक करने के लिए:
```sh
uci delete openwisp.http.uuid
uci delete openwisp.http.key
/etc/init.d/openwisp-config restart
```
### पहला SSID सक्षम नहीं होता
ऐसा प्रतीत होता है कि OpenWRT में एक समस्या है जहाँ Wifi डिवाइस पर पहला कॉन्फ़िगर किया गया SSID स्वतः सक्षम नहीं होता है।
वर्कअराउंड: LuCI में enable बटन पर क्लिक करें।
# डेवलपर्स
* निर्भरताएँ इंस्टॉल करें
```sh
go mod tidy
```
* OpenSOHO प्रारंभ करें
साझा गुप्त कुंजी का उपयोग openwisp-config द्वारा पंजीकरण के लिए किया जाता है। इष्टतम सुरक्षा के लिए एक लंबा यादृच्छिक स्ट्रिंग चुनें।
यूनिट परीक्षण चलाना:
```sh
go test -cover -v -coverprofile=coverage.out
go tool cover -html=coverage.out
```
## दायरा
### विशेषताएँ
OpenWISP की कुछ विशेषताएँ (वर्तमान में) OpenSOHO के दायरे से बाहर मानी जाती हैं
* फर्मवेयर अपडेट: OpenWRT को बार-बार अपडेट करने की आवश्यकता नहीं होती; प्रत्येक डिवाइस पर मैन्युअल रूप से Attended sysupgrade सुविधा का उपयोग करें।
* मल्टी-टेनेंसी
* टेम्पलेट्स: OpenWISP में एक शक्तिशाली और बहुमुखी टेम्पलेट तंत्र है, इसे सुविधाओं के एक अधिक निश्चित उपसमुच्चय द्वारा प्रतिस्थापित किया गया है ताकि कॉन्फ़िगरेशन का अनुभव आसान हो सके।
### विकास
लक्ष्य pocketbase का अधिकतम उपयोग करना है। छोटे संशोधन किए जा सकते हैं क्योंकि pocketbase बैक-एंड में वर्तमान में प्लग-इन सिस्टम का अभाव है। लेकिन pocketbase का फोर्क बनाना लक्ष्य नहीं है, इसलिए अपस्ट्रीम परिवर्तनों को मर्ज करना सरल बना रहे।
### रिलीज़ करना
```sh
GITHUB_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa goreleaser release
```