哇,之前用的Livere插件来实现评论功能,没想到过了一周,竟然给我加上了广告,不能忍,直接去掉了。

Livere的配置确实挺方便(除了注册时页面和邮件通知全是韩语),可惜有广告。。。

  • 之后学一下改用Twikoo插件来实现该功能。 Twikoo官方文档:https://twikoo.js.org/
  • 本来想用vecel部署,觉得还得学vecel太烦了
  • 看官方文档说vecel大陆访问慢,Hugging Face 部署快,想用后者,结果后者连官网都打不开
  • 发现可以私有部署,直接部署在服务器上,但看网上的教程,对nginx反代理以及linux配环境变量还是不熟,以后再学学,而且服务器竟然没下node.js还得下。教程https://blog.csdn.net/qq_26572789/article/details/135440212
  • 看用docker私有部署感觉好简单,决定用docker部署,学一下docker
  • 页面出现了评论功能,但不能评论,后台地址打不开,即网址+8099的端口号打不开twikoo后台,不知道是nginx反代理没做的原因还是twikoo不能用https的原因。好像得再加个证书,以后在搞,https://www.yuque.com/liuzhihangs/halo-theme-hao/fffs6ci2mg3r7iwa

云函数部署

docker私有部署

安装docker

  • 安装依赖环境

    1
    yum -y install yum-utils device-mapper-persistent-datalvm2
  • 设置下载Docker的镜像源

    1
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装Docker

    1
    yum install docker-ce docker-ce-cli containerd.io

启动docker

  • 启动Docker服务

    1
    systemctl start docker
  • 设置开机自动启动

    1
    systemctl enable docker
  • 测试
    systemctl enable docker

    1
    docker run hello-world
  • 查看hello-world镜像是否下载成功

    1
    docker images

阿里云镜像加速

  • 修改etc/docker/daemon.json文件

    1
    2
    3
    {
    "registry-mirrors": ["https://78q96cy9.mirror.aliyuncs.com"]
    }
  • 重启镜像、重启docker

    1
    2
    systemctl daemon-reload
    systemctl restart docker

拉取twikoo镜像

1
docker pull imaegoo/twikoo

创建并启动容器

1
docker run -p 8099:8080 -v /home/twikoo/data:/app/data -d imaegoo/twikoo

安全组开放端口

修改主题配置文件

1
2
3
4
twikoo:
enable: true
visitor: true
envId: xxxxxxxxxxxxxxx #将 envId 换成 http://ip地址:port

Nginx https反代http

由于twikoo本身不支持https, 而如今http 传输数据还是不够安全的,需要通过nginx来实现 https反向代理http
由于博客本身,已经用了ssl证书了,需要再加一个端口8099

  • 申请子域名
  • 申请新的ssl证书
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    upstream twi {#需要配置upstream
    server xxxx.com:8099; #你的域名+加端口
    }

    server {
    listen 443 ssl;
    server_name twikoo.xxx.com; #子域名

    ssl_certificate /etc/nginx/ssl/twikoo.xxx.com/twikoo.xxx.com.pem;
    ssl_certificate_key /etc/nginx/ssl/twikoo.xxx.com/twikoo.xxx.com.key;

    # ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
    ssl_prefer_server_ciphers on;

    location / {
    #proxy_pass http://localhost:8099;
    #proxy_pass http://twi; #这种方法,会导致twikoo邮件通知出现bug:getaddrinfo ENOTFOUND!!!
    proxy_pass http://xxx.com:8099;#建议这种写法,和主域名保持一致

    # add_header Access-Control-Allow-Origin "*" always; #这个不要加
    # add_header Access-Control-Allow-Methods "POST, GET,PUT,DELETE, OPTIONS";
    # add_header Access-Control-Allow-Headers "Origin, Authorization, Accept";
    }

    }

    注意的是add_header Access-Control-Allow-Origin “*” always;这个跨越设置不要加,好像nginx会默认将一个子域名对顶级域名放开跨域限制,加了的话,会提示only allow one异常
    这样就实现了:访问https://twikoo.xxx.com nginx 会将转发到http://xxx.com:8099

vecel部署

注册MongoDB

记录一下账号

image-20240514203224139

set up connection security

记录集群名字twikoo和用户名wcy

image-20240514203933178

点击Network Access添加IP地址0.0.0.0/0

image-20240514211102247

choose a connection method

点第一个Drivers

image-20240514211325580

connect

记录connection string

mongodb+srv://wcy:@twikoo.1fucd2d.mongodb.net/?retryWrites=true&w=majority&appName=twikoo

password改为密码

image-20240514211656023

注册Vercel

申请Vercel 账号

部署

  • 点击twikoo官方文档按钮将 Twikoo 一键部署到 Vercel

  • 进入 Settings - Environment Variables,添加环境变量 MONGODB_URI,值为前面记录的数据库连接字符串

  • 进入 Settings - Deployment Protection,设置 Vercel Authentication 为 Disabled,并 Save

  • 进入 Deployments , 然后在任意一项后面点击更多(三个点) , 然后点击 Redeploy , 最后点击下面的 Redeploy

  • 进入 Overview,点击 Domains 下方的链接,如果环境配置正确,可以看到 “Twikoo 云函数运行正常” 的提示

  • Vercel Domains(包含 https:// 前缀,例如 https://xxx.vercel.app)即为您的环境 id

    怎么全是英语啊,而且加载好慢,不知道国内有没有平替啊,不是很想用国外的,加载速度太慢了