環境
- Harbor Version v2.11.1-6b7ecba1
- Let’s Encrypt
- Unbound 1.19.2
- Docker Engine Community 28.0.1
証明書の発行
証明書発行手順(Let's Encrypt) を参照
Harborの設定
証明書ファイルをサーバーにアップロードする
設定ファイルを編集する
1
2
3
4
5
6
7
8
9
|
hostname: harbor.yourdomain.dev
http:
port: 80
https:
port: 443
certificate: /home/mao/yourdomain.dev/cert1.pem
private_key: /home/mao/yourdomain.dev/privkey1.pem
|
下記を実行して設定ファイルを再生成する
起動する
1
|
sudo docker compose up -d
|
DNS設定
DNS(Unbound)に追加する
キャッシュされるまで時間がかかる?
1
2
|
sudo systemctl restart unbound
sudo unbound-control reload
|
DNSに登録されているか確認する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
mao@mao (x86_64) : /home/mao
> traceroute harbor.yourdomain.dev
traceroute to harbor.yourdomain.dev (192.168.10.24), 30 hops max, 60 byte packets
1 192.168.10.24 (192.168.10.24) 0.403 ms 0.349 ms 0.332 ms
mao@mao (x86_64) : /home/mao
> dig harbor.yourdomain.dev
; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> harbor.yourdomain.dev
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62907
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;harbor.yourdomain.dev. IN A
;; ANSWER SECTION:
harbor.yourdomain.dev. 3123 IN A 192.168.10.24
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Mar 08 17:00:06 JST 2025
;; MSG SIZE rcvd: 72
|
Harborからpullできるか確認する
pullを実行するとエラーになった
1
2
3
|
mao@mao (x86_64) : /home/mao
> sudo docker pull harbor.yourdomain.dev/homelab/homelab-traefik:3.1.6
Error response from daemon: Get "https://harbor.yourdomain.dev/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority
|
エラーの対処法
証明書(公開鍵)と中間証明書を結合したものが必要なよう
一度止める
1
|
sudo docker compose down -v
|
設定ファイルを再度編集する
1
2
3
4
5
6
7
8
9
10
|
hostname: harbor.yourdomain.dev
http:
port: 80
https:
port: 443
- certificate: /home/mao/yourdomain.dev/cert1.pem
+ certificate: /home/mao/yourdomain.dev/fullchain1.pem
private_key: /home/mao/yourdomain.dev/privkey1.pem
|
- 証明書と中間証明書が結合された"fullchain1.pem"を使用するように編集する
- “certificate: /home/mao/yourdomain.dev/cert1.pem"ではなく
- “certificate: /home/mao/yourdomain.dev/fullchain1.pem"とする
下記を実行して設定ファイルを再生成する
起動する
1
|
sudo docker compose up -d
|
改めてpullしてみる
下記コマンドでpullをする
1
|
sudo docker pull harbor.yourdomain.dev/homelab/homelab-traefik:3.1.6
|
ちゃんとpullされたことが確認できた
1
2
3
4
5
6
7
8
9
10
|
mao@mao (x86_64) : /home/mao
> sudo docker pull harbor.yourdomain.dev/homelab/homelab-traefik:3.1.6
3.1.6: Pulling from homelab/homelab-traefik
43c4264eed91: Pull complete
f60fb4c0fbec: Pull complete
9a6d31097c4f: Pull complete
e5f06ee63d76: Pull complete
Digest: sha256:22aec04848987fe5b3999a4099d766de614b04da52a936fc5ac214ffec04dbac
Status: Downloaded newer image for harbor.yourdomain.dev/homelab/homelab-traefik:3.1.6
harbor.yourdomain.dev/homelab/homelab-traefik:3.1.6
|
これでHorborからhttpsでpullができたので、daemon.jsonファイルを編集しなくても使えるようになった
参考URL
- OSSのコンテナレジストリ「Harbor」を自己署名証明書でHTTPS通信させる
- HTTPS接続のトラブルシューティング
- Let’s Encrypt(無料SSL証明書)についてまとめ