做了什么

整了个阿里云最便宜的服务器用来学Unix网络编程,系统是 Fedora39。

想着顺便搭一个博客把之前的内容精炼一下搬过来,但中间折腾了很久。

工作流很简单,博客使用了 Hugo 来搭建。在本地的 OneDrive 文件夹新建站点,在本地写完博客文本后使用 hugo 生成网页,然后用 Syncthing 来把生成后的 public 文件夹同步到远程服务器上,远程服务器用 Nginx 来将这个网页 publish 出去。说起来简单,但中间有不少坑。

坑1:Syncthing 的 GUI 远程访问

本来想使用 Nginx 的反向代理直接把对 ip/sync 的请求代理到 127.0.0.1:8384 上,但无论如何都不成功。最后选择妥协:在启动 Syncthing 的时候加上参数 –gui-address=“0.0.0.0:8384” 这样不需要反向代理也能直接在公网上访问了,访问地址为 ip:8384 。

坑2:系统防火墙放行

即使按照上面这样做了,也不能从外面访问到 Syncthing 的管理界面。后面知道要检查两个“放行”有没有做到:

  1. 阿里云的安全组规则有没有开放相应的端口,对我来说就是 8384 端口
  2. 系统防火墙有没有开放相应端口(我在这个上面卡了好久,一开始不知道是这个没开放)

几个有用的命令,参考 CSDN 大佬

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 检查防火墙状态
systemctl status firewalld
# 查看某个端口是否开启
firewall-cmd --query-port=8384/tcp
# 添加端口
firewall-cmd --add-port=8384/tcp --permanent # 表示永久开放
# 删除端口
firewall-cmd --remove-port=8384/tcp --permanent
# 重新载入
firewall-cmd --reload
# 重启防火墙
sudo systemctl restart firewalld

结果和想法

折腾一天总算勉勉强强达到了想要的效果,仔细想想真的很不划算,但好歹有个新的地方能写点东西了。以后还是以少折腾为主要目标,珍爱生命。

后记——折腾 Emacs 导出

怎么在写 Blog 的时候用强大的 Org-Mode 而不是 Markdown ?好在有包 ox-hugo 。它支持将 .org 格式的文件直接导出到能被 Hugo 识别的 .md 文件。因为之前弄过,所以很简单就设置完成了。

为了方便可以添加 snippet 如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# -*- mode: snippet -*-
# name: hugo-single-file
# key: <hs
# --
#+HUGO_BASE_DIR: ${1:../../}
#+TITLE: $2
#+DATE: `(format-time-string "%Y-%m-%dT%H:%M:%S%:z")`
#+HUGO_AUTO_SET_LASTMOD: t
#+HUGO_TAGS: $3
#+HUGO_CATEGORIES: $4
#+HUGO_DRAFT: false
#+HUGO_SECTION: ${5:post}

$0

在 Hugo 主目录下创建 content-org 目录用来写 org 笔记,目录结构与 content 基本一致。写的时候使用上面的 snippet 生成框架,填充自己的内容。最后, SPC m e 导出,导出时选择 H h 即可。具体参考 ox-hugo github

还是要少折腾,以内容以主。