中文 | English
一个基于 Spring Boot 3(JDK 21)、SQLite 的轻量级文件存储与分享服务。支持登录会话、文件浏览/上传/下载、分享直链、基础安全头、可选 HTTPS,以及通过外部配置文件管理默认管理员账号。
核心默认配置:
- 端口:59898
- 数据库:
./data/storeit.db(自动创建) - 存储根目录:
./storage/ - 默认管理员:
admin / authorized_users(可通过外部配置覆盖)
- UI 页面:
/、/login、/list - 认证与会话:
POST /api/login、POST /api/logout、GET /api/user/status - 文件:
GET /api/files?path=...、POST /api/upload(multipart)、受保护下载GET /storage/** - 分享直链:
POST /api/share生成分享,公开下载GET /d/{token} - 安全:
Strict-Transport-Security、X-Content-Type-Options、X-Frame-Options、X-XSS-Protection头;路径安全检查,防目录穿越 - 配置:支持在
src/main/resources/application.yml中配置;支持加载外部./config/admin.yml覆盖默认管理员凭据
前置要求:JDK 21、Maven
- 构建:
mvn -DskipTests package - 运行:
java -jar target/storeit-1.1.1.jar
可选:在 src/main/resources/application.yml 调整配置;或通过外部文件覆盖(适用于发布 JAR 部署):
- 复制示例到本地配置目录:
cp config/application.yml.example config/application.ymlcp config/admin.yml.example config/admin.yml
- 按需修改
config/*.yml,然后运行 jar。应用会自动读取./config/application.yml与./config/admin.yml。
本项目通过 Spring Boot spring.config.import 支持从外部文件加载管理员用户名/密码,避免在仓库中存放明文:
- 外部文件路径:
./config/admin.yml - 示例内容:
app:
default-admin:
username: admin
password: your_secret_here
application.yml 已配置:
spring:
config:
import:
- optional:file:./config/application.yml
- optional:file:./config/admin.yml
仓库的 .gitignore 已忽略实际的 config/*.yml(保留 *.example),适合直接携带 release JAR 进行外部配置。
- 页面:
GET /->static/index.htmlGET /login->static/login.htmlGET /list->static/list.html
- 认证:
POST /api/login(表单:username、password)POST /api/logoutGET /api/user/status
- 文件:
GET /api/files?path=...— 列出目录内容POST /api/upload— 上传文件(multipart/form-data,字段名:file,可选 directory)GET /storage/**— 已登录受保护下载
- 分享:
POST /api/share— 生成分享链接(请求体:{"filePath":"...","expireDays":30,"maxDownloads":null})GET /d/{token}— 公开下载(受有效期/下载次数限制)
- SQLite 数据库:
./data/storeit.db - 表:
users、sessions、file_shares(初始由 FlywayV1__init.sql创建) - 启动时会确保默认管理员存在;若配置中密码变更,会同步更新其哈希
- 支持在
server.ssl.*配置中启用证书(见application.yml注释) - 全局安全响应头通过
SecurityHeadersFilter添加 - 路径安全检查与登录拦截通过
AuthInterceptor、FileService.isSafePath实现
storage/— 文件存储根目录src/main/resources/static/— 静态资源(前端页面与脚本)src/main/resources/db/migration/— Flyway SQL 脚本config/admin.yml— 外部管理员配置(不入库)
- 旧版基于 Flask + IP 白名单;新版改为 登录会话 + SQLite + Spring Boot 3
- 不再使用
config.json与ip_whitelist.json;改用application.yml与数据库 - HTTPS 配置方式变化:参考 Spring Boot SSL 配置;支持 PKCS12 keystore