プライベートで 使う Gitサービス を GitLab on dockerで 構築する。

設定ファイルなどを git 管理するために GitLab を dockerコンテナ として構築します。
情報が漏洩するリスクを低減するのが目的です。

dockerホストは ubuntu24.04 です。

https://qiita.com/shooskay/items/fd4439856d7a5137b372

GitLab は 会社でつかってますが、 プライベートで使うのは初めてです。
会社のは 専門チームが構築・運用していて 私はユーザとして使っています。

今回参考にする 記事は ↓です。

https://gitlab-docs.creationline.com/ee/install/docker.html

最初にデータの永続化ポイントを作成します。
```text
teto@antlers:/var/opt$ sudo mkdir gitlab
[sudo] teto のパスワード:
teto@antlers:/var/opt$ ls
gitlab
teto@antlers:/var/opt$ cd gitlab/
teto@antlers:/var/opt/gitlab$ pwd
/var/opt/gitlab
```

この永続化ポイントを 環境変数に 登録します。

```text
export GITLAB_HOME=/var/opt/gitlab
echo export GITLAB_HOME=/var/opt/gitlab >>~/.bashrc
```

次に docker-compose.yml を 作成します。
プライベートIPなので DNS の設定がないので 直接IPアドレスを書きます。
ポート番号は ちょっとずらしておきます。
参考にした ページには version行が あったけど 

```
teto@antlers:~/gitlab-docker$ docker compose build
WARN[0000] /home/teto/gitlab-docker/docker-compose.yml: `version` is obsolete
```
って 表示されたので 書かないことにしました。


```yaml:docker-compose.yml
services:
  web:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    hostname: '10.11.7.121'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://10.11.7.121:8000'
        gitlab_rails['gitlab_shell_ssh_port'] = 8022
    ports:
      - '8000:8000'
      - '8022:22'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size: '256m'
```


```
teto@antlers:~/gitlab-docker$ sudo docker compose pull
[sudo] teto のパスワード:
WARN[0000] The "GITLAB_HOME" variable is not set. Defaulting to a blank string.
WARN[0000] The "GITLAB_HOME" variable is not set. Defaulting to a blank string.
WARN[0000] The "GITLAB_HOME" variable is not set. Defaulting to a blank string.
[+] Pulling 10/10
 ? web Pulled                                                             69.3s
   ? 3c645031de29 Pull complete                                            1.0s
   ? 801c3ec7703e Pull complete                                            0.6s
   ? a4466746bd11 Pull complete                                            1.4s
   ? 137ac216511f Pull complete                                            1.4s
   ? 2440d366ccbf Pull complete                                            1.6s
   ? 96903552f0e1 Pull complete                                            1.9s
   ? c0f255011886 Pull complete                                            1.9s
   ? 417c5452b7d2 Pull complete                                            2.2s
   ? 2605a8d3a84d Pull complete                                           20.8s
   ```

あれ？ さっき 設定した 環境変数が 見えていないようです。
そうか sudo したらみえないよね。 -E オプションつけよう。

```
teto@antlers:~/gitlab-docker$ sudo -E  docker compose pull
[+] Pulling 1/1
 ? web Pulled
```
dockerコマンドを 実行できるようにしたほうが あとあと楽だな。ということで
```
sudo usermod -a -G docker teto
```
して dockerを再起動して

```
teto@antlers:~/gitlab-docker$ docker compose pull
[+] Pulling 1/1
 ? web Pulled
```

さて 起動します。
```
teto@antlers:~/gitlab-docker$ docker compose up -d
[+] Running 2/2
 ? Network gitlab-docker_default  Creat...                                 0.1s
 ? Container gitlab-docker-web-1  Start...                                 0.1s
```

初期パスワードを 取得しないといけません。
```
teto@antlers:~/gitlab-docker$ docker exec -it gitlab-docker-web-1 grep 'Password
:' /etc/gitlab/initial_root_password
Password: QFhapyAYP2TgCB0pa0CGTJeqBun2S/RlZ9DQhd1ruVo=
```
設定したURL にアクセスすると 
ちょっと待ってね 画面が ひょうじされ そのうち ログイン画面が ひょうじされる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125882/02151375-c661-2b6f-cfbc-3015c75cb656.png)

ここに ユーザ名 root  パスワードは 上で 取得したパスワードを入力してログインした。

さいしょに することは rootパスワードの 変更だ。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125882/ed899e77-73eb-75ff-aa89-8d3143c7f98a.png)

アバターアイコンを くりっくして Edit profile を クリックし、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125882/2233595c-5300-9868-6bbd-a6ee7d368b67.png)

Password を クリックすると パスワードが変更できる。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125882/0486e021-a7e2-fbce-4e3e-9e36b7938afe.png)

初期パスワードと 新しいパスワードを入力すると 変更できる。

変更が 成功したら ログイン画面に もどるので 新しい パスワードでログインしなおす。

つぎに 作業用の アカウントを作成する。

左下にある Admin Area から 管理者用の画面に 移動して

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125882/cab93009-d2ca-d984-1f53-a783bb8e5937.png)

User→New user で 新しいアカウントを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125882/c4b0f1e2-6849-9c7b-bf34-8139dfd87184.png)

Administrator にしておきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125882/d1ee2e08-abc2-4989-a901-edca21d28e85.png)

パスワードもてきとうなのを 設定して 
ログインしたら パスワード変更画面になりました。

ここまで設定できたら 運用開始でいいかな。

追記

SMTPサーバの 設定を かかないと ユーザの メールアドレスを変更できないことが判明した。

自分しかつかわないので SMTP無しで いいかな。
ということで コンテナの 外で 作業します。

```shell
sudo vi /var/opt/gitlab/config/gitlab.rb
```

gitlab.rb に 次の行を 追加して

```
gitlab_rails['smtp_enable'] = false
```

次のコマンドで 設定を 読み込みます。
```
docker exec -it gitlab-docker-web-1 gitlab-ctl reconfigure
```

ユーザのメールアドレス変更が メール無しで 実施できました。

次ですが、
設定を 変更したら ターゲットに 展開して 適用するみたいなことを 実現したいな。
GitLab Runner とか ansible つかえば できるかなぁ
それはまた 別の話ですね。