Twikoo私有化部署

前言

消失了几个月没管博客,一个不留神,Twikoo评论就寄了。研究了一下发现是腾讯的云服务开始收费了。原本有一个月的缓冲迁移时间,但是我一直不关注腾讯云的消息的,所以错过了。刚进去一脸懵,随便瞎点把之前的项目也点没了。。。。所以之前的评论就都没了。

昨天试着用了一下Waline,现在开发者做的很不错了,部署也很简单,邮件提醒也可以。但是我的站点有三个主题,其中“一隅”分站(主题为Cards)并不支持Waline,自己鼓捣了半天想添加一个,然后也没结果,就用来必力了(体验并不好)。

总还是有点不甘心,今天又看了一下Twikoo 文档,尝试用 MongoDB + Vercel 部署,成功是成功了,但是国内效果并不好,总是超时(基本就成为了摆设)。

遂又摸索,利用自己的服务器做私有化部署,相对来说繁琐一些(这里用的是docker),但是效果很好。这里记录一下过程。


操作

Docker环境

前提:需要在服务器中安装docker,这里不做说明,网上教程很多。

  1. 拉取镜像

    1
    sudo docker pull imaegoo/twikoo
  2. 创建并启动容器

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

    这里需要把服务器的8099端口打开(用到的是阿里云的服务)

  3. 测试

    1
    2
    twikoo:
    envId: http://服务器ip:8099

    正常情况下访问http://服务器ip:port,即twikoo的服务地址,可以看到如下运行状况

    理论上这样部署就可以了,但鉴于我的网站配置过https,由于twikoo本身并不支持https,因此还需要做反向代理。

Nginx反向代理配置

查阅了一些资料,看到了一个不错的解决办法:通过多个域名、多个ssl证书、用https再代理一个端口

前期准备

  1. 在阿里云中对主机域名再添加一个子域名

    如我这里就是:twikoo.cnhuazhu.top

  2. 再申请一个SSL证书

    需要注意的是,这里申请证书的绑定域名为上一步添加的子域名:twikoo.cnhuazhu.top

操作

  1. 将上一步申请的证书下载下来,放到服务器上。

    例:我的存放路径:/etc/nginx/cert

    将两个文件twikoo.cnhuazhu.top.keytwikoo.cnhuazhu.top.pem放入该目录下。

  2. 进入目录/etc/nginx/sites-enabled,在其中新建一个文件:twikoo.conf,并写入如下内容:

    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
    upstream twi {#需要配置upstream
    server cnhuazhu.top:8099; #你的域名+加端口
    }

    server {
    listen 443 ssl;
    server_name twikoo.cnhuazhu.top; #子域名

    ssl_certificate /etc/nginx/cert/twikoo.cnhuazhu.top.pem;
    ssl_certificate_key /etc/nginx/cert/twikoo.cnhuazhu.top.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;

    # 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";


    }
    }
  3. 保存,重新启动Nginx服务

    1
    sudo service nginx restart

    如此便实现了:访问https://twikoo.cnhuazhu.top ,Nginx 会将转发到http://cnhuazhu.top:8099。实现反向代理。

  4. 修改envId:

    1
    2
    twikoo:
    envId: https://twikoo.cnhuazhu.top/
  5. 保存,重新部署。最后配置twikoo面板就可以了。


后记

由于我没有涉及迁移评论内容的需求(其实原本可以有),这里就不再介绍了。详细可以看参考文章。

参考文章: