多功能一站式服务平台UniBoard

什么是 UniBoard ?

UniBoard 是一款实用工具,实现了 个人主页 + 导航页 + 笔记 + 短链接 + 文件分享 功能。它提供一站式服务,使得用户可以方便地管理和使用这些功能。前端采用 Vue3 + TS + Primevue4 构建,后端使用了 Django 构建。并以 Restful 设计 API

主要功能:

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

反向代理

短链接模块和文件模块,需要用到了复制功能。因为只能在使用 https 协议时才能访问系统的剪贴板,所以我们要通过反代来实现 https 协议

假设我们访问地址如下:

域名 局域网地址 备注
ub.laosu.tech http://192.168.0.197:8014 UniBoard 的访问地址

只是自己用,可以采用 tailscale + npm 方案。如果要分享文件给其他人,那还是需要有公网地址才行

文章传送门:用自定义域名访问tailscale节点

SSL 可以都勾选

安装

在群晖上以 Docker 方式安装。

涉及到多个容器,采用 docker-compose 安装

env.txt

env.txt 包含中文注释,所以保存时必须使用 UTF-8 格式,否则会报错。或者你把中文注释删掉也可以

1
2
3
4
5
6
# 用于登陆的超级用户用户名
DJANGO_SUPERUSER_USERNAME = admin
# 用于登陆的超级用户密码
DJANGO_SUPERUSER_PASSWORD = passWord
# 此邮箱仅用于创建超级用户,不会被使用
DJANGO_SUPERUSER_EMAIL = admin@uniboard.com

docker-compose.yml

将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
version: "3"

services:
frontend:
image: coolfan1024/uniboard:0.2.3
container_name: uniboard-frontend
ports:
- "8014:80"
env_file:
- env.txt
volumes:
- ./media:/usr/share/nginx/media
depends_on:
- backend

backend:
image: coolfan1024/uniboard-service:0.2.3
container_name: uniboard-backend
volumes:
- ./media:/app/media
- ./migrations:/app/api/migrations
env_file:
- env.txt
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy

postgres:
image: postgres:16.3-bookworm
container_name: uniboard-postgres
environment:
POSTGRES_DB: uniboard
POSTGRES_PASSWORD: XFdWwID02qJxerertfTrYFiok7G1bg
env_file:
- env.txt
volumes:
- ./postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 10s
retries: 10

redis:
image: redis:7.4.0-bookworm
container_name: uniboard-redis
command:
["redis-server", "--requirepass", "GdlkOVEmA3vp8JA6ZoAiqIPxSwZR5"]
env_file:
- env.txt
volumes:
- ./redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 3s
timeout: 3s
retries: 10

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 uniboard 和 子目录
mkdir -p /volume1/docker/uniboard/{media,migrations,postgres_data,redis_data}

# 进入 uniboard 目录
cd /volume1/docker/uniboard

# 将 docker-compose.yml 和 env.txt 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 https://ub.laosu.tech 就能看到注册界面

点名字右侧会出现账号和密码输入框

登录成功后的主界面,从左至右依次为 笔记短链接文件设置退出

个人介绍

设置了一下首页

查看实际效果

导航页

设置中下拉,找到第二屏设置

新增超链接 开始逐个添加

也可以先输入 URL,尝试自动获取

随便加了几个,首页下拉,看看效果

看来自动获取的说明有点长,而且配色也没调整好 😂

笔记

进入笔记界面

支持 Markdown 格式

这是个独立的小模块,支持预览,可以复制到公众号和知乎

短链接

这个功能需要有一个好记的短域名,局域网使用意义不大,如果你使用 http://群晖IP:8014 虽然也能用,但是是无法复制的

而用反代后的域名访问,复制就不会有问题

直接在浏览器中打开复制的地址就可以了

文件

在文件界面,点 + 号添加文件

选择文件,填写描述

上传成功后

可以选择完全公开,会有分享的地址。和短链接一样,同样也需要 https 协议才能复制

别人收到链接后打开的样子

参考文档

Coooolfan/UniBoard: 个人介绍,导航页、笔记、短链、文件分享。Profile、Note、ShortURL、FileSharing……
地址:https://github.com/Coooolfan/UniBoard

Coooolfan/UniBoard-Service: Connect and view all your device (service).
地址:https://github.com/Coooolfan/UniBoard-Service