zaki work log

作業ログやら生活ログやらなんやら

セルフホスト版GitLabの初期パスワード未設定時の設定方法が変わっていたのでメモ

年末にGitLabのコンテナレジストリが必要になったので久しぶりにローカルに新しくver16.6をDocker Composeで構築したら、初回アクセス時のrootの初期パスワード設定を行う画面が表示されることなくログイン画面に遷移してどうすればよいかわからず戸惑ったため、GitLabの初期パスワードについて簡単にまとめ。

調べた感じでは、rootの初期パスワードの「未設定の場合は初回起動時にランダムにセットされる」という動作はver14で導入された模様。

gitlab.com

gitlab.com

デプロイ後の初期パスワードの確認

rootの初期パスワードを未設定でデプロイした場合、コンテナ内の/etc/gitlab/initial_root_passwordに生成された初期パスワードが保存される。
下記の場合、初期パスワードはnL4VngugEu5VqoxQUNcZPE5ke284JuOZd6N1r0EtmNE=になる。

$ docker compose exec gitlab-ce.jp-z.jp cat /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 first time (usually, the first reconfigure run).
#          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: nL4VngugEu5VqoxQUNcZPE5ke284JuOZd6N1r0EtmNE=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

ただし注意点として、このファイルはGitLab初回起動から24時間経過後の再起動時(だよね?24時間経過で消える、ではなく)に消去されるので注意。(ホストOSにコピーなどしておこう)

The password file is automatically deleted in the first container restart after 24 hours.

docs.gitlab.com

初期パスワードを最初から設定する

環境変数 GITLAB_ROOT_PASSWORD にセットしてデプロイする。
composeファイルにするとこんな感じ。

    environment:
      GITLAB_OMNIBUS_CONFIG: "external_url 'https://gitlab-ce.jp-z.jp:8443'; nginx['listen_port']=8443; gitlab_rails['gitlab_shell_ssh_port'] = 25022; gitlab_rails['registry_enabled']=true; registry_external_url 'https://gitlab-ce.jp-z.jp:25000'"
      GITLAB_ROOT_PASSWORD: curry_tabetai

この設定でデプロイされたGitLabは、rootの初期パスワードがcurry_tabetaiになる。
(この場合/etc/gitlab/initial_root_passwordファイルは作成されない)

環境変数以外でも/etc/gitlab/gitlab.rbの設定でいけるっぽい(未確認)

gitlab_rails['initial_root_password'] = '<my_strong_password>'

パスワードリセット

どうしてもパスワードがわからない場合は、シェルを起動してコマンドを使ったリセットは可能。

$ docker compose exec gitlab-ce.jp-z.jp bash
root@gitlab-ce:/# gitlab-rake "gitlab:password:reset"
Enter username: root
Enter password: 
Confirm password: 
Password successfully updated for user with username root.
root@gitlab-ce:/# 

これで新しくセットしたパスワードでログインできる。
(ユーザー名も指定できるのでどのユーザーのパスワードでもリセットできるはず)


いやぁ、、ver14って2年半前にリリースされたバージョンみたい。ずいぶん使ってなかったんだな。。

about.gitlab.com

Composeファイル

使ったComposeファイルは以下。
事前に /opt/gitlab-cert に証明書ファイルを作成しておく。

---
services:
  gitlab-ce.jp-z.jp:
    image: gitlab/gitlab-ce:16.8.1-ce.0
    hostname: gitlab-ce.jp-z.jp
    restart: always
    ports:
      - "8443:8443"
      - "25000:25000"
      - "25022:22"
    environment:
      GITLAB_OMNIBUS_CONFIG: "external_url 'https://gitlab-ce.jp-z.jp:8443'; nginx['listen_port']=8443; gitlab_rails['gitlab_shell_ssh_port'] = 25022; gitlab_rails['registry_enabled']=true; registry_external_url 'https://gitlab-ce.jp-z.jp:25000'"
      GITLAB_ROOT_PASSWORD: curry_tabetai
    volumes:
      - /opt/gitlab-tmpdata/config:/etc/gitlab:Z
      - /opt/gitlab-tmpdata/logs:/var/log/gitlab:Z
      - /opt/gitlab-tmpdata/data:/var/opt/gitlab:Z
      - /opt/gitlab-tmpdata/registry:/var/opt/gitlab/gitlab-rails/shared/registry:Z
      - /opt/gitlab-cert:/etc/gitlab/ssl
    networks:
      - gitlab-network
  gitlab-runner:
    image: gitlab/gitlab-runner:v16.7.1
    restart: always
    volumes:
      - /opt/gitlab-runner/config:/etc/gitlab-runner:Z
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/gitlab-cert:/etc/gitlab-runner/certs
    networks:
      - gitlab-network

networks:
  gitlab-network:

GitLab with Docker Compose関連エントリ

zaki-hmkc.hatenablog.com

zaki-hmkc.hatenablog.com