Konfiguracja SSL na nowym serwerze - emkarcinos/WMIAdventure GitHub Wiki
Jeżeli chcemy postawić WMI Adventure na nowej maszynie wirualnej z nowym adresem i chcemy korzystać z HTTPS, musimy poprosić o certyfikat. Korzystamy obecnie z certbot
, który zarzdza certyfikatami z https://letsencrypt.org.
Wstępna konfiguracja
Potrzebujemy:
- Skonfigurowana VM
- SSH do maszyny
- Publiczny URL hosta
- Cierpliwości
Żeby pobrać certyfikat pierwszy raz, certbot wysyła do naszego serwisu challage, który musimy odebrać i zapisać w lokalnie w pliku. Jako, że frontend działa na nginx
w środowiskach innych niż lokalne, potrzebujemy udostępnić ścieżkę do challange do świata zewnętrznego.
Proces
- Checkoutujemy kod na nowej maszynie
- Edytujemy plik
frontend/nginx/nginx.conf
lokalnie według wzoru z tego commita. - W pliku
docker-compose-dev.yml
w obrazie certbota zmieniamy komendęcertonly --webroot -w /var/www/certbot --force-renewal -d ADRES_HOSTA --email TWOJ_EMAIL --agree-tos
, gdzie oczywiście podmieniamyADRES_HOSTA
iTWOJ_EMAIL
pod swoje potrzeby. - Budujemy frontend:
docker-compose -f docker-compose-dev.yml build wmiadventure-frontend
i czekamy. docker-compose -f docker-compose-dev.yml up wmiadventure-frontend certbot
. Jeżeli wszystko poszło jak trzeba, dostaniemy komunikatSuccessfully received certificate.
- Jeżeli zmieniamy domyślny serwer developerski / produkcyjny, musimy też zaktualizować ścieżki do certyfikatów w
Dockerfile.(dev|prod)
dla backendu. Podmieniamy adres hosta ze ścieżek na nowy. Warto też zacommitować zmiany zrobione wdocker-compose
. - Cofamy zmiany z
nginx.conf
. Musimy teraz podmienić ścieżki dla certyfikatów wssl_certificate
,ssl_certificate_key
iserver_name
na adresy nowego hosta - Przebudowujemy obraz frontendu (
docker-compose -f docker-compose-dev.yml build wmiadventure-frontend
) - Jeżeli wszystko poszło w porządku, to przy uruchomieniu frontendu
docker-compose -f docker-compose-dev.yml up wmiadventure-frontend
nie powinniśmy dostać żadnych błędów i odwiedzenie hosta w przeglądarce powinno przekierować nas na HTTPS. - Warto ustawić cronjoba, żeby certyfikaty odświeżały się co jakiś czas. Certyfikaty z letsencrypt są ważne przez 3 miesiące, ale można je w dowolnym momencie odświeżyć. Przykłądowy cron dla proda:
0 5 1 */2 * /usr/bin/docker-compose -f /home/runner/WMIAdventure/WMIAdventure/docker-compose-prod.yml up certbot