📁 文件托管服务
基于 Bun 的高性能文件托管服务,用于快速部署和访问静态文件。
✨ 功能特点
- 🚀 基于 Bun,性能极佳
- 📂 支持目录浏览,美观的 Web 界面
- 🔍 自动识别文件 MIME 类型
- 🛡️ 防路径遍历攻击
- ⚙️ 简单配置,开箱即用
🚀 快速开始
安装依赖
bun install
启动服务
# 开发模式(自动重启)
bun run dev
# 生产模式
bun run start
访问服务
打开浏览器访问:http://localhost:3000
📦 使用说明
- 将需要托管的文件放入
files/目录 - 启动服务
- 通过浏览器访问文件:
- 访问根路径:
http://localhost:3000/查看所有文件 - 访问具体文件:
http://localhost:3000/your-file.pdf - 访问子目录:
http://localhost:3000/subfolder/
- 访问根路径:
⚙️ 配置
编辑 .env 文件修改配置:
# 服务器端口
PORT=3000
# 文件存储目录
FILES_DIR=./files
🌐 部署到服务器
1. 安装 Bun
curl -fsSL https://bun.sh/install | bash
2. 上传代码到服务器
# 使用 git
git clone <your-repo>
# 或使用 scp
scp -r . user@server:/path/to/app
3. 启动服务
# 直接运行
bun run start
# 使用 PM2 管理(推荐)
pm2 start "bun run start" --name file-hosting
# 使用 systemd(推荐)
sudo nano /etc/systemd/system/file-hosting.service
systemd 服务配置示例
[Unit]
Description=File Hosting Service
After=network.target
[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/app
ExecStart=/root/.bun/bin/bun run src/server.ts
Restart=always
Environment=PORT=3000
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl enable file-hosting
sudo systemctl start file-hosting
sudo systemctl status file-hosting
4. 配置反向代理(可选)
使用 Nginx 反向代理:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
📝 项目结构
.
├── src/
│ └── server.ts # 服务器主文件
├── files/ # 文件存储目录
│ ├── .gitkeep
│ └── README.md # 示例文件
├── package.json
├── tsconfig.json
├── .env # 环境配置
├── .gitignore
└── README.md
🔒 安全建议
- 不要暴露敏感文件:确保
files/目录中不包含敏感信息 - 使用 HTTPS:生产环境建议配置 SSL 证书
- 添加认证:如需限制访问,可添加 HTTP 基础认证或 JWT
- 设置防火墙:限制只允许特定 IP 访问
📄 支持的文件类型
- 文档:PDF, TXT, MD
- 图片:PNG, JPG, GIF, SVG
- 视频:MP4
- 音频:MP3
- 压缩包:ZIP
- 网页:HTML, CSS, JS
- 数据:JSON
📈 性能
- 基于 Bun 原生文件 API,性能是 Node.js 的 2-4 倍
- 低内存占用,适合小型服务器
- 支持高并发访问
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📜 许可
MIT License
Description
Languages
TypeScript
91.6%
Dockerfile
8.4%