【2022-04-05 追々記】
つい先日、再度無料で構築すべく、同じ工程をやってみました。
下記リンクのほうが新しいコンソール画面にもなっているので、こちらも参考にして下さい。
https://daylifehack.com/gcp-redmine-371/
【2020/12/30 再び追記】結果的に無料だった
2020/03/14 に固定外部IP有料化と記事を更新しましたが、実質無料のようです。
有料に変更にはなったのですが、「無料」という扱いから「有料だけど、割引するよ」という形になったようです。
実質無料スタイルになったみたいですね。
概要
Redmine&docker-compose で、HTTPS を使いたいと思って調べたのですが、ドンピシャな情報がありませんでした。
Container-Optimized OS
にて docker-compose コンテナなど使って試行錯誤しましたが、上手く行かなかったので通常のVMにて。
GCP上の無料枠で構築。証明書がオレオレなので、半分くらい真面目な構築です。
小さいインスタンスの割に意外とサクサク動く HTTPS 無料 Redmine。
GCP は新規作成でなくともよいが、GCE の Always Free 枠が空いていることが前提です。(無料がいいなら)
GCP登録
GCE は作成するにあたって、無料トライアルを登録必須。
GCPプロジェクトを作成。
インスタンス作成
Compute Engine ページで VM 作成。
さて、GCE の無料枠は以下のように (2019-06-13 現在) 書いてあるので、当てはまるように。
今回は↓のようにしました。
ここで注意したいのが、ディスクの容量はデフォルト10Gになっていますが、30Gまで無料 なのでせっかくなら30Gに変更しましょう。
「720時間が無料」ということは、30日間無料。
31日まである月は、ご丁寧にここが744時間になります。
まずはスワップファイル作成
無事に VM が作成完了。
メモリが非常に少ないので、スワップで補います。
$ sudo fallocate -l 4G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
オレオレ証明書作成
次に、SSH で中に入り証明書を作成。
サクッといきます。
最後の工程は結構時間がかかる(ことが多い)。
$ mkdir -p ~/redmine-docker/volumes/redmine/certs
$ cd ~/redmine-docker/volumes/redmine/certs
$ openssl genrsa -out redmine.key 2048
$ openssl req -new -key redmine.key -out redmine.csr
.
.
.
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Shibuya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Redmine Test Corp.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:redmine.sample.local
Email Address []:
A challenge password []:
An optional company name []:
$ openssl x509 -req -days 3650 -in redmine.csr -signkey redmine.key -out redmine.crt
Signature ok
.
.
.
$ openssl dhparam -out dhparam.pem 2048
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.
.
.
タイムゾーンをJSTに
$ sudo apt-get install -y dbus
$ sudo timedatectl set-timezone Asia/Tokyo
docker と docker-compose をインストール
docker 公式手順 に従ってインストールします。
docker インストール
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io # ←気長に待つ
$ sudo usermod -aG docker $USER
ユーザーのdockerグループ追加の反映のために、ここで一旦SSHを抜ける (SSHウインドウを閉じる)。
そして再度SSHで中に。
$ docker run hello-world
.
.
.
Hello from Docker!
.
.
.
無事に docker のインストールが完了。
sudo なしで docker コマンドが実行できるようになりました。
ちなみに、docker グループへのユーザー追加はセキュリティの問題があるので注意しておきましょう。
詳しくは各自調べてください。
docker-compose インストール
$ sudo -i
# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# exit
$ docker-compose --version
docker-compose version 1.24.0, build 0aa59064
無事に docker-compose もインストールが完了。
Redmine 用の docker-compose.yml 作成
~/redmine-docker/docker-compose.yml
を作成します。
ブラウザ上のviで貼り付けようとすると (少なくとも私は) 上手くいかなかったので、右上の歯車アイコンから、作成したファイルを直接アップロードすると楽でした。
version: '2'
services:
postgresql:
image: sameersbn/postgresql:9.6-4
environment:
- DB_USER=redmine
- DB_PASS=password
- DB_NAME=redmine_production
redmine:
image: sameersbn/redmine:4.0.3-2
depends_on:
- postgresql
environment:
- TZ=Asia/Tokyo
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=redmine
- DB_PASS=password
- DB_NAME=redmine_production
- REDMINE_PORT=443
- REDMINE_HTTPS=true
- REDMINE_RELATIVE_URL_ROOT=
- REDMINE_SECRET_TOKEN=
- NGINX_HSTS_MAXAGE=2592000
- REDMINE_SUDO_MODE_ENABLED=false
- REDMINE_SUDO_MODE_TIMEOUT=15
- REDMINE_CONCURRENT_UPLOADS=2
- REDMINE_BACKUP_SCHEDULE=
- REDMINE_BACKUP_EXPIRY=
- REDMINE_BACKUP_TIME=
ports:
- 443:443
- 80:80
volumes:
- ./volumes/redmine/certs:/home/redmine/data/certs
ホームにアップロードされるので、 ~/redmine-docker/
内にファイルを移動します。
$ mv ~/docker-compose.yml ~/redmine-docker/docker-compose.yml
起動も気長に待ちましょう。
$ cd ~/redmine-docker/
$ docker-compose up -d
さて、GCEの外部IPのところをクリックしてアクセスすると…
オレオレ証明書のワンクッション。
詳細設定から「~ にアクセスする(安全ではありません)」を選択。
無事にオレオレ証明書を使用した Redmine が出来上がりました。
[参考]
https://sakura-bird1.hatenablog.com/entry/2019/03/12/034152
https://github.com/sameersbn/docker-redmine