踏み台サーバを経由した時のGitLabの設定が想定よりハマりました。その時の設定方法のメモ書きです。
sslとかsshについては今回は設定していません。
構成
今回の構成です。
- GitLabはリモートサーバ上でDockerを使って起動します。
- リモートサーバは
8080ポートをDockerコンテナの80番にフォワードします。 - 踏み台サーバは
8888番で受けたリクエストをリモートサーバの8080番にSSHでトンネリングします。
手順
1. リモートサーバでのGitLabの起動
今回はGitLabのDocker Imageを使用しました。
まずはdocker-compose.yamlの作成です。
version: '3.9'
services:
image: gitlab/gitlab-ee:15.1.2-ee.0
ports:
- 8080:80
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://ip.address.of.jump:8888'
nginx['listen_port'] = 80
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
restart: always
- リモートサーバの
8080ポートをDockerコンテナの80番に割り当てます。 -
external_urlはGitLabのUIに表示されるURLです。
踏み台サーバを経由してアクセスするため、踏み台サーバのIPアドレスip.address.of.jumpとポート8888を使用します。 -
nginx['listen_port']は80番を使用します。
デフォルトではNGINXのポートはexternal_urlの値で決まるため、external_urlとNGINXのポートが異なるときはnginx['listen_port']を指定する必要があります (参考: https://docs.gitlab.com/omnibus/settings/nginx.html#setting-the-nginx-listen-port)。
下記コマンドで起動します。
sh user@remote$ docker compose up -d
GitLabの準備は完了です。
2. 踏み台サーバでのポートフォワード
続いてsshコマンドを用いてポートフォワードを行います。
とりあえず踏み台サーバで鍵ペアを作成してリモートサーバに配置しましょう。
詳しくは省略しますが、踏み台サーバ上でssh-keygenで鍵を作成し、公開鍵some_key.pubの値をリモートサーバの.ssh/authorized_keyに書き込みましょう。
下記コマンドでポートフォワードを行いました。
nohup ssh -N -p 22 someuser@ip.address.of.remote -L 8888:localhost:8080 -g &
-
nohup ... &バックグラウンドでコマンドを実行するためのコマンドです。 -
-Nはリモートコマンドを実行しないためのオプションです。
ssh -N -p 22 someuser@ip.address.of.remote -L 8888:localhost:8080 -gを実行するとオプションの意味がわかるでしょう。 -
-Lはローカルフォワードのオプションです。
ローカル(踏み台)の8888ポートをリモート(ip.address.of.remote) の8080ポートにフォワードしています。
この時、-L 8888:localhost:8080のlocalhostはssh先、つまりリモートサーバ上でのlocalhostを指すようです (参考) 。 -
-gオプションをつけないと、踏み台サーバからのアクセスしかフォワードされません。
3. ブラウザからアクセス
ブラウザに http://ip.address.of.jump:8888を打ち込んでアクセスしてください。
502が表示されるときはもう少し待ちましょう。
テキトーなリポジトリのクローン先のURLを確認しましょう。
踏み台サーバのアドレスになっていればOKです。
TANUKIアイコンが少したぬきらしくなりましたね。
おわり
以上、踏み台サーバを経由してGitLabをホストする方法でした。
![[Laptop PC] -> 8888[踏み台] -> 8080[GitLab Server 80[GitLab Docker]]](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F166754%2F7c5fa6ec-cc9a-3182-dc0e-455504001a46.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=cd4a4822478883332fd6b09eaa778a96)