概要
SynologyのNASには,GitLabを動作させることができるモデルがあります. 既定ではGitLab Pagesは無効になっていますが,環境変数を設定することで有効にすることができます. 本記事では,この環境変数の設定例を紹介します.
開発環境
製品型番 | DS918+ |
---|---|
DSM | 6.2.4-25556 Update 2 |
GitLab | Version: 13.12.2-0073 |
前提条件
GitLabは,下記のように http://hogehoge.internal:30000/ でログインできるようにGitLabの環境変数とDNSサーバを設定済みとします.
可変 | 値 |
---|---|
GITLAB_HOST | hogehoge.internal |
GITLAB_PORT | 30000 |
設定方法
Gitlab Pages Access Control用の情報を取得する
下記リンクの説明を参照して,GitLabの管理者エリア > アプリケーションで設定を行います.
-
Gitlab Pages Access Control - sameersbn/docker-gitlab at 59a8d0ac5d89674c2b7a915b7b05390300a31993
- 名前: GitLab Pages
- Redirect URI: http://projects.pages.hogehoge.internal:30000/auth
- Trusted: チェックを外す
- 非公開: チェックを入れる
- スコープ: apiにのみチェックを入れる
DNSサーバの設定を変更する
GitLab Pages用にAリソースレコードおよびAAAAリソースレコードを追加します.
名前 | 情報 |
---|---|
名前 | *.pages.hogehoge.internal. |
情報 | Synology NASのIPアドレス |
GitLabを停止させる
環境変数を変更するので,GitLabを一時停止します.DSM上でGitLabはDockerコンテナとして動作しています. GitLabのDockerコンテナはDockerのUIからも停止できますが,GitLabは3つのDockerコンテナで構成されているので,私は念のためパッケージセンターのGitLabのメニューから停止するようにしています.
DSMにログインしてパッケージセンターを開き,「インストール済」タブからGitLabをクリックします.GitLabは実行中になっているので,「停止」をクリックしてこれを停止します. 「このパッケージを停止しますか?」と聞かれるので「はい」をクリックします.
Dockerコンテナの編集画面を開く
次にDokcerを開きます.「synology_gitlab」で始まる3つのコンテナが停止していることを確認して,「コンテナ」タブで「synology_gitlab」を選択した状態で「編集」をクリックします.
環境変数を設定する
「編集 - synology_gitlab」ウィンドウが開くので,下表の新規追加します. なお,SynologyのGitLabはsameersbn/docker-gitlabをベースにしているようですので,このリポジトリの説明が参考になりました.
可変 | 値 |
---|---|
GITLAB_PAGES_ENABLED | true |
GITLAB_PAGES_DOMAIN | pages.hogehoge.internal |
GITLAB_PAGES_PORT | 30000 |
GITLAB_PAGES_ACCESS_CONTROL | true |
GITLAB_PAGES_ACCESS_CONTROL_SERVER | http://hogehoge.internal:30000/ |
GITLAB_PAGES_ACCESS_CLIENT_ID | アプリケーションID欄に表示されている文字列 |
GITLAB_PAGES_ACCESS_CLIENT_SECRET | 秘密欄に表示されている文字列 |
GITLAB_PAGES_ACCESS_REDIRECT_URI | http://projects.pages.hogehoge.internal:30000/auth |
GitLabを再開させる
再びパッケージセンターを開き,「インストール済」タブからGitLabをクリックします.GitLabは停止になっているので,これを再開します. 再開してからGitLabにが起動してアクセス可能になるまではしばらくかかります.
これでGitLab Pagesが有効になりました.管理者エリアのダッシュボードでGitLab Pagesにチェックボックスが入っていることを確認します.