年末にGitLabのコンテナレジストリが必要になったので久しぶりにローカルに新しくver16.6をDocker Composeで構築したら、初回アクセス時のrootの初期パスワード設定を行う画面が表示されることなくログイン画面に遷移してどうすればよいかわからず戸惑ったため、GitLabの初期パスワードについて簡単にまとめ。
調べた感じでは、rootの初期パスワードの「未設定の場合は初回起動時にランダムにセットされる」という動作はver14で導入された模様。
久しぶりにGitLab(ce)をDockerで建てたらrootパスワードの設定画面が出なくなってた。
— zaki (@zaki_hmkc) 2023年11月28日
自動生成されたパスワードがファイルに出力されるのでそれを手動で確認する形式になったみたい。しかも24時間で自動消去とな
GitLab Docker images | GitLab https://t.co/vUDom86hqD
デプロイ後の初期パスワードの確認
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.
初期パスワードを最初から設定する
環境変数 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年半前にリリースされたバージョンみたい。ずいぶん使ってなかったんだな。。
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: