/FileCodeBox

文件快递柜-匿名口令分享文本,文件,像拿快递一样取文件(File Express Cabinet - Anonymous Passcode Sharing Text, Files, Like Taking Express Delivery for Files)

Primary LanguagePythonGNU Lesser General Public License v3.0LGPL-3.0

文件快递柜-轻量

FileCodeBox-Lite

匿名口令分享文本,文件,像拿快递一样取文件

交流Q群:739673698,欢迎各位集思广益,项目构思重构中

banner


简体中文 | English

主要特色

  • 轻量简洁:Fastapi+Sqlite3+Vue2+ElementUI
  • 轻松上传:复制粘贴,拖拽选择
  • 多种类型:文本,文件
  • 防止爆破:错误次数限制
  • 防止滥用:IP限制上传次数
  • 口令分享:随机口令,存取文件,自定义次数以及有效期
  • 匿名分享:无需注册,无需登录
  • 管理面板:查看所有文件,删除文件
  • 一键部署:docker一键部署
  • 自由拓展:阿里云OSS、本地文件流,可根据需求在storage文件中新增存储引擎
  • 简单明了:适合新手练手项目

部署方式

Docker一键部署

AMD 开发版(不稳定,待测试,新增分片异步上传,永久存储,不建议使用,很多没发现的坑)

docker run -d --restart=always -p 12345:12345 -v /opt/FileCodeBox/:/app/data --name filecodebox lanol/filecodebox:pre

AMD

docker run -d --restart=always -p 12345:12345 -v /opt/FileCodeBox/:/app/data --name filecodebox lanol/filecodebox:latest

ARM

docker run -d --restart=always -p 12345:12345 -v /opt/FileCodeBox/:/app/data --name filecodebox lanol/filecodebox:arm

宝塔部署

https://www.yuque.com/lxyo/work/lc1oe0xqk8t9b976

更新方式

// 停止容器并删除
docker stop filecodebox && docker rm filecodebox
// 重新运行容器
docker run -d --restart=always -p 12345:12345 -v /opt/FileCodeBox/:/app/data --name filecodebox lanol/filecodebox:latest

1.6版本注意

这一版改变比较大,如果出现问题可以尝试清空/opt/FileCodeBox目录,有问题欢迎反馈留言 注意,如果是第一次安装,请查看docker日志获取初始密码和后台地址,参考指令 后台本地文件列表,需要将服务器文件移动至目录/opt/FileCodeBox/data/locals,这样就可以显示了。

docker logs filecodebox

其他方式

仅供参考,历史版本->部署文档

项目规划

2022年12月14日 这个项目的灵感来源于丁丁快传,然后写了这么一个基于本机存储的快传系统,本系统主要是以轻量,单用户,离线环境(私有化 )为主,因此也不需要加太多东西,所以其实这个项目到这基本功能已经完成了,剩下的就是维护和完善现有功能。 也不会再加入新的大功能了,如果你有更好的想法和建议欢迎提issue。

预览

例站

https://share.lanol.cn

暗黑模式

寄文件 寄文件

寄件

寄文件 寄文本
寄文本

取件

取件 取件码错误
取文件

管理

admin admin
admin

配置文件

如果需要修改配置,可以将该文件放在/opt/FileCodeBox/目录下,并命名为.env,然后重启容器即可。 如果不是Docker,则需要在项目同目录下新建一个data文件夹,然后在创建.env文件

# 端口
PORT=12345
# Sqlite数据库文件
DATABASE_URL=sqlite+aiosqlite:///database.db
# 静态文件夹
DATA_ROOT=./static
# 静态文件夹URL
STATIC_URL=/static
# 开启上传
ENABLE_UPLOAD=True
# 错误次数
ERROR_COUNT=5
# 错误限制分钟数
ERROR_MINUTE=10
# 上传次数
UPLOAD_COUNT=60
# 上传限制分钟数
UPLOAD_MINUTE=1
# 删除过期文件的间隔(分钟)
DELETE_EXPIRE_FILES_INTERVAL=10
# 管理地址
ADMIN_ADDRESS=admin
# 管理密码
ADMIN_PASSWORD=admin
# 文件大小限制,默认10MB
FILE_SIZE_LIMIT=10
# 网站标题
TITLE=文件快递柜
# 网站描述
DESCRIPTION=FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件,图片,视频,音频,压缩包等文件
# 网站关键词
KEYWORDS=FileCodeBox,文件快递柜,口令传送箱,匿名口令分享文本,文件,图片,视频,音频,压缩包等文件
# 存储引擎
STORAGE_ENGINE=filesystem
# 如果使用阿里云OSS服务的话需要额外创建如下参数:
# 阿里云账号AccessKey
KeyId=阿里云账号AccessKey
# 阿里云账号AccessKeySecret
KeySecret=阿里云账号AccessKeySecret
# 阿里云OSS Bucket的地域节点
OSS_ENDPOINT=阿里云OSS Bucket的地域节点
# 阿里云OSS Bucket的BucketName
BUCKET_NAME=阿里云OSS Bucket的BucketName

接口文档

前端比较简陋,可以使用接口进行二次开发

取件

PATH

/

METHOD

POST

PARAMS

code: 取件码

Response

{
  "detail": "msg",
  "data": {
    "type": "类型",
    "text": "文本",
    "name": "名称",
    "code": "取件码"
  }
}

寄件

PATH

/share

METHOD

POST

PARAMS

style: 1为次数,2为时间 value: 次数或时间 text: 取件码 file: 文件

Response

{
  "detail": "msg",
  "data": {
    "code": "类型",
    "key": "唯一ID",
    "name": "名称"
  }
}

状态

Alt

Star History

Star History Chart

赞赏

支付宝 支付宝 微信 微信

常见问题

  1. 413 Request Entity Too Large Nginx限制: 找到自己主机的nginx.conf配置文件,打开 在http{}中加入 client_max_body_size 10m; 然后重启nginx

免责声明

本项目开源仅供学习使用,不得用于任何违法用途,否则后果自负,与本人无关。使用请保留项目地址谢谢。