यह मार्गदर्शिका उबंटू 16.04 पर चलने वाले वल्चर उदाहरण के लिए GitBucket की मूल स्थापना और सेटअप को कवर करती है, और मानती है कि आप एक non-rootउपयोगकर्ता के रूप में कमांड निष्पादित कर रहे हैं ।
आवश्यक शर्तें
	- के साथ एक Vultr सर्वर उदाहरण कम से कम राम के 1GB (छोटे उदाहरणों काम कर सकते हैं, हालांकि धीरे)।
- openjdk-8-jreआवश्यक, पुराने संस्करण काम नहीं करेंगे।
- wgetGitBucket पैकेज डाउनलोड करने के लिए उपयोग किया जाता है।
- nginxवैकल्पिक, GitBucket को एक रिवर्स प्रॉक्सी प्रदान करता है
- systemdGitBucket प्रक्रिया को शुरू करने और रोकने का प्रबंधन करता है
पूर्वापेक्षाएँ स्थापित करना
GitBucket को आपके सर्वर पर इंस्टॉल होने के लिए Java 8 या नए की आवश्यकता होती है। यदि आपने पहले ही जावा 8 स्थापित नहीं किया है, तो पहले अपनी स्थानीय पैकेज सूचियों को अपडेट करें।
sudo apt update
फिर जावा 8 रनटाइम पैकेज स्थापित करें।
sudo apt install openjdk-8-jre
GitBucket इंस्टॉल करना
एक अप्रकाशित उपयोगकर्ता बनाना
आगे जाने से पहले GitBucket को चलाने के लिए हमें एक अनपेक्षित उपयोगकर्ता बनाने की आवश्यकता होगी। एक बिना लाइसेंस वाले उपयोगकर्ता के तहत GitBucket को चलाना हमारे इंस्टॉलेशन को अपने डेटा डायरेक्टरी के बाहर लिखने से रोकता है, आपके सर्वर की सुरक्षा को मजबूत करता है। नामक सिस्टम उपयोगकर्ता बनाने के लिए निम्नलिखित कमांड चलाएँ gitbucket।
sudo adduser --system gitbucket
क्योंकि हमने एक सिस्टम उपयोगकर्ता बनाया है , डिफ़ॉल्ट शेल है /bin/false, और जब तक हम एक अतिरिक्त शेल तर्क नहीं देते हैं, तब तक हम अपने वर्तमान शेल पर वापस किक मार जाएंगे su। नए बनाए गए यूजर को लॉगइन करें।
sudo su - gitbucket -s /bin/bash
आपके शेल का संकेत बदल जाना चाहिए, और आपको नए सिस्टम उपयोगकर्ता में लॉग इन किया जाएगा।
GitBucket को डाउनलोड / अपडेट करना
GitBucket रिलीज़ पृष्ठ पर नेविगेट करें और नवीनतम उपलब्ध संस्करण का पता लगाएं। gitbucket.warपैकेज के लिए URL कॉपी करें , सत्यापित करें कि आप नए उपयोगकर्ता के होम डायरेक्टरी में हैं, और इसे डाउनलोड करें wget।
cd ~/
wget https://github.com/gitbucket/gitbucket/releases/download/4.18.0/gitbucket.war
GitBucket पैकेज को अपडेट करने के लिए आपको हर बार इस चरण को दोहराना होगा।
प्रारंभिक GitBucket कॉन्फ़िगरेशन
पैकेज डाउनलोड हो जाने के बाद, हमें कुछ प्रारंभिक कॉन्फ़िगरेशन करने के लिए मैन्युअल रूप से GitBucket शुरू करना होगा।
java -jar gitbucket.war --port 8080
यदि पोर्ट 8080पहले से ही किसी अन्य प्रक्रिया द्वारा लिया गया है, तो आप पोर्ट को बदल सकते हैं GitBucket अब सुनेगा। यह गाइड भर में मानता है कि GitBucket बंदरगाह पर सुन रहा है8080 ।
यह आपके सर्वर के सार्वजनिक नेटवर्क इंटरफेस पर GitBucket शुरू करेगा, जो निर्दिष्ट पोर्ट पर सुन रहा है। आपको कुछ पलों बाद, निम्न संदेश देखना चाहिए।
INFO:oejs.Server:main: Started @15891ms
यदि आप वल्चर के फ़ायरवॉल का उपयोग कर रहे हैं , तो आपको पोर्ट को खोलने की आवश्यकता होगी GitBucket पर सुन रहा है, क्योंकि Vultr का फ़ायरवॉल एक श्वेत-सूची के रूप में काम करता है, पोर्ट को अनुमति देने के लिए ट्रैफ़िक को अस्वीकार करता है जब तक कि अन्यथा निर्दिष्ट न हो।
आपकी GitBucket स्थापना अब इंटरनेट से ऑनलाइन और सुलभ होनी चाहिए। एक वेब ब्राउज़र का उपयोग करते हुए, अपने सर्वर के सार्वजनिक पते से कनेक्ट करें (पोर्ट GitBucket को निर्दिष्ट करना सुनिश्चित करें ) (यानी http://203.0.113.0:8080या http://example.com:8080) पर चल रहा है , और आप GitBucket के होमपेज पर उतरेंगे।
हालाँकि, डिफ़ॉल्ट व्यवस्थापक खाते का पासवर्ड बदलना होगा। ऐसा करने के लिए, Sign inवेब इंटरफ़ेस के शीर्ष-दाएं बटन के माध्यम से व्यवस्थापक खाते में लॉगिन करें। व्यवस्थापक खाते के लिए डिफ़ॉल्ट लॉगिन rootउपयोगकर्ता नाम के लिए है, और फिर rootपासवर्ड के लिए फिर से। लॉग इन होते ही बटन को प्रोफाइल आइकन और ड्रॉप-डाउन से बदल दिया जाएगा। ड्रॉप-डाउन का विस्तार करें और चुनें Account Settings, फिर खाता सेटिंग विज़ार्ड में एक नया, अधिक सुरक्षित पासवर्ड सेट करें ।
डिफ़ॉल्ट व्यवस्थापक खाते के क्रेडेंशियल्स को अपडेट करने और सत्यापित करने के बाद कि GitBucket इस न्यूनतम कॉन्फ़िगरेशन में शुरू होता है, जावा प्रक्रिया को " CTRL+C" के साथ मारें और वर्तमान शेल को बंद करें exit।
Systemd सेवा बनाना
वर्तमान में, हम केवल SSH के माध्यम से अपने सर्वर तक पहुँच और मैन्युअल रूप से एक शेल से प्रक्रिया शुरू करके GitBucket चला सकते हैं। सौभाग्य से, उबंटू के Systemdसाथ प्रीपैक्ड हो जाता है , जिससे हमें एक सेवा बनाने की अनुमति मिलती है जिसके साथ सिस्टम द्वारा GitBucket ऑटो-स्टार्ट और रखरखाव किया जाएगा।
का उपयोग करके nano, /etc/systemd/systemनिर्देशिका में एक नई इकाई फ़ाइल बनाएँ ।
sudo nano /etc/systemd/system/gitbucket.service
उसके बाद, फ़ाइल में निम्न सामग्री की प्रतिलिपि बनाएँ।
[Unit]
Description=GitBucket
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080
ExecStop=/bin/kill -SIGINT $MAINPID
Type=simple
User=gitbucket
[Install]
WantedBy=multi-user.target
यह यूनिट फ़ाइल GitBucket के लिए बुनियादी स्टार्टअप और शटडाउन व्यवहार को परिभाषित करती है, और स्थानीय-केवल नेटवर्क इंटरफ़ेस पर हमारे अनपेक्षित सिस्टम उपयोगकर्ता के तहत सेवा चलाती है।
यदि आपने पोर्ट नंबर बदल दिया है तो GitBucket कमांड को सुनेगा, कमांड के --portलिए तर्क को बदलें ExecStart।
CTRL+Oनई इकाई फ़ाइल को (" ") सहेजें और फिर संपादक (" CTRL+X") से बाहर निकलें । खोज की जाने वाली नई इकाई फ़ाइल के लिए आपको Systemd को पुनः लोड करना होगा।
sudo systemctl daemon-reload
Systemd के पुनः लोड होने के बाद, सत्यापित करें कि नई इकाई की खोज की गई थी और उसे लोड किया गया था।
sudo systemctl status gitbucket
आपको निम्न आउटपुट देखना चाहिए।
gitbucket.service - GitBucket
   Loaded: loaded (/etc/systemd/system/gitbucket.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
अंत में, अपने सर्वर के बूट होने पर नई इकाई को स्वचालित रूप से शुरू करने में सक्षम करें, और फिर पहली बार सेवा शुरू करें।
sudo systemctl enable gitbucket
sudo systemctl start gitbucket
एक बार सेवा शुरू हो जाने के बाद, आप फिर से आईपी पते और पोर्ट नंबर का उपयोग करके अपने ब्राउज़र से GitBucket तक पहुंच सकेंगे।
Nginx रिवर्स प्रॉक्सी कॉन्फ़िगर करना
जबकि एक पोर्ट के माध्यम से सीधे GitBucket को बेनकाब 8080कर सकता है, आप प्रदर्शन में सुधार कर सकते हैं और HTTP / 2, TLS एन्क्रिप्शन, और Nginx के माध्यम से GitBucket को उजागर करके कैशिंग नियमों को कॉन्फ़िगर कर सकते हैं।
प्रारंभिक नेगनेक्स सेटअप
यदि आपने पहले से ही Nginx स्थापित नहीं किया है, तो अपनी पैकेज सूचियों को अपडेट करें।
sudo apt update
फिर Nginx पैकेज स्थापित करें। 
sudo apt install nginx
एक बार Nginx इंस्टॉल हो जाने के बाद, सत्यापित करें कि आप पोर्ट नंबर (यानी या ) के बिना अपने सर्वर के आईपी पते के माध्यम से वेब सर्वर तक पहुंचने में सक्षम हैं । यदि सफल हुआ, तो आपको उबंटू के लिए डिफ़ॉल्ट नग्नेक्स लैंडिंग पृष्ठ दिखाई देगा।http://203.0.113.0http://example.com
रिवर्स प्रॉक्सी बनाना
हम डिफ़ॉल्ट साइट कॉन्फ़िगरेशन /etc/nginx/sites-availableको रिवर्स प्रॉक्सी के लिए शुरुआती बिंदु के रूप में कॉपी करेंगे।
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/gitbucket
के साथ नव निर्मित कॉन्फ़िगरेशन फ़ाइल खोलें nano।
sudo nano /etc/nginx/sites-available/gitbucket
location /लाइन 43 पर मौजूदा ब्लॉक का पता लगाएँ ।
location / {
  # First attempt to serve request as file, then
  # as directory, then fall back to displaying a 404.
  try_files $uri $uri/ =404;
}
वर्तमान में, Nginx /var/www/htmlआने वाली HTTPअनुरोधों से मेल खाने वाली फ़ाइलों को वापस करने का प्रयास करेगा । हमें इस ब्लॉक में एक रिवर्स प्रॉक्सी कॉन्फ़िगर करके इस व्यवहार को बदलने की आवश्यकता होगी, जो हमारे Nginx सर्वर पर किए गए सभी HTTP अनुरोधों को GitBucket इंस्टेंस के बजाय भेजेगा। location /निम्नलिखित से मिलान करने के लिए ब्लॉक को अपडेट करें ।
location / {
    proxy_pass              http://localhost:8080; # The address GitBucket is listening on
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout   150;
    proxy_send_timeout      100;
    proxy_read_timeout      100;
    proxy_buffers           4 32k;
    client_max_body_size    512m; # Needed for large Git operations over HTTP
    client_body_buffer_size 128k;
}
यदि आपने पोर्ट नंबर को बदल दिया है जो GitBucket पर सुनेगा, तो proxy_passइसे प्रतिबिंबित करने के लिए विकल्प को अपडेट करें।
हमारे नए कॉन्फ़िगरेशन को सक्षम करने के लिए, आपको मौजूदा डिफ़ॉल्ट कॉन्फ़िगरेशन को अक्षम करना होगा /etc/nginx/sites-enabled, फिर /etc/nginx/sites-enabledनिम्न के माध्यम से हमारे नए कॉन्फ़िगरेशन को सिमिलिंक करना होगा ।
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/gitbucket
एक बार कॉन्फ़िगरेशन फ़ाइल सक्षम हो जाने के बाद, किसी भी सिंटैक्स त्रुटियों की जाँच करें।
sudo nginx -t
फिर, हमारे नए साइट कॉन्फ़िगरेशन को सक्षम करने के लिए Nginx सर्वर को पुनरारंभ करें।
sudo systemctl restart nginx
अब आपको पोर्ट नंबर के बिना अपने सर्वर के सार्वजनिक पते पर अपने GitBucket इंस्टॉलेशन तक पहुंचने में सक्षम होना चाहिए ।
सार्वजनिक इंटरनेट से GitBucket प्रक्रिया को सुरक्षित करना
वर्तमान में, हमारे GitBucket उदाहरण हमारे सर्वर के सार्वजनिक नेटवर्क इंटरफ़ेस पर सुन रहे हैं । यह उपयोगकर्ताओं को उस पते को जोड़कर नगनेक्स प्रॉक्सी को बायपास करने की अनुमति देगा जो वर्तमान में GitBucket पर सुन रहा है, जो संभवतः अवांछित है। हमें इसे हल करने के लिए पहले बनाई गई इकाई फ़ाइल को संशोधित करना होगा। के साथ यूनिट फ़ाइल खोलें nano।
sudo nano /etc/systemd/system/gitbucket.service
संलग्न --host 127.0.0.1करने के लिए ExecStartआदेश है, इसलिए पसंद है।
...
ExecStart=/usr/bin/java -jar /home/gitbucket/gitbucket.war --port 8080 --host 127.0.0.1
...
यह GitBucket को केवल हमारे सर्वर के स्थानीय नेटवर्क इंटरफ़ेस पर कनेक्शन स्वीकार करने का कारण बनेगा। एक बार फिर, CTRL+Oफ़ाइल (" CTRL+X") को सहेजें, संपादक (" ") को बंद करें , Systemd को पुनः लोड करें और हमारी GitBucker यूनिट को फिर से शुरू करें।
sudo systemctl daemon-reload
sudo systemctl restart gitbucket
यदि आप Vultr के फ़ायरवॉल का उपयोग कर रहे हैं, तो आपको प्रारंभिक सेटअप के दौरान GitBucket सर्वर तक पहुंचने के लिए आपके द्वारा जोड़े गए किसी भी पोर्ट नियम को भी हटा देना चाहिए।