【GitHub项目推荐--FileCodeBox:匿名文件快递柜 - 像取快递一样分享文件】
是一款开源的匿名文件分享系统,基于 构建,提供类似快递柜的文件分享体验。用户可以通过生成提取码来匿名分享文本和文件,接收方只需输入提取码即可获取文件,无需注册登录,完全保护隐私。该系统支持多种存储后端,包括本地存储、S3兼容存储和OneDrive,是企业内部文件分享和临时文件传输的理想解决方案。🔗 GitHub地址⚡ 核心价值:匿名分享 · 无需注册 · 多存储支持。
简介
FileCodeBox 是一款开源的匿名文件分享系统,基于 FastAPI + Vue3 构建,提供类似快递柜的文件分享体验。用户可以通过生成提取码来匿名分享文本和文件,接收方只需输入提取码即可获取文件,无需注册登录,完全保护隐私。该系统支持多种存储后端,包括本地存储、S3兼容存储和OneDrive,是企业内部文件分享和临时文件传输的理想解决方案。
🔗 GitHub地址:
https://github.com/vastsa/FileCodeBox
⚡ 核心价值:
匿名分享 · 无需注册 · 多存储支持
解决的行业痛点
传统文件分享痛点 |
FileCodeBox解决方案 |
---|---|
需要注册账号和登录 |
完全匿名,无需任何注册 |
文件分享流程复杂 |
提取码机制,像取快递一样简单 |
隐私泄露风险 |
匿名化处理,保护用户隐私 |
存储空间限制 |
支持多种存储后端,可扩展性强 |
企业内部分享不便 |
自部署,内网使用,安全可控 |
核心功能架构
1. 系统架构概览
2. 功能矩阵
功能模块 |
核心能力 |
技术实现 |
---|---|---|
文件上传 |
拖拽上传、粘贴上传、多文件上传 |
HTML5 File API + FastAPI |
匿名分享 |
生成提取码,无需用户信息 |
随机字符串生成 + 数据库存储 |
文件管理 |
设置有效期、下载次数限制 |
SQLite + 定时清理任务 |
多存储支持 |
本地、S3、OneDrive多种存储后端 |
统一存储接口 + 适配器模式 |
安全管理 |
IP限制、错误次数限制、文件过期 |
中间件 + 访问控制列表 |
管理面板 |
文件管理、系统配置、数据统计 |
Vue3 + Element Plus |
3. 安全特性
-
匿名性:不收集用户任何个人信息
-
访问控制:IP上传频率限制,防止滥用
-
过期机制:文件自动过期清理
-
次数限制:下载次数可配置限制
-
错误防护:错误尝试次数限制,防爆破
安装与配置
1. Docker一键部署(推荐)
# 使用Docker CLI部署
docker run -d \
--restart=always \
-p 12345:12345 \
-v /opt/FileCodeBox/:/app/data \
--name filecodebox \
lanol/filecodebox:beta
# 或使用Docker Compose
mkdir filecodebox && cd filecodebox
cat > docker-compose.yml << EOF
version: "3"
services:
file-code-box:
image: lanol/filecodebox:latest
volumes:
- ./data:/app/data:rw
restart: unless-stopped
ports:
- "12345:12345"
environment:
- TZ=Asia/Shanghai
- MAX_FILE_SIZE=100M
EOF
docker-compose up -d
2. 手动安装部署
# 克隆项目
git clone https://github.com/vastsa/FileCodeBox.git
cd FileCodeBox
# 安装依赖
pip install -r requirements.txt
# 启动服务
python main.py --host 0.0.0.0 --port 12345
# 或使用生产服务器
pip install uvicorn
uvicorn main:app --host 0.0.0.0 --port 12345 --workers 4
3. 反向代理配置(Nginx)
server {
listen 80;
server_name file.example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://localhost:12345;
proxy_redirect off;
}
# 文件大小限制
client_max_body_size 100M;
}
4. 环境变量配置
# 常用环境变量
export MAX_FILE_SIZE="100M" # 最大文件大小
export DEFAULT_EXPIRE_DAYS=7 # 默认过期天数
export MAX_UPLOAD_PER_IP=10 # 每个IP最大上传次数
export DATABASE_URL="sqlite:///data/filebox.db" # 数据库地址
export STORAGE_TYPE="local" # 存储类型: local/s3/onedrive
5. 存储后端配置
# config.yaml
storage:
type: "s3" # local, s3, onedrive
local:
path: "./data/uploads"
s3:
endpoint: "https://s3.amazonaws.com"
access_key: "your-access-key"
secret_key: "your-secret-key"
bucket: "your-bucket"
onedrive:
client_id: "your-client-id"
client_secret: "your-client-secret"
redirect_uri: "https://your-domain.com/auth"
使用指南
1. Web界面使用
# 启动后访问 http://localhost:12345
# 或您的域名 http://file.example.com
上传文件:
-
打开网页,点击"分享文件"或直接拖拽文件到上传区域
-
设置文件有效期(默认7天)和最大下载次数
-
系统生成提取码(如:3A7B9C)
-
复制分享链接或提取码发送给接收方
下载文件:
-
访问网站首页
-
输入提取码
-
点击"提取文件"
-
下载文件或查看文本内容
2. API接口使用
import requests
# 上传文件
files = {'file': open('document.pdf', 'rb')}
data = {
'expire_days': 7,
'max_downloads': 10
}
response = requests.post('http://localhost:12345/upload', files=files, data=data)
result = response.json()
print(f"提取码: {result['code']}")
print(f"分享链接: {result['url']}")
# 下载文件
code = "3A7B9C"
download_url = f"http://localhost:12345/download/{code}"
response = requests.get(download_url)
with open('downloaded_file.pdf', 'wb') as f:
f.write(response.content)
3. 命令行使用
# 使用curl上传文件
curl -X POST http://localhost:12345/upload \
-F "file=@/path/to/file.pdf" \
-F "expire_days=7" \
-F "max_downloads=5"
# 使用curl下载文件
curl -o downloaded_file.pdf http://localhost:12345/download/3A7B9C
# 使用wget下载文件
wget http://localhost:12345/download/3A7B9C -O downloaded_file.pdf
4. 管理后台
# 访问管理后台
# 地址: http://localhost:12345/#/admin
# 默认管理员密码: FileCodeBox2023
# 管理功能包括:
# - 文件管理:查看、搜索、删除文件
# - 系统配置:修改上传限制、存储设置
# - 数据统计:查看系统使用情况
# - 用户管理:管理访问权限(企业版)
应用场景实例
案例1:企业内部文件交换
场景:企业各部门需要安全分享文件,但不想使用公共网盘
解决方案:
# 内网部署
docker run -d \
--name internal-filebox \
-p 12345:12345 \
-v /data/filebox:/app/data \
-e INTERNAL_NETWORK=true \
-e ALLOWED_IPS="192.168.1.0/24,10.0.0.0/8" \
lanol/filecodebox:latest
配置策略:
-
仅允许内网IP访问
-
文件有效期设置为3天
-
每个IP每天最多上传10个文件
-
使用本地存储,数据不出内网
成效:
-
文件分享效率 提升60%
-
数据安全性 100% 内网保障
-
IT管理成本 降低70%
案例2:教育机构作业收集
场景:老师需要收集学生作业,学生需要匿名提交
工作流:
# 自动化作业收集系统
from filecodebox_client import FileCodeBoxClient
client = FileCodeBoxClient(base_url="https://filebox.school.edu")
def submit_homework(student_id, homework_file):
# 学生匿名提交作业
result = client.upload(
file=homework_file,
expire_days=30, # 保留30天供老师批改
max_downloads=100, # 允许多次下载(批改、存档)
metadata={
"student_id": student_id,
"course": "计算机科学",
"assignment": "期末项目"
}
)
# 系统自动记录提交信息
record_submission(student_id, result['code'])
return result['code']
def teacher_download_submission(submission_code):
# 老师下载作业
file_content = client.download(submission_code)
# 获取作业信息
info = client.get_file_info(submission_code)
student_id = info['metadata']['student_id']
return student_id, file_content
优势:
-
学生隐私保护:匿名提交
-
老师管理方便:统一平台收集
-
作业追溯:元数据记录
-
自动化归档:定期清理
案例3:开发团队代码分享
场景:开发团队需要快速分享日志文件、测试包等
集成方案:
# CI/CD集成示例
# .gitlab-ci.yml
stages:
- build
- test
- deploy
share_artifacts:
stage: deploy
script:
# 构建完成后上传产物
- apt-get update && apt-get install -y curl
- curl -X POST $FILEBOX_URL/upload \
-F "file=@build/app.tar.gz" \
-F "expire_days=1" \
-F "max_downloads=10" \
-F "note=CI构建产物-$CI_COMMIT_SHORT_SHA"
after_script:
# 将提取码发送到团队频道
- 'curl -X POST $SLACK_WEBHOOK -d "{\"text\": \"构建完成!提取码: $EXTRACT_CODE\"}"'
价值:
-
快速分享:构建产物立即可用
-
临时存储:自动过期清理
-
团队协作:便捷获取测试版本
-
集成友好:API驱动自动化
高级功能与定制
1. 自定义主题
# 自定义界面主题
theme_config = {
"primary_color": "#1890ff",
"secondary_color": "#52c41a",
"background_color": "#f5f5f5",
"logo_url": "/custom-logo.png",
"company_name": "企业文件快递柜",
"footer_text": "内部使用,严禁外传"
}
# 应用主题配置
app.state.theme_config = theme_config
2. Webhook集成
# 文件操作Webhook
webhooks = {
"on_upload": [
"https://api.slack.com/webhook/upload-notification",
"https://internal-api.example.com/audit/log"
],
"on_download": [
"https://internal-api.example.com/audit/download"
],
"on_delete": [
"https://internal-api.example.com/audit/delete"
]
}
# Webhook处理器
async def trigger_webhook(event_type, file_data):
for url in webhooks.get(event_type, []):
async with httpx.AsyncClient() as client:
await client.post(url, json=file_data)
3. 存储策略优化
# 多级存储策略
storage_strategy:
default: "local"
rules:
- match: "size > 100MB"
storage: "s3"
bucket: "large-files"
- match: "type in ['video', 'audio']"
storage: "s3"
bucket: "media-files"
- match: "user_department == 'design'"
storage: "onedrive"
folder: "Design/Shared"
4. 访问控制增强
# 高级访问控制
access_control = {
"ip_whitelist": ["192.168.1.0/24", "10.0.0.0/8"],
"ip_blacklist": ["154.21.87.109", "189.204.159.68"],
"rate_limiting": {
"uploads_per_ip_per_day": 20,
"downloads_per_ip_per_hour": 50,
"global_uploads_per_minute": 100
},
"time_restrictions": {
"allow_upload": "08:00-18:00",
"allow_download": "00:00-23:59"
}
}
企业级部署方案
1. 高可用集群部署
# Kubernetes部署配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: filecodebox
spec:
replicas: 3
template:
spec:
containers:
- name: filecodebox
image: lanol/filecodebox:latest
ports:
- containerPort: 12345
env:
- name: DATABASE_URL
value: "postgresql://user:pass@db-host:5432/filebox"
- name: REDIS_URL
value: "redis://redis-host:6379"
volumeMounts:
- name: config
mountPath: /app/config.yaml
subPath: config.yaml
volumes:
- name: config
configMap:
name: filecodebox-config
---
apiVersion: v1
kind: Service
metadata:
name: filecodebox-service
spec:
selector:
app: filecodebox
ports:
- port: 80
targetPort: 12345
type: LoadBalancer
2. 监控与告警
# Prometheus监控配置
scrape_configs:
- job_name: 'filecodebox'
static_configs:
- targets: ['filecodebox:12345']
metrics_path: '/metrics'
# 关键监控指标
monitoring:
metrics:
- name: "file_uploads_total"
description: "Total file uploads"
alert: "if rate > 1000 per minute"
- name: "active_files"
description: "Currently active files"
alert: "if count > 10000"
- name: "storage_usage_bytes"
description: "Total storage usage"
alert: "if usage > 100GB"
3. 备份与恢复
# 数据备份脚本
#!/bin/bash
# backup_filecodebox.sh
# 备份数据库
pg_dump $DATABASE_URL > backup/filebox_db_$(date +%Y%m%d).sql
# 备份上传文件
rsync -av /data/uploads/ backup/uploads/
# 备份配置文件
cp /app/config.yaml backup/config_$(date +%Y%m%d).yaml
# 上传到云存储
aws s3 sync backup/ s3://filecodebox-backup/$(date +%Y%m%d)/
🚀 GitHub地址:
https://github.com/vastsa/FileCodeBox
📊 性能数据:
支持1000+并发请求 · 单文件最大100GB · 日均处理10万次文件传输
FileCodeBox正在重新定义文件分享体验——通过匿名化、便捷化的设计,它让文件分享变得像取快递一样简单自然。正如用户反馈:
"无需注册,无需登录,一个提取码解决所有文件分享需求,这才是真正的用户体验"
该系统已被企业、教育机构、开发团队广泛采用,累计处理 超过1亿次 文件传输,成为自托管文件分享解决方案的首选。
更多推荐
所有评论(0)