Skip to content

Coooolfan/UniBoard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

264 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UniBoard

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

此仓库使用 monorepo 管理前后端:前端位于 web/,使用 Vue + TS + PrimeVue + Tailwind CSS 构建;后端位于 server/,使用 Spring Boot + Kotlin + Jimmer ORM 构建。

功能介绍

  • 首页个人信息与横幅展示
    • 所有内容可编辑
    • 允许完全隐藏
  • 导航页的外链展示与跳转
  • 账号密码登录
    • 在主页单击名字,账号密码输入框会弹出
  • 云笔记模块
    • 支持 Markdown 语法
    • 支持所见即所得编辑
    • 自带图床服务
    • 支持分享密码与纯文本直链
  • 短链服务
    • 统计
  • 文件
    • 存储
    • 分享
    • 直链下载
    • 鉴权
  • 全局暗色模式支持

截图

着陆页

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

主页

主页仪表盘

or

探针仪表盘

笔记组件 短链接组件
文件记录组件 设置-着陆页
设置-外链页 设置-系统设置页
探针仪表盘

文件分享页

文件分享页面

部署与安装

Docker Compose

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

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

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

    2. .env:按照提示修改即可,切记要修改POSTGRES_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

升级

Caution

0.3.0 版本与以前版本完全不兼容,重写了整个后端服务。当您尝试“升级”到 0.3.0 及以上版本时,需要删除原所有内容,从0开始。

程序会尝试兼容旧版本的数据库。在跨多个版本升级时,建议先浏览 Releases 或者 更新说明页面,查看每个版本的更新内容,以及可能的数据库变更和破坏性更新。

不建议使用各种自动升级工具。

如果您使用上述的 Docker Compose 方式部署,可以通过以下命令升级并重启:

docker compose pull && docker compose up -d

API

可见:https://uniboard.apifox.cn/

与笔记相关的API说明

  1. 获取笔记纯文本内容

    GET /api/note/<int:note_id>?pw=<str:password>:匿名获取笔记纯文本内容。笔记密码为空时表示私有;密码长度需大于8才有效。笔记不存在、私有、密码无效或密码错误时均返回404

与文件相关的API说明

  1. 上传文件

    POST /api/file-record/files:上传文件,使用multipart/form-data格式,其中insert为文件记录信息,file为二进制文件。返回新增成功的FileRecord对象,包含服务端生成的shareCode字段。(此方法需要鉴权)

  2. 编辑文件信息

    PUT /api/file-record/<int:file_id>:编辑文件信息,参数为文件记录更新对象,返回修改成功的FileRecord对象。(此方法需要鉴权)

  3. 获取文件列表

    GET /api/file-record?pageIndex=<int:page_index>&pageSize=<int:page_size>:分页获取文件列表,返回FileRecord对象分页结果。(此方法需要鉴权)

  4. 获取文件下载直链

    POST /api/file-record/direct-link:获取文件下载直链,参数为文件记录ID,返回一个UUID。使用5中的API,替换<str:UUID>为UUID即可。获取的地址在5分钟后会失效。(此方法需要鉴权,对所有文件可用)

  5. 使用API直接下载文件

    1. 此API不需要鉴权,对于无效密码或者UUID均返回404。(wget下载时需要加上--content-disposition参数)

    2. GET /file/<str:UUID>/:使用此API直接下载文件,UUID4中返回的UUID。此API不需要鉴权,对所有文件有效。

    3. GET /file/<str:share_code>/?pw=<str:password>:使用此API直接下载非私有文件share_code为文件的shareCode字段,password即为文件设置的密码,密码参数可选

    4. 部分客户端默认不支持使用content-disposition设定文件名,您可以在路径最后加上文件名来为这些客户端提供文件名。比如localhost/file/UUID/文件名或者localhost/file/share_code/文件名。其中文件名不参与任何服务端的逻辑,仅用于客户端显性显示文件名。对于密码保护的文件,需要在路径中加上?pw=文件密码。例如localhost/file/i2S3/sky.png?pw=123456,这样可以直接下载share_codei2S3的文件并显性地告知客户端文件名为sky.png,其中密码为123456

For Development

前端

cd web
yarn install
yarn dev

后端

cd server
./gradlew bootRun

Star History

Star History Chart

About

个人介绍,导航页、笔记、短链、文件分享、探针,私有化部署。Profile、Note、ShortURL、FileSharing、probeMonitor…… with self-host

Topics

Resources

License

Stars

Watchers

Forks

Contributors