群晖安装Affine

网上有很多在群晖上安装Affine的教程,但是都是用ssh或者先安装第三方docker来间接的安装,这大大提升了门槛。这篇文章主要是为了给不想用SSH或者想用原生的docker来管理 的人

配置你的群晖

我们这边假设NAS的IP是192.168.1.2

如果你没有公网IP,DDNS,或者你打算仅部署在内网,那么请跳过这一章节。

首先进入控制面板 –> 登录门户 –> 高级 –> 反向代理服务器 –> 新增,配置如下,主机名需要填入你自己的域名地址,其他可直接按照截图填入

然后在自定义标题中新增websocket

保存,这样反向代理即设置完毕。当然如果你的群晖外面还有路由器或者光猫,记得把你设置的端口的端口转发打开,不然就没办法连接上了。

Docker配置

打开FileStation

docker文件夹下新建affine文件夹,然后再在affine文件夹新建四个文件夹 config, db, redis, storage

打开Container Manager –> 项目 –> 新建

项目名必须是小写字母,然后在docker-compose.yml下填入

yaml

version: '3.9'
services:
  affine:
    image: ghcr.io/toeverything/affine-graphql:stable
    container_name: AFFINE
    healthcheck:
      test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/3010' || exit 1
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 90s
    command:
      ['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js']
    ports:
      - 3010:3010
      - 5555:5555
    depends_on:
      redis:
        condition: service_healthy
      postgres:
        condition: service_healthy
    volumes:
      - /volume1/docker/affine/config:/root/.affine/config:rw
      - /volume1/docker/affine/storage:/root/.affine/storage:rw
    logging:
      driver: 'json-file'
      options:
        max-size: '1000m'
    restart: on-failure:5
    environment:
      - NODE_OPTIONS="--import=./scripts/register.js"
      - AFFINE_CONFIG_PATH=/root/.affine/config
      - REDIS_SERVER_HOST=redis
      - DATABASE_URL=postgres://affineuser:affinepass@postgres:5432/affine
      - NODE_ENV=production
      - [email protected]
      - AFFINE_ADMIN_PASSWORD=barPassword
  redis:
    image: redis:latest
    container_name: AFFINE-REDIS
    restart: on-failure:5
    volumes:
      - /volume1/docker/affine/redis:/data:rw
    healthcheck:
      test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping']
      interval: 10s
      timeout: 5s
      retries: 5
  postgres:
    image: postgres:16
    container_name: AFFINE-DB
    restart: on-failure:5
    volumes:
      - /volume1/docker/affine/db:/var/lib/postgresql/data:rw
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "affine", "-U", "affinesuser"]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      POSTGRES_USER: affineuser
      POSTGRES_PASSWORD: affinepass
      POSTGRES_DB: affine
      PGDATA: /var/lib/postgresql/data/pgdata

其中AFFINE_ADMIN_EMAIL填入你想要的邮箱,这个不需要验证,所以可以是任意邮箱。然后AFFINE_ADMIN_PASSWORD是管理员密码。

至此,配置就完成了,一直下一步就可以编译启动你的Affine容器了。

最后在你的浏览器输入192.168.1.2:3010就可以看到Affine的界面了。

Affine配置

打开Affine默认是本地工作区,我们需要把工作区切换到云端。

工作区默认是Local的,Local是存储在浏览器上,一旦退出或者清理缓存,那么所有的文件都会丢失。由于我们是Self-hosted,不用担心存储的问题,因为这里的云就是我们的NAS

打开这个工作区

然后Enable Cloud,这样我们的文档都会写到NAS上,只要NAS不挂,文档都会在。

通常一个家庭或者一群好友之间,免不了一人一账户,那么多账户体系是必不可少的。然而现阶段Affine的Self-hosted方案对多账户支持不是很好,必须要自己调用API来添加。

这里我们假设被邀请的邮箱是[email protected],管理员邮箱是[email protected]

  • 打开192.168.1.2:3010/graphql, 进入设置, 替换 "request.credentials": "omit""request.credentials": "include",然后保存设置,关闭设置页
  • 依次输入并执行下方的接口

注册被邀请者的账户

graphql

mutation {
     signUp(email: "[email protected]", name: "Demo", password: "123") {
         id
     }
}

登录管理员账户,并记下你的工作区ID,这个可以在你的浏览器地址中找到 192.168.1.2:3010/workspace/workspaceId

yaml

mutation {
  signIn(email: "[email protected]", password:"123") {
    id
    name
  }
}

通过管理员邀请,会在右边的区域内显示执行的结果,记下邀请的id

yaml

mutation {
  invite(
    email: "[email protected]"
    permission: Admin
    sendInviteMail: false
    workspaceId: "xxx-xxx-xx-xxx-xxx"
  )
}

登录被邀请者账户

yaml

mutation {
  signIn(email: "[email protected]", password:"123") {
    id
    name
  }
}

接受邀请,输入工作区ID和邀请ID

yaml

mutation {
  acceptInviteById(
    inviteId: "copy-id-from-invite-mutation"
    sendAcceptMail: false
    workspaceId: "your-workspace-id"
  )
}

然后就可以用被邀请者的邮箱 [email protected] 登录了

相关内容

昵称
邮箱
网址
0/500
  • OωO
  • |´・ω・)ノ
  • ヾ(≧∇≦*)ゝ
  • (☆ω☆)
  • (╯‵□′)╯︵┴─┴
  •  ̄﹃ ̄
  • (/ω\)
  • ∠( ᐛ 」∠)_
  • (๑•̀ㅁ•́ฅ)
  • →_→
  • ୧(๑•̀⌄•́๑)૭
  • ٩(ˊᗜˋ*)و
  • (ノ°ο°)ノ
  • (´இ皿இ`)
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • (╯°A°)╯︵○○○
  • φ( ̄∇ ̄o)
  • ヾ(´・ ・`。)ノ"
  • ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
  • (ó﹏ò。)
  • Σ(っ °Д °;)っ
  • ( ,,´・ω・)ノ"(´っω・`。)
  • ╮(╯▽╰)╭
  • o(*////▽////*)q
  • >﹏<
  • ( ๑´•ω•) "(ㆆᴗㆆ)
  • 😂
  • 😀
  • 😅
  • 😊
  • 🙂
  • 🙃
  • 😌
  • 😍
  • 😘
  • 😜
  • 😝
  • 😏
  • 😒
  • 🙄
  • 😳
  • 😡
  • 😔
  • 😫
  • 😱
  • 😭
  • 💩
  • 👻
  • 🙌
  • 🖕
  • 👍
  • 👫
  • 👬
  • 👭
  • 🌚
  • 🌝
  • 🙈
  • 💊
  • 😶
  • 🙏
  • 🍦
  • 🍉
  • 😣
  • 颜文字
  • Emoji
  • Bilibili
7 条评论
星痕

作者您好 我按指南成功部署了 但是邀请用户那没看懂 代码直接复制到192.168.1.2:3010/graphql里的话会报错:Internal Server Error 获取工作区ID时也报错:抱歉,您没有访问权限或该内容不存在… 可以添加邮箱stmp报务吗 然后发邮件添加用户?

 Windows 11
 Microsoft Edge 134.0.0.0
tino
回复 @星痕 :

这个需要用管理员登录

mutation {
  signIn(email: "[email protected]", password:"123") {
    id
    name
  }
}

发邮件的话,我是用直接配置的,这个可以去GitHub上问下

 macOS 15.3.2
 Chrome 134.0.0.0
展开
Maiurs

作者您好,我跟随这个指南成功部署在自己的NAS上,但是没有办法复制粘贴。根据官方的说法是因为这种部署只是http没有https的缘故,提供的办法有localhost,我想请问一下如何实现局域网内部访问这个AFFINE时可以实现HTTPS连接从而可以复制粘贴呢?

 Windows 10
 Microsoft Edge 132.0.0.0
tino
回复 @Maiurs :

这个本身是浏览器的限制,和Affine没关系,如果需要内网配置HTTPS就要自己配置域名了,或者加Nginx,或者这个解决办法https://github.com/FiloSottile/mkcert。我本身是用cloudflare zero trust连接的,相当于域名了

 macOS 15.2.0
 Chrome 131.0.0.0
Lggyy

作者您好,我在容器配置时,总是因为nas链接不到外网导致下载失败,这里是否需要挂vpn下载呢,具体报错如下:
errorr response from daemon: Get “https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

 macOS Sonoma
 Chrome 130.0.0.0
tino
回复 @Lggyy :

从报错来看很有可能是网络无法连接导致的错误,建议挂上VPN或者着镜像站点

 macOS Sonoma
 Chrome 129.0.0.0
kreding

nas部署版的云服务单账户容量有10G的限制,请问这个怎么修改呢?

 macOS Sonoma
 Chrome 129.0.0.0
tino
回复 @kreding :

这个是显示的问题,本身是没有这个限制的,具体可以看这个作者的回复 https://github.com/toeverything/AFFiNE/issues/5978#issuecomment-1972701529

 macOS Sonoma
 Chrome 129.0.0.0
kreding
回复 @tino :

👍

 macOS Sonoma
 Chrome 129.0.0.0
展开
lulu

博主你好,问下,NSA上部署的系统,能否在电脑的客户端同步使用?

 Windows 10
 Firefox 130.0
Tino
回复 @lulu :

电脑的客户端目前好像还没有增加self-host的选项,具体进度可以查看这个issue https://github.com/toeverything/AFFiNE/issues/2646

 macOS Sonoma
 Chrome 128.0.0.0
anyuqishi

博主您好,我根据网上教程在本地部署好了,但是始终登录不上去,提示无效密码,请问这个问题该如何解决?能否提供一份关于affine的docker-compose.yml的配置。谢谢

 Windows 10
 Microsoft Edge 127.0.0.0
Tino
回复 @anyuqishi :

无效密码应该是没有配置用户和密码导致的。docker-compose.yml的配置在文章里有,可能太长了自动折叠了,可以自己找一下,单击可以展开

 macOS Sonoma
 Chrome 127.0.0.0
盛者无罪

好用。

 Windows 10
 Chrome 126.0.0.0
Tino
回复 @盛者无罪 :

:tv_大佬:

 macOS Sonoma
 Chrome 126.0.0.0