Synology NAS DS920+ にGitlabを入れたらとても凄く苦労した話。(備忘録)

お久しぶりですasamiです。コロナ禍でも楽しく授業しつつ・・・趣味枠で更新。

年末年始に自宅のネット環境やらサーバー類を整理した所、大変苦労した話です。
学生時代からVPSやら自宅サーバーやらに四散五裂となっていたデータ(財産)やサービス達をいい加減まとめるかと思い立ち。
Raid+スナップショット+サーバー機能を持たせられるNASがあればもうそいつでいいや、と踏み切りました。

キーワード:
(ONU) pr400-mi
(ROUTER)Google Nest Wifi
(NAS)Synology DiskStation DS920+
Link:SYNOLOGY NASキット[ストレージ無 /4ベイ] DiskStation DS920+
※サービスをいくつか動かすのでメモリは上限8GBの積みました。Crusialあたりのメモリで上限突破して8Gとか積む人もいるようですが、動作確認はイマイチ怪しいようです。
このNASのデータが吹っ飛ぶとシャレにならないのでお高いですがSynologyu純正の4GBを積んで合計8GBに。


苦労した点は沢山あるわけですが、主に以下の5点です。

1.IPv6+環境だと個別のポート開放・割当が出来ない。 ※恐らくです。あまり調べていない。ISP側ではIPinIPに非対応。
2.ルーターをcisco 841M+juniper SRX220Hから、Google Nest Wifiに一本化したら操作性がちょっと悪い
3.独自ドメインをipv6に割り当てる事が出来ない
4.独自ドメインのDDNS
5.GitLabのhttps化

結論から行くと、NASのLAN1はipv4でpppoeにして、LAN2はNestWifi直下に繋げました。


pr400-miにPPPoEブリッジさせて、GoogleもIPoEもガン無視した所で1,2,3が速攻解決(?)しました。
まあ外向きはgitぐらいしか使わないので速度もいらんやろ、という楽観です。

何とSynalogyではDDNSがNASに搭載されているっていう。超便利。
私は昔からValuedomainで独自ドメインを管理しているので、DDNS更新用のURLを発行して、パラメーター部分をNASの変数に書き換えるだけでした。

例:https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=__USERNAME__&p=__PASSWORD__&h=_HOSTNAME_&i=__MYIP__
※図のように更新がない部分はそのまま数値を入力してもOK


んでいよいよGitLabの導入ですが、稼働までは特に問題なくクリック数回で終わりました。
ネット上でパッケージからの導入には不具合が~なんて記事を読んでいたんですが、私の環境(DSM6.2.3)では特に何事もなく。

GitLabの動作には以下の3点がポイントでした。
1.不要なポートを殺しておく

2.リバースプロキシで443と80番をDockerポート(30000)に転送


3.SSL証明書

こいつが割と手間でした。
SynologyのNASではLet’s Encryptの証明書がGUIから簡単に導入できるんですが・・・Dockerに反映させるのに少しばかり手間取りました。
NAS側で証明書の更新はしてくれるらいしので、定期的に手動でdockerにコピーしないとあかんのかね?
タスクかなんかで登録しておけばいいんだろうけれども。

サクッとコマンドを載せておきます。
※SSHでアクセスしてroot権限を取っておくこと

私の環境:
・「git.asami.chiba.jp」の証明書は/usr/syno/etc/certificate/_archive/8No0VA/ 以下にある。
・gitlabのインストール先は/volume1/docker/gitlab/gitlab/である。
・事前に docker/gitlab/gitlab/に「certs」ディレクトリを作成済み。

#sudo cp /usr/syno/etc/certificate/_archive/8No0VA/cert.pem /volume1/docker/gitlab/gitlab/certs/gitlab.crt
#sudo cp /usr/syno/etc/certificate/_archive/8No0VA/privkey.pem /volume1/docker/gitlab/gitlab/certs/gitlab.key
#cd /volume1/docker/gitlab/gitlab/certs/
#openssl dhparam -out dhparam.pem 2048

あとはGUI側での操作です。
GUIで操作するときには、GITLABを停止させておかねばなりませんが、
何故かDocker側からは停止できないので、パッケージマネージャーから停止させる必要があります。

・証明書の反映

・コンテナにSSL用のポート割当

・コンテナにSSL用の変数割当

とりあえずここまで!

Synology NAS DS920+ にGitlabを入れたらとても凄く苦労した話。(備忘録)” への2件のフィードバック

  1. mnishig のコメント:

    突然のコメント失礼します。
    もし Synology NAS リバースプロキシを使用できない事情がないなら、サーバ証明書はリバースプロキシに任せてコンテナの http に流せば、コンテナ側にコピーしないですみます。
    Docker のポート設定を Local: 8080 > 80, 8022 > 22 というような感じで設定し、
    リバースプロキシ
    ソース側をプロトコル: HTTPS, ホスト名: * , ポート: 8443
    デスティネーション側、プロトコル: HTTP, ホスト名: localhost , ポート: 8080
    というようにすると、NASの外 > 8443 > コンテナ外側 8080 > gitlab コンテナ 80 というようにデータが流れていきます。

    • asami(T) のコメント:

      確認が遅くて申し訳ない!情報Thanks!

      丁度Gitlabの更新パッケージが配付されまして、入れ直すところでした。
      記事の執筆当時は購入当日とかで全くSynologyNASのことを理解しておらず…。
      ネット上のブログを参考に四苦八苦しておりました。

      他サービスではリバースプロキシを使っていますゆえ、今回はご指摘いただいた方法を試してみます!ありがとうございます~!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です