GitLab無償版の5ユーザの制限が追加される
発表された制限内容
2023年6月22日以降、GitLabのサービスの無料プランで利用できるチーム開発人数が最大で5名に制限されるという発表がありました。
To increase efficiency, and ensure we can continue to offer the Free tier to small teams, we are limiting the number of users per top-level group with private visibility on the Free tier to 5 users. We will monitor how top-level groups with public visibility are using private projects to identify whether any limits on such projects are needed. These changes:
https://about.gitlab.com/blog/2022/03/24/efficient-free-tier/
GitLab社は2023/6/22以降、GitLab.com 無償版のネームスペースに5ユーザの制限を設ける
つまり、フリープランで今までできていた5人以上でのプロジェクト共有ができなくなってしまいます。
利用者としてはスモールスタートな案件の成果物管理で重宝していたのですが、サービス運営側からしたらカネにならないから制限をつけたのでしょうね。仕方のないことだと思います。
さて、どうしよう?
対処方法
- GitLab有償版に切り替え
- 自分でクラウド上にGitLabサーバを構築
手っ取り早いのはGitLabの有償サービスに切り替えてしまうのが簡単でよいのですが、GCPやAWSを使って自前で専用のGitLabサーバを構築することも可能です。
GitLabを使うのはシステムに詳しいエンジニアさんたちだと思うので、すでにAWSやGCPなどのクラウドプラットフォームサービスを使っているなら自前で立ててしまうのも一興です。
そんなわけで、今回はAWS上に自分たち専用GitLabサーバをインストールして使おうと思います。
自分たちだけの専用GitLabサーバを構築しよう
GitLabはGitLab-CE(Community Edition)というフリーで個人がサーバーにインストールしてサービスとして立ち上げることができるバージョンを提供してくれています。
いろいろなインストール方法があるのですが、今回は簡単にセットアップできてホスト環境を汚さないDockerコンテナ版を使いたいと思います。
Linuxサーバーのインスタンスを作成
EC2画面を表示する
まずはAWSのマネジメントコンソールにログインしてEC2の画面を表示します。
EC2の画面が開いたら、①でリージョンを指定して、②のインスタンスを起動ボタンを押して、Linuxのインスタンスを一つ立ち上げます。
インスタンスに名前をつけます。
OSイメージの選択
次に起動するインスタンスの設定をします。
設定が簡単なクイックスタート(①)を選択したら、好きなLinuxの種類を選択します。今回はGCPの場合も想定してどちらにでもあるUbuntuを選択(②)しました。
マシンイメージ(③)はUbuntuの22か20がよいでしょう。私は安定の20にしました。
アーキテクチャ(④)は64ビット一択です。
インスタンスタイプの選択
次はインスタンスタイプを決めます。無料枠のt2.microが初期選択されているのでこのまま無料でいきたいところなのですが、GitLabを動かすには4GBのメモリがないと安定しないので、t2.mediumを選択しました。数人で使う想定でこのサイズですので、もっと大人数で使う場合はこれより大きいインスタンスにしないとスペック足りないかもしれません。
キーペアの指定
SSHでインスタンスに接続する際に使用するキーペアです。既に作成済みの場合はそれを選択します。無い場合は新しいキーペアを作成します。
ネットワーク設定
既に適切なセキュリティグループが作成済みの場合は既存のセキュリティグループを選択します。まだない場合は、セキュリティグループを作成します(①)。
SSHトラフィックは許可します(②)。許可しないと外から操作できません。自分のIPを指定すると今設定操作中の環境からのみ接続できる設定をしてくれます。
HTTP/HTTPSトラフィックの許可(③)はどちらかまたは両方のチェックをつけます。ここにチェックつけないとGitLabサーバーを立ち上げても外部からブラウザで画面が開けません。
ストレージの設定
初期設定では、8GiBになっていますが、この設定だとちょっと利用するとすぐにストレージを使い切ってしまいます。数人で少し使う場合は10GiBぐらいにセットすると良いでしょう。
大人数で本格的に使う場合はもっと大きなサイズにしておいたほうが安全ですが、足りなくなってでもあとから簡単に増設できますので10GiBスタートでよいと思います。クラウドって便利ですよね。
インスタンス数を指定して起動
画面右側にインスタンス数を指定するところがあります(①)ので、作成したいインスタンス数を指定したら、インスタンスを起動(②)ボタンを押します。
インスタンス起動を開始しますので、少し待ったら右下のインスタンスを表示ボタンを押します。
インスタンス一覧画面が表示されたら、今作成したインスタンスが一覧に追加されていると思います。作成直後はステータスチェック欄が「初期化しています」と表示されていますので、完了するまで待ちます。
自動では表示が切り替わらなかったような気がするので、リロードボタンを押して確認します。
次のような表示になればインスタンス起動完了です。
インスタンスが生成できたら、SSHで接続して操作していきます。
SSHの接続方法が分からない方はこの記事の「起動したLinuxサーバにSSHでログイン」の章をご覧ください。
Dockerをインストール
必要なソフトを追加します。
$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
GPGキーの追加をします。これを実行して問題なければOKが表示されます。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
リポジトリを登録します。
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Dockerのインストールをします。
$ sudo apt install -y docker-ce
Dockerが正しくインストールできたかバージョンを表示して確認します。
$ sudo docker version | grep Ver
rootユーザ以外でもDockerを実行できるようにdockerグループに現在のユーザを追加します。
$ sudo usermod -aG docker `whoami`
docker-composeをインストール
Dockerコマンドをいちいち叩くのは大変なので、docker-composeを導入して自動化します。
$ sudo apt install -y docker-compose
GitLab環境構築用docker-compose.yaml作成
次にdocker-compose.yamlファイルを作成します。
gitlab:
container_name: gitlab01
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'localhost'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://13.114.235.20'
gitlab_rails['time_zone'] = 'Asia/Tokyo'
ports:
- '80:80'
- '2022:22'
volumes:
- '/docker/gitlab/config:/etc/gitlab'
- '/docker/gitlab/logs:/var/log/gitlab'
- '/docker/gitlab/data:/var/opt/gitlab'
external_urlの部分のIPは作成したインスタンスの外部IPアドレスを指定します。
GitLab起動
docker-composeでGitLabのコンテナを起動します。
$ docker-compose up -d
初回はGitLab-CEのコンテナイメージのダウンロードがありますので時間がかかりますが、自動で起動までするのであとは待つだけです。
これでGitLabのインストールと起動が完了しました。
GitLabログイン画面を表示
ブラウザから、docker-compose.yamlのexternal_urlで指定したURLにアクセスします。
今回の場合は、このアドレスです。http://13.114.235.20
おおお! GitLabが起動しました!
あなたたちだけの専用GitLabサーバの誕生です。
外から接続できない場合は、内部からHTTPリクエストを送って確認します。次のように表示された場合はGitLab自体が正常に起動できていないので、再度手順を確認してください。
ubuntu@ip-172-31-44-117:~$ curl http://localhost
curl: (7) Failed to connect to localhost port 80: Connection refused
これで502以外のHTMLが戻ってくるようならGitLabは正常に起動していますが、インターネット側からうまく接続できない状態だと思われます。次のポイントを確認してみてください。
管理者アカウントでログイン
さて、管理者でログインしてみましょう。
最近のGitLabはセキュリティの関係で管理者パスワードはインストール時に自動生成されてこのファイルに記載されています。
/etc/gitlab/initial_root_password
このファイルはGitLabのコンテナ内にあるのでdockerコマンドでコンテナに接続してパスワードが記載されたファイルを表示します。
$ docker exec gitlab01 cat /etc/gitlab/initial_root_password
この部分がパスワードです。
GitLabの管理者アカウント名は、rootです。パスワードはさきほど確認したものを指定してログインします。
認証情報が正しければ、このようにGitLabに管理者アカウントでログインできます。
あとは、GitLabを利用するユーザやプロジェクトをガンガン登録していきましょう。
管理者向け基本操作
GitLabコンテナ操作
GitLabのコンテナ状態確認
コンテナの起動状況を確認します。
$ docker-compose ps
実行するとコンテナの起動状況が表示されます。StatusがUpならコンテナ起動中で、Portsを見ると、ホストのどのポートがコンテナのどのポートに転送されているか確認できます。
ubuntu@ip-172-31-44-117:~$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------
gitlab01 /assets/wrapper Up (healthy) 0.0.0.0:2022->22/tcp,:::2022->22/tcp, 443/tcp,
0.0.0.0:80->80/tcp,:::80->80/tcp
ちなみにコンテナ停止状態の時はこのように表示されます。
ubuntu@ip-172-31-44-117:~$ docker-compose ps
Name Command State Ports
---------------------------------------------
gitlab01 /assets/wrapper Exit 137
GitLabコンテナ起動
GitLabのコンテナが停止している時は、次のコマンドでコンテナを起動できます。
$ docker-compose up -d
GitLabコンテナ停止・破棄
一時的にGitLabを止めたい場合は、次のコマンドでGitLabのコンテナを停止できます。
$ docker-compose stop
または
$ docker-compose down
docker-comopse downを実行するとコンテナを破棄してしまいますが、GitLabの設定やリポジトリは永続的にするためコンテナ外に外出してありますので、コンテナを破棄してもデータは消えないようにしています。
もう一度新しくGitLabを構築し直す
docker-compose downでコンテナを破棄し、/docker/gitlab01ディレクトリを削除して再度docker-composeし直せばOKです。
インスタンスを停止して課金を止める
GitLabコンテナが動作しているLinuxサーバのインスタンスを停止します。インスタンスは停止すると実行時間としては停止しますので課金がほぼ停止されます。
但し、ストレージは残っていますのでそれを維持コストや固定IPを割当している場合などは別途課金があるかもしれませんので詳細は料金を確認しましょう。
インスタンスを再起動する
GitLabの動作がおかしくなったり接続できない状態になった際、コンテナ再起動を行っても直らなかった場合はインスタンスを再起動することで改善できます。
OSから再起動するのでコンテナの再起動と比較すると時間がかかりますが、確実です。
GitLabサーバが不要になったのですべて消す
まとめ
いかがでしたか?
自前でGitLabサーバを立ててしまうのもアリだなーと思いました。SaaSのGitLab使ってもAWSでGitLabサーバ立ててもランニングコストかかるので、開発に専念したいorインフラエンジニアいない(または興味ない)ならSaaSの有料プランに切り替え。
インフラも興味あるし、自由にGitLabを触りたい、というならAWS上にGitLabサーバ立ててしまうのが面白いかなと思いました。
興味ある方は以前社内サーバー上に仮想Linuxサーバ立ててGitLabインストールしたことがありますのでこちらをご覧ください。
オマケ① HTTPS化
ドメインを取得するか、Let’s EncryptでフリーのSSL証明書を取得すればHTTPS化できます。個人や社内の一部で使うだけならオレオレ証明書でもよいと思います。
オレオレ証明書を使う場合のやり方はこちらで紹介しています。
オマケ② GitLabのバックアップ
GitLab.comのようなクラウドサービスを利用する場合は不要ですが、自前でGitLabサーバーを立ち上げてサービスする場合は、バックアップは必須です。
もしランサムウェアなどによってリポジトリが回復不可能になってしまうとバックアップがないともうどうにもなりません。
やり方はこちらで紹介しています。
コメント