از آنجا که GitHub توسط مایکروسافت به دست آمد ، تعداد کمی از توسعه دهندگان برنامه ریزی کرده اند مخزن کد خود را از github.com به یک راه حل جایگزین خود میزبان منتقل کنند. GitLab Community Edition (CE) رایج ترین انتخاب است.
به عنوان یک راه حل پیشرفته و انعطاف پذیر ، GitLab CE می تواند با استفاده از روشهای مختلف مستقر شود ، اما فقط روش رسمی توصیه شده ، نصب بسته بندی Omnibus ، در اینجا پوشش داده خواهد شد.
پیش نیازها
	- نمونه سرور جدید Vultr Debian 9 x64 با حداقل 4 گیگابایت حافظه. 8 گیگابایت یا بیشتر برای ارائه به 100 کاربر توصیه می شود. بگویید آدرس IPv4 آن است 203.0.113.1.
- کاربران از sudo .
- دامنه gitlab.example.comای به عنوان مثال فوق الذکر شده است.
توجه:  هنگام استقرار در نمونه سرور خود ، حتماً تمام مقادیر مثال را با نمونه های واقعی جایگزین کنید.
یک ترمینال SSH را آتش بزنید و به عنوان کاربر سودو به نمونه سرور Debian 9 x64 خود وارد شوید.
یک پارتیشن مبادله اضافه کنید و تنظیم swappiness را تنظیم کنید
هنگام استقرار GitLab CE 11.x بر روی دستگاهی با حافظه 4 گیگابایتی ، لازم است برای اجرای صاف ، یک پارتیشن مبادله 4 گیگابایتی تنظیم کنید.
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1M
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile   none    swap    sw    0   0' | sudo tee -a /etc/fstab
free -m
توجه:  اگر از یک اندازه سرور متفاوت استفاده می کنید ، ممکن است اندازه پارتیشن swap متفاوت باشد.
برای اهداف عملکرد سیستم ، توصیه می شود تنظیمات swappiness هسته را با مقدار کم مانند 10:
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
cat /proc/sys/vm/swappiness
خروجی catفرمان خواهد بود 10.
نام میزبان دستگاه و نام دامنه کاملاً واجد شرایط (FQDN) را تنظیم کنید
از دستورات زیر برای تنظیم نام میزبان gitlabو FQDN gitlab.example.comبرای دستگاه استفاده کنید:
sudo hostnamectl set-hostname gitlab
sudo sed -i "1 i\203.0.113.1 gitlab.example.com gitlab" /etc/hosts
شما می توانید نتایج را تأیید کنید:
hostname
hostname -f
قوانین فایروال را تنظیم کنید
برای اجرای وب سایت قوانین فایروال معقول تنظیم کنید:
sudo iptables -F
sudo iptables -X
sudo iptables -Z
sudo iptables -A INPUT -s $(echo $(w -h ${USER}) | cut -d " " -f3) -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -d 127.0.0.0/8 -j REJECT
sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
همه تنظیمات فوق بلافاصله وارد عمل می شوند. از دستور زیر برای لیست کردن آنها برای بررسی استفاده کنید:
sudo iptables -L -n
iptable-persistentبرای ذخیره کلیه قوانین iptables موجود در پرونده /etc/iptables/rules.v4، از ابزار استفاده کرده و همه قوانین iptables را ثابت نگه دارید:
sudo apt install -y iptables-persistent
در حین نصب از شما سؤال می شود که آیا می خواهید قوانین فعلی IPv4 / IPv6 را ذخیره کنید. ENTERدو بار فشار دهید تا هر دو قوانین فعلی IPv4 و IPv6 را در /etc/iptables/rules.v4و ذخیره کنید /etc/iptables/rules.v6.
اگر بعداً می خواهید قوانین IPv4 را به روز کنید ، برای ذخیره به روزرسانی خود از موارد زیر استفاده کنید:
sudo bash -c 'iptables-save > /etc/iptables/rules.v4'
سیستم را به روز کنید
sudo apt update
sudo apt upgrade -y && sudo shutdown -r now
هنگامی که سیستم دوباره فعال و کار می کند ، دوباره به همان کاربر sudo وارد شوید تا حرکت کند.
مرحله 2: وابستگی های مورد نیاز را نصب کنید
قبل از نصب GitLab CE ، باید وابستگی های لازم را نصب کنید:
sudo apt install -y curl openssh-server ca-certificates
همچنین ، اگر می خواهید از Postfix برای ارسال پیام های اعلان استفاده کنید ، باید Postfix را نصب کنید:
sudo apt install -y postfix
در حین نصب ، یک صفحه پیکربندی ممکن است ظاهر شود:
	- مطبوعات TABبه برجسته <OK>دکمه بر روی صفحه نمایش، و سپس را فشار دهید ENTER.
- را انتخاب کنید Internet Siteو فشار دهید ENTER.
- برای این قسمت mail name، FQDN سرور خود را وارد کردهgitlab.example.comو را فشار دهید ENTER.
- اگر صفحه های دیگر ظاهر می شوند ، ENTERبرای پذیرش تنظیمات پیش فرض ، را فشار دهید .
سرویس Postfix را شروع و فعال کنید:
sudo systemctl enable postfix.service
sudo systemctl start postfix.service
قوانین فایروال را برای Postfix اصلاح کنید:
sudo iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo bash -c 'iptables-save > /etc/iptables/rules.v4'
پس از نصب Postfix ، باید ویرایش Postfix را با ویرایش فایل پیکربندی اصلی آن /etc/postfix/main.cfمطابق با تنظیمات سرور واقعی خود انجام دهید.
توجه:  علاوه بر دستورالعمل های فوق ، برای لغو بلوک پیش فرض Vultr در درگاه SMTP 25 ، باید بلیط پشتیبانی نیز ارسال کنید.
از طرف دیگر ، اگر می خواهید از یک راه حل دیگر پیام رسانی استفاده کنید ، کافی است Postfix را نصب کنید و بعد از نصب GitLab CE از سرور SMTP خارجی استفاده کنید.
مرحله 3: repo GitLab APT را تنظیم کرده و سپس GitLab CE را نصب کنید
مخزن GitLab CE APT را روی سیستم خود تنظیم کنید:
cd
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
بعد ، نصب GitLab CE 11.x:
sudo EXTERNAL_URL="http://gitlab.example.com" apt install -y gitlab-ce
نصب ممکن است مدتی طول بکشد.
در آخر ، مرورگر وب مورد علاقه خود را به http://gitlab.example.comآن اشاره کرده و پس از آن درخواست کنید که پس از اتمام نصب ، رمز ورود جدید خود را ارسال کنید.
از این پس ، برای ورود به عنوان سرپرست ، از اعتبارنامه زیر استفاده کنید:
	- نام کاربری: root
- کلمه عبور: <your-new-password>
مرحله چهارم: دسترسی به HTTPS را با ادغام گواهی نامه رمزگذاری SSL فعال کنید
در حال حاضر ، شما موفقیت آمیز GitLab CE 11.x را به عنوان نمونه سرور خود نصب کرده اید ، و کاربران می توانند از قبل با استفاده از پروتکل HTTP به سایت مراجعه کنند. برای اهداف امنیتی ، توصیه می شود با ادغام گواهی Letry Encrypt SSL ، دسترسی HTTPS به سرور GitLab خود را فعال کنید.
از viویرایشگر برای باز کردن پرونده پیکربندی GitLab CE استفاده کنید:
sudo vi /etc/gitlab/gitlab.rb
دو خط زیر را پیدا کنید:
external_url 'http://gitlab.example.com'
# letsencrypt['contact_emails'] = [] # This should be an array of email addresses to add as contacts
به ترتیب آنها را جایگزین کنید:
external_url 'https://gitlab.example.com'
letsencrypt['contact_emails'] = ['[email protected]']
ذخیره نموده و خارج شوید:
:wq!
پیکربندی مجدد GitLab CE با استفاده از تنظیمات به روز شده:
sudo gitlab-ctl reconfigure
تنظیم مجدد ممکن است مدتی طول بکشد.
پس از انجام تنظیم مجدد ، کلیه کاربران هنگام دسترسی به سایت GitLab مجبور خواهند شد از پروتکل HTTPS استفاده کنند.
توجه:  پس از جابجایی از HTTP به HTTPS ، کوکی های قدیمی می توانند خطای GitLab 422 ایجاد کنند. پاک کردن کوکی ها این مشکل را برطرف می کند.