docker 托管网站(如 open-webui)上的 SSL 证书

问题描述 投票:0回答:1

所以我在 Porkbun 上有一个域名,它给了我一个 ssl 证书。但现在我想在网站上放置一个 ssl 证书。服务器托管在一台迷你电脑上,网站位于本地主机上,然后打开 webui,我已转发到路由器上的端口 80,并且我已经完成了 dns 和所有操作。网站正在我的域上运行,它不仅仅是 https,只是 http。 我对 Docker 不太熟悉,所以我不知道如何做编辑图像或容器之类的事情,但我会学习。

我尝试过不同的 DNS 记录,我尝试使用我在互联网上找到的脚本来获取容器内的证书。就这些了,找不到其他的了。

docker ssl hosting
1个回答
0
投票

您可能想研究一下 http 代理。

您可以运行 docker 容器并将其映射到端口,比如说 5000,如下所示:

Dockerfile:

Dockerfile

来自 ubuntu:最新 运行 apt-get update && apt-get install -y curl 曝光 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 代理和 mod 代理 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
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 作业也是一个很好的做法

打开 root 用户的 crontab 并添加一行:

sudo crontab -e

并添加

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

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.