نصب و راه اندازی Gitlab روی سرور شخصی با استفاده از داکر

گیت‌لب مثل هزاران سرویس دیگه خارجی ما ایرانی‌ها رو تحریم کرده و بخاطر تجربه ای که اکثرمون از این اتفاق داریم، گیت‌هاب هم الآن زیاد مورد اعتماد نیست...!

چه چیزی بهتر از راه انداختن گیت‌لب روی سرور داخل شرکت خودمون، که هم کاهش ترافیک بین الملل در شرکت رو به همراه داره، و هم سرعت کانکشن بالای شبکه داخلی!

بریم سر اصل مطلب، راه اندازی گیت‌لب روی داکر:

اول از همه نیاز هستش که داکر رو نصب کنیم، توی این مثال من از توزیع Ubuntu استفاده می‌کنم:

قدم اول پاک کردن نسخه های قبلی داکر هست:

sudo apt-get remove docker docker-engine docker.io containerd runc

قدم دوم اضافه کردن Repository داکر روی سرور:

sudo apt-get update
sudo apt-get install  ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo &quotdeb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

قدم سوم دانلود و نصب انجین داکر:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

با استفاده از دستور

docker -v

مطمئن می‌شیم که داکر نصب شده و بعد می‌ریم سراغ مراحل دانلود و نصب گیت‌لب:

اول یک محیطی رو برای گیت‌لب می‌سازیم و اسم اون رو GITLAB_HOMEمی‌زاریم:

export GITLAB_HOME=/srv/gitlab
mountpoints
mountpoints

داخل جدول بالا توضیح داده شده که کدوم فولدر و مسیر توی کانتینر داکر کدوم نقش رو بازی می‌کنه.

روش اول - نصب با استفاده از خود داکر:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:latest

در دستور بالا gitlab.example.com با FQDN شما، یا همون آدرس دامین سرور شما باید جایگزین بشه.

این دستور ایمیج گیت‌لب رو از داکر دانلود و اجرا می‌کنه، همچنین پورت های 443، 80 و 22 هم به اصطلاح NAT می‌شن.

همه اطلاعات سرور گیت‌لب شما هم داخل مسیرGITLAB_HOME$نوشته می‌شه .

اگر از SELinux استفاده می‌کنین به جای دستور بالا از دستور پایین باید استفاده کنین:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab:Z \
  --volume $GITLAB_HOME/logs:/var/log/gitlab:Z \
  --volume $GITLAB_HOME/data:/var/opt/gitlab:Z \
  --shm-size 256m \
  gitlab/gitlab-ee:latest

بعد از اینکه کار دانلود و اجرا تموم شد، آدرس FQDN خودتون رو داخل مرورگر بزنین و وب گیت‌لب باز می‌شه:)

برای به دست آوردن پسورد ادمین اصلی، از دستور زیر استفاده کنین:

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

حالا می‌تونین با استفاده از نام کاربری root و پسوردی که به دست آوردین وارد پنل ادمین گیت‌لب بشین.

دقت کنین که این پسورد فقط برای 24 ساعت اولیه فرایند نصب کار می‌کنه و بعد از 24 ساعت به طور اتوماتیک پاک می‌شه و دیگه بهش دسترسی نخواهید داشت.

روش دوم - نصب با استفاده از docker-compose:

با استفاده از docker-compose شما می‌تونین به راحتی گیت‌لب خودتون رو نصب، کانفیگ و آپدیت کنین:

اولین مرحله نصب انجین داکر هستش که در مراحل بالاتر توضیح دادم، بعد از اینکه از نصب داکر مطمئن شدید، نوبت نصب docker-compose می‌رسه:

sudo curl -L &quothttps://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)&quot -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

و با استفاده از دستور

docker-compose --version

مطمئن می‌شیم که مراحل نصب رو درست رفتیم و docker-compose نصب شده و در نهایت می‌ریم سراغ نصب گیت‌لب:

اول از همه یک فایل به اسم docker-compose.yml می‌سازیم که قراره کانفیگ های گیت‌لب سرور خودمون رو داخلش بنویسیم:

version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com'
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size: '256m'

داخل کانفیگ بالا gitlab.example.com رو با FQDN خودمون جایگزین می‌کنیم.

و در نهایت:

docker-compose up -d

و دوباره مثل مراحل نهایی نصب با استفاده از انجین داکر بعد از اینکه کار دانلود و اجرا تموم شد، آدرس FQDN خودتون رو داخل مرورگر بزنین و وب گیت‌لب باز می‌شه:)

برای به دست آوردن پسورد ادمین اصلی، از دستور زیر استفاده کنین:

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

حالا می‌تونین با استفاده از نام کاربری root و پسوردی که به دست آوردین وارد پنل ادمین گیت‌لب بشین.

دقت کنین که این پسورد فقط برای 24 ساعت اولیه فرایند نصب کار می‌کنه و بعد از 24 ساعت به طور اتوماتیک پاک می‌شه و دیگه بهش دسترسی نخواهید داشت.