مقدمه
GitLab یک برنامه منبع باز است که در درجه اول برای میزبانی مخازن Git با ویژگی های مرتبط با توسعه اضافی مانند ردیابی مشکل استفاده می شود. این برنامه به گونه ای طراحی شده است که با استفاده از زیرساخت خود میزبانی شود، و انعطاف پذیری را در استقرار به عنوان یک ذخیره سازی داخلی برای تیم توسعه شما، راهی عمومی برای ارتباط با کاربران، یا وسیله ای برای مشارکت کنندگان برای میزبانی پروژه های خود فراهم می کند.
پروژه GitLab شما را قادر می سازد تا با یک مکانیسم نصب حداقل یک نمونه GitLab بر روی سخت افزار خود ایجاد کنید. این راهنما به شما آموزش می دهد که چگونه GitLab Community Edition را روی سرور اوبونتو نصب و پیکربندی کنید.
پیش نیازها
- سروری که اوبونتو را اجرا می کند، به همراه یک کاربر غیر ریشه با امتیازات
sudo
و فایروال فعال. - 4 هسته برای CPU شما
- 4 گیگابایت رم برای حافظه
- یک نام دامنه به سمت سرور شما
مرحله 1 – نصب Dependencies
قبل از نصب GitLab، مهم است که نرم افزاری را که در حین نصب و به صورت مداوم از آن استفاده می کند، نصب کنید. نرم افزار مورد نیاز را می توان از مخازن بسته پیش فرض اوبونتو نصب کرد.
ابتدا فهرست بسته محلی را بازخوانی کنید:
sudo apt update
سپس با وارد کردن این دستور وابستگی ها را نصب کنید:
sudo apt install ca-certificates curl openssh-server postfix tzdata perl
احتمالاً برخی از این نرم افزار را قبلاً نصب کرده اید. برای نصب postfix، وقتی از شما خواسته شد، Internet Site را انتخاب کنید. در صفحه بعدی، نام دامنه سرور خود را برای پیکربندی نحوه ارسال نامه توسط سیستم وارد کنید.
اکنون که وابستگی ها را نصب کرده اید، آماده نصب GitLab هستید.
مرحله 2 – نصب GitLab
با وجود وابستگی ها، می توانید GitLab را نصب کنید. این فرآیند از یک اسکریپت نصب برای پیکربندی سیستم شما با مخازن GitLab استفاده می کند.
ابتدا وارد پوشه /tmp شوید:
cd /tmp
سپس اسکریپت نصب را دانلود کنید:
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh
با خیال راحت اسکریپت دانلود شده را بررسی کنید تا مطمئن شوید که با اقداماتی که انجام می دهد راحت هستید. همچنین می توانید یک نسخه میزبانی شده از اسکریپت را در دستورالعمل های نصب GitLab پیدا کنید:
less /tmp/script.deb.sh
هنگامی که از ایمنی اسکریپت راضی شدید، نصب کننده را اجرا کنید:
sudo bash /tmp/script.deb.sh
اسکریپت سرور شما را برای استفاده از مخازن نگهداری شده GitLab تنظیم می کند. این به شما امکان می دهد GitLab را با همان ابزارهای مدیریت بسته ای که برای سایر بسته های سیستم خود استفاده می کنید، مدیریت کنید. پس از تکمیل، می توانید برنامه واقعی GitLab را با apt نصب کنید:
sudo apt install gitlab-ce
با این کار اجزای لازم بر روی سیستم شما نصب می شود و ممکن است تکمیل آن مدتی طول بکشد.
مرحله 3 – تنظیم قوانین فایروال
قبل از پیکربندی GitLab، باید مطمئن شوید که قوانین فایروال شما به اندازه کافی مجاز هستند تا ترافیک وب را مجاز کنند. اگر از راهنمای لینک شده در پیش نیازها پیروی کنید، از قبل فایروال ufw را فعال خواهید کرد.
با اجرای زیر وضعیت فعلی فایروال فعال خود را مشاهده کنید:
sudo ufw status
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
قوانین فعلی به ترافیک SSH اجازه عبور می دهد، اما دسترسی به سایر خدمات محدود شده است. از آنجایی که GitLab یک برنامه تحت وب است، باید اجازه دسترسی به HTTP را بدهید. از آنجایی که شما از توانایی GitLab برای درخواست و فعال کردن یک گواهی رایگان TLS/SSL از Let’s Encrypt استفاده خواهید کرد، همچنین اجازه دسترسی به 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)
این خروجی نشان می دهد که رابط وب GitLab اکنون پس از پیکربندی برنامه قابل دسترسی است.
مرحله 4 – ویرایش فایل پیکربندی GitLab
قبل از اینکه بتوانید از برنامه استفاده کنید، فایل پیکربندی را به روز کنید و یک دستور پیکربندی مجدد را اجرا کنید. ابتدا فایل پیکربندی GitLab را با ویرایشگر متن دلخواه خود باز کنید. این مثال از نانو استفاده می کند:
sudo nano /etc/gitlab/gitlab.rb
خط پیکربندی external_url را جستجو کنید. آن را برای مطابقت با دامنه خود به روز کنید و مطمئن شوید که http را به https تغییر دهید تا به طور خودکار کاربران را به سایت محافظت شده توسط گواهی Let’s Encrypt هدایت کنید:
...
## 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'
...
سپس، تنظیم letsencrypt[‘contact_emails’] را پیدا کنید. اگر از nano استفاده میکنید، میتوانید با فشار دادن CTRL+W، درخواست جستجو را فعال کنید. letsencrypt[‘contact_emails’] را در فرمان بنویسید، سپس ENTER را فشار دهید. این تنظیم فهرستی از آدرسهای ایمیل را تعریف میکند که پروژه Let’s Encrypt میتواند برای تماس با شما در صورت وجود مشکل در دامنه شما استفاده کند. توصیه میشود برای اطلاع از هر گونه مشکلی که ممکن است رخ دهد، این را از نظر خارج کرده و پر کنید:
letsencrypt['contact_emails'] = ['[email protected]']
پس از انجام تغییرات، فایل را ذخیره کرده و ببندید. اگر از نانو استفاده می کنید، می توانید این کار را با فشار دادن CTRL+X
، سپس Y
و سپس ENTER
انجام دهید.
دستور زیر را برای پیکربندی مجدد GitLab اجرا کنید:
sudo gitlab-ctl reconfigure
این GitLab را با استفاده از اطلاعاتی که می تواند در مورد سرور شما پیدا کند، مقداردهی اولیه می کند. این یک فرآیند کاملاً خودکار است، بنابراین شما مجبور نخواهید بود به هیچ درخواستی پاسخ دهید. این فرآیند همچنین گواهی Let’s Encrypt را برای دامنه شما پیکربندی می کند.
مرحله 5 – انجام پیکربندی اولیه از طریق رابط وب
با در حال اجرا GitLab، می توانید یک پیکربندی اولیه برنامه را از طریق رابط وب انجام دهید.
ورود برای اولین بار
از نام دامنه سرور GitLab خود در مرورگر وب خود دیدن کنید:
https://your_domain
در اولین بازدید خود، با یک صفحه ورود مواجه خواهید شد:
GitLab یک رمز عبور امن اولیه برای شما ایجاد می کند. در پوشه ای ذخیره می شود که می توانید به عنوان کاربر 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.
در صفحه ورود به سیستم، موارد زیر را وارد کنید:
- نام کاربری: root
- رمز عبور: [گذرواژه ذکر شده در /etc/gitlab/initial_root_password]
این مقادیر را در فیلدها وارد کنید و روی دکمه Sign in کلیک کنید. شما به برنامه وارد می شوید و به صفحه فرود هدایت می شوید که از شما می خواهد شروع به اضافه کردن پروژه ها کنید:
اکنون می توانید نمونه GitLab خود را به خوبی تنظیم کنید.
به روز رسانی رمز عبور شما
یکی از اولین کارهایی که پس از ورود باید انجام دهید، تغییر رمز عبور است. برای انجام این تغییر، روی نماد موجود در گوشه سمت راست بالای نوار پیمایش کلیک کرده و Edit Profile را انتخاب کنید:
سپس وارد صفحه تنظیمات کاربر می شوید. در نوار ناوبری سمت چپ، رمز عبور را انتخاب کنید تا رمز عبور ایجاد شده GitLab خود را به یک رمز عبور ایمن تغییر دهید، سپس پس از پایان به روز رسانی، روی دکمه ذخیره رمز عبور کلیک کنید:
با اعلانی مبنی بر تغییر رمز عبور شما به صفحه ورود بازگردانده می شوید. رمز عبور جدید خود را برای ورود مجدد به نمونه GitLab وارد کنید:
تنظیم تنظیمات نمایه شما
GitLab برخی از پیشفرضهای معقول را انتخاب میکند، اما این موارد معمولاً پس از شروع استفاده از نرمافزار مناسب نیستند. برای انجام تغییرات لازم، روی نماد کاربر در گوشه سمت راست بالای نوار پیمایش کلیک کرده و ویرایش نمایه را انتخاب کنید.
میتوانید نام و آدرس ایمیل را از «Administrator» و «[email protected]» به چیزی دقیقتر تنظیم کنید. نامی که انتخاب میکنید به سایر کاربران نمایش داده میشود، در حالی که ایمیل برای تشخیص آواتار پیشفرض، اعلانها، اقدامات Git از طریق رابط و موارد دیگر استفاده میشود:
پس از اتمام بهروزرسانیها، روی دکمه تنظیمات بهروزرسانی پروفایل در پایین کلیک کنید. از شما خواسته می شود رمز عبور خود را برای تایید تغییرات وارد کنید. یک ایمیل تایید به آدرسی که شما ارائه کرده اید ارسال می شود. دستورالعمل های ایمیل را برای تأیید حساب خود دنبال کنید تا بتوانید از آن با GitLab استفاده کنید.
تغییر نام حساب کاربری
سپس، حساب را در نوار ناوبری سمت چپ انتخاب کنید:
در اینجا می توانید احراز هویت دو مرحله ای را فعال کرده و نام کاربری خود را تغییر دهید. به طور پیشفرض، اولین حساب مدیریتی نام ریشه داده میشود. از آنجایی که این یک نام حساب شناخته شده است، تغییر آن به نام دیگری امن تر است. شما همچنان از امتیازات اداری برخوردار خواهید بود. تنها چیزی که تغییر می کند نام است. نام کاربری دلخواه خود را جایگزین root کنید:
برای ایجاد تغییر روی دکمه Update username کلیک کنید. پس از آن از شما خواسته می شود که تغییر را تأیید کنید.دفعه بعد که وارد GitLab می شوید، به یاد داشته باشید که از نام کاربری جدید خود استفاده کنید.
افزودن کلید SSH به حساب شما
برای تعامل با پروژه های GitLab می توانید کلیدهای SSH را با Git فعال کنید. برای انجام این کار، باید کلید عمومی SSH خود را به حساب GitLab خود اضافه کنید.
در نوار ناوبری سمت چپ، کلیدهای SSH را انتخاب کنید:
اگر قبلاً یک جفت کلید SSH در رایانه محلی خود ایجاد کرده اید، می توانید کلید عمومی را با تایپ کردن زیر مشاهده کنید:
cat ~/.ssh/id_rsa.pub
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
این متن را کپی کنید و آن را در جعبه متن Key داخل نمونه GitLab خود وارد کنید.اگر در عوض، پیام دیگری دریافت کردید، هنوز یک جفت کلید SSH روی دستگاه خود پیکربندی نکرده اید:
Output
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
اگر اینطور است، می توانید با وارد کردن دستور زیر یک جفت کلید SSH ایجاد کنید:
[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 [email protected]
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 داخل نمونه GitLab خود وارد کنید. یک عنوان توصیفی به آن بدهید و روی دکمه افزودن کلید کلیک کنید.
اکنون می توانید پروژه ها و مخازن GitLab خود را از دستگاه محلی خود بدون نیاز به ارائه اعتبار حساب GitLab خود مدیریت کنید.
مرحله 6 – محدود کردن یا غیرفعال کردن ثبت نام های عمومی
با راهاندازی فعلی شما، این امکان برای هر کسی وجود دارد که وقتی از صفحه فرود نمونه GitLab خود بازدید میکنید، برای یک حساب ثبتنام کند. اگر به دنبال میزبانی یک پروژه عمومی هستید، ممکن است این همان چیزی باشد که می خواهید. با این حال، بسیاری از اوقات، تنظیمات محدودتر مطلوب است.
برای شروع، با کلیک بر روی منوی همبرگر در نوار پیمایش بالا، به قسمت اداری بروید و از منوی کشویی گزینه Admin را انتخاب کنید:
تنظیمات را از نوار ناوبری سمت چپ انتخاب کنید:
شما به تنظیمات جهانی برای نمونه GitLab هدایت خواهید شد. در اینجا، میتوانید تعدادی تنظیمات را تنظیم کنید که بر روی ثبت نام کاربران جدید و سطح دسترسی آنها تأثیر میگذارد.
غیرفعال کردن ثبت نام ها
اگر می خواهید ثبت نام ها را به طور کامل غیرفعال کنید، به بخش محدودیت های ثبت نام بروید و برای مشاهده گزینه ها، Expand را فشار دهید.
سپس تیک گزینه Sign-up enabled را بردارید:
به یاد داشته باشید که پس از انجام تغییرات روی دکمه ذخیره تغییرات کلیک کنید. بخش ثبت نام اکنون از صفحه فرود GitLab حذف شده است.
محدود کردن ثبت نام توسط دامنه
اگر از GitLab به عنوان بخشی از سازمانی استفاده میکنید که آدرسهای ایمیل مرتبط با یک دامنه را ارائه میدهد، میتوانید به جای غیرفعال کردن کامل، ثبتنامها را بر اساس دامنه محدود کنید. در بخش محدودیتهای ثبتنام، کادر ارسال ایمیل تایید در ثبتنام را انتخاب کنید، که به کاربران اجازه میدهد تنها پس از تایید ایمیل خود وارد شوند.
در مرحله بعد، دامنه یا دامنه های خود را به دامنه های لیست سفید برای ثبت نام، یک دامنه در هر خط اضافه کنید. می توانید از ستاره “*” برای تعیین دامنه های عام استفاده کنید:
وقتی کارتان تمام شد، روی دکمه ذخیره تغییرات کلیک کنید. بخش ثبت نام اکنون از صفحه فرود GitLab حذف شده است.
محدود کردن ایجاد پروژه
به طور پیش فرض، کاربران جدید می توانند حداکثر 10 پروژه ایجاد کنند. اگر میخواهید به کاربران جدید از خارج اجازه مشاهده و مشارکت بدهید، اما میخواهید دسترسی آنها را برای ایجاد پروژههای جدید محدود کنید، میتوانید این کار را در بخش تنظیمات حساب و محدودیت انجام دهید.
در داخل، میتوانید محدودیت پروژههای پیشفرض را به 0 تغییر دهید تا کاربران جدید را کاملاً از ایجاد پروژهها غیرفعال کنید:
کاربران جدید همچنان می توانند به صورت دستی به پروژه ها اضافه شوند و به پروژه های داخلی یا عمومی ایجاد شده توسط سایر کاربران دسترسی داشته باشند. پس از به روز رسانی، به یاد داشته باشید که روی دکمه ذخیره تغییرات کلیک کنید. کاربران جدید اکنون می توانند حساب ایجاد کنند، اما قادر به ایجاد پروژه نیستند.
در حال تمدید گواهینامه های Let’s Encrypt
بهطور پیشفرض، GitLab یک وظیفه برنامهریزیشده برای تمدید گواهیهای 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
...
با وجود تمدید خودکار، لازم نیست نگران قطع شدن سرویس باشید.
نتیجه
شما اکنون یک نمونه GitLab دارید که روی سرور خود میزبانی شده است. می توانید شروع به وارد کردن یا ایجاد پروژه های جدید کنید و سطح دسترسی مناسب را برای یک تیم پیکربندی کنید. GitLab مرتباً ویژگیها و بهروزرسانیهایی را به پلتفرم خود اضافه میکند، بنابراین حتماً صفحه اصلی پروژه را بررسی کنید تا در مورد هر گونه پیشرفت یا اطلاعیههای مهم بهروز باشید.