گیت لب یک برنامه منبع باز است که در ابتدا برای میزبانی مخازن گیت با قابلیتهای اضافی مانند ردیابی مشکل استفاده میشد. این برنامه بهگونهای طراحی شده است که با استفاده از زیرساخت خود میزبانی شود و انعطافپذیری در استقرار را به عنوان یک مخزن داخلی برای تیم توسعه شما فراهم کند. گیت لب میتواند به عنوان یک راه عمومی برای ارتباط با کاربران یا وسیله ای برای مشارکتکنندگان به منظور میزبانی پروژههای خود مورد استفاده قرار بگیرد.
با نصب گیت لب بر روی سرور مجازی لینوکس، این امکان را پیدا میکنید تا با مکانیسم نصب و راهاندازی حداقلی بتوانید یک نمونه گیت لب را بر روی سختافزار خود ایجاد کنید. این راهنما، چگونگی نصب گیت لب روی اوبونتو را آموزش میدهد.
پیش نیازها
اگر از اوبونتو نسخه 16.04 یا پایینتر استفاده میکنید، پیشنهاد میکنیم که آن را به آخرین نسخه ارتقا دهید زیرا اوبونتو دیگر از نسخههای قبلی پشتیبانی نمیکند.
پیشنیازهای لازم برای دنبال کردن این آموزش عبارتند از:
- خرید vps یا هر سرور مجازی ارزان که اوبونتو را اجرا میکند، به همراه یک کاربر غیر روت با امتیازات sudo و فایروال فعال.
در الزامات سختافزاری منتشر شده برای گیت لب توصیه شده است که از سروری با حداقل منابع زیر استفاده کنید:
- یک پردازنده با 4 هسته
- 4 گیگابایت رم برای حافظه
اگرچه ممکن است با جایگزین کردن مقداری از فضای swap برای رم به عملکرد مناسب دست یابید، اما این کار توصیه نمیشود. نمونههای زیر در این راهنما از حداقل منابع اشاره شده استفاده میکند.
- یک نام دامنه که به سرور شما اشاره میکند. در این آموزش به عنوان مثال از your_domain استفاده میکنیم، اما مطمئن شوید که نام دامنه خود را با آن جایگزین کنید.
مرحله 1) نصب Dependencies
قبل از نصب گیت لب، مهم است که نرمافزاری را که در حین نصب و بهصورت مرتب از آن استفاده میشود را نصب کنید. نرمافزار موردنیاز را میتوان از مخازن پکیج پیشفرض اوبونتو نصب کرد.
ابتدا، Index پکیج محلی خود را بازخوانی کنید:
$ sudo apt update
سپس با وارد کردن این دستور وابستگیها را نصب کنید:
$ sudo apt install ca-certificates curl openssh-server postfix tzdata perl
احتمال دارد که برخی از این نرمافزارها را قبلا نصب کرده باشید. برای نصب postfix، وقتی از شما خواسته شد، Internet Site را انتخاب کنید. در صفحه بعد، نام دامنه سرور خود را برای پیکربندی نحوه ارسال ایمیل توسط سیستم وارد کنید.
اکنون که وابستگیها را نصب کردید، آماده نصب گیت لب هستید.
مرحله 2) نصب گیت لب
با وابستگیهای موجود، میتوانید نصب گیت لب را با موفقیت انجام دهید. این فرایند از یک اسکریپت نصب برای پیکربندی سیستم شما با مخازن گیت لب استفاده میکند.
ابتدا، وارد دایرکتوری /tmp شوید:
$ cd /tmp
سپس، اسکریپت نصب را دانلود کنید:
$ curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
اسکریپت دانلود شده را بررسی کنید تا مطمئن شوید که با اقداماتی که قرار است انجام دهد مشکلی ندارید. همچنین، شما میتوانید یک نسخه میزبانیشده از اسکریپت را در دستورالعملهای نصب گیت لب بیابید:
$ less /tmp/script.deb.sh
زمانی که از ایمن بودن اسکریپت مطمئن شدید، نصبکننده را اجرا کنید:
$ sudo bash /tmp/script.deb.sh
اسکریپت سرور شما را برای استفاده از مخازن نگهداریشده گیت لب تنظیم میکند. این امر به شما امکان میدهد تا گیت لب خود را با استفاده از همان ابزارهای مدیریت پکیج که برای سایر پکیجهای سیستم استفاده میکنید، مدیریت کنید. پس از تکمیل، میتوانید برنامه گیت لب را با apt نصب کنید:
$ sudo apt install gitlab-ce
با این کار اجزای لازم بر روی سیستم شما نصب میشود و ممکن است تکمیل آن مدتی طول بکشد.
مرحله 3) تنظیم قوانین فایروال
قبل از پیکربندی گیت لب، باید مطمئن شوید که قوانین فایروال شما به اندازه کافی اجازه عبور ترافیک وب را میدهد.
با اجرای دستور زیر وضعیت فعلی فایروال فعال خود را مشاهده خواهید کرد:
$ sudo ufw status Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
قوانین فعلی به ترافیک SSH اجازه عبور میدهند، اما دسترسی به سایر خدمات محدود شده است. از آنجایی که گیت لب یک برنامه تحت وب است، شما باید اجازه دسترسی HTTP را بدهید. همچنین با توجه به اینکه ممکن است شما از قابلیتهای گیت لب برای درخواست و فعال کردن گواهی TLS/SSL استفاده کنید، اجازه دسترسی به HTTPS را بدهید.
پروتکل نگاشت پورت برای HTTP و HTTPS در فایل /etc/services موجود است، بنابراین میتوانید به آن ترافیک براساس نام اجازه دهید. اگر از قبل ترافیک OpenSSH را فعال نکردهاید، باید به آن ترافیک اجازه دسترسی بدهید:
$ sudo ufw allow http $ sudo ufw allow https $ sudo ufw allow OpenSSH
میتوانید مجددا وضعیت ufw را بررسی کنید تا مطمئن شوید که حداقل به این دو سرویس دسترسی دارید:
$ sudo ufw status Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
این خروجی نشان میدهد که رابط وب گیت لب پس از پیکربندی برنامه قابل دسترس است.
مرحله 4) ویرایش و پیکربندی فایل گیت لب
قبل از اینکه بتوانید از برنامه استفاده کنید، فایل پیکربندی را بهروزرسانی کرده و یک دستور پیکربندی را مجددا اجرا کنید. ابتدا، فایل پیکربندی گیت لب را با ویرایشگر دلخواه خود باز کنید. در این مثال از nano استفاده شده است:
$ sudo nano /etc/gitlab/gitlab.rb
خط پیکربندی external_url را جستوجو کنید. برای مطابقت با دامنه خود، آن را بهروزرسانی کنید و مطمئن شوید که http را به https تغییر دادهاید تا بهطور خودکار کاربران را به سایت محافظتشده از طریق گواهی TLS/SSL هدایت کنید:
... ## GitLab URL ##! URL on which GitLab will be reachable. ##! For more details on configuring external_url see: ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab ##! ##! Note: During installation/upgrades, the value of the environment variable ##! EXTERNAL_URL will be used to populate/replace this value. ##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP ##! address from AWS. For more details, see: ##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html external_url 'https://your_domain' ...
سپس، تنظیمات مربوط به contact_emails گواهی TLS/SSL را پیدا کنید. ما در این مثال از گواهی SSL رایگان سایت Let’s Encrypt استفاده کردیم، بنابراین باید به دنبال letsencrypt[‘contact_emails’] باشیم. اگر از برنامه nano استفاده میکنید با فشردن کلیدهای CTRL+W میتوانید search prompt را فعال کنید.
letsencrypt[‘contact_emails’] را در خط فرمان بنویسید، سپس کلید ENTER را فشار دهید. این دستور فهرستی از آدرسهای ایمیل را تعریف میکند که پروژه Let’s Encrypt میتواند برای تماس با شما در صورت وجود مشکل در دامنه از آنها استفاده کند. پیشنهاد میشود آن را برای هر مشکلی که ممکن است رخ دهد uncomment کنید و خودتان آن را پر کنید:
letsencrypt['contact_emails'] = ['sammy@example.com']
پس از انجام تغییرات، فایل را ذخیره کنید و آن را ببندید. اگر از برنامه nano استفاده میکنید، میتوانید این کار را با فشردن دکمههای CTRL+X، سپس Y و بعد از آن ENTER انجام دهید.
دستور زیر را برای پیکربندی گیت لب اجرا کنید:
$sudo gitlab-ctl reconfigure
این دستور، گیت لب را با استفاده از اطلاعاتی که میتواند درباره سرور شما بیابد، مقداردهی اولیه میکند. این فرایند بهصورت کاملا خودکار انجام میشود و نیازی نیست تا به هیچ درخواستی پاسخ بدهید. این فرایند همچنین، گواهی Let’s Encrypt را برای دامنه شما پیکربندی میکند.
مرحله 5) انجام پیکربندی اولیه از طریق رابط وب
با اجرای گیت لب، میتوانید یک پیکربندی اولیه برنامه را از طریق رابط وب انجام دهید.
وارد شدن برای اولین بار
از نام دامنه سرور گیت لب خود در مرورگر وب خود دیدن کنید:
https://your_domain
در اولین بازدید خود، با یک صفحه ورود مواجه خواهید شد:

گیت لب یک رمزعبور اولیه امن برای شما ایجاد میکند. این رمز در پوشهای ذخیره میشود که شما به عنوان کاربر ادمین sudo میتوانید به آن دسترسی داشته باشید:
$ sudo nano /etc/gitlab/initial_root_password # WARNING: This value is valid only in the following conditions # 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the firs$ # 2. Password hasn't been changed manually, either via UI or via command line. # # If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password. Password: YOUR_PASSWORD # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
در صفحه ورود به سیستم، موارد زیر را وارد کنید:
- Username: root
- Password: [گذرواژه لیست شده در /etc/gitlab/initial_root_password]
این مقادیر را در فیلدهای مربوطه وارد کرده و بر روی دکمه Sign in کلیک کنید. شما به برنامه وارد میشود و به صفحه لندینگی هدایت میشود که از شما میخواهد پروژهها را اضافه کنید:

اکنون میتوانید نمونه گیت لب خود را به خوبی تنظیم کنید.
بهروزرسانی رمزعبور خودتان
یکی از اولین کارهایی که پس از ورود باید انجام دهید، تنظیم رمزعبور است. برای انجام این تغییر، بر روی آیکون موجود در گوشه سمت راست بالای نوار پیمایش کلیک کرده و Edit Profile را انتخاب کنید:

سپس وارد صفحه User Settings شوید. در نوار ناوبری سمت چپ، Password را انتخاب کنید تا رمزعبور گیت لب ایجاد شده خود را به یک رمزعبور ایمن تغییر دهید، سپس، وقتی کار بهروزرسانی شما تمام شد، بر روی Save کلیک کنید:

با دریافت اعلانی در صفحه Login مبنی بر اینکه رمزعبور شما تغییر یافته است به صفحه لاگین بازگردانده میشوید. رمزعبور جدید خود را برای ورود مجدد به نمونه گیت لب وارد کنید:

تنظیمات پروفایل خودتان
گیت لب پیشفرضهای معقولی را انتخاب میکند، اما پس از شروع استفاده از نرمافزار، معمولا این موارد مناسب نیستند.
برای انجام تغییرات لازم، بر روی آیکون کاربر در سمت راست نوار ناوبری کلیک کنید و Edit Profile را انتخاب کنید.
میتوانید Name و آدرس Email را به ترتیب از Administrator و admin@example.com به موارد دلخواه خود تغییر دهید. نامی را که انتخاب میکنید به سایر کاربران نیز نمایش داده میشود، درحالیکه از ایمیل برای تشخیص آواتار پیشفرض، اعلانها، اکشنهای گیت از طریق رابط و موارد دیگر استفاده میشود:

وقتی بهروزرسانی پروفایل خودتان را به پایان رساندید، بر روی دکمه Update Profile در پایین کلیک کنید. از شما خواسته میشود تا رمزعبور خود را برای تایید تغییرات وارد کنید.
یک ایمیل تایید به آدرسی که شما ارائه کرده بودید ارسال میشود. دستورالعملهای ایمیل را برای تایید حساب خود دنبال کنید تا بتوانید از گیت لب استفاده کنید.
تغییر نام اکانت خودتان
برای این کار، Account را از نوار ناوبری سمت چپ انتخاب کنید:

در اینجا میتوانید احراز هویت دومرحلهای را فعال کرده و نام کاربری خودتان را تغییر دهید. بهصورت پیشفرض، اولین حساب مدیریتی روت نامیده میشود. از آنجایی که این نام حساب شناخته شده است، تغییر آن به یک نام دیگر امنتر است. اما شما همچنان از امتیازات مدیریتی برخوردار خواهید بود. تنها چیزی که تغییر میکند نام است. نام کاربری دلخواه خود را جایگزین کنید:

برای ایجاد تغییرات بر روی Update username کلیک کنید. پس از آن از شما خواسته میشود که تغییرات را تایید کنید.
دفعه بعدی که وارد گیت لب میشوید به خاطر داشته باشید که از نام کاربری جدید خود استفاده کنید.
افزودن SSH KEY به حساب خودتان
شما میتوانید SSH KEYها را با گیت فعال کنید تا با سایر پروژههای گیت لب تعامل داشته باشید. برای انجام این کار باید کلید عمومی SSH را به حساب گیت لب خودتان اضافه کنید.

اگر قبلا یک جفت کلید عمومی را در رایانه محلی خود ایجاد کردهاید، میتوانید با تایپ کردن عبارت زیر کلید عمومی را مشاهده کنید:
$cat ~/.ssh/id_rsa.pub Output ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
این متن را کپی کنید و آن را در باکس متن KEY داخل گیت لب خودتان وارد کنید.
اگر به جای آن، پیام دیگری را دریافت کردید، شما هنوز یک جفت SSH KEY بر روی دستگاه خود پیکربندی نکردهاید:
Output cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
اگر اینطور است، با وارد کردن دستور زیر یک جفت SSH KEY ایجاد کنید:
$ [environment local] $ ssh-keygen
پیشفرضها را قبول کنید و در صورت تمایل میتوانید یک رمزعبور برای ایمن کردن کلیدها بهصورت محلی ارائه دهید:
Output [environment local] Generating public/private rsa key pair. Enter file in which to save the key (/home/sammy/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sammy/.ssh/id_rsa. Your public key has been saved in /home/sammy/.ssh/id_rsa.pub. The key fingerprint is: SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work The key's randomart image is: +---[RSA 2048]----+ | ..%o==B| | *.E =.| | . ++= B | | ooo.o . | | . S .o . .| | . + .. . o| | + .o.o ..| | o .++o . | | oo=+ | +----[SHA256]-----+
هنگامی که این موارد را مشاهده کردید، میتوانید کلید عمومی خود را مانند مثال قبلی با وارد کردن دستور زیر نمایش دهید:
$ cat ~/.ssh/id_rsa.pub Output ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
این بلوک متن را در خروجی وارد کنید و آن را در کادر متن KEY داخل نمونه گیت لب خودتان وارد کنید. یک عنوان توصیفی به آن بدهید و بر روی دکمه Add کلیک کنید.
اکنون میتوانید پروژهها و مخازن گیت لب خود را از دستگاه محلی خود بدون نیاز به اعتبارنامه حساب خود مدیریت کنید.
مرحله 6) محدود کردن یا غیرفعال کردن Sign-upهای عمومی
با ثبتنام فعلی، وقتی شما از لندینگ پیج گیت لب نمونه خود بازدید میکنید، هر فردی میتواند برای یک حساب ثبتنام کند. اگر به دنبال یک میزبانی عمومی هستید، این همان چیزی است که میخواهید. بااینحال، در بسیاری از مواقع، تنظیمات محدودکننده مطلوبتر بهنظر میرسد.
برای شروع، با کلیک بر روی منوی همبرگری در نوار پیمایش بالا، به قسمت مدیریت بروید و از منو کشویی Admin را انتخاب کنید:

از نوار ناوبری سمت چپ Settings را انتخاب کنید:

شما به تنظیمات گلوبال نمونه گیت لب خود هدایت خواهید شد. در اینجا، شما میتوانید تعدادی از تنظیمات را انجام دهید که بر روی ثبتنام کاربران و سطح دسترسی آنها تاثیر میگذارد.
غیرفعال کردن Sign-upها
اگر میخواهید تا Sign-upها بهطور کامل غیرفعال شود، به بخش Sign-up Restrictions بروید و برای مشاهده گزینهها، Expand را فشار دهید.
سپس تیک Sign-up enabled را بردارید:

به خاطر داشته باشید که پس از انجام تغییرات بر روی دکمه Save changes کلیک کنید.
اکنون، بخش sign-up از صفحه لندینگ گیت لب حذف شده است.
محدود کردن Sign-upها توسط دامنه
اگر از گیت لب به عنوان بخشی از سازمانی استفاده میکنید که آدرسهای ایمیل مرتبط با یک دامنه را ارائه میدهند، میتوانید بهجای اینکه بهطور کامل آن را غیرفعال کنید، ثبتنامها را براساس دامنه خود محدود کنید.
در بخش Sign-up Restrictions، کادر Send confirmation email on sign-up را انتخاب کنید که به کاربران اجازه میدهد پس از تایید ایمیل خود وارد شوند.
در مرحله بعد، دامنه یا دامنههای لیست سفید (White list) برای ثبتنام را از کادر Whitelisted domains for sign-ups اضافه کنید (هر دامنه در یک خط). شما میتوانید از علامت “*” برای تعیین دامنههای Wildcard استفاده کنید:

وقتی کارتان تمام شد، بر روی دکمه Save changes کلیک کنید.
بخش sign-up اکنون از صفحه لندینگ گیت لب حذف شده است.
محدود کردن ایجاد پروژه
بهصورت پیشفرض، کاربران جدید میتوانند حداکثر ده پروژه را ایجاد کنند. اگر میخواهید به کاربران جدید بیرونی اجازه مشاهده و مشارکت در پروژه را بدهید، اما میخواهید که دسترسی آنها برای پروژههای جدید را محدود کنید، باید از قسمت Account and Limit Settings این کار را انجام بدهید.
در اینجا، شما میتوانید محدودیت پیشفرض پروژهها را به 0 تغییر دهید تا کاربران جدید به هیچ وجه امکان ایجاد پروژههای جدید غیرفعال را نداشته باشند:

کاربران جدید همچنان میتوانند بهصورت دستی به پروژهها اضافه شوند و به پروژههای داخلی یا عمومی ایجاد شده توسط کاربران دیگر دسترسی داشته باشند.
پس از بهروزرسانی، به خاطر داشته باشید که بر روی دکمه Save changes کلیک کنید.
اکنون، کاربران جدید میتوانند حساب ایجاد کنند، اما قادر به ایجاد پروژه نیستند.
تمدید گواهینامه Let’s Encrypt
بهصورت پیشفرض، گیت لب یک تسک زمانبندیشده برای تمدید گواهی بعد از نیمهشب چهارمین روز دارد که زمان آن کاملا دقیق و براساس external_url خودتان تنظیم شده است. شما این تنظیمات را میتوانید در فایل /etc/gitlab/gitlab.rb تغییر دهید.
برای مثال، اگر میخواهید در هفتمین روز در ساعت 12:30 تمدید کنید، میتوانید آن را برای انجام این کار پیکربندی کنید. ابتدا به فایل پیکربندی بروید:
$ sudo nano /etc/gitlab/gitlab.rb
سپس، خطوط زیر را در فایل پیدا کرده و # را حذف کرده و با موارد زیر بهروزرسانی کنید:
... ################################################################################ # Let's Encrypt integration ################################################################################ # letsencrypt['enable'] = nil letsencrypt['contact_emails'] = ['sammy@digitalocean'] # This should be an array of email addresses to add as contacts # letsencrypt['group'] = 'root' # letsencrypt['key_size'] = 2048 # letsencrypt['owner'] = 'root' # letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www' # See http://docs.gitlab.com/omnibus/settings/ssl.html#automatic-renewal for more on these settings letsencrypt['auto_renew'] = true letsencrypt['auto_renew_hour'] = "12" letsencrypt['auto_renew_minute'] = "30" letsencrypt['auto_renew_day_of_month'] = "*/7" ...
همچنین، شما میتوانید تمدید خودکار را با تنظیم letsencrypt[‘auto_renew’] بر روی false غیرفعال کنید:
letsencrypt['auto_renew'] = false
با تمدید خودکار، نیازی نیست نگران قطع شدن سرویس باشید.
نتیجهگیری
اکنون شما یک نمونه گیت لب دارید که بر روی سرور خودتان میزبانی شده است. میتوانید شروع به وارد کردن و ایجاد پروژههای جدید کنید و سطح دسترسی مناسبی را برای تیم پیکربندی کنید. گیت لب بهطور مرتب ویژگیها و بهروزرسانیهای جدید را به پلتفرم خود اضافه میکند، بنابراین حتما صفحه اصلی پروژه را بررسی کنید تا از پیشرفتها یا اطلاعیههای جدید مطلع شوید.




