LoginSignup
2
1

More than 1 year has passed since last update.

踏み台サーバを経由してGitLabをホストした

Last updated at Posted at 2022-07-16

踏み台サーバを経由した時のGitLabの設定が想定よりハマりました。その時の設定方法のメモ書きです。
sslとかsshについては今回は設定していません。

構成

今回の構成です。

[Laptop PC] -> 8888[踏み台] -> 8080[GitLab Server 80[GitLab Docker]]

  • GitLabはリモートサーバ上でDockerを使って起動します。
  • リモートサーバは8080ポートをDockerコンテナの80番にフォワードします。
  • 踏み台サーバは8888番で受けたリクエストをリモートサーバの8080番にSSHでトンネリングします。

手順

1. リモートサーバでのGitLabの起動

今回はGitLabのDocker Imageを使用しました。

まずはdocker-compose.yamlの作成です。

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:8080localhostはssh先、つまりリモートサーバ上でのlocalhostを指すようです (参考) 。
  • -gオプションをつけないと、踏み台サーバからのアクセスしかフォワードされません。

3. ブラウザからアクセス

ブラウザに http://ip.address.of.jump:8888を打ち込んでアクセスしてください。
502が表示されるときはもう少し待ちましょう。

テキトーなリポジトリのクローン先のURLを確認しましょう。
踏み台サーバのアドレスになっていればOKです。

TANUKIアイコンが少したぬきらしくなりましたね。

おわり

以上、踏み台サーバを経由してGitLabをホストする方法でした。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1