अपना Git: Forgejo या Gitea
वेब इंटरफ़ेस, SSH एक्सेस और बिल्ड रन के साथ अपना रिपॉज़िटरी सर्वर कैसे सेट करें — और कोड न खोने के लिए क्या कॉपी करें।
23 अगस्त 2026 को अपडेट किया गया
आपको अपना Git तब चाहिए जब कोड किसी और के प्लेटफ़ॉर्म पर न जाए, या जब आप प्राइवेट रिपॉज़िटरी और बिल्ड मिनट्स पर कोई सीमा नहीं चाहते। Forgejo और Gitea दो बहुत करीबी प्रोजेक्ट हैं (Forgejo, Gitea से ही निकला है); दोनों एक ही कंटेनर में इंस्टॉल हो जाते हैं और एक साधारण मशीन पर चलते हैं।
क्या चुनें और कितने रिसोर्स
रोज़ के काम में लगभग कोई फ़र्क नहीं है: इंटरफ़ेस, issues, pull requests, mirrors, बिल्ड के लिए Actions। Forgejo एक कम्युनिटी बनाती है, Gitea एक कंपनी। अगर आपके लिए प्रोजेक्ट की आज़ादी मायने रखती है, तो Forgejo चुनें।
दो-तीन लोगों के लिए VDS-1 काफ़ी है। जैसे ही आप बिल्ड के लिए runner जोड़ते हैं, VDS-3 या उससे ऊपर लें: बिल्ड CPU और डिस्क खा जाते हैं, और डिस्क की स्पीड टियर से सीमित होती है।
Compose से इंस्टॉल करना
services:
forgejo:
image: codeberg.org/forgejo/forgejo:11
container_name: forgejo
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
ports:
- "3000:3000"
- "2222:22"
docker compose up -d
docker compose logs -f forgejo
http://<machine-address>:3000 खोलें और शुरुआती सेटअप पूरा करें। पहला बनाया गया यूज़र एडमिनिस्ट्रेटर बन जाता है।
पोर्ट 3000 को बाहर के लिए खुला रखने की ज़रूरत नहीं है। इसे बंद करें और सर्विस के आगे सर्टिफ़िकेट वाला वेब सर्वर लगाएँ — इस तरह आपको HTTPS मिलेगा और सेटअप पैनल बाहरी लोगों को नहीं दिखेगा। जब तक सेटअप पूरा नहीं होता, जो भी पता खोलता है वह पहले एडमिनिस्ट्रेटर बना सकता है।
SSH एक्सेस
कंटेनर के अंदर पोर्ट 22 को 2222 पर फ़ॉरवर्ड किया गया है, क्योंकि 22 सिस्टम SSH ने ले रखा है। रिपॉज़िटरी सेटिंग्स में पता ऐसा दिखेगा:
git clone ssh://git@example.com:2222/user/repo.git
अगर आप बिना पोर्ट के आम git@example.com:user/repo.git चाहते हैं, तो 2222 कंटेनर के लिए छोड़ें और होस्ट पर सिस्टम SSH के ज़रिए फ़ॉरवर्डिंग सेट करें, या एडमिनिस्ट्रेटिव SSH को किसी दूसरे पोर्ट पर शिफ़्ट करें (एक्सेस की सुरक्षा देखें)।
बिल्ड
Actions एक अलग runner चलाता है — forgejo-runner कंटेनर, जो एडमिनिस्ट्रेटर सेटिंग्स के टोकन से रजिस्टर होता है। इसे Docker socket का एक्सेस सोच-समझकर ही दें: यह मशीन पर root के बराबर है। बिल्ड के लिए runner को मेमोरी और CPU से सीमित करना बेहतर है — रिसोर्स लिमिट्स देखें।
किसका बैकअप लें
सारा स्टेट ./data वॉल्यूम में रहता है: रिपॉज़िटरी, डेटाबेस, अटैचमेंट, कॉन्फ़िगरेशन। बैकअप ऐसे बनाया जाता है:
docker compose stop forgejo
restic -r <repository> backup ./data
docker compose start forgejo
अगर सर्विस SQLite इस्तेमाल करती है तो उसे रोकना पड़ेगा — वरना डेटाबेस स्नैपशॉट असंगत हो सकता है। PostgreSQL के साथ बिना रोके pg_dump काफ़ी है। ज़्यादा जानकारी के लिए ठीक-ठीक किसका बैकअप लें और Restic देखें।
आम गलतियाँ
- रिपॉज़िटरी के साइज़ को भूल जाना। गेम सर्वर के बिल्ड और मीडिया जल्दी ही डिस्क भर देते हैं: एंट्री टियर के 40 GB चुपचाप खत्म हो जाते हैं।
- ईमेल सेट न करना। इसके बिना इनविटेशन और पासवर्ड रीसेट काम नहीं करते। अपना मेल सर्वर सेट करने से बाहरी SMTP जोड़ना आसान है।
- बैकअप के बिना अपडेट करना। मेजर वर्ज़न बदलने पर डेटाबेस स्कीमा बदल जाता है। पहले बैकअप, फिर
docker compose pull— कंटेनर अपडेट करना देखें।