开源&Docker 篇三十八:保姆级免备案搭建,一款好看的支持markdown语法的动态主页——halo
前言
大家好,今天依旧是可爱的Cherry。
说到个人网页,相信不少朋友白嫖过无头服务器部署过静态网页,虽然无头服务器是免费的,但是静态网页的更新却很麻烦,远远不如有数据库的动态网页好用。
例如Wordpress、Typecho、Hexo等,都是非常优秀的动态网页框架。
Cherry正好拿来给大家介绍一款好看又好用的动态网页框架,同时通过cf代理实现无端口访问。
🟡本文使用国外vps部署,仅做技术交流,国内服务器网站请按要求备案。
Halo部署
一、使用docker-compose安装halo
🔻利用群晖Container Manager的项目功能新建compose项目。
🔻利用Dockge管理compose项目
🔻Compose代码,结合mysql使用
version: "3"
services:
halo:
image: halohub/halo:2.12
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2 #自定义路径
ports:
- "8090:8090" #自定义端口
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=o#DwN&JSa56
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改,建议改成域名加【实际访问的端口】
- --halo.external-url=https://localhost:9000
halodb:
image: mysql:8.1.0
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql #自定义路径
- ./mysqlBackup:/data/mysqlBackup #自定义路径
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halo
networks:
halo_network:
二、halo初始化
🔻输入ip:port进入系统,改一下账号密码,可以看看基本信息里的站点信息是否和设置的一样。
🔻插件商城里选一下主题、插件等
cloudflare设置
注册cf账号,购买域名这些就不说了,常规操作,下面只讲具体操作。
一、修改cloudflare的SSL参数
🔻可以右上角先改中文,然后选择网站,输入自己的域名,激活网站
🔻左侧选“SSL/TLS”——“概述”,将ssl设置为“完全”
🔻左侧选“SSL/TLS”——“边缘证书”,将“始终使用HTTPS”打开
🔻选择“DNS”-“记录”,增加IPv4、IPv6解析
因为DDNS-GO配置的没有小黄云,所以我们需要先设置v4,v6解析并开启小黄云
二、创建自建SSL证书
🔻左侧选“SSL/TLS”——“源服务器”,点击“创建证书”
🔻红框内输入域名以及通配符域名,点击创建
🔻将自建证书代码分别复制到2个TXT中,并改名为cf.pem和cf.key,然后点确认。
三、使用cloudflare进行dns解析
🟡因为我用的是阿里云,这里以阿里云为例,其它域名商操作大同小异
🔻修改源域名商DNS指向,进入“域名”管理台
🔻修改域名DNS解析,分别修改为如下两个
NS hazel.ns.cloudflare.com
NS henry.ns.cloudflare.com
🔻设置DNSSEC,先来到cloudflare,选择“DNS”——“设置”,启用“DNSSEC”
🔻记录下“摘要”、“密钥标记”两栏,一会要用。
🔻来到域名管理台,在刚才DNS那一栏,选择“DNSSEC设置”,将加密算法改为13,摘要类型改成2,最上面的标签就是“密钥标记”(短位纯数字),摘要就是刚才复制的“摘要”
🚀四、转发端口
🔻核心来了,来到CF的“规则”——“Origin Rules”,选择新建规则
🔻转发https端口
利用NPM反代
一、安装nginx proxy manager
🔻也使用docker-compose方式部署,因为内容重复,就不展示了,直接给代码
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '6080:80' # HTTP端口,随意改,记住就行
- '6081:81' # WebUI端口,随意改,记住就行
- '6443:443' # HTTPS端口,和在cloudflare重定向的端口一致
volumes:
- ./data:/data # 自定义文件目录
- ./letsencrypt:/etc/letsencrypt # 自定义SSL证书目录
二、npm反代halo服务
🔻进入NPM页面,上传SSL证书(默认账号:admin@example.com 默认密码:changeme)
🔻将刚才从cf上保存下来的.pem和.key上传
🔻回到首页,选择代理
🔻配置代理,直接抄图(IP如果不是bridge的则自己填)
🔻选择SSL证书,开启强制HTTPS
利用DDNS-GO解析动态域名到cloudflare
🟡有些共享盒子可能会变动ip地址的,虽然很少,但是为了避免手动更换解析的麻烦,可以使用动态解析。
一、cloudflare操作
🔻获取cloudflare里API接口
🔻选择“编辑区域DNS”
🔻选择网站域名,完成后点击创建令牌
🔻令牌只会显示一次,请妥善保管,如果没了只能重新新建
二、DDNS-GO操作
🔻安装DDNS-GO
【路径】自己设置
docker run -d --name ddns-go --restart=always --net=host -v 【路径】:/root jeessy/ddns-go--name ddns-go
🔻配置DDNS-GO,输入【ip:9876】打开DDNS-GO
🔻有IPv6的也一样设置
最后
其实cloudflare转发端口,其实也有一定的缺点,那就是网络问题,毕竟cf常年红ping。
不过,我们可以通过github上的开源项目CloudflareSpeedTest来进行自动修改hosts,达到本地提高访问速度的效果。
#本项目采用docker部署,所有支持docker的服务器都可以实现#
欢迎朋友们评论区讨论留言。我会定期更新关注NAS使用方法、开源软件与Docker软件、游戏与生活相关内容,喜欢的朋友请关注、点赞、留言支持。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
garryguo123
校验提示文案
梁下君子
校验提示文案
大志若勇Nodis
校验提示文案
亚瑟王的布丁
校验提示文案
值友8865054275
校验提示文案
夜影小窝
校验提示文案
cnharris
校验提示文案
丨七七七
校验提示文案
你是一块巧克力
校验提示文案
梁下君子
校验提示文案
你是一块巧克力
校验提示文案
丨七七七
校验提示文案
值友8865054275
校验提示文案
亚瑟王的布丁
校验提示文案
cnharris
校验提示文案
夜影小窝
校验提示文案
garryguo123
校验提示文案
大志若勇Nodis
校验提示文案