羣暉DS218+部署GitLab

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos
內容:所有原創文章分類彙總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

起因是懶

最近開始折騰GitLab的CI功能,就打算在家部署一個GitLab,通常做法是打開電腦,啓動GitLab,用完再關閉電腦,總覺得這些操作挺麻煩(您想罵我懶麼?您罵得對…)

羣暉解決煩惱

  1. 家裏有臺羣暉DS218+,從不關機,爲全家提供穩定的圖片和視頻服務,之前已在上面部署了maven私服、MySQL,運行得很穩定,今天就把GitLab也部署在上面吧,今後可以隨時想用就用,算得上懶人救星了。
  2. 下圖是DS218+剛買來的樣子,兩塊NAS硬盤,一直在穩定服務:
    在這裏插入圖片描述
  3. 下圖是網購的內存條,現在一共2+8=10G內存,內存充足纔是敢折騰的底氣:
    在這裏插入圖片描述

前文鏈接

之前折騰羣暉的記錄:

  1. 羣暉DS218+部署mysql
  2. 羣暉DS218+部署kafka
  3. 羣暉DS218+做maven私服(nexus3)
  4. K8S使用羣暉DS218+的NFS
  5. 羣暉DS218+部署Harbor(1.10.3)

思路

其實操作很簡單:GitLab的部署是基於docker-compose的,羣暉已帶有docker-compose了,按照官方的部署指南操作即可,以下幾處是要注意的地方:

  1. 部署操作需要管理員權限,所以不在網頁上操作了,而是SSH登錄後臺進行操作;
  2. GitLab最好是用域名訪問,如果用IP就意味着文件訪問地址中帶有IP,一旦IP變了,原有的文件訪問地址就無效了

環境信息

  1. 羣暉系統:DSM 6.2.2-24922 Update 4
  2. GitLab:Community Edition 13.0.6

配置host

GitLab中的文件都有訪問地址,用GitLab服務器的IP作爲這個地址顯然是不合適的(如果GitLab服務器的IP變了這個文件的訪問地址就無效了),所以以下兩點需要滿足:

  1. 爲GitLab服務器準備域名,這裏就是給羣暉的IP地址準備域名:gitlab.synology.com
  2. 確保羣暉自己能通過域名訪問到GitLab
  3. 確保所有訪問者都能通過域名訪問到GitLab
  4. 一般是修改訪問者的hosts文件來達到域名訪問的目標,我這裏爲了省事兒,是在路由器裏配置的:192.168.50.43 gitlab.synology.com

允許SSH登錄

先要設置允許SSH後臺登錄:

  1. 如下圖紅框的操作:
    在這裏插入圖片描述
  2. 如下圖,勾選啓用SSH功能,端口就用22:
    在這裏插入圖片描述
  3. 現在用SSH終端即可登錄羣暉了,我這裏是在windows電腦上用Xshell6登錄的,您可以選用任意SSH終端工具,賬號密碼就是能登錄羣暉的賬號密碼,如下圖,登錄後,就可以使用日常的linux命令了:
    在這裏插入圖片描述
  4. 注意上圖的紅框,登錄賬號的home目錄是/var/services/homes/zq2599

部署

  1. 創建docker-compose.yml文件,內容如下(大多數內容可以直接使用,需要修改的地方稍後會說):
version: '2.3'

services:
  redis:
    restart: always
    image: redis:5.0.9
    command:
    - --loglevel warning
    volumes:
    - redis-data:/var/lib/redis:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:11-20200524
    volumes:
    - postgresql-data:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm

  gitlab:
    restart: always
    image: sameersbn/gitlab:13.0.6
    depends_on:
    - redis
    - postgresql
    ports:
    - "10080:80"
    - "10022:22"
    volumes:
    - gitlab-data:/home/git/data:Z
    healthcheck:
      test: ["CMD", "/usr/local/sbin/healthcheck"]
      interval: 5m
      timeout: 10s
      retries: 3
      start_period: 5m
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Kolkata
    - GITLAB_TIMEZONE=Kolkata

    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false

    - GITLAB_HOST=gitlab.synology.com
    - GITLAB_PORT=10080
    - GITLAB_SSH_PORT=10022
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string

    - GITLAB_ROOT_PASSWORD=
    - GITLAB_ROOT_EMAIL=

    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false

    - GITLAB_EMAIL=[email protected]
    - GITLAB_EMAIL_REPLY_TO=[email protected]
    - GITLAB_INCOMING_EMAIL_ADDRESS=[email protected]

    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00

    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=[email protected]
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=[email protected]
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false

    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout

    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=

    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=

    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=

    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=

    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=

    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=

    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=

    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=
    - OAUTH_AUTH0_SCOPE=

    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

volumes:
  redis-data:
  postgresql-data:
  gitlab-data:
  1. 上述配置中,有四處地方需要您修改;
  • 第一處:gitlab.ports,這裏用宿主機的10080端口映射容器的http端口,宿主機的10022端口映射容器的ssh端口
  • 第二處:gitlab.environment.GITLAB_PORT,要和前面映射的10080端口一致,這樣GitLab上的文件url中會帶有10080端口,確保在網頁上可以正常訪問文件
  • 第三處:gitlab.environment.GITLAB_SSH_PORT,要和前面映射的10022端口一致,這樣GitLab上給出的倉庫地址中會帶有10022,您在客戶端使用git clone命令時才連接GitLab成功
  • 第四處:gitlab.environment.GITLAB_HOST,配置成前面準備好的host:gitlab.synology.com
  • 其他參數我這裏暫時無需修改,請您自己酌情調整,參考文檔:https://github.com/sameersbn/docker-gitlab
  1. 再次確認羣暉上的域名是可以訪問的(192.168.50.43是羣暉的IP地址):
    在這裏插入圖片描述
  2. 執行命令sudo docker-compose up -d,完成GitLab的部署和啓動;
  3. 等待啓動成功,羣暉的硬件性能一般,我這裏大約等待10分鐘左右(期間網頁訪問會出現502錯誤,等啓動成功後就好了);
  4. 啓動成功後,訪問地址http://gitlab.synology.com:10080,會提示設置root賬號的密碼:
    在這裏插入圖片描述
  5. 設置好密碼後,就可以用root賬號登錄了:
    在這裏插入圖片描述
  6. 如下圖,請另外註冊一個賬號,在後面的實際操作中用到,我這邊註冊賬號是zq2599,郵箱[email protected]
    在這裏插入圖片描述

驗證:創建項目

  1. 用新建賬號登錄,點擊Create a project
    在這裏插入圖片描述
  2. 新建倉庫的信息如下:
    在這裏插入圖片描述
  3. 在新倉庫的頁面,下圖紅框中是該倉庫的地址,請記下來,稍後用到:
    在這裏插入圖片描述

驗證:提交代碼

  1. 找一臺電腦來驗證提交代碼,我這裏找了個CentOS7服務器;
  2. 安裝git:yum install -y git
  3. 創建ssh key,執行ssh-keygen -t rsa -C “[email protected]”,然後一路回車:
    在這裏插入圖片描述
  4. 賬號和郵箱做全局配置,執行如下命令:
git config --global user.name "zq2599" \
&& git config --global user.email [email protected]
  1. 將文件~/.ssh/id_rsa.pub的內容完整複製到如下位置:
    在這裏插入圖片描述
  2. 回到客戶端機器上,克隆項目試試:
git clone ssh://[email protected]:10022/zq2599/test001.git
  1. 如下圖,代碼下載成功:
    在這裏插入圖片描述
  2. 再來試試修改內容能否成功提交,操作命令如下圖所示:
    在這裏插入圖片描述
  3. 再去網站上看看,內容已經成功提交:
    在這裏插入圖片描述
    至此,羣暉服務器上已成功安裝了GitLab,接下來可以愉快的折騰GitLab CI了;

歡迎關注我的公衆號:程序員欣宸

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章