Skip to content

个人介绍,导航页、笔记、短链、文件分享。Profile、Note、ShortURL、FileSharing……

License

Notifications You must be signed in to change notification settings

Coooolfan/UniBoard

Repository files navigation

UniBoard

个人主页 + 导航页 + 笔记 + 短链接 + 文件分享

此仓库仅为前端页面代码,使用 Vue3 + TS + Primevue4 构建。后端仓库地址点此访问。

功能介绍

  • 首页个人信息与横幅展示
  • 导航页的外链展示与跳转
  • 账号密码登录
    • 在主页单击名字,账号密码输入框会弹出
  • 云笔记模块
  • 短链服务
  • 文件存储/分享/直链下载/鉴权
  • 着陆页的所有内容可编辑

截图

着陆页

着陆页首屏 着陆页第二屏 着陆页登录组件

主页

主页仪表盘 空荡荡的仪表盘是为了之后放探针服务的全屏展示的~ 主页功能模块

文件分享页

文件分享页面

画大饼中……

  • 界面优雅且功能精简的探针服务

部署与安装

Docker

此README的wget目标可能未指向最新版本,建议前往releases查看各个版本的部署指南

  1. 下载.env文件和docker-compsoe.yml文件

    mkdir uniboard
    cd uniboard
    wget https://github.com/Coooolfan/UniBoard/releases/download/v0.2.2/docker-compose.yml    
    wget https://github.com/Coooolfan/UniBoard/releases/download/v0.2.2/example.env
  2. 按照需要修改.env文件和docker-compsoe.yml

    1. docker-compsoe.yml:默认只暴露8888端口(文件第8行),通过此端口向外暴露所有服务,如果您需要对uniboard配置反向代理,只需代理此端口即可。

    2. .env:按照提示修改即可,切记要修改DJANGO_SUPERUSER_PASSWORD的值,不要使用默认值!

    3. 修改完成后复制example.env.env文件,供docker compose服务调取

      cp example.env .env
  3. 使用docker compose命令启动服务

    docker compose up -d
  4. 使用浏览器访问站点,默认为8888端口,如果您在本机部署,即访问http://localhost:8888即可

使用Nginx配置反向代理(可选)

Uniboard程序本身不提供ssl相关功能,直接暴露8888端口不是一个好的选择。

考虑到不同环境下Nginx的配置可能并不相同,下文仅提供思路和必要配置。

  1. 创建对应站点的conf文件

  2. 编辑监听的server_name, ssl相关内容

  3. 配置反向代理

    client_max_body_size 0; # 设置最大包大小为无上限
    location / {
        proxy_pass http://127.0.0.1:8888;
        proxy_set_header Host $host; # 保留代理之前的host
        proxy_set_header X-Real-IP $remote_addr; # 保留代理之前的真实客户端ip
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr; # 在多级代理的情况下,记录每次代理之前的客户端真实ip
        proxy_set_header X-Forwarded-Proto $scheme; # 表示客户端真实的协议(http还是https)
        proxy_redirect default; # 指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值
        proxy_buffering off;
    }
    
  4. 让Nginx重新加载配置

    nginx -s reload

API

可见:https://github.com/Coooolfan/UniBoard-Service/blob/main/api/urls/index.pyhttps://github.com/Coooolfan/UniBoard-Service/blob/main/UniBoard/urls.py

其中api.urls.index.py中的路径需要加上/api/的前缀。

与文件相关的API说明

注意:所有涉及增删改的操作都要带上jwt_token,即在请求头中加上Authorization : Bearer <token string>

  1. 上传文件

    • POST /api/file-records/:上传文件,参数为FileRecord对象,其中的share_code字段会被忽略,由服务器生成。返回新增成功的FileRecord对象,包含生成的share_code字段。注意上传时使用multipart/form-data格式,以携带二进制文件。
  2. 编辑文件信息

    • PATCH /api/file-records/<int:file_id>/:编辑文件信息,参数为FileRecord对象,返回修改成功的FileRecord对象。如果要修改文件的file字段,需要使用multipart/form-data格式,以携带二进制文件。
  3. 获取文件列表

    • GET /api/file-records/:获取文件列表,返回FileRecord对象列表。(此方法需要携带jwt_token
  4. 获取文件下载直链

    • GET /api/file-records/<int:file_id>/token/:获取文件下载直链,返回一个UUID。使用5中的API,替换<str:UUID>为UUID即可。获取的地址在5分钟后会失效。(此方法需要携带jwt_token,对所有文件都有效)
  5. 使用API直接下载文件

    此API不需要携带jwt_token,对非私有文件有效。(wget下载时需要加上--content-disposition参数)

    • GET /file/<str:UUID>/:使用此API直接下载文件,UUID4中返回的UUID。此API不需要携带jwt_token,对所有文件有效。
    • GET /file/<str:share_code>/?pw=<str:password>:使用此API直接下载非私有文件share_code为文件的share_code字段,password即为文件设置的密码,密码参数可选
    • 部分客户端默认不支持使用content-disposition设定文件名,您可以在路径最后加上文件名来为这些客户端提供文件名。比如localhost/file/UUID/文件名或者localhost/file/share_code/文件名。其中文件名不参与任何服务端的逻辑,仅用于客户端显性显示文件名。对于密码保护的文件,需要在路径中加上?pw=文件密码。例如localhost/file/i2S3/sky.png?pw=123456,这样可以直接下载share_codei2S3的文件并显性地向客户端文件名为sky.png,其中密码为123456

About

个人介绍,导航页、笔记、短链、文件分享。Profile、Note、ShortURL、FileSharing……

Resources

License

Stars

Watchers

Forks