इसे छोड़कर कंटेंट पर जाएं

इंस्टॉल

यहाँ नए हैं

HolyArrs को Docker में चलाएं और अपने ब्राउज़र में खोलें। इसमें कुछ मिनट लगते हैं।

शुरू करने से पहले

शुरू करने से पहले का लिंक
  • एक मशीन जिस पर Docker और Docker Compose हों।
  • आपके मीडिया फ़ोल्डर, या उन्हें बनाने की जगह। अगर आप कॉपी की जगह तुरंत मूव चाहते हैं, तो पहले फ़ोल्डर पढ़ें।
  • NAS, Unraid या Synology पर NAS, Synology और Unraid देखें। Docker के बिना पोर्टेबल आर्काइव देखें।
  1. कॉन्फ़िग के लिए किसी लोकल डिस्क पर एक फ़ोल्डर बनाएं, जैसे /srv/holyarrs/config. नेटवर्क शेयर पर नहीं। Docker Desktop पर इसकी जगह नाम वाला वॉल्यूम इस्तेमाल करें। Docker Desktop देखें।

  2. पता करें कि आपके मीडिया फ़ोल्डर किस यूज़र और ग्रुप के हैं:

    Terminal window
    id youruser
    # uid=1000(youruser) gid=1000(youruser)

    uid को PUID और gid को PGID की तरह इस्तेमाल करें।

  3. इसे docker-compose.yml नाम से सेव करें और पाथ बदलें:

    name: HolyArrs
    services:
    holyarrs:
    image: holyarrs/holyarrs:latest
    container_name: holyarrs
    environment:
    - PUID=1000
    - PGID=1000
    - TZ=Etc/UTC
    volumes:
    - /srv/holyarrs/config:/config
    - /path/to/movies:/movies #optional
    - /path/to/tv:/tv #optional
    - /path/to/music:/music #optional
    - /path/to/downloads:/downloads #optional
    ports:
    - 6262:6262
    restart: unless-stopped
  4. इसे शुरू करें:

    Terminal window
    docker compose up -d
    docker compose ps

    जैसे ही HolyArrs जवाब देने लगता है, कंटेनर healthy दिखता है।

  5. http://your-server:6262 खोलें और तुरंत ओनर अकाउंट बनाएं। कोई डिफ़ॉल्ट पासवर्ड नहीं है। जब तक आप अकाउंट नहीं बनाते, जो भी HolyArrs सबसे पहले खोलता है वही ओनर बन जाता है।

  6. इसके बाद खुलने वाला सेटअप पूरा करें। पहली बार चलाना देखें।

अगर आपको docker run पसंद है:

Terminal window
docker run -d \
--name=holyarrs \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-p 6262:6262 \
-v /srv/holyarrs/config:/config \
-v /path/to/movies:/movies `#optional` -v /path/to/tv:/tv `#optional` -v /path/to/music:/music `#optional` -v /path/to/downloads:/downloads `#optional` \
--restart unless-stopped \
holyarrs/holyarrs:latest
टैग आपको क्या मिलता है
latest सबसे नया वर्ज़न
1.0.2 (कोई भी वर्ज़न) ठीक वही वर्ज़न, कभी नहीं बदलता

पोर्ट और फ़ोल्डर

पोर्ट और फ़ोल्डर का लिंक
सेटिंग यह क्या करता है
-p 6262:6262 वेब ऐप।
-v /config डेटाबेस, सेटिंग, मास्टर कुंजी, बैकअप और लॉग। सिर्फ़ लोकल डिस्क।
-v /movies वैकल्पिक। फ़िल्मों का एक लाइब्रेरी फ़ोल्डर।
-v /tv वैकल्पिक। शो का एक लाइब्रेरी फ़ोल्डर।
-v /music वैकल्पिक। संगीत का एक लाइब्रेरी फ़ोल्डर।
-v /downloads वैकल्पिक। डाउनलोडर का डाउनलोड फ़ोल्डर। मीडिया फ़ोल्डर देखें।
--read-only=true वैकल्पिक। सिर्फ़ पढ़ने के लिए root फ़ाइल सिस्टम देखें।
--user=1000:1000 वैकल्पिक। तय यूज़र के रूप में शुरू करें देखें।

एनवायरनमेंट वेरिएबल

एनवायरनमेंट वेरिएबल का लिंक
वेरिएबल यह क्या करता है
PUID, PGID वह यूज़र और ग्रुप जिसके रूप में HolyArrs चलता है। न देने पर 1000 और 1000।
TZ टाइम ज़ोन, जैसे Europe/Amsterdam.
UMASK वैकल्पिक। नई फ़ाइलों में अनुमति के कौन से बिट नहीं रहते, जैसे 022 या 002.
HOLYARRS_SAVE_PATH वैकल्पिक। डाउनलोडर का सेव फ़ोल्डर, जैसा डाउनलोडर को दिखता है।
HOLYARRS_ALLOWED_HOSTS वैकल्पिक। वे अतिरिक्त होस्ट नाम जिनसे लोग HolyArrs तक पहुँचते हैं, कॉमा से अलग किए हुए।
HOLYARRS_TRUSTED_PROXIES वैकल्पिक। आपके रिवर्स प्रॉक्सी का एड्रेस या नेटवर्क।
HOLYARRS_URL_BASE वैकल्पिक। HolyArrs को किसी पाथ के नीचे चलाएं। URL base और रिवर्स प्रॉक्सी देखें।
HOLYARRS_MASTER_KEY_FILE वैकल्पिक। मास्टर कुंजी उसकी अपनी फ़ाइल से पढ़ें।

कोई भी वेरिएबल फ़ाइल से आ सकता है। नाम के आगे FILE__ लगाएं और वैल्यू में फ़ाइल का पाथ दें:

environment:
- FILE__HOLYARRS_ALLOWED_HOSTS=/run/secrets/holyarrs_hosts

फ़ाइल के आख़िर की एक नई लाइन हटा दी जाती है। यह PUID, PGID, UMASK और TZ के लिए भी काम करता है। अगर फ़ाइल नहीं मिलती, तो HolyArrs रुक जाता है और लॉग में वेरिएबल का नाम बताता है। वह वैल्यू कभी नहीं छापता।

इमेज में HolyArrs है और लगभग कुछ नहीं। इसमें कोई shell नहीं है, इसलिए आप अंदर देखने के लिए docker exec से इसमें नहीं जा सकते। इसकी जगह लॉग पढ़ें: docker logs holyarrs चलाएं, या कॉन्फ़िग फ़ोल्डर में logs/holyarrs.log खोलें।

HolyArrs की अपनी कमांड docker exec से फिर भी चलती हैं:

Terminal window
docker exec holyarrs /holyarrs doctor
docker exec -i holyarrs /holyarrs reset-owner
docker exec holyarrs /holyarrs restore --pre-update

इमेज amd64, 64-bit ARM और 32-bit ARM के लिए बनती हैं। जिस मशीन में करीब 2.5 GiB या उससे कम मेमोरी हो, उस पर HolyArrs ख़ुद लो-मेमोरी मोड चालू कर लेता है। लॉग की पहली लाइन यह बताती है।

कंटेनर सिर्फ़ ख़ुद को सेट अप करने के लिए root के रूप में शुरू होता है। ज़रूरत होने पर वह कॉन्फ़िग फ़ोल्डर PUID:PGID को दे देता है, फिर हमेशा के लिए उसी यूज़र पर चला जाता है। लॉग की पहली लाइन यूज़र, ग्रुप और umask दिखाती है।

HolyArrs आपके मीडिया या डाउनलोड फ़ोल्डर का मालिक कभी नहीं बदलता। PUID वाले यूज़र को उन पर लिखने की अनुमति ख़ुद दें। पढ़ने की अनुमति काफ़ी नहीं है, क्योंकि HolyArrs फ़ोल्डर बनाता है और फ़ाइलें मूव करता है।

कुछ स्टोरेज पर मालिक बदला नहीं जा सकता, जैसे root squash वाला NFS, SMB या सिर्फ़ पढ़ने के लिए माउंट। तब HolyArrs लॉग में चेतावनी लिखता है और आगे बढ़ता है। कॉन्फ़िग फ़ोल्डर को PUID:PGID के लिए ख़ुद लिखने लायक बनाएं।

यूज़र बदलने के लिए CHOWN, DAC_OVERRIDE, SETUID और SETGID capabilities चाहिए। Docker इन्हें डिफ़ॉल्ट रूप से देता है। अगर आप इन्हें हटा देते हैं, तो HolyArrs एक संदेश के साथ रुक जाता है। वह वापस root पर नहीं जाता। सच में root के रूप में चलाना हो, तो PUID=0 और PGID=0 सेट करें।

group_add: के अतिरिक्त ग्रुप, HolyArrs के यूज़र बदलने पर भी बने रहते हैं।

UMASK सिर्फ़ नई फ़ाइलों पर असर करता है। इसे न दें तो 022 रहता है, जिसमें आप लिखते हैं और बाकी लोग पढ़ते हैं। जब किसी ग्रुप को भी लिखना हो, तो 002 इस्तेमाल करें।

मीडिया फ़ोल्डर

मीडिया फ़ोल्डर का लिंक

सिर्फ़ वही फ़ोल्डर माउंट करें जो आप इस्तेमाल करते हैं: /movies, /tv और /music लाइब्रेरी फ़ोल्डर के रूप में और /downloads डाउनलोड फ़ोल्डर के रूप में।

हार्डलिंक के लिए सुझाव: हर फ़ोल्डर जो आप अलग से माउंट करते हैं, कंटेनर के अंदर एक अलग माउंट होता है, और किसी फ़ाइल का हार्डलिंक एक माउंट से दूसरे माउंट में नहीं बन सकता, इसलिए इंपोर्ट पूरी कॉपी बन जाते हैं। अगर आपको हार्डलिंक चाहिए, तो चार वैकल्पिक माउंट की जगह एक साझा ऊपरी फ़ोल्डर माउंट कर सकते हैं (जिसके अंदर डाउनलोड और लाइब्रेरी फ़ोल्डर हों), और डाउनलोडर को वही माउंट उसी पाथ पर दें। ऊपरी फ़ोल्डर भी एक ही फ़ाइल सिस्टम होना चाहिए। उसके नीचे अलग NAS शेयर या dataset हों, तो कॉपी ही होती है। जब HolyArrs को कॉपी करनी पड़ती है, तो Settings > Library folders आपको चेतावनी देता है।

HOLYARRS_SAVE_PATH हर डाउनलोड के साथ डाउनलोडर को भेजा जाता है, इसलिए इससे यह भी बदलता है कि डाउनलोडर कहाँ सेव करता है। डाउनलोडर की अपनी सेटिंग रखनी हो, तो इसे न दें। अगर आप इसे नहीं देते, तो डाउनलोड फ़ोल्डर को Settings > Library folders > Extra import folders में जोड़ें, ताकि आप उससे हाथ से इंपोर्ट कर सकें।

मास्टर कुंजी संभालकर रखें

मास्टर कुंजी संभालकर रखें का लिंक

HolyArrs सेव किए गए पासवर्ड, कुंजी और टोकन को एक मास्टर कुंजी से एन्क्रिप्ट करता है। पहली बार शुरू होने पर /config/holyarrs.key बनती है।

बैकअप में यह कुंजी कभी नहीं होती। इसकी एक कॉपी कहीं और रखें। आसान तरीका: ओनर के रूप में Settings > Backups खोलें और Download key kit (कुंजी किट डाउनलोड करें) चुनें। इसे वापस रखने के लिए फ़ाइल का नाम holyarrs.key रखें और HolyArrs बंद होने पर उसे कॉन्फ़िग फ़ोल्डर में रख दें। अलग कुंजी के साथ रीस्टोर मना कर दिया जाता है। नाम वाले वॉल्यूम में खोलने के लिए कोई फ़ोल्डर नहीं होता: इसे docker cp holyarrs.key hx:/config/ से अंदर कॉपी करें, जैसा Docker Desktop में है। नई मशीन पर जा रहे हैं? पहले कुंजी वापस रखें, फिर बैकअप रीस्टोर करें। बैकअप देखें।

आप कुंजी को उसकी अपनी, सिर्फ़ पढ़ने के लिए फ़ाइल में भी रख सकते हैं:

environment:
- HOLYARRS_MASTER_KEY_FILE=/keys/holyarrs.key
volumes:
- /srv/holyarrs/keys:/keys:ro

फ़ाइल मौजूद होनी चाहिए और उसमें 32 raw बाइट, 64 hex अंक या 32 बाइट का base64 होना चाहिए। PUID वाला यूज़र उसे पढ़ सके।

रीस्टार्ट और रीस्टोर

रीस्टार्ट और रीस्टोर का लिंक

रीस्टार्ट पॉलिसी रखें। रीस्टोर पहले जाँचा और तैयार किया जाता है, फिर HolyArrs status 75 के साथ बंद होता है, ताकि Docker उसे दोबारा शुरू करे और रीस्टोर लागू हो। unless-stopped यह संभाल लेता है।

लोकल बिल्ड अपडेट करने के लिए, माउंट को छुए बिना दोबारा बिल्ड करें और कंटेनर दोबारा बनाएं:

Terminal window
docker build --file deploy/Dockerfile --tag holyarrs:local .
docker compose up -d --force-recreate

अपडेट के दौरान /config कभी न हटाएं। अपडेट और बैकअप देखें।

होस्ट नाम और रिवर्स प्रॉक्सी

होस्ट नाम और रिवर्स प्रॉक्सी का लिंक

IP एड्रेस और localhost बिना कुछ किए काम करते हैं। घर का कोई नाम, जैसे tower.local, जो आप पहले सेटअप के दौरान इस्तेमाल करते हैं, आपके लिए सेव हो जाता है। बाकी नाम Settings > Sign-in and security में Allowed host names (अनुमति वाले होस्ट नाम) के नीचे जोड़ें, या HOLYARRS_ALLOWED_HOSTS में।

जब कोई रिवर्स प्रॉक्सी X-Forwarded-For जोड़ता है, तो HOLYARRS_TRUSTED_PROXIES में सिर्फ़ उस प्रॉक्सी का एड्रेस या नेटवर्क रखें। इसके बिना single sign-on, क्लाइंट के असली एड्रेस और Secure कुकी काम नहीं करते, और प्रॉक्सी के पीछे के सभी लोगों की साइन-इन की सीमा एक ही हो जाती है। लॉग बताता है कि कौन सा प्रॉक्सी एड्रेस जोड़ना है। अगर आगे कोई और प्रॉक्सी है, जैसे Cloudflare, तो उसकी रेंज भी जोड़ें।

nginx के साथ दोनों हेडर भेजें:

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

अगर दोनों मेल नहीं खाते, तो HolyArrs उस विज़िटर को आपके नेटवर्क के बाहर का मानता है।

सुरक्षा की बुनियादी बातें

सुरक्षा की बुनियादी बातें का लिंक
  • पोर्ट 6262 को राउटर पर फ़ॉरवर्ड न करें। Tailscale जैसा VPN इस्तेमाल करें, या HTTPS वाला रिवर्स प्रॉक्सी।
  • पहली बार शुरू करने के तुरंत बाद ओनर अकाउंट बनाएं।
  • मास्टर कुंजी की एक कॉपी कॉन्फ़िग फ़ोल्डर से अलग रखें।
  • इमेज को अप-टू-डेट रखें।

Docker Desktop होस्ट के फ़ोल्डर एक ऐसी परत से शेयर करता है जहाँ डेटाबेस की फ़ाइल लॉक सुरक्षित नहीं हैं। HolyArrs वहाँ /config लेने से मना करता है और पोर्ट 6262 पर हल दिखाता है। /config के लिए नाम वाला वॉल्यूम इस्तेमाल करें। मीडिया फ़ोल्डर होस्ट के फ़ोल्डर रह सकते हैं।

name: HolyArrs
services:
holyarrs:
image: holyarrs/holyarrs:latest
container_name: holyarrs
environment:
- TZ=Etc/UTC
volumes:
- holyarrs-config:/config
- C:/Media/movies:/movies
ports:
- 6262:6262
restart: unless-stopped
volumes:
holyarrs-config:

पुराने कॉन्फ़िग फ़ोल्डर को वॉल्यूम में ले जाने के लिए HolyArrs बंद करें और यह चलाएं:

Terminal window
docker create --name hx -v holyarrs-config:/config holyarrs/holyarrs:latest
docker cp C:\old\config\. hx:/config/
docker rm hx

बैकअप बाहर कॉपी करने के लिए: docker cp holyarrs:/config/backups .

Mac पर, अगर आपने जाँच लिया है कि आपके फ़ोल्डर में फ़ाइल लॉक काम करते हैं, तो फिर भी शुरू करने के लिए HOLYARRS_ALLOW_DESKTOP_FOLDER=1 सेट करें। HolyArrs हर बार शुरू होने पर चेतावनी देता है। नेटवर्क शेयर के लिए मनाही इससे कभी नहीं हटती।

सिर्फ़ पढ़ने के लिए root फ़ाइल सिस्टम

सिर्फ़ पढ़ने के लिए root फ़ाइल सिस्टम का लिंक

सिर्फ़ /config और /tmp लिखने लायक होने चाहिए:

services:
holyarrs:
read_only: true
tmpfs:
- /tmp

PUID, PGID और UMASK फिर भी काम करते हैं।

तय यूज़र के रूप में शुरू करें

तय यूज़र के रूप में शुरू करें का लिंक
services:
holyarrs:
user: "1000:1000"

तब HolyArrs कोई मालिक नहीं बदलता, इसलिए कॉन्फ़िग फ़ोल्डर पहले से उस यूज़र के लिए लिखने लायक होना चाहिए। PUID और PGID अनदेखे किए जाते हैं और लॉग यह बताता है। यह Kubernetes के runAsUser पर भी लागू होता है।

rootless मोड में कंटेनर के अंदर का root आपका अपना यूज़र होता है, और बाकी id होस्ट पर बड़े नंबरों से जुड़ते हैं। PUID=1000 के साथ कॉन्फ़िग फ़ोल्डर का मालिक होस्ट पर कोई अनजान यूज़र बन जाता है।

आप क्या चलाते हैं docker info या podman info क्या दिखाता है यह इस्तेमाल करें
सामान्य Docker rootless नहीं PUID और PGID हमेशा की तरह
Rootless Docker Security Options के नीचे rootless विकल्प 1
Rootless Podman rootless: true विकल्प 1 या 2

विकल्प 1. PUID=0 और PGID=0 सेट करें। यह सिर्फ़ rootless मोड में सुरक्षित है। सामान्य Docker के साथ या NAS पर ऐसा कभी न करें।

विकल्प 2. keep-id के साथ Podman, एक Quadlet के रूप में, यहाँ: ~/.config/containers/systemd/holyarrs.container:

[Container]
Image=holyarrs/holyarrs:latest
UserNS=keep-id
User=%U:%G
Volume=%h/holyarrs/config:/config:Z
PublishPort=6262:6262
HealthCmd=["/holyarrs","-healthcheck"]
HealthInterval=30s
[Service]
Restart=always
[Install]
WantedBy=default.target

या एक ही कमांड के रूप में:

Terminal window
podman run -d --name holyarrs --userns=keep-id --user "$(id -u):$(id -g)" -v ~/holyarrs/config:/config:Z -p 6262:6262 --health-cmd '["/holyarrs","-healthcheck"]' --health-interval 30s --restart always holyarrs/holyarrs:latest
  • :Z SELinux वाले सिस्टम के लिए है। जिन फ़ोल्डर को डाउनलोडर भी इस्तेमाल करता है, उन पर :z लगाएं। नेटवर्क शेयर (NFS या SMB) पर दोनों में से कोई न लगाएं: उसे दोबारा लेबल नहीं किया जा सकता और कंटेनर शुरू नहीं होगा।
  • हेल्थ चेक सूची के रूप में दें। इमेज में कोई shell नहीं है।
  • रीस्टार्ट पॉलिसी always रखें। Podman की रीबूट के बाद शुरू करने वाली सर्विस सिर्फ़ always वाले कंटेनर शुरू करती है।
  • साइन इन किए बिना रीबूट के बाद शुरू करने के लिए, एक बार loginctl enable-linger $USER चलाएं। फिर Quadlet फ़ाइल इस्तेमाल करें, या podman run के लिए systemctl --user enable podman-restart.service चलाएं।

अगर फ़ोल्डर पहले से किसी बड़े id का है, तो पहले कंटेनर बंद करें, फिर:

  • Rootless Podman: podman unshare chown -R 0:0 ~/holyarrs/config (विकल्प 1) या podman unshare chown -R 1000:1000 ~/holyarrs/config.
  • Rootless Docker: rootlesskit chown -R 0:0 ~/holyarrs/config, जिसे nsenter से rootless daemon के अंदर चलाएं (nsenter -U --preserve-credentials -n -m -t $(cat $XDG_RUNTIME_DIR/docker.pid)).

अपनी इमेज बनाएं

अपनी इमेज बनाएं का लिंक

HolyArrs के checkout से:

Terminal window
docker build --file deploy/Dockerfile --tag holyarrs:local .

फिर इमेज के रूप में holyarrs:local इस्तेमाल करें।

समस्या सुलझाना

समस्या सुलझाना का लिंक

पहले doctor चलाएं। यह कॉन्फ़िग, फ़ोल्डर, नेटवर्क और घड़ी जाँचता है, और हर समस्या का हल बताता है।

  • कंटेनर चल रहा है: docker exec holyarrs /holyarrs doctor
  • कंटेनर बार-बार रीस्टार्ट हो रहा है: docker compose run --rm holyarrs doctor

लॉग और सपोर्ट बंडल के लिए समस्या सुलझाना देखें।

आपको दिखता है यह करें
कॉन्फ़िग फ़ोल्डर किसी शेयर किए हुए या नेटवर्क फ़ोल्डर पर है लोकल डिस्क इस्तेमाल करें, या Docker Desktop पर नाम वाला वॉल्यूम। Unraid पर /mnt/<pool>/appdata/holyarrs इस्तेमाल करें।
कॉन्फ़िग फ़ोल्डर मेमोरी में है /config को किसी डिस्क पर रखें। Unraid पर जाँचें कि pool का पाथ मौजूद है। टेस्ट मशीन के लिए HOLYARRS_CONFIG_IN_MEMORY=yes इसकी छूट देता है।
कॉन्फ़िग फ़ोल्डर में लिखा नहीं जा सकता :ro हटाएं और जाँचें कि फ़ोल्डर का मालिक PUID:PGID है।
डिस्क भर गई है जिस डिस्क पर /config है, उस पर जगह ख़ाली करें, फिर रीस्टार्ट करें।
/config मैप नहीं है नीचे देखें।
यूज़र बदला नहीं जा सकता चारों capabilities वापस जोड़ें, या user: "<uid>:<gid>" इस्तेमाल करें।
PUID/PGID इस कंटेनर के अंदर मौजूद नहीं है id मैप की गई रेंज से बाहर हैं। Rootless Docker और Podman देखें।
कोई FILE__ वेरिएबल पढ़ा नहीं जा सकता पाथ जाँचें और यह भी कि फ़ाइल माउंट है।
अनुमति नहीं मिली (Permission denied) PUID, PGID और सभी फ़ोल्डर पर लिखने की अनुमति जाँचें।
अनजान होस्ट नाम HolyArrs को IP से खोलें और नाम को Allowed host names के नीचे जोड़ें।
इंपोर्ट कॉपी हो रहे हैं एक साझा फ़ोल्डर माउंट करें। मीडिया फ़ोल्डर देखें।
मास्टर कुंजी मेल नहीं खाती वही कुंजी वापस रखें जो उन डेटाबेस की है।
रीस्टोर तैयार है पर ऐप बंद ही रहता है रीस्टार्ट पॉलिसी जोड़ें और कंटेनर शुरू करें।

/config मैप करना भूल गए?

/config मैप करना भूल गए? का लिंक

HolyArrs फिर भी शुरू होता है, पर हर जगह चेतावनी देता है। कंटेनर हटाते ही सब कुछ चला जाता है। पहले इसे बचा लें:

Terminal window
docker stop holyarrs
docker cp holyarrs:/config ./holyarrs-config

फिर ./holyarrs-config:/config (या नाम वाला वॉल्यूम) मैप करें और कंटेनर दोबारा बनाएं। Docker Desktop (Windows और Mac) पर होस्ट का फ़ोल्डर नहीं, नाम वाला वॉल्यूम इस्तेमाल करें, और डेटा को वैसे अंदर कॉपी करें जैसा Docker Desktop में दिखाया है। कोई पुराना सेटअप अब भी बिना नाम के वॉल्यूम में पड़ा हो सकता है। उनकी सूची docker volume ls से देखें।

HolyArrs मुफ़्त है। अगर इससे आपका समय बचा, तो GitHub पर स्टार दें, स्पॉन्सर करें या मुझे एक कॉफ़ी पिलाएं।