SSL-сертификат на веб-сайте, размещенном в докере, например open-webui

Итак, у меня есть домен pigbun, который дал мне сертификат SSL. Но теперь я хочу разместить на сайте SSL-сертификат. Сервер размещен на мини-ПК, а веб-сайт — на локальном хосте, затем я перенаправил open-webui на порт 80 маршрутизатора, выполнил DNS и все такое. Сайт работает на моем домене, только не https, а http.

Я не очень хорошо знаком с Docker, поэтому не знаю, как делать такие вещи, как редактирование изображения или контейнера, но я научусь.

Я пробовал разные записи DNS, пытался получить сертификат внутри контейнера с помощью сценария, который нашел в Интернете. Всё, больше ничего не могу найти.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
807
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, вы захотите изучить http-прокси.

Вы можете запустить свой докер-контейнер и сопоставить его с портом, скажем, 5000, вот так:

Докерфайл:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
EXPOSE 80
CMD ["curl", "-s", "http://example.com"]

Затем запустите контейнер, скажем, вы используете docker Compose, например:

# docker-compose.yml
version: '3'
services:
  example:
    build: .
    ports:
      - "5000:80"

А затем вы устанавливаете веб-сервер (я покажу вам, как это сделать на Apache, но многие другие тоже работают — я думаю, что наиболее распространенным будет nginx).

Сначала вы устанавливаете Apache (это пример для Ubuntu/Debian):

sudo apt update
sudo apt install apache2
  1. разрешите это на брандмауэре:
sudo ufw allow 'Apache Full'
  1. включить модули mod proxy и mod proxy http:
sudo a2enmod proxy
sudo a2enmod proxy_http
  1. Apache хранит файлы конфигурации виртуальных хостов в каталоге /etc/apache2/sites-available.

вы хотите отредактировать страницу по умолчанию:

sudo vi /etc/apache2/sites-available/000-default.conf

или

sudo nano /etc/apache2/sites-available/000-default.conf

замените запись по умолчанию на:

<VirtualHost *:80>
    ServerName your-domain.com
</VirtualHost>
  1. установить сертификатбот
sudo apt install certbot python3-certbot-apache
  1. активировать домен на веб-сервере
a2ensite 000-default.conf
  1. запустить сертификатбот
certbot

Следуйте инструкциям (мне нравится автоматически перенаправлять с порта 80 на 443).

Он создаст файл с именем 000-default-le-ssl.conf — тогда он должен выглядеть так:

<VirtualHost *:443>
    ServerName your-domain.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/your-domain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
</VirtualHost>
  1. где вы хотите что-то добавить:
    ProxyPreserveHost On
    ProxyRequests Off

    ProxyPass / http://localhost:5000/
    ProxyPassReverse / http://localhost:5000/

  1. а затем вам просто нужно перезагрузить сервер Apache
sudo systemctl restart apache2

-- Или вы можете взглянуть на прокси-менеджер nginx, если вам их много.

Кстати. Также хорошей практикой является создание задания cron для продления.

Откройте crontab пользователей root и добавьте строку:

sudo crontab -e

и добавить

0 2 * * * /usr/bin/certbot renew --quiet

надеюсь, это поможет

Если вы хотите использовать предоставленный вам сертификат, вы можете добавить -le-ssl.conf вручную, также a2ensite его, добавить сертификаты где-нибудь на сервере и добавить расположение сертификатов к пути по умолчанию. -le-ssl.conf

Другие вопросы по теме