Docker部署Halo博客并配置SSL证书

简介: 本文所用环境:阿里云ECS服务器,全新安装CentOS 8.4。本文前置内容:购买云服务器,购买域名并备案,云服务控制台安全组/防火墙中放行`80,8090,443`端口(若有安装宝塔面板等也需要在面板中放行)本文将介绍通过Docker部署Halo博客并通过certbot自动申请证书并安装实现https访问。

Halo博客安装

  1. 安装Docker

    本文使用全新安装的系统,因此并没有安装Docker,已安装Docker则可跳过这一步。登录终端输入以下内容并按回车等待即可完成Docker安装,该命令同样适用于Ubuntu。

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

  2. 创建Halo博客的工作目录

    本文将Halo博客工作目录置于home目录下,并命名为.halo。该目录将用来存放博客所有配置、文章、主题等数据,若有备份或迁移需要则可以直接复制该目录。

    创建目录并前往该目录mkdir ~/.halo && cd ~/.halo

  3. 下载默认配置文件到工作目录

    wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

    该配置文件包含了端口,数据库,缓存,后台根路径等配置,一般下载后不用更改

  4. 拉取Halo镜像

    docker pull halohub/halo:latest

  5. 创建容器

    docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.4.11

    8090:8090第一个8090为宿主机端口,第二个8090为容器端口,含义为将宿主机的8090端口映射到容器的8090端口。

    ~/.halo:/root/.halo含义为将宿主机的~/.halo目录映射到容器的/root/.halo目录,注意后者不可更改。

    其他参数具体含义请参考官方文档

  6. 此时即可使用http://ip:端口号访问安装引导界面。但比较推荐完成下列反向代理以及SSL证书配置后再进行博客的初始化。

使用Nginx进行反向代理

注意下文内容基于使用8090宿主机端口,如有更改请注意在配置文件中将8090改为自行修改的端口

  1. 安装Nginx

    # 下列代码适用于CentOS
    # 添加 Nginx 源
    sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
    # 安装 Nginx
    sudo yum install -y nginx
    
    # 启动 Nginx
    sudo systemctl start nginx.service
    
    # 设置开机自启 Nginx
    sudo systemctl enable nginx.service
    # 下列代码适用于Ubuntu
    sudo update
    sudo apt install nginx
  2. 配置Nginx

    # 下载 Halo 官方的 Nginx 配置模板
    curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf

    下载之后需要对其进行修改。以上方法安装的Nginx默认路径为/etc/nginx

    # 适用 vim 编辑 halo.conf
    vim /etc/nginx/conf.d/halo.conf

    打开之后的内容应该类似

    server {
        listen 80;
    
        server_name example.com www.example.com; # 将 example.com www.example.com 修改为自己的域名
    
        location / {
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
            proxy_pass http://127.0.0.1:8090/; # 如有更改默认的宿主机8090端口,请修改此处为执行选择的端口
        }
    }

    修改完成之后

    # 检查配置是否有误
    sudo nginx -t
    
    # 重载 Nginx 配置
    sudo nginx -s reload

    使用 certbot 申请并自动安装SSL证书

    阿里云/腾讯云等云服务商也可以申请免费的SSL证书并下载,这类证书请查阅相关教程,本文仅介绍通过certbot申请证书并自动安装。

    1. 安装 certbot 和 certbot nginx 插件:

      # 根据自己的系统选择相应命令
      
      # CentOS 安装 certbot 以及 certbot nginx 插件
      sudo yum install certbot -y
      sudo yum install python3-certbot-nginx -y
      
      # Ubuntu 安装 certbot 以及 certbot nginx 插件
      sudo apt install certbot
      sudo apt install python3-certbot-nginx
    2. 申请并自动配置证书:

      sudo certbot --nginx

    需要输入邮箱并按ya同意相关协议,具体请参考输入命令后的输出

    1. 自动续约

      这里申请的免费证书可以免费续期,理论上可以一直免费使用,这里提供了自动执行续期的命令

      sudo certbot renew --dry-run

结束语

到这里,即完成了所有的步骤,可以直接通过域名进行Halo博客的访问。注意,国内服务商注册的域名大多需要备案,否则无法使用,具体请参考云服务商的文档。

在设置完反向代理后,必须在博客的后台管理界面设置正确的博客地址,否则可能导致CSS加载不成功、样式混乱等错误。
image-20210907000504142.png

目录
相关文章
|
15天前
|
监控 文件存储 Docker
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
与电脑不同,NAS通常7x24小时运行,便于下载资源,解决BT/PT下载需长时间在线的问题。因此,qBittorrent、Transmission等下载管理工具成为NAS用户的必备应用。通过Docker,用户可在多种NAS设备上快速安装这些工具,并通过局域网IP地址+端口访问。然而,缺乏公网IPv4地址导致远程访问困难,贝锐花生壳提供了解决方案,允许无公网IP情况下通过固定域名远程访问NAS中的下载工具,简化了部署过程,使用户能随时随地控制家中的下载任务。
130 33
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
|
8天前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
8天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
9天前
|
前端开发 应用服务中间件 nginx
docker部署本地前端项目思路
docker部署本地前端项目思路
23 7
|
8天前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
14天前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
29 1
|
20天前
|
安全 应用服务中间件 网络安全
部署SSL证书
部署SSL证书
70 5
|
20天前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
18天前
|
运维 安全 数据建模
阿里云SSL证书收费版和免费版SSL有什么区别?全方位对比
阿里云提供免费和个人测试(Pro)及正式版SSL证书。免费版有效期仅3个月,适合个人网站或测试使用;个人测试(Pro)版68元/年,有效期12个月;正式版价格数百至数千元不等,有效期至少1年,支持DV、OV、EV证书类型,具有高安全等级、良好兼容性、稳定OCSP验证、SLA保障及安全保险赔付等优势,并提供最长3年的服务周期与人工客服支持。详情与报价参见SSL官方页面。
143 20
|
1月前
|
运维 安全 数据建模
阿里云免费SSL证书和收费版SSL证书有什么区别?
阿里云提供免费与收费SSL证书,前者有效期仅3个月,适合个人网站或测试使用;后者有效期至少1年,具备更高安全等级、良好兼容性及OCSP验证稳定性等优势,适用于企业网站,尤其政府、金融等领域建议选用OV或EV型证书以确保数据与身份认证安全。详细了解与报价请访问SSL证书官方页面。
148 2
下一篇
无影云桌面