个人主页 + 导航页 + 笔记 + 短链接 + 文件分享
此仓库仅为前端页面代码,使用 Vue3 + TS + Primevue4 构建。后端仓库地址点此访问。
- 首页个人信息与横幅展示
- 导航页的外链展示与跳转
- 账号密码登录
- 在主页单击名字,账号密码输入框会弹出
- 云笔记模块
- 支持Markdown语法
- 支持所见即所得编辑
- 自动同步图片
- 短链服务
- 统计
- 文件存储/分享/直链下载/鉴权
- 着陆页的所有内容可编辑
- 界面优雅且功能精简的探针服务
此README的wget目标可能未指向最新版本,建议前往releases查看各个版本的部署指南
-
下载
.env
文件和docker-compsoe.yml
文件mkdir uniboard cd uniboard wget https://github.com/Coooolfan/UniBoard/releases/download/v0.2.4/docker-compose.yml wget https://github.com/Coooolfan/UniBoard/releases/download/v0.2.4/example.env
-
按照需要修改
.env
文件和docker-compsoe.yml
-
docker-compsoe.yml
:默认只暴露8888
端口(文件第8行),通过此端口向外暴露所有服务,如果您需要对uniboard
配置反向代理,只需代理此端口即可。 -
.env
:按照提示修改即可,切记要修改DJANGO_SUPERUSER_PASSWORD
的值,不要使用默认值! -
修改完成后复制
example.env
为.env
文件,供docker compose
服务调取cp example.env .env
-
-
使用
docker compose
命令启动服务docker compose up -d
-
使用浏览器访问站点,默认为
8888
端口,如果您在本机部署,即访问http://localhost:8888
即可
Uniboard程序本身不提供ssl相关功能,直接暴露8888端口不是一个好的选择。
考虑到不同环境下Nginx的配置可能并不相同,下文仅提供思路和必要配置。
-
创建对应站点的conf文件
-
编辑监听的server_name, ssl相关内容
-
配置反向代理
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; }
-
让Nginx重新加载配置
nginx -s reload
除非特殊说明,升级时只需将容器版本指向最新版本即可。
建议参照Release页面的更新日志进行升级。如无警告,直接升级即可。
-
编辑
docker-compose.yml
文件第5行和第17行,将image
字段最后一个:
后的版本号改为最新版本即可。 -
重新启动服务
# docker 会自动下载最新版本的镜像并启动服务 docker compose up -d
-
下载最新的
docker-compose.yml
文件wget https://github.com/Coooolfan/UniBoard/releases/download/v0.2.4/docker-compose.yml
-
按照需要修改
docker-compose.yml
文件 -
重新启动服务
# docker 会自动下载最新版本的镜像并启动服务 docker compose up -d
可见:https://github.com/Coooolfan/UniBoard-Service/blob/main/api/urls/index.py和https://github.com/Coooolfan/UniBoard-Service/blob/main/UniBoard/urls.py
其中api.urls.index.py
中的路径需要加上/api/
的前缀。
注意:所有涉及增删改的操作都要带上jwt_token
,即在请求头中加上Authorization : Bearer <token string>
。
-
上传文件
POST /api/file-records/
:上传文件,参数为FileRecord
对象,其中的share_code
字段会被忽略,由服务器生成。返回新增成功的FileRecord
对象,包含生成的share_code
字段。注意上传时使用multipart/form-data
格式,以携带二进制文件。
-
编辑文件信息
PATCH /api/file-records/<int:file_id>/
:编辑文件信息,参数为FileRecord
对象,返回修改成功的FileRecord
对象。如果要修改文件的file
字段,需要使用multipart/form-data
格式,以携带二进制文件。
-
获取文件列表
GET /api/file-records/
:获取文件列表,返回FileRecord
对象列表。(此方法需要携带jwt_token
)
-
获取文件下载直链
GET /api/file-records/<int:file_id>/token/
:获取文件下载直链,返回一个UUID。使用5
中的API,替换<str:UUID>
为UUID即可。获取的地址在5分钟后会失效。(此方法需要携带jwt_token
,对所有文件都有效)
-
使用API直接下载文件
此API不需要携带
jwt_token
,对非私有文件有效。(wget下载时需要加上--content-disposition
参数)GET /file/<str:UUID>/
:使用此API直接下载文件,UUID
为4
中返回的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_code
为i2S3
的文件并显性地向客户端文件名为sky.png
,其中密码为123456
。 - 从
v0.2.4
开始,API不再强制同源策略,现在你可以在任何地方使用API直接引用文件。