一、hack.chat 是什么?

入门

hack.chat 是一个极简、无干扰的聊天应用。它没有账号体系、不保留消息历史、也没有复杂表情包,打开网页输入昵称和频道就能发言。适合临时会议、朋友快速沟通,或者作为学习实时通信的示例项目。

提示:这个仓库(AndrewBelt/hack.chat)已标记为 deprecated,官方建议改用新仓库 hack-chat/main。不过它的结构简单,很适合用来理解聊天服务的部署流程。本文仍以本仓库代码为例。

hack.chat 项目主页预览

二、部署前需要准备什么?

入门

需要准备一台能联网的 Linux 服务器或本地电脑,以及三个基础工具:Git、Node.js、npm。Git 可以理解为“代码下载器”,负责把 GitHub 上的代码复制到本地;Node.js 是让 JavaScript 在服务器上运行的环境;npm 是 Node.js 自带的软件包管理器,像手机应用商店一样安装项目需要的模块。

先用以下命令确认环境是否可用:

node -v
npm -v
git --version

如果命令没有输出或提示未找到,需要先安装对应工具。Node.js 版本满足 0.12 以上即可运行本项目,但建议直接安装较新的 LTS 版本,避免老版本的安全问题。

三、部署服务端

入门

先下载代码。git clone 会把远程仓库完整复制到当前目录:

git clone https://github.com/AndrewBelt/hack.chat.git
cd hack.chat

进入项目目录后,安装服务端依赖:

npm install

npm install 会读取项目里的 package.json,自动下载运行所需模块。完成后,把样本配置复制成正式配置:

cp config-sample.json config.json

默认配置即可启动,不需要额外修改。接着启动服务端:

npm start

也可以使用:

node server.js

服务端会以前台方式运行,保持终端窗口不要关闭。如果需要继续操作,可以新开一个终端窗口。

四、部署客户端

入门

客户端代码在 client 目录,先进入:

cd client

客户端构建需要三个全局工具:less、jade、http-server。less 负责处理样式,jade 负责生成 HTML,http-server 用来启动静态文件服务。用以下命令安装:

npm install -g less jade http-server

-g 表示全局安装,类似给系统安装命令。如果遇到权限错误,可以在前面加 sudo。安装完成后执行构建:

make

构建完成后启动客户端预览:

http-server

默认访问地址是 http://127.0.0.1:8080。如果 8080 端口被占用,可以换一个端口运行:

http-server -p 8088

然后在浏览器打开 http://127.0.0.1:8088。

hack.chat 聊天界面截图

五、修改首页文字

进阶 · 推荐细读

默认客户端首页有一些英文说明文字。如果想改成自定义内容,可以编辑 client 目录下的 client.js 文件,找到 frontpage 相关文本并替换。

修改后需要重新执行构建,让改动生效:

make

然后重启 http-server。建议备份原文件再修改,避免改坏后无法恢复。

六、常见问题

进阶 · 推荐细读

  • 端口冲突:客户端默认占用 8080,被占用时用 -p 参数换端口;服务端端口可在 config.json 中调整。
  • 权限问题:全局安装 npm 包报 EACCES 错误,通常是权限不足,可尝试加 sudo 或使用用户级 npm 配置。
  • 云服务器无法访问:本地安全组或防火墙需要放行服务端和客户端使用的端口。
  • 没有历史消息:hack.chat 本身不保存聊天记录,服务重启或刷新页面后历史消息消失,这属于设计行为。

七、运维进阶:反向代理与 SSL

深入 · 老手可选

如果希望用域名访问聊天室,并启用 HTTPS,可以在服务前面加一个反向代理。反向代理像一个“总台”,接收外部请求后转发给内部服务。

常见做法是使用 Nginx 或 Caddy 监听 443 端口,再把请求转发到本地服务端口。由于原仓库没有提供官方代理配置,这里不给出具体端口假设;你可以在 config.json 中确认服务端口后,让反向代理指向 http://127.0.0.1:<端口>

本项目没有数据库,因此无需备份数据。唯一需要保留的是你修改过的配置文件和 client.js。

八、升级与迁移建议

进阶 · 推荐细读

本仓库已停止维护,不建议作为长期生产环境使用。官方推荐迁移到新仓库 hack-chat/main,那里会有更现代的依赖和后续修复。

可以把本文看作理解旧版 hack.chat 部署流程的入门路径。跑通之后,再用同样的思路去部署新仓库会更容易上手。

项目信息

项目
仓库 AndrewBelt/hack.chat
语言 JavaScript
Star 2,419
Fork 335
主页 https://hack.chat/

参考链接

延伸阅读

想继续探索?这些同领域的教程可能也适合你: