Skip to content

170-carry/online_share

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

在线文件共享空间(Golang + Vue + OSS + PostgreSQL + Redis)

输入同一个空间 ID 即进入同一个共享房间,支持文件与文字共享、口令保护、过期清理、访问日志。

功能

  • 同 ID 进入同一空间
  • 房间口令保护(设置/清除)
  • 文件上传到阿里云 OSS
  • OSS_ENDPOINT / OSS_ACCESS_KEY_ID / OSS_ACCESS_KEY_SECRET / OSS_BUCKET 任一缺失,文件自动落地到当前目录 tmp/(或 LOCAL_TMP_DIR
  • 文件下载、删除
  • 过期策略仅支持:1h12h1d(默认 1h,最长 1d
  • 访问日志使用 Redis 存储,键 TTL 固定 7 天
  • 房间/文件/文字元数据存储在 PostgreSQL

一键部署(Docker Compose)

docker compose up -d --build

启动后访问:http://localhost:18743

Compose 已包含:

  • app(Go 服务,自动重启)
  • postgres(数据卷持久化,自动重启)
  • redis(AOF + 数据卷持久化,自动重启)
  • app_tmp 卷(OSS 缺失时本地文件缓存)
  • 冷门端口:app=18743postgres=35432redis=36379

本地开发运行

  1. 复制配置
cp .env.example .env
  1. 启动依赖(推荐)
docker compose up -d postgres redis
  1. 运行后端
cd backend
go mod tidy
go run .
  1. 打开

http://localhost:18743

关键环境变量

  • DATABASE_DSN:PostgreSQL 连接串(优先)
  • POSTGRES_HOST/PORT/USER/PASSWORD/DB/SSLMODE:未设置 DATABASE_DSN 时用于拼接连接串
  • REDIS_ADDRREDIS_PASSWORDREDIS_DB:日志 Redis 连接
  • MAX_UPLOAD_MB:上传大小上限(MB)
  • DOWNLOAD_TTL_MINUTES:OSS 下载签名时效(分钟)
  • CLEANUP_INTERVAL_MINUTES:过期房间扫描间隔(分钟)
  • LOCAL_TMP_DIR:OSS 缺失时本地文件目录

API(简要)

  • POST /api/rooms/enter
    • body: { "roomId": "team_docs", "password": "123456", "retentionPolicy": "1h" }
  • GET /api/rooms/{roomId}?password=...
  • POST /api/rooms/{roomId}/notes
    • body: { "content": "文本", "password": "123456" }
  • POST /api/rooms/{roomId}/files (form-data: file, password)
  • DELETE /api/rooms/{roomId}/files/{fileId}
    • body: { "password": "123456" }
  • GET /api/rooms/{roomId}/files/{fileId}/download?password=...
  • POST /api/rooms/{roomId}/settings
    • body: { "currentPassword": "old", "newPassword": "new", "retentionPolicy": "12h" }
  • GET /api/rooms/{roomId}/logs?password=...&limit=120

About

在线文件共享空间

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages