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


Возможно, вы захотите изучить 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
sudo ufw allow 'Apache Full'
sudo a2enmod proxy
sudo a2enmod proxy_http
вы хотите отредактировать страницу по умолчанию:
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>
sudo apt install certbot python3-certbot-apache
a2ensite 000-default.conf
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>
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
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