نصب و پیکربندی GitLab روی دبیان ۹ و اوبونتو ۱۸.۰۴ – راهنمای جامع
نسخه جامعه (Community Edition) برای گیتلب (GitLab CE) یک اپلیکیشن متن-باز است که به طور عمده برای میزبانی ریپازیتوریهای Git استفاده میشود و ویژگیهای اضافی برای توسعه مانند ردگیری issue نیز دارد. این اپلیکیشن برای میزبانی از سوی زیرساخت شخصی کاربران طراحی شده است و با انعطافپذیری در توزیع به عنوان یک ریپازیتوری داخلی برای تیم توسعه، روشی عمومی برای ارتباط با کاربران یا ابزاری برای مشارکتکنندگان جهت میزبانی پروژههای شخصیشان به حساب میآید.
پروژه گیتلب راهاندازی یک وهله از GitLab بر روی سختافزار شخصی با مکانیسم نصب آسان را به فرایندی ساده تبدیل کرده است. در این راهنما شیوه نصب و پیکربندی گیتلب روی سرور دبیان 9 را بررسی و مرور میکنیم. توجه کنید که همه مراحل برای اوبونتو 18.04 نیز کاملاً مشابه است.
پیشنیازها
برای این راهنما به موارد زیر نیاز خواهید داشت:
- یک سرور دبیان 9 با کاربر غیر root با دسترسی sudo و فایروال اولیه.
- الزامات سختافزاری که از سوی گیتلب انتشار یافته است و به صورت سروری با 2 هسته و 8 گیگابایت رم است. گرچه میتوانید با جایگزینی مقداری از فضای سواپ به جای رم نیز آن را نصب کنید؛ اما چنین کاری توصیه نمیشود. در این راهنما فرض میکنیم که شما کمینه منابع مورد نیاز را دارید.
- یک نام دامنه باید روی سرور پیکربندی شده باشد. در این راهنما از نام دامنه خیالی example.com به منظور آموزش استفاده میکنیم.
گام 1 – نصب وابستگیها
پیش از آن که بتوانید خود گیتلب را نصب کنید، باید برخی از نرمافزارهایی که در طی نصب و پس از آن کار را تسهیل میکنند، نصب کرده باشید. خوشبختانه نرمافزارهای مورد نیاز را میتوانید به سادگی با استفاده از ریپازیتوریهای بسته پیشفرض دبیان نصب کنید.
از آنجا که این نخستین باری است که از apt استفاده میکنیم، میتوانیم اندیس بسته محلی را رفرش کنیم و سپس وابستگیها را با وارد کردن دستور زیر نصب کنیم:
sudo apt update sudo apt install ca-certificates curl openssh-server postfix
ممکن است برخی از نرمافزارها از قبل روی سیستم نصب باشند. برای نصب postfix زمانی که اعلانی روی صفحه ظاهر شد، گزینه Internet Site را انتخاب کنید. در صفحه بعدی نام دامنه سرور خود را برای پیکربندی این که سیستم چگونه ایمیل خواهد فرستاد، پیکربندی کنید.
گام 2 – نصب GitLab
اینک که وابستگیها نصب شدهاند، میتوانیم خود گیتلب را نصب کنیم. این کار فرایندی سرراست است که از یک اسکریپت نصب برای پیکربندی سیستم با ریپازیتوری های گیتلب استفاده میکند.
به دایرکتوری 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
این اسکریپت سرور شما را برای استفاده از ریپازیتوری های نگهداری شده روی GitLab آماده میکند. بدین ترتیب میتوانید گیتلب را با استفاده از برخی ابزارهای مدیریت بسته که برای بستههای سیستمی دیگر استفاده میکنید پیکربندی کنید. زمانی که این کار پایان یافت، میتوانید اپلیکیشن واقعی گیتلب را با دستور زیر نصب کنید:
sudo apt install gitlab-ce
دستور فوق کامپوننتهای ضروری را روی سیستم نصب میکند.
گام 3 – تنظیم قواعد فایروال
پیش از آن که GitLab را پیکربندی کنید، باید اطمینان حاصل کنید که قواعد فایروال اجازه عبور ترافیک وب را میدهند. اگر از راهنمای معرفی شده در بخش پیشنیازها پیروی کنید، میبایست فایروال ufw فعال باشد.
وضعیت کنونی فایروال فعال را دستور زیر میتوانید مشاهده کنید:
sudo ufw status
خروجی
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
همان طور که میبینید، قواعد کنونی اجازه عبور ترافیک SSH را میدهند؛ اما سرویسهای دیگر محدود شدهاند. از آنجا که GitLab یک اپلیکیشن وب است، ما باید دسترسی HTTP داشته باشیم. از طرفی چون میخواهیم از توانایی گیتلب برای درخواست و فعالسازی گواهیهای رایگان TLS/SSL که let’s encrypt ارائه میدهد بهره بگیریم دسترسی HTTPS را نیز باز میکنیم.
با استفاده از پروفایل «WWW Full» میتوانیم امکان عبور ترافیکهای HTTP و HTTPS را از فایروال فراهم کنیم. اگر ترافیک OpenSSH را از قبل فعال نکردهاید باید اجازه عبور این ترافیک را نیز بدهید:
sudo ufw allow "WWW Full" sudo ufw allow OpenSSH
ufw status را مجدداً بررسی کنید و این بار فلگ verbose را نیز آن اضافه کند؛ اینک میتوانید دسترسی پیکربندی شده را دستکم برای این دو سرویس ببینید:
sudo ufw status verbose
خروجی
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 – ویرایش فایل پیکربندی GitLab
پیش از آن که بتوانید از این اپلیکیشن استفاده کنید، باید فایل پیکربندی را بهروزرسانی کنید و دستور پیکربندی مجدد را اجرا نمایید. ابتدا فایل پیکربندی گیتلب را باز کنید:
sudo nano /etc/gitlab/gitlab.rb
در بخشهای ابتدایی خطی به صورت external_url وجود دارد. آن را بهروزرسانی کنید تا با دامنه شما مطابقت داشته باشد. http را به https تغییر دهید تا گیتلب به طور خودکار کاربران را به سایت حفاظتشده با گواهی Let’s Encrypt هدایت کند:
##! For more details on configuring external_url see: ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab external_url 'https://example.com'
سپس به دنبال تنظیمات [letsencrypt['contact_emails' بگردید. این تنظیمات فهرستی از آدرسهای ایمیل را مشخص میکنند که پروژه Let’s Encrypt میتواند در صورت وجود هر گونه مشکل در نام دامنه برای تماس با شما استفاده کند. بهتر است این بخش را از حالت کامنت خارج کرده و پر کنید تا در صورت بروز هر گونه مشکل اطلاع یابید.
letsencrypt['contact_emails'] = ['sammy@example.com']
فایل را ذخیره کرده و ببندید. دستور زیر را برای پیکربندی GitLab وارد کنید:
sudo gitlab-ctl reconfigure
دستور فوق گیتلب را با استفاده از اطلاعاتی که در مورد سرور یافته است، راهاندازی اولیه میکند. این فرایند کاملاً خودکار است و از این رو از شما سؤالی نخواهد شد. این فرایند همچنین گواهی Let’s Encrypt را برای دامنه شما پیکربندی میکند.
گام 5 – اجرای پیکربندی اولیه از طریق رابط وب
وقتی GitLab اجرا شد و دسترسی آن مجاز بود، میتوانیم برخی پیکربندیهای اولیه را از طریق رابط وب آن انجام دهیم.
ورود برای اولین بار
نام دامنه سرور GitLab را در مرورگر وب خود وارد کنید:
https://example.com
در بازدید نخست یک اعلان اولیه میبینید که از شما میخواهد رمزی برای حساب مدیریت وارد کنید:
در اعلان رمز عبور اولیه یک رمز عبور امن را برای حساب مدیریت وارد نمایید. بر روی دکمه Change your password کلیک کنید تا این فرایند به پایان برسد. در این لحظه به صفحه ورودی GitLab هدایت میشوید:
در این صفحه میتوانید با رمز عبوری که قبلاً تعیین کردید وارد شوید. اطلاعات احراز هویت به صورت زیر هستند:
- نام کاربری: root
- رمز عبور: همان رمز عبوری که تعیین کردید.
این مقادیر را در فیلدهای کاربران موجود وارد کرده و روی دکمه Sign in کلیک کنید. بدین ترتیب وارد اپلیکیشن میشود و به یک صفحه فرود هدایت میشوید که در آن میتوانید پروژههایی اضافه کنید:
میتوانید برخی تغییرات ساده روی GitLab انجام دهید تا مطابق میل شما رفتار کند.
تنظیمات پروفایل
یکی از نخستین کارهایی که باید پس از پایان نصب انجام دهید، این است که پروفایل خود را به شکل بهتری در بیاورید. GitLab برخی مقادیر پیشفرض معقولی را انتخاب میکند؛ اما این موارد معمولاً زمانی که شروع به استفاده از نرمافزار میکنید، چنان مناسب به نظر نمیرسند.
برای ایجاد اصلاحات ضروری بر روی آیکون کاربر در گوشه راست-بالا کلیک کرده و در منوی بازشوندهای که ظاهر میشود Settings را انتخاب کنید:
بدین ترتیب به بخش پروفایل تنظیمات میروید.
Name و آدرس Email در بخش Administrator و admin@example.com را به موارد مناسبتری تغییر دهید. نامی که انتخاب میکنید برای کاربران دیگر نمایش داده خواهد شد؛ اما ایمیل برای تشخیص آواتار پیشفرض کاربر، اطلاعرسانی، اقدامات Git از طریق رابط و مواردی از این دست مربوط است. بر روی دکمه Update Profile settings در انتهای صفحه کلیک کنید.
یک ایمیل تأیید به آدرسی که ارائه کردید ارسال میشود. دستورالعملهای درون ایمیل را دنبال کنید تا ایمیل حساب شما تأیید شود و بتوانید از آن در گیتلب استفاده کنید.
تغییر دادن نام حساب
سپس بر روی آیتم Account در نوار منوی سمت چپ کلیک کنید:
در این بخش میتوانید توکن API شخصی را ببینید و احراز هویت دومرحلهای را فعال کنید. با این حال کارکردی که در این بخش برای ما جذاب است، بخش Change username محسوب میشود.
به طور پیشفرض حساب کاربری مدیریتی دارای نام root است. از آنجا که این نام شناخته شده است از نظر امنیتی بهتر است که آن را تغییر دهید. بدین منظور باید دسترسیهای مدیریتی داشته باشید. تنها چیزی که تغییر میدهیم نام است. root را با نام کاربری دلخواه خود عوض کنید:
بر روی دکمه Update username کلیک کنید تا تغییرات اعمال شوند:
دفعه بعد که میخواهید وارد GitLab شوید یادتان باشد که از نام کاربری جدید خود استفاده کنید.
افزودن کلید SSH به حساب
در اغلب موارد میخواهید از کلیدهای SSH با Git برای تعامل با پروژههای گیتلب استفاده کنید. برای انجام این کار باید کلید عمومی SSH را به حساب گیتلب خود اضافه کنید.
اگر از قبل یک جفت کلید SSH روی رایانه محلی خود دارید، میتوانید کلید عمومی خود را با وارد کردن دستور زیر ببینید:
cat ~/.ssh/id_rsa.pub
در این بخش مقدار زیادی از متن را میبینید که شبیه زیر است:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
متن را کپی کرده و به صفحه Settings در رابط وب گیتلب بازگردید.
اگر به جای خروجی فوق پیامی به صورت زیر دریافت کردید بدین معنی است که هنوز جفت کلید SSH روی سرور شما پیکربندی نشده است.
خروجی
cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory
در این صورت میتوانید با دستور زیر یک جفت کلید SSH بسازید:
ssh-keygen
مقادیر پیشفرض را قبول کنید و یک رمز عبور برای امن سازی کلید به صورت محلی وارد کنید:
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
خروجی
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop
این متن را کپی کرده و به صفحه Settings گیتلب در رابط وب برگردید. بر روی آیتم SSH Keys در منوی سمت چپ کلیک کنید:
در فضای ارائه شده کلید عمومی خود را که از رایانه محلی کپی کردید، وارد کنید. یک عنوان توصیفی برای آن تعیین کنید و بر روی دکمه Add key کلیک کنید.
اینک میتوانید پروژههای گیتلب و ریپازیتوری های خود را از رایانه محلی بدون داشتن نام کاربری و رمز عبور گیتلب مدیریت کنید.
گام 6 – محدود یا غیر فعالسازی ثبت نام عمومی (اختیاری)
ممکن است متوجه شده باشید که همه افراد هنگام بازدید از صفحه فرود وهله شخصی شما از GitLab، امکان ثبت نام در وبسایتتان را دارند. ممکن است در صورتی که میخواهید پروژههای عمومی را میزبانی کنید، این وضعیت مطلوب شما باشد؛ اما در اغلب موارد محدود کردن این تنظیمات برای افراد خاص، مطلوبتر خواهد بود.
برای شروع وارد محیط مدیریتی شده و بر روی آیکون آچار در نوار منوی اصلی در بخش بالا کلیک کنید.
در صفحهای که باز میشود میتوانید نمایی کلی از وهله گیتلب به صورت کلی ببینید. برای تغییر دادن تنظیمات بر روی آیکون Settings در انتهای منوی سمت چپ کلیک کنید:
بدین ترتیب به بخش تنظیمات سراسری وهله گیتلب وارد میشوید. در این بخش میتوانید تعدادی از تنظیماتی که بر روی روش ثبت نام کاربران جدید و سطح دسترسی آنها تأثیر میگذارد تغییر دهید.
غیر فعالسازی ثبت نامها
اگر میخواهید ثبت نام را به طور کامل غیر فعال کنید (البته همچنان در این وضعیت نیز میتوانید به طور دستی حسابهایی برای کاربران ایجاد کنید.) به بخش پایین یعنی Sign-up Restrictions بروید و گزینه Sign-up enabled را غیر فعال کنید:
به سمت پایین اسکرول کرده و بر روی دکمه Save changes برنید:
اینک بخش ثبت نام از صفحه فرود گیتلب حذف شده است.
محدودسازی ثبت نام بر اساس دامنه
اگر از GitLab به عنوان بخشی از یک سازمان که آدرسهای ایمیل مرتبط با دامنه ارائه میکند، استفاده میکنید میتوانید ثبتنامها را به جای این که کاملاً غیر فعال کنید؛ به اعضایی که آن آدرسهای ایمیل را دارند محدود کنید.
در بخش Sign-up Restrictions گزینه Send confirmation email on sign-up را انتخاب کنید. بدین ترتیب به کاربران تنها در صوتی اجازه ورود میدهد که ابتدا ایمیلشان را تأیید کرده باشند.
سپس دامنه خود را به دامنهها در کادر Whitelisted domains for sign-ups اضافه کنید. در هر خط یک دامنه اضافه کنید. میتوانید از «*» برای تعریف دامنههایی با استفاده از وایلدکارد استفاده کنید.
به سمت پایین رفته و بر روی دکمه Save changes کلیک کنید:
اینک بخش ثبت نام از صفحه فرود گیتلب حذف شده است.
محدودسازی ایجاد پروژه
به طور پیشفرض کاربران جدید میتوانند تا 10 پروژه ایجاد کنند. اگر میخواهید به کاربران جدید بیرونی اجازه دیدن و مشارکت بدهید؛ اما میخواهید دسترسی آنها به ایجاد پروژههای جدید را محدود سازید، میتوانید این کار را در بخش Account and Limit Settings انجام دهید.
در این بخش میتوانید مقدار Default projects limit را به 0 تغییر دهید تا کاربران جدید به طور کامل از ایجاد پروژه محروم شوند.
در چنین حالتی کاربران جدید را میتوانید همچنان به صورت دستی به پروژههای خود اضافه کنید؛ اما دسترسی آنها به پروژههای درونی و بیرونی ایجاد شده از سوی کاربران دیگر محدود میشود.
به بخش انتهای صفحه رفته و دکمه Save changes را بزنید:
اینک کاربران جدید میتوانند حساب ایجاد کنند؛ اما نمیتوانند پروژه بسازند.
تمدید گواهیهای Let’s Encrypt
گیتلب به طور پیشفرض وظیفه زمانبندی شدهای برای تمدید گواهیهای let’s encrypt دارد که پس از نیمه شب هر چهار روز یک بار اجرا میشود. شما میتوانید این تنظیمات را در فایل etc/gitlab/gitlab.rb/ تغییر دهید. برای نمونه اگر میخواهید این بررسی هر 7 روز یکبار در ساعت 12:30 اجرا شود میتوانید آن را به صورت زیر پیکربندی کنید:
letsencrypt['auto_renew_hour'] = "12" letsencrypt['auto_renew_minute'] = "30" letsencrypt['auto_renew_day_of_month'] = "*/
همچنین میتوانید تمدید خودکار را با افزودن تنظیمات زیر به فایل etc/gitlab/gitlab.rb/ غیر فعال کنید:
letsencrypt['auto_renew'] = false
وقتی تمدید خودکار برقرار باشد لازم نیست در مورد توقف سرویس خود نگران باشید.
سخن پایانی
اینک با به پایان رسیدن این راهنما شما یک وهله از GitLab دارید که روی سرور شخصیتان در حال اجرا است. میتوانید پروژههای خود را وارد کنید یا پروژههای جدیدی بسازید و سطح مناسبی از دسترسی برای تیم تعیین کنید. GitLab به طور منظم ویژگیهایی به اپلیکیشن خود اضافه میکند و پلتفرمش را بهروزرسانی میکند، بنابراین اطمینان حاصل کنید که صفحه اصلی پروژه را گاه به گاه بررسی میکنید تا همواره بهروز بمانید و از بهینهسازی یا اعلانهای مهم آگاه شوید.
اگر این نوشته مورد توجه شما قرار گرفته است، پیشنهاد میکنیم موارد زیر را نیز ملاحظه کنید:
- آموزش تاریخچه گیت (Git) و مقدمات آن
- 7 مورد از بهترین جایگزینهای گیتهاب برای میزبانی پروژههای متن-باز
- مجموعه آموزشهای طراحی و برنامه نویسی وب
- Node.js و وب هوک های گیت هاب — راهنمای به روز رسانی پروژه ها از راه دور
- آموزش گیت (Git) برای مدیریت نسخه توزیع شده
- مجموعه آموزشهای برنامهنویسی
==