mayx/_posts/2025-08-10-tilde.md
2025-08-10 11:10:13 +00:00

70 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
layout: post
title: 在Tilde社区的游玩体验
tags: [tilde, 服务器, git, 体验]
---
Tilde社区如“家”一般的感受😝<!--more-->
# 起因
在[上一篇文章](/2025/08/01/sw-proxy.html)里,我说到给我的博客增加了不少网站[镜像](/proxylist.html)也在这个过程中发现了不少Git平台实例。顺便一提我找到了个不错的[仓库](https://github.com/ecosyste-ms/repos)可以全网搜索各种Git平台实例。在这探索的过程中我发现了一种神奇的社区——Tilde社区体验之后感觉非常有意思所以来分享一下。
# 什么是Tilde社区
Tilde社区之所以叫Tilde是因为在类Unix系统如Linux、BSD波浪号Tilde“~”代表家目录。因此Tilde社区就是基于类Unix系统环境并且可以公共登录的服务器又被称为<abbr title="public access unix systems">pubnixes</abbr>。一般这些社区的管理员会预装很多软件、开发环境以及一些公共服务比如聊天室、邮件、BBS论坛等这些构成了社区互动的基础。不过并不是所有类似这样提供Shell访问的公共服务器都可以被称作社区比如知名的免费网站托管商[Serv00](https://www.serv00.com)虽然也提供可以登录的FreeBSD服务器并且在服务器上安装了非常多的工具和环境从表面来看和Tilde社区提供的服务几乎一模一样但是它少了一个很重要的东西那就是社区它的权限管理非常严格不允许服务器的用户互相串门也没有互相交流的平台而且它的本质是商业服务尽管是免费的所以它不算Tilde社区。
至于Tilde社区的加入方式一般可以通过填写在线申请表、私信或发送邮件申请有些比较有特色的社区会用SSH交互等方式。审核通过后管理员就会在服务器上为你创建账户即可获得属于自己的“家”一般的Tilde社区在这个过程中不需要付一分钱因为他们通常都是反商业化的如果遇到了需要付钱才能激活账户的公共服务器那就不是Tilde社区即使它历史悠久可能是别的什么东西😆。
那么在哪里可以找到它们呢?有一个不错的网站,叫做[tildeverse](https://tildeverse.org)这不仅是一个Tilde社区的集合它自身也提供了很多服务。不过总的来说各个社区之间也是互相独立的tildeverse只是提供了一个平台让大家可以互相沟通所以这个网站叫做“loose association”就相当于博客中的博客圈一样。
于是我在tildeverse的成员列表中随便挑选了几个Tilde社区提交了注册申请过了一段时间申请通过了那么接下来就来说说我在Tilde社区的体验吧。
# Tilde社区的体验
虽然我加入了不少Tilde社区不过各个社区提供的服务都差不多首先最重要的就是个人主页一般Tilde社区基本上都会提供一个像`~/public_html`这样的目录存放个人主页的网页文件,并且可以通过类似`example.com/~username`这样的地址访问,还有些社区会允许通过二级域名的方式访问,类似`username.example.com`这样像我博客好多地方写的都是从根路径开始就很适合用二级域名的方式。这些主页大多也支持使用PHP之类的网页不过不像虚拟主机那样有个面板可以轻松安装扩展和切换版本有些可能要自己写配置文件有些可能要管理员才可以操作毕竟是社区所以不太注重用户体验。
当然除了HTTP协议的个人主页通常他们还可以创建一些Gemini协议和Gopher协议的个人主页这些协议不支持普通浏览器访问需要用[ELinks](https://github.com/rkd77/elinks)之类的文本浏览器才能打开,这个浏览器甚至可以在终端里用鼠标操作😆。不过因为协议非常简单,所以内容也就只能整些文本内容了。
除了个人主页外,一般还会提供编写博客的程序,比如[bashblog](https://github.com/cfenollosa/bashblog)用这个编写好之后就可以直接生成HTML网站能直接发布到自己的主页上让别人访问。这个脚本还是纯Bash的就和我当年的[Mabbs](https://github.com/Mabbs/Mabbs.Project)一样,看起来还挺酷,当然功能上肯定比不上正经的静态博客生成器😆。
当然博客是一方面,还可以写微博,他们一般提供一款叫[twtxt](https://github.com/buckket/twtxt)的软件,用这个软件可以使用命令发微博,还能关注其他人,查看时间线,而且这还是去中心化的,可以跨服务器进行关注,感觉就和[Mastodon](https://github.com/mastodon/mastodon)一样。
除此之外作为社区当然就会有聊天室和论坛了不过这些聊天室和BBS论坛通常不会像大多数人使用的那种通过Web或者图形界面来查看而是纯文本的那种比如论坛通常会用[Bulletin Butter & Jelly](https://github.com/bbj-dev/bbj)聊天室会用IRC可以使用[WeeChat](https://github.com/weechat/weechat)只是我对IRC的印象不太好在终端使用的IRC客户端没有一个使用体验好的😅相比于其他在终端使用的软件操作通常只需要一些快捷键而且界面上通常会有提示而IRC客户端就只能敲命令而且还担心敲错了当成普通内容发出去……所以尽管我加入了Tilde社区受限于聊天软件的使用体验以及我的英文水平所以并不能和在服务器上的其他人聊天没法参与到社区中这么来看似乎我只能把Tilde社区当作普通的共享服务器来看待了😭。
在Tilde社区中既然都是用类Unix系统自然大都是会写程序的人所以托管代码也很重要不过因为大多Tilde社区的主机性能很垃圾所以很多都不会提供Git平台服务即使有可能也只会提供Gitea像GitLab这种对服务器要求比较高的基本上就不会有了。但很多人可能对Git有误解其实绝大多数情况下都不需要Git平台来托管代码之所以用Gitea、GitLab的工具是因为它们有比较完整的用户管理以及代码协作能力比如Issue和Wiki之类的但是大多数人其实根本没必要用到这些功能有问题发邮件就好了像Linux的开发就完全没有用Gitea、GitLab之类的平台。所以在Tilde社区中托管代码非常简单直接新建个文件夹执行`git init --bare`那就是个仓库另外很多Tilde社区提供[cgit](https://git.zx2c4.com/cgit/about/)方便让公众在网页上查看和克隆自己的仓库,一般只要放到`~/public_git`目录下就可以。至于自己如果想要提交代码,可以用`git remote add tilde ssh://example.com/~/public_git/repo.git`添加远程仓库本地改完之后push上去就可以。
不过用那些Git平台还有一个地方可能会用到那就是CI/CD直接用命令创建的仓库它可以做到CI/CD吗其实是可以的Git有hooks功能如果想要类似CI/CD的功能就可以直接用post-receive这个钩子提交完成之后就会执行这个脚本所以接下来就讲讲我是如何用Git hooks在服务器上自动部署我的博客吧。
# 使用Git hooks自动部署博客
我的博客使用的是[Jekyll](https://github.com/jekyll/jekyll)框架这是一个使用Ruby编写的静态博客生成器。所以要想构建我的博客至少要有Ruby的环境还好几乎所有的Tilde社区都预装了不用担心环境的问题。
不过Tilde社区一般不提供root权限所以Ruby的包需要放到自己的目录下比如可以执行这样的命令
```bash
bundle2.7 config set --local path '/home/mayx/blog-env'
```
然后再在我的仓库下执行`bundle2.7 install`就可以了。
接下来就需要编写构建的脚本,这个倒是简单,直接用我的[部署脚本](/deploy.sh)改改就行:
```bash
#!/bin/bash
cd /home/mayx/
rm -rf public_html
git --work-tree=/home/mayx/blog --git-dir=/home/mayx/blog.git checkout -f
cd blog
mkdir Mabbs
curl -L -o Mabbs/README.md https://github.com/Mabbs/Mabbs/raw/main/README.md
bundle2.7 exec jekyll build -d ../public_html
tar czvf MayxBlog.tgz --exclude-vcs ../public_html/
mv MayxBlog.tgz ../public_html/
```
写完之后把这个脚本放到仓库的`hooks/post-receive`然后加上执行权限就可以用了以后每次push之后都会直接更新我在Tilde社区的主页也就是我的镜像站。这样部署不像一般CI/CD还要额外装环境直接使用提前装好的环境构建速度会快不少。
不过既然有机会构建了我就可以把一些不支持构建的Pages用起来了有些Forgejo实例支持Pages功能但是仓库里只能包含构建后的代码还有Bitbucket Cloud也是一样的问题所以我可以把构建后的文件夹转为仓库然后推送到这些Git平台上。
考虑到我的网站每次构建基本上所有的页面都有改动因此我不打算保留提交记录所以我每次都会重新初始化git仓库不过在我实际测试的时候发现钩子触发的脚本执行`git init`的时候创建的是裸仓库……查了一下貌似是环境变量的问题,只要把`GIT_DIR`变量删掉就没问题了,以下是实际的代码:
```bash
cd ../public_html/
unset GIT_DIR
git init
git add .
git commit -m "update"
git remote add codeberg ssh://git@codeberg.org/mayx/pages.git
git remote add gitgay ssh://git@git.gay/mayx/pages.git
git remote add bitbucket ssh://git@bitbucket.org/unmayx/unmayx.bitbucket.io.git
git push -f codeberg master
git push -f gitgay master
git push -f bitbucket master
```
除了这些Pages之外还有一些平台只支持使用他们自己的软件上传网站代码比如surge既然我可以在构建的时候执行命令那就顺带一起上传吧比如我可以这样执行
```bash
/home/mayx/blog-env/node_modules/surge/bin/surge /home/mayx/public_html/ mayx.surge.sh
```
其实除了这个之外我还想上传到sourcehut pages这个也需要用他们自己的软件上传但是sourcehut pages的CSP太严格了居然禁止脚本访问其他网站😭这样我的文章点击计数、文章推荐、AI摘要之类乱七八糟的功能就全用不了了所以只好作罢……
# 感想
总的来说这次在Tilde社区的各种体验还挺有意思虽然没能和各个社区的成员进行对话但是在探索的过程中也了解到了不少新知识而且也给我的博客增加了不少镜像。不知道会不会有哪个社区成员在闲逛的时候看到我的博客然后对里面的内容感兴趣😝……要是有哪个成员看到然后给我评论那也算是社区互动吧😋。虽然我的文章内容都是中文但现在翻译软件也足够强大了应该不至于拦住外国人。只是在国内似乎没有见过类似的社区在国内也有的话那就可以用中文和大家对话了吧。