跳转至主要内容
晴雨技术笔记

杏川铭心的折腾日记:尝试 Writefreely

杏川铭心 杏川铭心
最后编辑于 2026年9月19日
  • 本文最后编辑于 1 天内,内容新鲜,请放心阅读。
  • 最近太久没更新了,再这样下去不行,但是另一篇 iOS 的还没写好,那怎么办呢,诶,正好我还折腾了一个东西,先拿它顶上吧。

    第一次听说 Writefreely 是在 InfinityFree Forum 上鬼混的时候,有个人进来问能不能在这里运行 Writefreely,我看了之后回复对方说不行,这东西要 VPS,共享主机没办法用。但就是那一次让我看到了 Writefreely 这个项目,当时就觉得惊为天人,苦于一直没有合适的机会进行部署。最近看到自己一台吃灰的 Racknerd VPS,痛定思痛,给那东西重装了系统,开始尝试 Writefreely。

    注册域名

    那么首先请出我们的域名,meish.in,我个人对这个域名是非常满意的,毕竟不是每个人都能注册到这种完全就是名字,而不是名字.com 之类的域名。唯一的问题是刚注册完和 NIXI 扯了好久的皮,总而言之就是我 WHOIS 信息不完整,好在最后成功把域名拿回来了,而且那是好久之前的事情,肯定也不会影响我们搭建网站。

    然后绑定到 Cloudflare 上。Cloudflare 的后台界面似乎一直在改版,这次改版让我知道了原来免费版域名只能创建 200 条 DNS 记录(老一些的域名是 1000 条)……

    Cloudflare 现在只给 200 条 DNS 记录,至少免费版是这样,不清楚付费计划会不会更多

    装系统

    虽然我一直坚定的认为服务器应该用 RHEL 系的系统,比如 AlmaLinux 啦 RockyLinux 啦这种,可真的到我自己用的时候……Debian 系真香,理想很丰满,现实很骨感,我还是选择了 Debian 13 系统进行安装。

    安装 Debian 13 系统,问就是这个系统我最熟悉,毕竟我曾经可是用 Debian 做了好久的主力系统。

    重装完,连上 SSH,开始正式安装。

    安装 Writefreely!

    那么 Writefreely 之所以只能在 VPS 上运行,那是因为这东西其实是个二进制程序,独木成林(是这么用的吗?好像不大对……),并不是什么可以上传到主机里的 PHP 源码。当然这也意味着正式部署的时候需要 nginx 之类的东西做反代。

    官网很意外的没有提供下载命令,而是让我们手动下载,只好下好之后用 scp 拷到服务器上。

    然后我把主程序扔进了 /opt/writefreely,并且创建了一个单独的 writefreely 用户。

    接下来进行首次配置,运行:

    writefreely config start

    会让我们输入一些基础信息,主要就是管理员凭据,博客名称什么的都可以后面再改,管理员密码要是忘记了那就只能直接改数据库了。另外数据库我选择的是 SQLite,毕竟我的 VPS 只有 2G 内存,跑 MySQL 有点太重了。

    然后要生成密钥,不知怎的,我首次安装的时候没有看见这一步……

    writefreely keys generate

    最后创建 systemD 服务项,不管你讨厌还是喜欢 systemD,我反正是喜欢的,而且 Debian 13 默认就是 systemD,我也没得选是不是。

    [Unit]
    Description=WriteFreely Instance
    After=network.target
    
    [Service]
    Type=simple
    User=writefreely
    Group=writefreely
    WorkingDirectory=/var/www/example.com
    ExecStart=/var/www/example.com/writefreely
    Restart=always
    
    [Install]
    WantedBy=multi-user.target

    官网给出的样例里面是没有用户和组的配置的,但是我刚才不是创建了单独的用户嘛,所以我也写上了。以及样例里还在使用老旧的 syslog,也被我去掉了。

    配置反向代理

    现在是 2026 年,很多站长喜欢用 caddy 之类的新潮反向代理工具,但很可惜,caddy 性能太烂,流量稍微大点就被搞爆了,还是 nginx 更实用。至于为什么不用我的心头好 OpenLiteSpeed,那是因为 LSCache 在软件没有主动适配的情况下工作的非常差劲,还不如不用。

    安装 nginx 中,啊不对,这张截图应该是安装完了……

    然后写入 nginx 站点配置,注意这里的静态文件的根目录就是 writefreely 的安装目录,仔细看会发现 static 文件夹就在 writefreely 目录下。也就是说我就是应该用 /opt/writefreely,而不是再跑去创建一个 /var/www/meish.in。我第一次没意识到这一点,网站启动之后静态文件全部都 404。

    server {
        listen 80;
        listen [::]:80;
    
        server_name meish.in;
    
        gzip on;
        gzip_types
          application/javascript
          application/x-javascript
          application/json
          application/rss+xml
          application/xml
          image/svg+xml
          image/x-icon
          application/vnd.ms-fontobject
          application/font-sfnt
          text/css
          text/plain;
        gzip_min_length 256;
        gzip_comp_level 5;
        gzip_http_version 1.1;
        gzip_vary on;
    
        location ~ ^/.well-known/(webfinger|nodeinfo|host-meta) {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect off;
        }
    
        location ~ ^/(css|img|js|fonts)/ {
            root /opt/writefreely/static;
            # Optionally cache these files in the browser:
            # expires 12M;
        }
    
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect off;
        }
    }

    然后启动 writefreely,并重启 nginx。实测 reload 是没用的,不知道为什么。

    sudo systemctl daemon-reload
    sudo systemctl enable --now writefreely
    sudo systemctl restart nginx

    然后不出意外的话就出意外了,因为刚刚忘记生成 key,导致 writefreely 一直起不来。

    因为忘记生成 key 导致的惨案

    一开始还不知道怎么回事,跑去手动执行了一下 writefreely 主程序,才知道是什么错误,被自己气笑了。

    嗯对其实我给 writefreely 配的用户叫 hiromasa 而不是 writefreely……

    于是赶紧生成一份 key,这才顺利启动网站。

    然后我还忘记给 writefreely 的安装目录 chown 了,注意看最上面一条命令

    添加 SSL

    一直到这个时候网站上都没有 SSL 证书,虽然说套了 Cloudflare,但是源服务器上最好也配置证书,只需要用 Certbot 就可以。Debian 上没有预装烦人的 snap,因此直接 apt 安装即可。

    sudo apt install certbot python3-certbot-nginx

    然后 sudo certbot,一路回车就行了。

    第一次运行的时候忘记把站点配置从 sites-available 里面软链接到 sites-enabled,导致 Certbot 没找到正确的域名,汗。把 default 的链接删除,并且链接进自己的配置,顺利拿到证书,网站终于可以使用了!

    使用 Writefreely

    打开网站,第一反应就是快,虽然网站在众所周知的减速器 Cloudflare 后面,但架不住 Writefreely 的样式是真的十分贫瘠,啥也没有,唯一能拖慢加载速度的就是一个英文字体。

    哪怕放在 Cloudflare 后面也有 99 分

    Writefreely 没有可视化编辑器,用的是 Markdown,不过也可以混用 HTML  进行高级一点的排版。不能上传图片,虽然 Markdown 支持图片,但是要用的话就需要另外上传,比如上传到图床,或者自己传到 static 目录里面。

    写作使用的是 Markdown 格式,很纯粹,不会有任何额外的操作影响你的思路

    可以说很对得起 Writefreely 这个名字了,真的除了写就是写,别的啥也干不了。支持 ActivityPub/Fediverse 互联,也就是说如果有人在用 Mastodon 之类的东西那么他们可以关注你。不过 Writefreely 本身没有互动功能,只能单向关注。

    Writefreely 因为页面足够简单,实测 iOS 10 上也能正常用。WordPress 就没这个待遇了,除非你跑去用 WordPress 4.9 之类的东西。

    iOS 10 上也可以使用 Writefreely,不对,怎么又回到 iOS 上面了

    目前计划是把这个网站当成一个发牢骚加零碎记录一些素材的地方,具体可以到 meish.in 上直接看看。

    • 特别提醒:

      评论看到就会回,但是不保证速度,有的时候站长忘记看的话就会出现审核好几天也没有动静的情况……

      有垃圾评论检查,如果评论之后直接消失、没反应说明被识别为垃圾评论了。

      如果等不及的话,可以加群!

    杏川铭心
    杏川铭心

    群号:1101838302,欢迎友好交流 :P 曾用名Frank419(现在也是我在很多地方的用户名),网站站长。

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注