差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

下次修改
前次修改
tech:gitlabtips [2021/01/18 11:42] – 建立 jonathantech:gitlabtips [2024/11/16 22:17] (目前版本) – 非正式 SSL 憑證 jonathan
行 1: 行 1:
 ====== GitLab 安裝相關紀錄 ====== ====== GitLab 安裝相關紀錄 ======
 +  * 安裝環境 : Alpine 3.20 + docker compose
  
-採用 docker image 的安裝希望可以安裝後就決定一些預期設定, 發現有 Omnibus 可以在啟動 docker 時就將設定傳入+===== docker compose (非正式 SSL 憑證) ===== 
 +  * docker-compose.yml <cli> 
 +services: 
 +  gitlab: 
 +    image: gitlab/gitlab-ce 
 +    container_name: gitlab 
 +    restart: always 
 +    hostname: 'git-demo.ichiayi.com' 
 +    environment: 
 +      GITLAB_OMNIBUS_CONFIG:
 +        # Add any other gitlab.rb configuration hereeach on its own line 
 +        external_url 'https://git-demo.ichiayi.com' 
 +    ports: 
 +      - '80:80' 
 +      - '443:443' 
 +      - '22:22' 
 +    volumes: 
 +      - './config:/etc/gitlab' 
 +      - './logs:/var/log/gitlab' 
 +      - './data:/var/opt/gitlab' 
 +    shm_size: '256m' 
 +</cli> 
 +  * 啟動服務 <cli> 
 +docker compose up -d 
 +docker compose logs -f 
 +</cli> 
 +  * 查看自動產生的 root 密碼 <cli> 
 +cat config/initial_root_password 
 +</cli>
  
-===== Gitlab docker 參數設定 ===== +===== docker compose (含 ACME 自更新 SSL 憑證) ===== 
-  * 採用 Gitlab 官方 docker image 版本 : 12.10.6 +  * 目錄配置<cli> 
-    * gitlab/gitlab-ce:12.10.6-ce.0 +. 
-  * GITLAB_OMNIBUS_CONFIG 可設定 +├── .env 
-    * gitlab 網址 : external_url -> http://git-demo.ichiayi.com +├── cloudflare.ini 
-    * 預設的 root 密碼 : initial_root_password -> <<Passwd_Is_Here>+├── docker-compose.yml 
-    CI/CD Pipeline : gitlab_default_projects_features_builds -> false +├── [config] 
-  * Docker +├── [data] 
-    * port 80 443 +├── [logs] 
-    * name : gitlab +├── [ssl] 
-    restart : 每次開機都自動啟動 +</cli> 
-    * Volume 掛載 :  +  * 建立 ssl 目錄與權限<cli> 
-      /etc/gitlab -> /NAS_dir/gitlab/config +rm -rf ssl/
-      /var/log/gitlab -/NAS_dir/gitlab/logs +mkdir -p ssl 
-      /var/opt/gitlab -/NAS_dir/gitlab/data +chmod 777 ssl 
-  * 實際執行的語法:<cli> +</cli
-sudo docker run --env GITLAB_OMNIBUS_CONFIG="external_url 'http://git-demo.ichiayi.com'; \ +  編輯 docker-compose.yml <file> 
-    gitlab_rails['initial_root_password'] = '<<Passwd_Is_Here>>'; \ +services: 
-    gitlab_rails['gitlab_default_projects_features_builds'] = 'false'" \ +  gitlab: 
-  --detach --publish 443:443 --publish 80:80 --name gitlab --restart always +    imagegitlab/gitlab-ce 
-  --volume /NAS_dir/gitlab/config:/etc/gitlab \ +    container_name: gitlab 
-  --volume /NAS_dir/gitlab/logs:/var/log/gitlab \ +    restart: always 
-  --volume /NAS_dir/gitlab/data:/var/opt/gitlab \ +    hostname: '${DOMAIN_NAME}' 
-  gitlab/gitlab-ce:12.10.6-ce.0+    environment
 +      GITLAB_OMNIBUS_CONFIG:
 +        external_url 'https://${DOMAIN_NAME}' 
 +        letsencrypt['enable'] = false 
 +        nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem" 
 +        nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem" 
 +        nginx['enable'] = true 
 +        nginx['redirect_http_to_https'] = true 
 +    ports: 
 +      - '80:80' 
 +      - '443:443' 
 +      - '9022:22' 
 +    volumes: 
 +      - './config:/etc/gitlab
 +      './logs:/var/log/gitlab' 
 +      - './data:/var/opt/gitlab
 +      './ssl:/etc/gitlab/ssl' 
 +    shm_size: '256m' 
 +    networks: 
 +      - gitlab-network 
 + 
 +  certbot
 +    image: certbot/dns-cloudflare:latest 
 +    container_name: certbot 
 +    volumes: 
 +      ./ssl:/etc/letsencrypt 
 +      - ./cloudflare.ini:/etc/secrets/cloudflare.ini:ro 
 +    entrypoint: "/bin/sh" 
 +    command: 
 +      - -
 +      
 +        trap exit TERM; 
 +        while :; do 
 +          certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/secrets/cloudflare.ini 
 +            -d ${DOMAIN_NAME} --non-interactive --agree-tos \ 
 +            -m ${CF_EMAIL} || true; 
 + 
 +          if [ -f /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem ]; then 
 +            cp /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem /etc/letsencrypt/fullchain.pem; 
 +            cp /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem /etc/letsencrypt/privkey.pem; 
 +            chmod 644 /etc/letsencrypt/fullchain.pem /etc/letsencrypt/privkey.pem; 
 + 
 +            apk add --no-cache curl 
 +            echo "Waiting for GitLab to be ready..." 
 +            until curl -s http://gitlab:80/-/health > /dev/null; do 
 +              sleep 5 
 +            done 
 + 
 +            echo "Reloading GitLab configuration..." 
 +            curl ---show-error --fail -X POST http://gitlab:80/-/api/v4/admin/application/settings/reload_without_downtime 
 +          fi 
 +          sleep 24h; 
 +        done 
 +    networks: 
 +      - gitlab-network 
 + 
 +networks: 
 +  gitlab-network: 
 +    driver: bridge 
 +</file> 
 +  * 編輯 .env 檔案 Exp<file> 
 +DOMAIN_NAME=gitlab.ichiayi.com #Gitlab 網址 
 +[email protected] #Cloudflare 帳號 
 +</file> 
 +  * 編輯 cloudflare.ini 檔案 Exp. <file> 
 +dns_cloudflare_api_token = kvm8***********************************o 
 +</file> 具有編輯 DNS 權限的 API Token , **不是Global API Key** 
 +  * 設定 .env 與 cloudflare.ini 權限 <cli> 
 +chmod 600 .env 
 +chmod 600 cloudflare.ini 
 +</cli> 
 +  * 啟動服務 <cli> 
 +docker compose up -d
 </cli> </cli>
  
 ===== 參考網址 ===== ===== 參考網址 =====
 +  * https://docs.gitlab.com/ee/install/docker/index.html
   * https://docs.gitlab.com/ee/ci/enable_or_disable_ci.html#site-wide-admin-setting   * https://docs.gitlab.com/ee/ci/enable_or_disable_ci.html#site-wide-admin-setting
 +  * https://gitlab.com/gitlab-org/gitlab/-/issues/25876
 +  * https://docs.gitlab.com/ee/api/settings.html
  
 {{tag>gitlab tips}} {{tag>gitlab tips}}
  • tech/gitlabtips.1610941339.txt.gz
  • 上一次變更: 2021/01/18 11:42
  • jonathan