群晖安装Affine
网上有很多在群晖上安装Affine的教程,但是都是用ssh或者先安装第三方docker来间接的安装,这大大提升了门槛。这篇文章主要是为了给不想用SSH
或者想用原生的docker来管理
的人
配置你的群晖
我们这边假设NAS的IP是192.168.1.2
如果你没有公网IP,DDNS,或者你打算仅部署在内网,那么请跳过这一章节。
1 配置反向代理
首先进入控制面板 –> 登录门户 –> 高级 –> 反向代理服务器 –> 新增,配置如下,主机名需要填入你自己的域名地址,其他可直接按照截图填入

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

保存,这样反向代理即设置完毕。当然如果你的群晖外面还有路由器或者光猫,记得把你设置的端口的端口转发打开,不然就没办法连接上了。
Docker配置
1 文件夹配置
打开FileStation
在docker
文件夹下新建affine
文件夹,然后再在affine
文件夹新建四个文件夹 config, db, redis, storage
2 容器配置
打开Container Manager –> 项目 –> 新建

项目名必须是小写字母,然后在docker-compose.yml
下填入
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默认是本地工作区,我们需要把工作区切换到云端。
1 登录账户


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

打开这个工作区

然后Enable Cloud
,这样我们的文档都会写到NAS上,只要NAS不挂,文档都会在。
3 邀请用户
通常一个家庭或者一群好友之间,免不了一人一账户,那么多账户体系是必不可少的。然而现阶段Affine的Self-hosted方案对多账户支持不是很好,必须要自己调用API来添加。
3.1 API调用
这里我们假设被邀请的邮箱是[email protected]
,管理员邮箱是[email protected]

- 打开
192.168.1.2:3010/graphql
, 进入设置, 替换"request.credentials": "omit"
成"request.credentials": "include"
,然后保存设置,关闭设置页 - 依次输入并执行下方的接口
注册被邀请者的账户
mutation {
signUp(email: "[email protected]", name: "Demo", password: "123") {
id
}
}
登录管理员账户,并记下你的工作区ID,这个可以在你的浏览器地址中找到 192.168.1.2:3010/workspace/workspaceId
mutation {
signIn(email: "[email protected]", password:"123") {
id
name
}
}
通过管理员邀请,会在右边的区域内显示执行的结果,记下邀请的id
mutation {
invite(
email: "[email protected]"
permission: Admin
sendInviteMail: false
workspaceId: "xxx-xxx-xx-xxx-xxx"
)
}
登录被邀请者账户
mutation {
signIn(email: "[email protected]", password:"123") {
id
name
}
}
接受邀请,输入工作区ID和邀请ID
mutation {
acceptInviteById(
inviteId: "copy-id-from-invite-mutation"
sendAcceptMail: false
workspaceId: "your-workspace-id"
)
}
然后就可以用被邀请者的邮箱 [email protected]
登录了
作者您好 我按指南成功部署了 但是邀请用户那没看懂 代码直接复制到192.168.1.2:3010/graphql里的话会报错:Internal Server Error 获取工作区ID时也报错:抱歉,您没有访问权限或该内容不存在… 可以添加邮箱stmp报务吗 然后发邮件添加用户?
这个需要用管理员登录
发邮件的话,我是用直接配置的,这个可以去GitHub上问下
作者您好,我跟随这个指南成功部署在自己的NAS上,但是没有办法复制粘贴。根据官方的说法是因为这种部署只是http没有https的缘故,提供的办法有localhost,我想请问一下如何实现局域网内部访问这个AFFINE时可以实现HTTPS连接从而可以复制粘贴呢?
这个本身是浏览器的限制,和Affine没关系,如果需要内网配置HTTPS就要自己配置域名了,或者加Nginx,或者这个解决办法https://github.com/FiloSottile/mkcert。我本身是用cloudflare zero trust连接的,相当于域名了
作者您好,我在容器配置时,总是因为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)
从报错来看很有可能是网络无法连接导致的错误,建议挂上VPN或者着镜像站点
nas部署版的云服务单账户容量有10G的限制,请问这个怎么修改呢?
这个是显示的问题,本身是没有这个限制的,具体可以看这个作者的回复 https://github.com/toeverything/AFFiNE/issues/5978#issuecomment-1972701529
👍
博主你好,问下,NSA上部署的系统,能否在电脑的客户端同步使用?
电脑的客户端目前好像还没有增加self-host的选项,具体进度可以查看这个issue https://github.com/toeverything/AFFiNE/issues/2646
博主您好,我根据网上教程在本地部署好了,但是始终登录不上去,提示无效密码,请问这个问题该如何解决?能否提供一份关于affine的docker-compose.yml的配置。谢谢
无效密码应该是没有配置用户和密码导致的。docker-compose.yml的配置在文章里有,可能太长了自动折叠了,可以自己找一下,单击可以展开
好用。