无服务器部署Artalk自托管评论系统(无需绑信用卡)

与Gitalk、Waline、Twikoo众多个人博客界的前辈一样,Artalk是一款自托管评论系统,其颜值出众,具有简明的管理后台的同时,也意味着它不太可能通过Vercel和Netlify等Node项目托管平台进行无服务器部署。但是今天我们就要通过render.com这个无服务器托管平台来进行artalk无服务器部署啦。

预先提醒

由于同类型Docker托管平台Heroku被滥用于科学上网,Render已经对于Docker实例进行了严格审查,一旦发现类型程序已有多名程序员于V站表示被封号,请勿作死。

准备数据库:以Postgresql为例

没错,你需要准备一个持久性的数据库。Render.com本身会不定期重启Docker免费实例,并且每次都会重新构建;其虽然会提供一个免费postgresql数据库,但是每90天会执行定期清空,故你需要在别的什么网站准备一个数据库,Postgresql的话在Neon,Mysql可以在PlanetSlace上找,注册过程十分简单,这里就不赘论了,以neon为例,你拿到一个新账号之后,选择New Project,region可以选Singapore。数据库名可以选artalkme之类的,然后,你会见到一串类似于:

psql 'postgresql://user@xxx.com:xxxxxxxx@yyyyyy.ap-southeast-1.aws.neon.tech/artalkme?sslmode=require'

的链接,复制这串链接,接下来要使用它。

准备配置文件

我在GitHub上传了一个改自661111前辈的Render Docker配置,你需要git pull下来它并进行一些修改。主要是conf.yml。你需要修改app_key(输入一个你随便输的字符串,用来加密的),以及修改数据库部分。(不要在这里修改,conf.yml已经随着版本变动改过了)

本地连接

Artalk有一个很大的问题是,它本身是没有默认用户名密码的,你需要在本地重新运行一次。(也可能可以设,但是主要是可选挺方便的,假如你有现成的配置文件就无所谓,记得写明管理员账户密码就好了)以Linux系统为例:

wget -O artalk.tar.gz https://github.com/ArtalkJS/Artalk/releases/download/v2.6.4/artalk_v2.6.4_linux_amd64.tar.gz
tar -zxvf artalk.tar.gz
cd artalk_v2.6.4_linux_amd64

修改config.yml

db:
  # Database type ["sqlite", "mysql", "pgsql", "mssql"]
  type: "pgsql"
  # Database file (only for SQLite)
  file: "./data/artalk.db"
  # Table prefix (e.g. "atk_")
  table_prefix: ""
  # -- The following is not necessary for SQLite --
  # Database name
  name: "artalkme"
  # Host address
  host: "yyyyyy.ap-southeast-1.aws.neon.tech"
  # Host port
  port: 5432
  # Database user
  user: "user@xxx.com"
  # Database password
  password: "xxxxxxxx"
  # Database charset
  charset: "utf8"
  # Enable SSL mode
  ssl: true

以及修改那个trust_domains,把你需要用artalk的所有网址和artalk本站的网址输进去,不然有可能无法加载。

然后执行:

./artalk admin -c config.yml

设置管理员用户名和密码。

(可选)因为render.com是不会保存你的实例数据的,所以所有配置都需要通过之后上传到GitHub的项目中的config.yml进行配置,你可以在本地先运行一次实例,通过网页进行配置:

./artalk server -c config.yml

登录,进入设置进行配置,保存关闭之后,复制你的config.yml内容回到conf.yml。

上传Render Docker配置文件项目至Github

如小标题在GitHub创建一个项目,然后上传就可以了。

Render.com

注册一个Render.com账号,选择New中的Web Service服务,选择Build and deploy from a Git repository。也可以选Singapore Region,链接你的GitHub账户,然后build就完成了。

记得build完之后设置一个自定义域名,render本身给的域名已经被墙了。

打开自定义域名,大功告成。

同理似乎也可以在Koyeb上搞,这就留待有缘人吧。(但是它需要绑信用卡)