Skip to content

Commit

Permalink
feat: https 证书全自动按需申请&文档更新
Browse files Browse the repository at this point in the history
  • Loading branch information
Mereithhh committed Aug 21, 2022
1 parent 55e8974 commit ac36e7a
Show file tree
Hide file tree
Showing 34 changed files with 929 additions and 99 deletions.
45 changes: 45 additions & 0 deletions Caddyfile
@@ -0,0 +1,45 @@
{
auto_https disable_redirects
on_demand_tls {
ask http://127.0.0.1:3000/api/admin/caddy/ask
}
admin 0.0.0.0:2019
email wanglu@mereith.com
log {
output file /var/log/caddy.log
}
}

(tls) {
tls {
on_demand
}
}

(van) {
encode zstd gzip
log {
output file /var/log/vanblog-access.log
format json
}
handle /static/* {
reverse_proxy 127.0.0.1:3000
}
handle /swagger* {
reverse_proxy 127.0.0.1:3000
}
handle /api/* {
reverse_proxy 127.0.0.1:3000
}
handle_path /admin* {
root * /app/admin
try_files {path} /index.html
file_server
}
reverse_proxy 127.0.0.1:3001
}
:80, :443 {
import tls
import van
}

42 changes: 42 additions & 0 deletions CaddyfileTemplate
@@ -0,0 +1,42 @@
{
auto_https disable_redirects
on_demand_tls {
ask http://127.0.0.1:3000/api/admin/caddy/ask
}
admin 0.0.0.0:2019
email VAN_BLOG_EMAIL
log {
output file /var/log/caddy.log
}
}

(van) {
encode zstd gzip
log {
output file /var/log/vanblog-access.log
format json
}
tls {
on_demand
}
handle /static/* {
reverse_proxy 127.0.0.1:3000
}
handle /swagger* {
reverse_proxy 127.0.0.1:3000
}
handle /api/* {
reverse_proxy 127.0.0.1:3000
}
handle_path /admin* {
root * /app/admin
try_files {path} /index.html
file_server
}
reverse_proxy 127.0.0.1:3001
}

:80, :443 {
import van
}

10 changes: 6 additions & 4 deletions Dockerfile
Expand Up @@ -52,7 +52,7 @@ RUN yarn build
FROM node:alpine AS RUNNER
WORKDIR /app
# 安装 nginx
RUN apk add --no-cache --update nginx tzdata
RUN apk add --no-cache --update tzdata caddy nss-tools
# 设置时区
# 设置时区为上海
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
Expand All @@ -76,9 +76,9 @@ ENV VAN_BLOG_REVALIDATE_TIME 10
ENV VAN_BLOG_ALLOW_DOMAINS "pic.mereith.com"
ENV VAN_BLOG_CDN_URL "https://www.mereith.com"
# 复制静态文件
WORKDIR /usr/share/nginx/html/
COPY --from=ADMIN_BUILDER /usr/src/app/dist/ ./admin/
COPY default.conf /etc/nginx/http.d/default.conf
WORKDIR /app/admin
COPY --from=ADMIN_BUILDER /usr/src/app/dist/ ./
COPY CaddyfileTemplate /app/CaddyfileTemplate
# 复制入口文件
WORKDIR /app
COPY ./entrypoint.sh ./
Expand All @@ -87,6 +87,8 @@ ENV PORT 3001
ARG VAN_BLOG_VERSIONS
ENV VAN_BLOG_VERSION ${VAN_BLOG_VERSIONS}
VOLUME /app/static
VOLUME /var/log

EXPOSE 80
ENTRYPOINT [ "sh","entrypoint.sh" ]
# CMD [ "entrypoint.sh" ]
7 changes: 5 additions & 2 deletions README.md
Expand Up @@ -2,7 +2,7 @@
<img src="/img/logo.svg" style="width: 200px"></img>
</p>
<p align="center">
<strong>VanBlog 是一款简洁实用的个人博客系统。支持黑暗模式、支持移动端自适应和评论、内置流量统计与图床,配有完备的、支持黑暗模式、支持移动端、支持一键上传剪切板图片到图床、带有强大的编辑器的后台管理面板。</strong>
<strong>VanBlog 是一款简洁实用的个人博客系统。支持 HTTPS 证书全自动按需申请、黑暗模式、移动端自适应和评论,内置流量统计与图床,配有完备的、支持黑暗模式、支持移动端、支持一键上传剪切板图片到图床、带有强大的编辑器的后台管理面板。</strong>
</p>
<p align="center">
<img src="https://img.shields.io/github/v/release/mereithhh/van-blog?display_name=tag" />
Expand All @@ -27,6 +27,7 @@

## 特性

- [x] 独一份的按需全自动 HTTPS,甚至不用填域名。
- [x] 包括完整的前后台和服务端。
- [x] 前台和后台都为响应式设计,完美适配移动端和多尺寸设备。
- [x] 前台和后台都支持黑暗模式,并可自动切换。
Expand All @@ -44,6 +45,7 @@
- [x] docker 一键部署
- [x] 支持 GA、百度分析
- [x] 简单易用的后台,支持数据的导出与导入。
- [x] 完善的 API,完全利用本项目后台和服务端,自己写前端或适配其他页面生成器

## 快速上手

Expand All @@ -66,7 +68,8 @@
## 开发计划

- [x] 精简打包体积
- [ ] 镜像集成 HTTPS 和自动证书申请
- [x] 集成 HTTPS 和自动证书申请续期
- [ ] 增加批量导入 md 文件功能
- [ ] 精简前台 js 体积,优化性能
- [ ] 后台增加操作日志
- [ ] 增加一些 e2e 测试,集成到 CI
Expand Down
65 changes: 0 additions & 65 deletions default.conf

This file was deleted.

14 changes: 12 additions & 2 deletions docker-compose/docker-compose.yml
Expand Up @@ -16,20 +16,30 @@ services:
VAN_BLOG_DATABASE_URL: "mongodb://vanBlog:vanBlog@mongo:27017"
# jwt 密钥,随机字符串即可
VAN_BLOG_JWT_SECRET: "AnyString"
# 邮箱地址,用于自动申请 https 证书
EMAIL: "someone@mereith.com"
volumes:
# 图床文件的存放地址,按需修改。
- ${PWD}/data/static:/app/static
# 日志文件
- ${PWD}/log:/var/log
# caddy 配置存储
- ${PWD}/caddy/config:/root/.config/caddy
# caddy 证书存储
- ${PWD}/caddy/data:/root/.local/share/caddy
ports:
- 80:80
- 443:443
mongo:
image: mongo
image: registry.cn-beijing.aliyuncs.com/mereith/van-blog:mongo
# image: mongo
restart: always
environment:
TZ: "Asia/Shanghai"
MONGO_INITDB_ROOT_USERNAME: vanBlog
MONGO_INITDB_ROOT_PASSWORD: vanBlog
volumes:
- $(pwd)/data/mongo:/data/db
- ${PWD}/data/mongo:/data/db
# 如果你需要评论系统就加上
# https://waline.js.org/
# waline:
Expand Down
1 change: 1 addition & 0 deletions docs/.vuepress/sidebar.ts
Expand Up @@ -36,6 +36,7 @@ export default sidebar([
collapsable: true,
icon: "advance",
children: [
"guide/https.md",
"advance/backup.md",
"advance/dark-mode.md",
"advance/links.md",
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Expand Up @@ -48,7 +48,7 @@ features:

- title: 易于部署
icon: linux
details: Docker 一键部署
details: Docker 一键部署,全自动 HTTPS 证书自动申请续期,甚至不用写域名
copyright: false
footer: GPL-2.0 协议 | Copyright © 2022-present Mereith
---
Expand Down
2 changes: 2 additions & 0 deletions docs/feature/advance/visitor.md
Expand Up @@ -20,9 +20,11 @@ title: 访客统计
## 前台

在前台,你可以在文章卡片看到每篇文章的访问量:

![](https://pic.mereith.com/img/3c2539ad7586a5a73a68e8cfb58e0957.clipboard-2022-08-16.png)

以及在页脚处,你可以看到全站的访客数和访问量:

![](https://pic.mereith.com/img/35aa485d737c99ef73505a8ec3a5e2f9.clipboard-2022-08-16.png)

## 进阶分析
Expand Down
13 changes: 12 additions & 1 deletion docs/feature/basic/comment.md
Expand Up @@ -33,13 +33,23 @@ services:
VAN_BLOG_DATABASE_URL: "mongodb://vanBlog:vanBlog@mongo:27017"
# jwt 密钥,随机字符串即可
VAN_BLOG_JWT_SECRET: "AnyString"
# 邮箱地址,用于自动申请 https 证书
EMAIL: "someone@mereith.com"
volumes:
# 图床文件的存放地址,按需修改。
- ${PWD}/data/static:/app/static
# 日志文件
- ${PWD}/log:/var/log
# caddy 配置存储
- ${PWD}/caddy/config:/root/.config/caddy
# caddy 证书存储
- ${PWD}/caddy/data:/root/.local/share/caddy
ports:
- 80:80
- 443:443
mongo:
image: mongo
image: registry.cn-beijing.aliyuncs.com/mereith/van-blog:mongo
# image: mongo
restart: always
environment:
TZ: "Asia/Shanghai"
Expand All @@ -50,6 +60,7 @@ services:
volumes:
# mongoDB 数据存放地址,按需修改。
- ${PWD}/data/mongo:/data/db

# 如果你需要评论系统就加上
# 具体请看参数请看 waline 文档:
# https://waline.js.org/
Expand Down
34 changes: 33 additions & 1 deletion docs/guide/docker.md
Expand Up @@ -4,6 +4,7 @@ title: 部署
copyright: false
order: -1
---

::: info VanBlog

VanBlog 是一款简洁实用的个人博客系统。支持黑暗模式、支持移动端自适应和评论、内置流量统计与图床,配有完备的、支持黑暗模式、支持移动端、支持一键上传剪切板图片到图床、带有强大的编辑器的后台管理面板。
Expand All @@ -19,6 +20,16 @@ VanBlog 是一款简洁实用的个人博客系统。支持黑暗模式、支持

## docker-compose 部署

如果你没有安装 `docker``docker-compose`,可以通过以下命令一键安装:

```bash
curl -sSL https://get.daocloud.io/docker | sh
```

如果你没有接触过 `docker`,但是想了解一下,可以看下面的教程:

> [Docker 入门教程](https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html)
新建 `docker-compose.yml`文件:

```yaml
Expand All @@ -41,13 +52,23 @@ services:
VAN_BLOG_DATABASE_URL: "mongodb://vanBlog:vanBlog@mongo:27017/vanBlog?authSource=admin"
# jwt 密钥,随机字符串即可
VAN_BLOG_JWT_SECRET: "AnyString"
# 邮箱地址,用于自动申请 https 证书
EMAIL: "someone@mereith.com"
volumes:
# 图床文件的存放地址,按需修改。
- ${PWD}/data/static:/app/static
# 日志文件
- ${PWD}/log:/var/log
# caddy 配置存储
- ${PWD}/caddy/config:/root/.config/caddy
# caddy 证书存储
- ${PWD}/caddy/data:/root/.local/share/caddy
ports:
- 80:80
- 443:443
mongo:
image: mongo
image: registry.cn-beijing.aliyuncs.com/mereith/van-blog:mongo
# image: mongo
restart: always
environment:
TZ: "Asia/Shanghai"
Expand Down Expand Up @@ -89,6 +110,14 @@ docker-compose up -d

浏览器打开 `http://<your-ip>/admin/init` ,并按照提示初始化即可。具体设置项可以参考 [站点配置](/feature/basic/setting.md)

::: info VanBlog
首次运行默认是关闭 `https` 的,请通过 `http` 协议访问。初始化后,进入后台确认 https 证书已自动生成后可选择开启 https 自动重定向。

无论 `HTTPS 自动重定向` 是否开启,都暂不支持通过 `https + ip 地址` 来访问。需要 ip 访问请用 `http` 协议并关闭 https 自动重定向。

具体请参考: [HTTPS](/guide/https.md)
:::

## kubernetes

什么?你想用 `kubernetes`,当然没问题。
Expand Down Expand Up @@ -120,6 +149,9 @@ spec:
- name: http-80
containerPort: 80
protocol: TCP
- name: https-443
containerPort: 443
protocol: TCP
env:
- name: VAN_BLOG_DATABASE_URL
value: >-
Expand Down

0 comments on commit ac36e7a

Please sign in to comment.