如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
| 功能 | v1版 | v2版 | 状态 |
|---|---|---|---|
| Postgres 数据变更 | ✔ | ✔ | 正式可用 |
| 广播(Broadcast) | ✔ | 测试版 | |
| 在线状态(Presence) | ✔ | 测试版 |
本仓库主要维护版本2,版本1的代码和Docker镜像仍可访问。最新Docker镜像可前往 [] 获取。
代码库处于活跃开发阶段,文档持续更新。欢迎试用并通过创建issue反馈意见,关注发布记录获取更新通知,喜欢的话别忘了点星标!
这是一个基于Elixir和Phoenix Framework构建的服务器,支持以下功能:
详细介绍可查看Supabase Realtime指南。
服务器不保证每条消息都能送达客户端,使用时请注意这一点。
可查看多人协作演示,演示代码位于仓库的demo目录。
通过docker-compose.yml启动Postgres数据库和Realtime服务器容器,示例命令:
bashdocker-compose -f docker-compose.yml up
注意
Supabase在生产环境中使用独立数据库管理租户,但本地开发时通过docker-compose.yml自动创建_realtime模式简化配置。
启动后会自动添加一个默认租户,可通过查询数据库的_realtime.tenants和_realtime.extensions表确认。
如需添加自己的租户,发送POST请求到服务器。需修改name和external_id,其他参数可按需调整:
bashcurl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIiLCJpYXQiOjE2NzEyMzc4NzMsImV4cCI6MTcwMjc3Mzk5MywiYXVkIjoiIiwic3ViIjoiIn0._ARixa2KFUVsKBf3UGR90qKLCpGjxhKcXY4akVbmeNQ' \ -d sql create table test ( id serial primary key );
supabase_realtime发布:sqlalter publication supabase_realtime add table test;
可通过以下方式测试广播、在线状态和Postgres变更功能:
@supabase/realtime-js)WebSocket URL需包含租户的external_id(作为子域名),且令牌需使用租户的jwt_secret签名。
默认租户示例:
ws://realtime-dev.localhost:4000/socket(端口需与开发环境一致)eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDMwMjgwODcsInJvbGUiOiJwb3N0Z3JlcyJ9.tz_XJ89gd6bN8MBpCl7afvPrZiBH6RB65iA1FadPT3Y(包含exp和role字段,role为数据库角色)Realtime服务器当前与Fly.io耦合紧密,以下是关键环境变量说明:
| 变量名 | 类型 | 说明 |
|---|---|---|
| PORT | {数字} | 客户端/监听器连接的端口 |
| DB_HOST | {字符串} | 数据库主机URL |
| DB_PORT | {数字} | 数据库端口 |
| DB_USER | {字符串} | 数据库用户名 |
| DB_PASSWORD | {字符串} | 数据库密码 |
| DB_NAME | {字符串} | Postgres数据库名 |
| DB_ENC_KEY | {字符串} | 加密_realtime.tenants和_realtime.extensions表敏感字段的密钥(推荐16字符) |
| API_JWT_SECRET | {字符串} | 用于签名管理租户HTTP请求令牌的密钥 |
| MAX_CONNECTIONS | {字符串} | WebSocket连接软上限(默认16384) |
| NUM_ACCEPTORS | {字符串} | 处理WebSocket连接请求的进程数(默认100) |
| DB_POOL_SIZE | {字符串} | 数据库连接池大小(默认5) |
WebSocket连接通过对称JWT验证授权,支持以下签名算法:HS256、HS384、HS512。
exp(过期时间)和role(数据库角色)字段,服务器会自动检查过期时间。JWT_CLAIM_VALIDATORS设置额外验证规则,例如:{'iss': 'Issuer', 'nbf': 1610078130},则JWT的iss需等于“Issuer”,nbf需等于1610078130。参考Realtime客户端库的使用说明,例如@supabase/realtime-js的Usage部分。
本仓库采用Apache 2.0许可证。
| 功能 | v1版 | v2版 | 状态 |
|---|---|---|---|
| Postgres 数据变更 | ✔ | ✔ | 正式可用 |
| 广播(Broadcast) | ✔ | 测试版 | |
| 在线状态(Presence) | ✔ | 测试版 |
本仓库主要维护版本2,版本1的代码和Docker镜像仍可访问。最新Docker镜像可前往 [] 获取。
代码库处于活跃开发阶段,文档持续更新。欢迎试用并通过创建issue反馈意见,关注发布记录获取更新通知,喜欢的话别忘了点星标!
这是一个基于Elixir和Phoenix Framework构建的服务器,支持以下功能:
详细介绍可查看Supabase Realtime指南。
服务器不保证每条消息都能送达客户端,使用时请注意这一点。
通过docker-compose.yml启动Postgres数据库和Realtime服务器容器,示例命令:
bashdocker-compose -f docker-compose.yml up
注意
Supabase在生产环境中使用独立数据库管理租户,但本地开发时通过docker-compose.yml自动创建_realtime模式简化配置。
启动后会自动添加一个默认租户,可通过查询数据库的_realtime.tenants和_realtime.extensions表确认。
如需添加自己的租户,发送POST请求到服务器。需修改name和external_id,其他参数可按需调整:
bashcurl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIiLCJpYXQiOjE2NzEyMzc4NzMsImV4cCI6MTcwMjc3Mzk5MywiYXVkIjoiIiwic3ViIjoiIn0._ARixa2KFUVsKBf3UGR90qKLCpGjxhKcXY4akVbmeNQ' \ -d $'{ "tenant" : { "name": "realtime-dev", "external_id": "realtime-dev", "jwt_secret": "a1d99c8b-91b6-47b2-8f3c-aa7d9a9ad20f", "extensions": [ { "type": "postgres_cdc_rls", "settings": { "db_name": "postgres", "db_host": "host.docker.internal", "db_user": "postgres", "db_password": "postgres", "db_port": "5432", "region": "us-west-1", "poll_interval_ms": 100, "poll_max_record_bytes": ***, "ip_version": 4 } ] } } }' \ []> **注意** > 请求头中的`Authorization`令牌使用`docker-compose.yml`中`API_JWT_SECRET`配置的密钥签名。 ### 监听Postgres变更 1. 创建测试表: ```sql create table test ( id serial primary key );
supabase_realtime发布:sqlalter publication supabase_realtime add table test;
可通过以下方式测试广播、在线状态和Postgres变更功能:
@supabase/realtime-js)WebSocket URL需包含租户的external_id(作为子域名),且令牌需使用租户的jwt_secret签名。
默认租户示例:
ws://realtime-dev.localhost:4000/socket(端口需与开发环境一致)eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDMwMjgwODcsInJvbGUiOiJwb3N0Z3JlcyJ9.tz_XJ89gd6bN8MBpCl7afvPrZiBH6RB65iA1FadPT3Y(包含exp和role字段,role为数据库角色)Realtime服务器当前与Fly.io耦合紧密,以下是关键环境变量说明:
| 变量名 | 类型 | 说明 |
|---|---|---|
| PORT | {数字} | 客户端/监听器连接的端口 |
| DB_HOST | {字符串} | 数据库主机URL |
| DB_PORT | {数字} | 数据库端口 |
| DB_USER | {字符串} | 数据库用户名 |
| DB_PASSWORD | {字符串} | 数据库密码 |
| DB_NAME | {字符串} | Postgres数据库名 |
| DB_ENC_KEY | {字符串} | 加密_realtime.tenants和_realtime.extensions表敏感字段的密钥(推荐16字符) |
| API_JWT_SECRET | {字符串} | 用于签名管理租户HTTP请求令牌的密钥 |
| MAX_CONNECTIONS | {字符串} | WebSocket连接软上限(默认16384) |
| NUM_ACCEPTORS | {字符串} | 处理WebSocket连接请求的进程数(默认100) |
| DB_POOL_SIZE | {字符串} | 数据库连接池大小(默认5) |
WebSocket连接通过对称JWT验证授权,支持以下签名算法:HS256、HS384、HS512。
exp(过期时间)和role(数据库角色)字段,服务器会自动检查过期时间。JWT_CLAIM_VALIDATORS设置额外验证规则,例如:{'iss': 'Issuer', 'nbf': ***},则JWT的iss需等于“Issuer”,nbf需等于***。参考Realtime客户端库的使用说明,例如@supabase/realtime-js的Usage部分。
本仓库采用Apache 2.0许可证。
请求头中的
Authorization令牌使用docker-compose.yml中API_JWT_SECRET配置的密钥签名。
sqlcreate table test ( id serial primary key ); __CODE_TOKEN_2__sql alter publication supabase_realtime add table test; __CODE_TOKEN_3__bash docker-compose -f docker-compose.yml up __CODE_TOKEN_4__bash curl -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIiLCJpYXQiOjE2NzEyMzc4NzMsImV4cCI6MTcwMjc3Mzk5MywiYXVkIjoiIiwic3ViIjoiIn0._ARixa2KFUVsKBf3UGR90qKLCpGjxhKcXY4akVbmeNQ' \ -d $'{ "tenant" : { "name": "realtime-dev", "external_id": "realtime-dev", "jwt_secret": "a1d99c8b-91b6-47b2-8f3c-aa7d9a9ad20f", "extensions": [ { "type": "postgres_cdc_rls", "settings": { "db_name": "postgres", "db_host": "host.docker.internal", "db_user": "postgres", "db_password": "postgres", "db_port": "5432", "region": "us-west-1", "poll_interval_ms": 100, "poll_max_record_bytes": ***, "ip_version": 4 } ] } } }' \ []> **注意** > 请求头中的__CODE_TOKEN_14__令牌使用__CODE_TOKEN_15__中__CODE_TOKEN_16__配置的密钥签名。 ### 监听Postgres变更 1. 创建测试表: __CODE_TOKEN_5__ 2. 将表添加到__CODE_TOKEN_17__发布: __CODE_TOKEN_6__ ### 测试功能 可通过以下方式测试广播、在线状态和Postgres变更功能: - 使用客户端库(如__CODE_TOKEN_18__) - 访问本地Realtime Inspector:__CODE_TOKEN_19__external_id__CODE_TOKEN_20__jwt_secret__CODE_TOKEN_21__ws://realtime-dev.localhost:4000/socket__CODE_TOKEN_22__eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDMwMjgwODcsInJvbGUiOiJwb3N0Z3JlcyJ9.tz_XJ89gd6bN8MBpCl7afvPrZiBH6RB65iA1FadPT3Y__CODE_TOKEN_23__exp__CODE_TOKEN_24__role__CODE_TOKEN_25__role__CODE_TOKEN_26___realtime.tenants__CODE_TOKEN_27___realtime.extensions__CODE_TOKEN_28__exp__CODE_TOKEN_29__role__CODE_TOKEN_30__JWT_CLAIM_VALIDATORS__CODE_TOKEN_31__{'iss': 'Issuer', 'nbf': ***}__CODE_TOKEN_32__iss__CODE_TOKEN_33__nbf`需等于***。 ### 客户端授权方式 参考Realtime客户端库的使用说明,例如@supabase/realtime-js的**Usage**部分。 ## 许可证 本仓库采用Apache 2.0许可证。 ## 致谢 - Phoenix:Realtime服务器基于Elixir的Phoenix框架构建。 - Phoenix Channels JavaScript Client:@supabase/realtime-js客户端库大量参考了该库的实现。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务