0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxy内にGROWIインスタンスを立てるには

0
Posted at

はじめに

以前、職場でproxyの内側にOSSのGROWIインスタンスを立てる記事を投稿しました。

GROWI v7.5.0からgrowi-docker-composeの構成が変更されてproxy設定の方法が変わりましたので修正版を投稿いたします。GROWI以外の設定は同じですが記載しておきます。

環境は下記です。

# OS UbuntuServer 26.04LTS
# Docker version 29.5.2
# GROWI 7.5.5
# proxy設定 http://proxy.example.co.jp:12380(各自の環境による)

# docker composeでGROWIを立ち上げる方法とする
$ cd /
$ sudo git clone https://github.com/growilabs/growi-docker-compose.git growi
$ cd growi
$ sudo docker compose up -d

自分の職場はhttpとhttpsのproxyは共通でしたが、環境によるかも。
環境によってはユーザ名、パスワードも記述必要。

Ubuntu Server設定

aptのproxy設定

Ubuntu Server 26.04LTSの場合はISOからのインストール中にproxy設定を入力するステップがありますので、そこで入力します。

http://proxy.example.co.jp:12380

ここで入力したものは、/etc/apt/apt.conf.d/90curtin-aptproxyに反映されるのでaptの設定ファイルを触らずに済みます。インストール時に設定しなかった場合はあとで自分で設定して下さい。

$ sudo cat /etc/apt/apt.conf.d/90curtin-aptproxy
Acquire::http::Proxy "http://proxy.example.co.jp:12380";
Acquire::https::Proxy "http://proxy.example.co.jp:12380";
$

Ubuntuインストールの余談

UbuntuServer 26.04LTSをVirtualBoxで25GBのストレージにインストールしたところ、デフォルトだとアサインされないストレージ領域がたくさん残って、ファイルシステムが小さくてdocker composeでGROWIをダウンロードできませんでした。インストール時にストレージ設定を変えて余り領域をルートにアサインしておく方がいいです。(後からアサインできるけど)

bashのproxy設定

一般ユーザでsudo docker composeを実行する場合→ ~/.bashrc
sudo suでrootになってから実行する場合→ /root/.bashrc
の最後に環境変数として追記します。

export http_proxy="http://proxy.example.co.jp:12380"
export https_proxy=$http_proxy

一般ユーザでsudo実行する場合は、/etc/sudoers.d/proxyに下記を記述して環境変数が引き継がれるようにします。(docker engineのインストールやElasticsearchのイメージ作成などで引っかかります)
UbuntuServer 26.04LTSのsudoは24.04LTSでは使えていた-Eオプションで環境変数を引き継ぐことができなくなったようです。

$ sudo cat /etc/sudoers.d/proxy
Defaults env_keep = "http_proxy https_proxy"

~/.bashrcに設定した環境変数を現在のbashに反映するには下記を実行します。

$ source ~/.bashrc

gitのproxy設定

UbuntuServer 26.04LTSではgitが最初から入っています。コマンドラインでproxy設定します。

$ sudo git config --global http.proxy http://proxy.example.co.jp:12380
$ sudo git config --global https.proxy http://proxy.example.co.jp:12380

設定を確認するには

$ sudo git config --global --list

docker engineのインストール

apt, snapなどでインストールできるという記事もあるのですが、snapでインストールしてもうまく動かなかったので本家のインストール手順を踏むのが無難です。

動作確認でhello-worldを実行した場合、コンテナ・イメージなど残っているものを削除しておいた方がよいです。

dockerのproxy対応

$ sudo systemctl edit docker

で設定ファイルを編集し、3行目以降に下記2行を記入して閉じる。

[Service]
Environment = 'http_proxy=http://proxy.example.co.jp:12380' 'https_proxy=http://proxy.example.co.jp:12380'

dockerへ反映させるため、下記を実行

$ sudo systemctl stop docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

GROWIのproxy設定

GROWIのコンテナ内部からのproxyアクセスは、Elasticsearchがpluginをインストールする時に必要になります。v7.4.7まではElasticsearchのDockerfileに記入していたのですが、v7.5.0からそのDockerfileがなくなったため、composeファイルに設定します。
コンテナ内のElasticsearchにproxy設定を渡すためにはCLI_JAVA_OPTSという環境変数を利用します。
docker-compose.ymlファイルを開いて、elasticsearchのenvironment:というセクションに環境変数を追記します。
proxy以外のdocker-compose.ymlの修正は必要に応じて行って下さい。

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:9.3.3
    # For Elasticsearch 8.x
    # image: docker.elastic.co/elasticsearch/elasticsearch:8.19.14
    environment:
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"  # increase amount if you have enough memory
      - LOG4J_FORMAT_MSG_NO_LOOKUPS=true # CVE-2021-44228 mitigation for Elasticsearch <= 6.8.20/7.16.0
      - "CLI_JAVA_OPTS=-Dhttp.proxyHost=proxy.example.co.jp -Dhttp.proxyPort=12380 -Dhttps.proxyHost=proxy.example.co.jp -Dhttps.proxyPort=12380" # proxy設定

【参考】

Compose 内の環境変数 ? Docker-docs-ja 24.0 ドキュメント

Other command line parameters | Elasticsearch Reference

GROWI起動

以上のproxy設定を全部済ませればGROWIを起動できるはずです。

$ cd /opt/growi
$ sudo docker compose up -d

[補足]

dockerのproxy設定

参考記事

dockerの内部IPアドレス変更

実在するIPアドレスとdockerが使用する内部ネットワークのIPアドレスが被った場合は、/etc/docker/daemon.jsonというファイルを作成して変更できます。(ここではIT部門から指定された、他と被らないアドレスである10.123.0.0/16を使用するものとします)
まずはdockerを停止

# systemctl stop docker

/etc/docker/daemon.jsonファイルを作成

{
    "default-address-pools":[
        {
            "base":"10.123.0.0./16",
            "size":24
        }
    ]
}

docker再起動

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

その他もろもろ

  • docker composeコマンドを使う時は、docker-compose.ymlファイルの置かれたディレクトリで実行する(up, down, start, stopなどの操作の時)
  • docker-compose.ymlファイルを編集する場合は $ sudo docker compose down でコンテナを停止・消去してから行う
  • docker-compose.ymlファイルを修正してエラーが出たときは、YAMLチェッカーで文法チェックするとよい。例えば下記

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?