什么是 Vrite ?
Vrite
是一个开源协作空间,用于创建、管理和部署产品文档、技术博客和知识库。它旨在提供高质量、集成的用户和开发人员体验。
Vrite
具有以下功能:
- 内置管理仪表板,用于使用看板或列表视图管理内容生产和交付;
- 现代所见即所得编辑体验,支持
Markdown
、集成代码编辑器、代码格式化和实时协作;
- 人工智能驱动的语义搜索,用于组织和搜索您的内容库;
- 多功能
API
和扩展系统,用于定制您的体验并向任何前端交付内容;
- 开源,可选择自托管和使用Vrite Cloud。
如果不想自己安装,可以在官方站点 :app.vrite.io上进行体验
安装
在群晖上以 Docker 方式安装。
Vrite
用到 4
个自己官方的镜像,但 tags
最新版本不是常用的 latest
,而是 main
还是那句话,如果镜像拉不动,去docker
代理网站试试 :https://dockerproxy.com/
其中:
ghcr.io/vriteio/vrite/api:main
:API
ghcr.io/vriteio/vrite/assets:main
:资源
ghcr.io/vriteio/vrite/collaboration:main
:协作
ghcr.io/vriteio/vrite/app:main
:主程序
gmongo
:数据库
minio/minio
:存储
redis
:缓存
semitechnologies/weaviate:1.21.2
:低延迟矢量搜索引擎
Weaviate
是一个低延迟矢量搜索引擎,开箱即用地支持不同的媒体类型(文本、图像等)。它提供语义搜索、问答提取、分类、可定制模型(PyTorch/TensorFlow/Keras
)等。Weaviate
在 Go
中从头开始构建,同时存储对象和向量,允许将向量搜索与结构化过滤和容错相结合云原生数据库,所有这些都可以通过 GraphQL
、REST
和各种编程语言客户端访问。【墨天轮百科】
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| version: "3.9"
services: mongodb: image: mongo container_name: vrite-mongo volumes: - ./mdata:/data/db
minio: image: minio/minio container_name: vrite-minio environment: - MINIO_ROOT_USER=user - MINIO_ROOT_PASSWORD=password command: server --console-address ":9001" /data volumes: - ./minio:/data
redis: image: redis container_name: vrite-redis volumes: - ./rdata:/data
weaviate: image: semitechnologies/weaviate:1.21.2 container_name: vrite-weaviate volumes: - ./weaviate:/var/lib/weaviate environment: - PORT=8080 - QUERY_DEFAULTS_LIMIT=25 - PERSISTENCE_DATA_PATH=/var/lib/weaviate - DEFAULT_VECTORIZER_MODULE=text2vec-openai - ENABLE_MODULES=text2vec-openai - AUTHENTICATION_APIKEY_ENABLED=true - AUTHENTICATION_APIKEY_ALLOWED_KEYS=password - AUTHENTICATION_APIKEY_USERS=vrite
api: image: ghcr.io/vriteio/vrite/api:main container_name: vrite-api env_file: ./env.txt depends_on: - mongodb - redis environment: - PORT=4444 ports: - "4444:4444"
assets: image: ghcr.io/vriteio/vrite/assets:main container_name: vrite-assets env_file: ./env.txt depends_on: - mongodb - minio - redis environment: - PORT=8888 ports: - "8888:8888"
collab: image: ghcr.io/vriteio/vrite/collaboration:main container_name: vrite-collab env_file: ./env.txt depends_on: - mongodb - redis environment: - PORT=5555 ports: - "5555:5555"
app: image: ghcr.io/vriteio/vrite/app:main container_name: vrite-app env_file: ./env.txt environment: - PORT=3333 ports: - "3333:3333" depends_on: - api - assets - collab - mongodb - minio - redis
|
env.txt
将下面的内容保存为 env.txt
,该文件包含其中的服务 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 60 61 62 63
| HOST=0.0.0.0 NODE_ENV=production
COOKIE_DOMAIN=192.168.0.197
SECRET=a5nWSvHrQrql3pCkdA6bEWMcpvyaQQEr6
MONGO_URL=mongodb://mongodb:27017/vrite
REDIS_URL=redis://redis:6379
SENDER_EMAIL=wbsu2003@88.com SENDER_NAME=laosu
SMTP_HOST=smtp.88.com SMTP_PORT=465 SMTP_USERNAME=wbsu2003@88.com SMTP_PASSWORD=<邮件的第三方客户端密码> SMTP_SECURE=false
SENDGRID_API_KEY=
S3_BUCKET=vrite-images S3_ENDPOINT=http://minio:9000 S3_REGION=us-east-1 S3_ACCESS_KEY=user S3_SECRET_KEY=password S3_FORCE_PATH_STYLE=true
PUBLIC_COLLAB_URL=http://192.168.0.197:5555 PUBLIC_APP_URL=http://192.168.0.197:3333 PUBLIC_API_URL=http://192.168.0.197:4444 PUBLIC_ASSETS_URL=http://192.168.0.197:8888
GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET=
GITHUB_APP_ID= GITHUB_APP_PRIVATE_KEY= GITHUB_APP_CLIENT_ID= GITHUB_APP_CLIENT_SECRET=
WEAVIATE_API_KEY=password WEAVIATE_URL=http://weaviate:8080
|
下面这些内容是必须设置的:
COOKIE_DOMAIN
:因为用在局域网使用,所以这里用了 IP
而不是域名;
SECRET
:可以用 openssl rand -base64 32
来生成;
SMTP_
:老苏还是用的 88
邮箱,如果不设置或者设置错误,会不能登录;
PUBLIC_
:是服务的对外地址,所以在局域网使用,所以用的是 IP
+ 端口的模式;
- 其他的根据需要设置,请参考官方文档:https://docs.vrite.io/self-hosting/configuration/
然后执行下面的命令
1 2 3 4 5 6 7 8 9 10
| mkdir -p /volume1/docker/vrite/{mdata,minio,rdata,weaviate}
cd /volume1/docker/vrite
docker-compose up -d
|
第一次可能出现这样的情况
在容器 vrite-app
的日志中会看到下面的错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| vrite-app | vrite-app | /app/index.js:196956 vrite-app | const err = new AVV_ERR_READY_TIMEOUT(name2); vrite-app | ^ vrite-app | AvvioError [Error]: Plugin did not start in time: 'async (fastify) => { -- const db = fastify.mongo.db;'. You may have forgotten to call 'done' function or to resolve a Promise vrite-app | at Timeout._onTimeout (/app/index.js:196956:23) vrite-app | at listOnTimeout (node:internal/timers:569:17) vrite-app | at process.processTimers (node:internal/timers:512:7) { vrite-app | code: 'AVV_ERR_READY_TIMEOUT', vrite-app | fn: [AsyncFunction (anonymous)] { [Symbol(skip-override)]: true } vrite-app | } vrite-app | vrite-app | Node.js v18.17.1 vrite-app exited with code 1
|
似乎是表示某个插件在规定的时间内没有启动完成,因此可以稍等下点后面的开关启动
当然也可以再次执行
如果能启动成功,就可以开始访问了
【官方提示】:目前,自托管时,Vrite
扩展不可用,因为 Vrite
扩展系统尚未准备好。我们稍后会启用。
运行
在浏览器中输入 http://群晖IP:3333
就能看到登录界面
第一次需要点最下面的 I don't have an account
注册
注册成功后,需要验证邮件
打开邮件
点邮件中的链接
点 Go to dashboard
,默认是 Kanban
模式,分为 Ideas
、Drafts
、Published
,这个标题是可以修改的
可以切换为 List
模式
3
个区域的说明
看板区域的说明
左下角可以切换和新建不同的 workspace
打开示例的 Hello World
,可以修改或者删了重建
Vrite Editor
提供了一种极简主义、所见即所得的编辑体验,并支持 Markdown
老苏重新写了两篇
返回 Dashboard
将完成完成的文档,拖动到 Publish
,并且 Lock
,防止被修改,点卡片上的 眼睛
就可以预览了,还可以发布到 Dev.to
等平台
更多使用说明,请参考官方的使用指南:https://docs.vrite.io/usage-guide/getting-started/
参考文档
vriteio/vrite: Open-source developer content platform | Now in Public Beta
地址:https://github.com/vriteio/vrite
Vrite - developer content platform
地址:https://vrite.io/
Vrite - developer content platform
地址:https://docs.vrite.io/self-hosting/docker/