Prywatny Docker Registry z połączeniami TLS terminowanymi na pfSense

Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał

Korzyścią z uruchomienia własnego docker registry są koszty i prywatność. Aby jednak używać go w różnych miejscach, trzeba zabezpieczyć połączenie z nim certyfikatami SSL/TLS. Jeśli masz tylko certyfikaty ZeroSSL lub LE, utrzymywanie certyfikatu zarówno na poziomie ACME/HAProxy w pfSense, jak i dodatkowo w docker registry gdzieś indziej może być trudne.

Na szczęście jest na to rozwiązanie.

Dodaj domenę swojego docker registry do wystawiania certyfikatu ACME jak zwykle. Uruchom docker registry bez przekazywania mu certyfikatu. Zamiast tego skonfiguruj domenę wskazującą na pfSense, najlepiej na adres inny niż WAN. Następnie skonfiguruj proxy-pass na poziomie Nginx:

Nginx
server {
  listen 80; 
  server_name registry.somedomain.com;
  ignore_invalid_headers off;
  client_max_body_size 0;
  proxy_buffering off;
 
  location / {
    access_log  /var/log/nginx/registry-somedomain-com.log;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    chunked_transfer_encoding off;
    proxy_pass http://a.b.c.d:5000/;
  }
}

Najważniejsze jest ustawienie X-Forwarded-Proto na https. Teraz możesz korzystać z docker registry działającego lokalnie i zapomnieć o konfigurowaniu odnawiania certyfikatu na poziomie samego registry.

Wersja Markdown

Wszystkie treści na tej stronie są udostępniane na licencji Uznanie autorstwa – Użycie niekomercyjne – Bez utworów zależnych 4.0 Międzynarodowe (CC BY-NC-ND 4.0). Cytuj jako: Michał Sobczak, „Prywatny Docker Registry z połączeniami TLS terminowanymi na pfSense”, 19 października 2023, https://michalasobczak.pl/pl/posts/private-docker-registry-with-pfsense-offloaded-tls-connections.html