828华为云征文|部署多功能集成的协作知识库 AFFiNE

828华为云征文|部署多功能集成的协作知识库 AFFiNE

  • 一、Flexus云服务器X实例介绍
  • 二、Flexus云服务器X实例配置
    • [2.1 重置密码](#2.1 重置密码)
    • [2.2 服务器连接](#2.2 服务器连接)
    • [2.3 安全组配置](#2.3 安全组配置)
    • [2.4 Docker 环境搭建](#2.4 Docker 环境搭建)
  • [三、Flexus云服务器X实例部署 AFFiNE](#三、Flexus云服务器X实例部署 AFFiNE)
    • [3.1 AFFiNE 介绍](#3.1 AFFiNE 介绍)
    • [3.2 AFFiNE 部署](#3.2 AFFiNE 部署)
    • [3.3 AFFiNE 使用](#3.3 AFFiNE 使用)
  • 四、总结

一、Flexus云服务器X实例介绍

云服务器是一种高效便捷的计算资源服务。它可随时根据需求进行弹性扩展,具有高可靠性和稳定性。无需担心硬件维护,轻松应对高并发访问。无论是企业建站、开发应用还是数据存储,云服务器都能提供强大支持,助力你的业务在云端飞速发展。

华为云下一代云服务器Flexus X实例焕新上线,新产品提供与华为云旗舰级云服务器产品相同的单AZ 99.975%可用性,跨AZ 99.995%可用性,阶梯式定价、动态画像并搭配AS,实现资源弹性伸缩对应业务弹性变化,同时降低TCO,覆盖行业大多数通用工作负载场景。

Flexus X实例通过和其他服务组合,具备计算、镜像安装、网络、存储、安全等能力,您可根据业务需要灵活配置各资源。

本次测评使用的规格是:4核12G-100G-3M规格的Flexus X实例基础模式

二、Flexus云服务器X实例配置

2.1 重置密码

购买服务器的时候可以提前设置用户名和密码,因为我这里跳过了,所以购买完成后需要重置密码,会短信或站内消息通过你的云服务器信息,重点是公网IP地址和用户名,首先打开你的服务器控制台,选择重置密码

勾选自动重启,点击确定即可

2.2 服务器连接

华为云服务器提供了多种链接方式,如使用控制台提供的VNC方式登录、使用Linux/Mac OS系统主机登录Linux弹性云服务器(即ssh root@192.168.48.78命令)或者使用Putty、Xshell等工具登录Linux弹性云服务器。

我个人习惯使用 MobaXterm 这款软件,添加SSH连接,输出公网IP、用户名和端口(默认22),连接即可。

2.3 安全组配置

安全组是一个逻辑上的分组,为同一个VPC内的云服务器提供访问策略。用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。

系统为每个网卡默认创建一个默认安全组,默认安全组的规则是对出方向上的数据报文全部放行,入方向访问受限。您可以使用默认安全组,也可以根据需要创建自定义的安全组

主要需要填写优先级(默认填1即可)、协议端口(协议一般为TCPUDP,端口一般选择你项目需要暴露的端口即可),描述(选填,一般会填写此端口的用途以免忘记了),其他默认点击确定即可。安全组配置主要是暴露端口可以给外网访问。

如果还不清楚可以参考文档:安全组配置示例

2.4 Docker 环境搭建

本次服务器环境是ubuntu系统镜像,需要自己安装docker环境

服务器类别 系统镜像 内网IP地址 Docker版本 操作系统版本
Flexus云服务器X实例 Ubuntu 192.168.0.168 27.2.0 Ubuntu 22.04.4 LTS

使用apt-get命令安装docker及其配置

bash 复制代码
# 安装必要工具包
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 添加Docker GPG秘钥
$ sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 配置仓库源
$ sudo add-apt-repository \
      "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
      $(lsb_release -cs) \
      stable"	

# 更新apt包索引
$ sudo apt-get update

# 安装docker
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

# 添加docker镜像源
$ sudo vim /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://ustc-edu-cn.mirror.aliyuncs.com/",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn",
        "https://ccr.ccs.tencentyun.com/",
        "https://docker.m.daocloud.io/",
        "https://dockerproxy.com",
    ]
}
# 重启
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

测试docker安装是否成功

bash 复制代码
root@flexusx-c6b3:~# docker -v
Docker version 27.2.0, build 3ab4256```

检查docker服务状态

bash 复制代码
root@flexusx-c6b3:~# systemctl status docker
* docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-08-30 15:53:45 CST; 17h ago
TriggeredBy: * docker.socket
       Docs: https://docs.docker.com
   Main PID: 24912 (dockerd)
      Tasks: 13
     Memory: 24.7M
        CPU: 3.778s
     CGroup: /system.slice/docker.service
             `-24912 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

检查docker compose版本

bash 复制代码
root@flexusx-c6b3:~# docker compose version
Docker Compose version v2.29.2

三、Flexus云服务器X实例部署 AFFiNE

3.1 AFFiNE 介绍

AFFiNE 是一个开源的一体化工作区和操作系统,适用于构建知识库的所有构建块以及更多内容 --- wiki、知识管理、演示和数字资产。它是 Notion 和 Miro 的更好替代品。

AFFiNE 是一款基于 CRDT 的本地优先应用程序,支持实时协作。您的数据始终存储在本地,同时多个节点保持实时同步。

  • 集成化文档与白板:通过将文档和白板集成为一个功能模块,AFFiNE使团队能够实现从思维导图到正式文档的无缝过渡,确保了创意的完整和共享。

  • 强大的看板功能:AFFiNE提供了先进的看板项目管理工具,支持用户轻松管理各种任务,尤其适合团队协作和个人规划。通过可视化的方式,用户可以直接跟踪项目进展,提高时间和任务管理的效率。

  • 灵活的操作界面:其简洁直观的设计界面赢得了用户的一致赞赏,用户可以通过个人化的设置,自由调整工作视图,从而更好地支持不同的工作风格。

  • 本地优先的隐私保护:用户数据的管理完全掌握在用户的手中。AFFiNE旨在提供一个安全可靠的环境,用户的数据不会无意间被分享或者滥用。

  • 开源社区:用户不仅是产品的消费者,更是其设计的参与者。通过开源,AFFiNE开放了更多可能性,让用户根据自己所需定制和创新出不一样的功能。

AFFiNE 以及我们的云服务和所有基础设施都是 100% 开源的,可以自由地管理、自行托管甚至塑造您自己的 AFFiNE 版本。借助官方即将推出的插件社区和第三方模块,正在构建一个适合任何人的独特需求的平台,想象一个像您自己的数字生活方式一样可定制的工作空间,其中每个工具和功能都是专门为您独特的工作流程量身定制的。

3.2 AFFiNE 部署

  • 创建 docker-compose.yml
yml 复制代码
version: "3.5"
services:
  affine:
    image: ghcr.io/toeverything/affine-graphql:stable
    container_name: affine_selfhosted
    command:
      ['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js']
    ports:
      - '3010:3010'
      - '5555:5555'
    depends_on:
      - redis
      - postgres
    volumes:
      # custom configurations
      - ./self-host/config:/root/.affine/config
      # blob storage
      - ./self-host/storage:/root/.affine/storage
    logging:
      driver: 'json-file'
      options:
        max-size: '1000m'
    restart: unless-stopped
    environment:
      - NODE_OPTIONS="--import=./scripts/register.js"
      - AFFINE_CONFIG_PATH=/root/.affine/config
      - REDIS_SERVER_HOST=redis
      - DATABASE_URL=postgres://affine:affine@postgres:5432/affine
      - NODE_ENV=production
      - AFFINE_ADMIN_EMAIL="maxx@maxxspace.com"
      - AFFINE_ADMIN_PASSWORD=1q2w3e4r
      # Telemetry allows us to collect data on how you use the affine. This data will helps us improve the app and provide better features.
      # Uncomment next line if you wish to quit telemetry.
      # - TELEMETRY_ENABLE=false
  redis:
    image: redis
    container_name: affine_redis
    restart: unless-stopped
    volumes:
      - ./self-host/redis:/data
    healthcheck:
      test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping']
      interval: 10s
      timeout: 5s
      retries: 5
  postgres:
    image: postgres
    container_name: affine_postgres
    restart: unless-stopped
    volumes:
      - ./self-host/postgres:/var/lib/postgresql/data
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U affine']
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      POSTGRES_USER: affine
      POSTGRES_PASSWORD: affine
      POSTGRES_DB: affine
      PGDATA: /var/lib/postgresql/data/pgdata
  • ports: 映射主机的 3010 端口到容器的 3010 端口
  • volumes: 将主机目录挂载到容器。
  • 包含三个容器服务:affine、postgres 和 redis

如果将上述代码片段保存在名为 docker-compose.yml 的文件中,则只需从同一文件夹中运行 docker compose up -d 即可自动拉取 AFFiNE 镜像,并创建并启动一个容器。 up 表示启动服务,-d 表示在后台执行。docker-compose down 命令用于停止和清理由 docker-compose up 启动的服务。

  • 启动服务

进入项目目录,执行docker-compose up -d启动命令,会自动拉取容器并运行

从 Github Packages 拉取 AFFiNE 镜像,地址:https://ghcr.io/toeverything/affine-graphql

bash 复制代码
root@flexusx-c6b3:~/affine# docker-compose up -d
Pulling redis (redis:latest)...
latest: Pulling from library/redis
302e3ee49805: Pull complete
5d0249d9189d: Pull complete
4825c5e95815: Pull complete
b0ce50685fa2: Pull complete
455886c7d31b: Pull complete
96377887d476: Pull complete
4f4fb700ef54: Pull complete
5fac73c23c9b: Pull complete
Digest: sha256:82d08ad50c181182ee5ce23dcefd754a12f946534af57959ba08490e1d0696a0
Status: Downloaded newer image for redis:latest
Pulling postgres (postgres:latest)...
latest: Pulling from library/postgres
302e3ee49805: Already exists
db123f79d191: Pull complete
0f8c00fde6b5: Pull complete
faa7319453cb: Pull complete
db22d52fa3c2: Pull complete
a75b6bd68f08: Pull complete
3bbfa3446e21: Pull complete
0b62c3405bb7: Pull complete
2b20a8c7ce41: Pull complete
e7c88e163985: Pull complete
e5a700d882eb: Pull complete
28b27d53d86b: Pull complete
bfc263366b3f: Pull complete
e5ff51eeda62: Pull complete
Digest: sha256:6a1018836fcf5be0ecf77b265b4434c58816205061817cba70168907fb328d41
Status: Downloaded newer image for postgres:latest
Pulling affine (ghcr.io/toeverything/affine-graphql:stable)...
stable: Pulling from toeverything/affine-graphql
a2318d6c47ec: Already exists
00e35d36405a: Already exists
225fba03fa1f: Already exists
447f637b003c: Already exists
dd1be0639854: Already exists
4650130184b5: Pull complete
10a0952dbfc4: Pull complete
b4f530463457: Pull complete
d6f29f3b6b33: Pull complete
4f4fb700ef54: Pull complete
b9c166759c7d: Pull complete
Digest: sha256:b0dbbfe989185019e2dc30c5b1c89192ec5ab6eb71eee8643398f5589c811907
Status: Downloaded newer image for ghcr.io/toeverything/affine-graphql:stable
Creating affine_redis ... 
Creating affine_postgres ... 
Creating affine_redis
Creating affine_redis ... done
Creating affine_selfhosted ... 
Creating affine_selfhosted ... done
  • 配置安全组

在Flexus云服务器X实例的安全组管理页面,添加入方向规则,接下来我们启动服务需要监听3010端口,所以添加安全组为TCP:3010协议端口。

  • 检查容器状态

检查 AFFiNE 容器状态,确保容器正常启动

bash 复制代码
root@flexusx-c6b3:~/affine# docker ps
CONTAINER ID   IMAGE                                        COMMAND                  CREATED         STATUS                   PORTS                                                                                  NAMES
ca413173e7ec   ghcr.io/toeverything/affine-graphql:stable   "docker-entrypoint.s..."   2 minutes ago   Up 2 minutes             0.0.0.0:3010->3010/tcp, :::3010->3010/tcp, 0.0.0.0:5555->5555/tcp, :::5555->5555/tcp   affine_selfhosted
96e154565e16   postgres                                     "docker-entrypoint.s..."   3 minutes ago   Up 2 minutes (healthy)   5432/tcp                                                                               affine_postgres
bed4a95d26c1   redis                                        "docker-entrypoint.s..."   3 minutes ago   Up 2 minutes (healthy)   6379/tcp                                                                               affine_redis
  • 访问地址

内网:http://localhost:3010

外网:http://公网IP:3010

  • 访问结果

若出现此页面,则部署 affine server 成功。

3.3 AFFiNE 使用

通过一些简单的设置来配置您的自托管 AFFiNE,创建管理员账户,也可用于普通用户使用,输入用户名、邮箱和密码,继续

登录成管理系统,可以查看和添加用户、服务器设置、允许新注册等相关权限设置,后续访问管理员地址:http://localhost:3010/admin

切换到默认地址访问即可进入 AFFiNE 首页,可以启用 AFFiNE Cloud 同步服务

每个用户有10GB的免费空间容量,若不想使用云同步,可以不开启,直接使用本地

设置页功能:可以修改外观中的配色方案和显示语言,编辑器设置(启用 AFFiNE AI、字体样式、页面、背景、图形、画笔、连线等),键盘快捷键,实验性功能

还有工作区设置:工作区LOGO、工作区名称、邀请成员、删除工作区等

查看所有文档界面,文档精选标签三个Tab选项,所有文档列表可以进行条件筛选:创建时间、更新时间、已收藏、标签、已分享,并且支持多条件筛选,文档列表显示属性可调节:内容预览、标签、创建时间、更新时间,还可以条件进行文档分组显示:创建时间、更新时间、标签、收藏、不分组,文档列表也可以进行排序、批处理操作等

选中文档,可以进行加入收藏、查看信息、在新标签页打开、复制、移动到回收站等操作

新建文档,可以创建新的页面、新的无界界面、导入支持 Markdown 和 Notion

查看 Jourunals 模块:上面展示日期,可以添加标签和i其他自定义属性,还有反向链接和外链统计,右上角菜单可以转化为无界、查看信息、查看目录、查看历史版本、导入、导出等

编辑部分和Notion操作类似,支持Markdown语法,使用快捷键/可以调出命令,空格键调用AI

导出功能支持导出HTML、PNG、Markdown格式和打印

组织可以新建文件夹,再添加文档,就类似的 Notion 笔记了

尝试下无界界面

支持幻灯片放映、分享和导出

还一些其他选项功能:回收站、导入、了解更多使用技巧

点击收藏,并查看收藏夹内容

在快节奏的现代生活中,信息不再是稀缺资源,而是过剩的挑战,如何有效地组织这些信息变得至关重要。使用AFFiNE,从登录界面进入,用户可以创建和管理自己的工作空间,文档的创建非常简单,只需点击并编辑,同时用户可以随时将内容从文本切换到手写模式,为工作增添一份个性化的细节。白板功能使得用户能够在进行团队合作或个人头脑风暴时,随时展示和记录想法,这种实时协作的特性,能够促进沟通并推动项目向前发展,还有更多有趣的设置和功能就需要自行探索了。

四、总结

AFFiNE的独特之处在于整合了文档处理、白板创作和数据库管理等多种功能,让用户在一个平台上完成多种任务,其无缝的工作流程和注重隐私的设计,使其不仅适合个人用户,更为企业提供了一个理想的协作渠道。此次使用的Flexus X实例配置还是很高的4核12G-100G-3M规格基础模式,项目整体占用不高,有点性能过剩,操作丝滑流畅,写笔记过程使用各种文字类型或者媒体类型的都不会延迟,自部署的使用体验要好过Notion,网络加载更快,画图体验也不错。

华为云服务器,卓越性能之选!强大的计算能力、稳定可靠的运行环境,为你的业务提供坚实保障。现在正值828 B2B企业节,价格更优惠,服务不打折。无论是企业级应用还是个人项目,华为云服务器都能满足你的需求。快来体验!

相关推荐
风落无尘5 小时前
Stable Diffusion WebUI & ComfyUI 完整安装教程:官方部署+一键整合包+Docker容器化(2026最新)
docker·容器·stable diffusion
小鹏linux7 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
CodeMartain10 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
llrraa201012 小时前
配置docker国内镜像源
运维·docker·容器
starvapour12 小时前
Ubuntu切换到Fcitx5中文输入法
linux·运维·ubuntu
STDD12 小时前
Soulmask《灵魂面具》 专用服务器搭建教程
运维·服务器·github
lolo大魔王12 小时前
Linux的监测程序
linux·运维·github
木欣欣粉皮13 小时前
解决Ubuntu 26.04的挂起状态唤醒问题
linux·运维·ubuntu
阿正的梦工坊13 小时前
【Typescript】08-keyof-typeof-索引访问类型
linux·ubuntu·typescript
华为云开发者联盟13 小时前
基于华为云码道 + 高德地图MCP Server快速搭建行程规划助手
人工智能·华为云·软件开发·华为云码道