想要一个轻量匿名投稿站?使用Sycamore_whisper谢谢喵!
*头图来自pixiv 134152139喵
前言
应该很多学校都有校园墙/表白墙吧,但大多数都是以这样的模式运营的:用户发送投稿到运营者的微信账号,再由运营者审核后发送至朋友圈。
这样的模式,我认为虽然容易起手,但是没有真正匿名的感觉,因为无论如何运营者都会知道你是谁。其次,对运营者和用户都有些麻烦:运营者需要定时查看微信消息,再把消息复制到朋友圈发布,如果有图片甚至还要下载到本地,再到朋友圈发送;用户不能随时随地投稿,查看内容也需要打开微信,点开朋友圈。
在我们学校的校园墙跑路后,我萌生了搭建一个匿名投稿站的想法,但是市面上又没有很符合我要求的项目,于是...就自己设计了一个!今天我们就来部署一下Sycamore_whisper吧!
项目优势
1、轻量,功能完整
2、除了ip哈希会用于速率限制而被储存,不储存任何其他用户信息
3、开箱即用,无需复杂配置
缺点:代码大多数使用AI编写,维护成本较高喵(逃)
欢迎留下你宝贵的建议,或者参与项目维护喵!谢谢!
项目演示

首页

投稿

评论

管理面板
环境准备
不知道在哪里购买服务器?推荐雨云,价格可接受,操作方便,开箱即用。
那么话不多说,我们开始吧~
我们先来配置一下环境吧!首先,让我们在服务器端安装一下python环境。
apt install python3 python3-venv python3-pip screen git接下来,我们在电脑上安装一下node.js环境
安装pnpm
npm install -g pnpm完成~
部署后端
那么,我们开始部署后端吧!
首先,克隆项目到本地
git clone https://github.com/Sycamore-Whisper/backend && cd backend创建一个screen,让项目在后台保持运行
# 创建screen,api为screen的名字
screen -S api
# 后续回到screen
screen -r api然后,创建一个虚拟环境并激活
python3 -m venv api-venv
source api-venv/bin/activate如果bash前面出现 (环境名) 说明已经进入了虚拟环境

接下来,安装项目依赖:
pip install -r requirements.txt如果没有报错的话,就可以运行了!
如果遇到编译错误,可能需要安装 Python 开发工具包(如 python3-dev)
python api_server.py成功!

注意:此时项目监听的是127.0.0.1的5000端口,如需修改,可以打开api_server.py,滑动到最下方,修改app.run部分:

接下来,配置反向代理和SSL证书,这里就不再赘述啦!
如果访问/路由看到这个提示,就说明后端已部署完毕!可以开始对接前端进行初始化了!恭喜🎆

部署前端
克隆前端项目至本地:
git clone https://github.com/Sycamore-Whisper/frontend && cd frontend
文件夹里有好多文件,我们不用管,径直来到/scr/config.ts:
我们主要修改api_config,在这里填入后端地址,注意是开放到公网上的地址,剩下的按需配置:

如果前端打算使用https,后端也要使用https!
接下来,找到/public/icon.png,将其替换为自己的图标

然后是about.md,可以填写markdown格式的内容,会展示在"关于"页面:

好耶!前端初始化完成,可以执行pnpm install安装依赖,pnpm build来构建静态文件了!


我们把静态文件上传到服务器:

接下来配置SPA路由回退,将这些配置加入nginx配置文件:
location / {
try_files $uri $uri/ /index.html;
}初始化
访问网站,即可来到后端初始化页面~按照图片提示配置:

初始化成功,恭喜!

可以尽情使用啦~感谢使用Sycamore_whisper项目喵!
后续可以使用git pull更新项目!
结语
感谢你能读到这里,也恭喜你成功部署了Sycamore_whisper。
其实一开始并没有打算单独做一个项目。当时使用了typecho+共享账户的方式搭建了匿名投稿站,但是后来缺乏维护,共享账户也容易被滥用,比如修改密码什么的。后来学长/姐运营的"XXXX匿名投稿bot"跑路了,才又想起来这件事。
这个项目...一开始看起来像一个不可能的任务,毕竟我从没有开发过这么复杂的前端,后端也不会多少。但好在有AI辅助,让我3页草稿的设计变为现实,看到这个成品,咱也很开心和有成就感哦!
所以...希望你也用的开心哦~
如果遇到任何问题,欢迎留言,我会尽力解决!
