FreeBSD + fcgiwrap + cgit के साथ एक Git वेब फ्रंटएंड और Git सर्वर स्थापित करना
नमस्ते, मैं मुनो हूँ।
कुछ समय पहले तक, मैं GItea का उपयोग करके निर्माण कर रहा था, लेकिन यह बहुत समृद्ध था और अनावश्यक सर्वर संसाधनों का उपभोग कर रहा था, इसलिए मैं इस बिंदु को सुधारना चाहता था।
इसके अलावा, मैं जितना संभव हो सके CLI से मूल रिपॉजिटरी बनाना चाहता था, और GitHub में gh कमांड भी है, लेकिन मैं ऐसे प्लेटफ़ॉर्म-निर्भर कमांड को व्यक्तिगत रूप से नहीं अपनाना चाहता था, इसलिए मैंने इसे पेश नहीं किया।
ऐसा इसलिए है क्योंकि प्लेटफ़ॉर्म-निर्भर बाइनरीज़ निम्न-स्तरीय सीखने के लिए बहुत कुछ प्रदान नहीं करती हैं।
इसलिए, मैंने git के लिए एक अलग वेब फ्रंटएंड के रूप में cgit को अपनाया, और git को SSH के माध्यम से एक दूरस्थ स्थान पर संग्रहीत करके, मैं अपनी इच्छानुसार सेटअप करने में सक्षम था।
Git को पुश करने योग्य बनाना
संक्षेप में, यह केवल Git सर्वर पर एक बेयर रिपॉजिटरी बनाने और उसमें push करने में सक्षम होने के बारे में है।
यह माना जाता है कि आप पहले से ही SSH के माध्यम से रिमोट गंतव्य तक SSH कर सकते हैं, इस मामले में Git सर्वर।
Git उपयोगकर्ता बनाना
FreeBSD के मामले में, आप "adduser" कमांड का उपयोग करके इंटरैक्टिव रूप से एक उपयोगकर्ता बना सकते हैं।
adduser
यहां बनाए गए git उपयोगकर्ता पर स्विच करें, और क्लाइंट की सार्वजनिक कुंजी को .ssh/authorized_keys में जोड़ें।
su - git
mkdir .ssh
chmod 700 .ssh
vim .ssh/authorized_keys
# या
echo "क्लाइंट की सार्वजनिक कुंजी" > ".ssh/authorized_keys"
chmod 600 .ssh/authorized_keys
पुष्टि करें कि आप अब ssh कर सकते हैं।
इसके अतिरिक्त, इस Git उपयोगकर्ता की होम निर्देशिका के तहत रिपॉजिटरी को संग्रहीत करने के लिए एक निर्देशिका बनाएं।
mkdir repos
और फिर, git config के साथ डिफ़ॉल्ट शाखा सेट करें।
git config --global init.defaultBranch main
क्लाइंट साइड से सर्वर साइड पर रिपॉजिटरी बनाने में सक्षम होना
जैसा कि यह है, आपको हर बार Git सर्वर में लॉग इन करना होगा, एक रिपॉजिटरी बनाना होगा, और फिर क्लाइंट साइड से git push करना होगा, जो बहुत बोझिल है, इसलिए हम क्लाइंट साइड से कार्यों की एक श्रृंखला करने में सक्षम होंगे।
मैंने निम्नलिखित को .bashrc में जोड़ा।
mkr() {
ssh git@bsd "git init --bare repos/$1.git"
ssh git@bsd "cd repos/$1.git; git branch -m main"
echo "remote add origin git@bsd:~/repos/$1.git"
}
अब आप क्लाइंट साइड पर दिए गए रिपॉजिटरी नाम से रिपॉजिटरी बना सकते हैं।
अंत में, रिमोट URL को निष्पादित करने वाले कमांड को मानक आउटपुट पर प्रिंट करके, आप आसानी से रिमोट URL सेट कर सकते हैं।
cgit स्थापित करना
cgit का उपयोग करने के लिए cgi की आवश्यकता होती है, इसलिए आवश्यक पैकेज स्थापित करें। यह माना जाता है कि Nginx पहले से ही स्थापित है।
pkg install cgit fcgiwrap
Nginx को UNIX सॉकेट के माध्यम से www:www उपयोगकर्ता और समूह अनुमतियों के साथ एक्सेस करने में सक्षम होना चाहिए, और सेवा को सक्षम किया जाना चाहिए।
sysrc fcgiwrap_enable=YES
sysrc fcgiwrap_user=www
sysrc fcgiwrap_group=www
sysrc fcgiwrap_socket_owner=www
sysrc fcgiwrap_socket_group=www
service fcgiwrap start
cgit कॉन्फ़िगरेशन
आपको cgit को कॉन्फ़िगर करने की आवश्यकता है।
इस बार, मैंने इसे डिफ़ॉल्ट से थोड़ा अनुकूलित किया है, इसलिए यह इस तरह दिखता है।
$ cat /usr/local/etc/cgitrc
root-title=Git
root-desc=public repositories
virtual-root=/
scan-path=/home/git/repos/
css=/style.css
logo=/top.png
head-include=/usr/local/www/cgit/head.html
readme=:README.md
readme=:README.rst
enable-commit-graph=1
वितरित की जाने वाली फाइलें पैकेज स्थापित होने के समय /usr/local/www/cgit/ के तहत बनाई गई थीं।
Nginx कॉन्फ़िगरेशन
अब, यहाँ Nginx है।
server {
if ($host = git.soulminingrig.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name git.soulminingrig.com;
listen 80;
}
server {
server_name git.soulminingrig.com;
listen 443 ssl;
root /usr/local/www/cgit;
location / {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/local/www/cgit/cgit.cgi;
fastcgi_param PATH_INFO $uri;
fastcgi_param QUERY_STRING $query_string;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
}
location ~* \.(css|png|ico)$ {
root /usr/local/www/cgit;
}
ssl_certificate /usr/local/etc/letsencrypt/live/git.soulminingrig.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /usr/local/etc/letsencrypt/live/git.soulminingrig.com/privkey.pem; # managed by Certbot
}
उपरोक्त conf फ़ाइल बनाने के बाद, nginx -t के साथ सिंटैक्स जांचें और फिर पुनरारंभ करें।
nginx -t
service nginx restart
वैसे, मैंने पहले ही certbot के साथ प्रमाणपत्र प्राप्त कर लिया था।
certbot --nginx -d git.soulminingrig.com
अब यह सुलभ है।
निष्कर्ष
इसके साथ, मैंने एक बहुत ही हल्का Git वेब फ्रंटएंड बनाने में कामयाबी हासिल की।
मैं काफी संतुष्ट हूँ क्योंकि इसे बहुत कम संसाधनों के साथ बनाया जा सकता है।
फिर मिलते हैं। धन्यवाद।