感谢大佬,学习大佬 @labs100x 最近真是撸出火星了 cdk.linux.do LINUX DO CDK Linux Do 社区 CDK 快速分享平台 - 让分享变得更简单 140 个帖子 - 96 位参与者 阅读完整话题
今天出了个闲置会员cdk 想着刚好够换个黑与白公益站的激活码但发现要等10天 有佬友积分多的可以帮换个兑换码嘛 10天后积分到账 我还 750 LDC LD士多 黑与白公益站注册邀请码 - LD士多 注意:我们始终定价为688,若价格为红色且低于688均为活动特价。 黑与白公益站注册邀请码 购买前请确保自己已信任等级2级或以上,否则无法使用! 接受不好用发起争议退款,没有7天无理由限制,什么时候发起都可以。 欢迎来到黑与白公益站~! … 2 个帖子 - 2 位参与者 阅读完整话题
PostgreSQL 14 到 Apache Doris 4.1.1 CDC 同步方案 本文档用于验证并实施 PostgreSQL 业务库 fudabd_common_plat_db.public.terminal_pos_202602 到 Apache Doris 分析库 fudabd_common_plat_db.terminal_pos 的数据同步。 实际验证环境要求 PostgreSQL 源端 PostgreSQL 版本:14。 连接地址: 127.0.0.1:15432 。 登录账号: postgres 。 登录密码: Fdbd@2013 。 源数据库: fudabd_common_plat_db 。 源 schema: public 。 源表: fudabd_user 。 主键字段: id 。 已开启 logical replication。 pg_hba.conf 已允许 Doris 所在机器或容器访问数据库和 logical replication。 PostgreSQL 账号具备 logical replication、publication、slot 操作权限。 Doris 目标端 Apache Doris要求 最低docker镜像版本 4.1.1 ,此版本支持Stream Job; Doris 版本: doris-4.1.1-rc01-b10073ad9ca 。 Doris @@version : 5.7.99 。 目标数据库: fudabd_common_plat_db 。 目标表: fudabd_user 。 目标表当前不存在,需要由方案一手动创建。 目标表需要支持 UPDATE 、 DELETE ,因此设计为 UNIQUE KEY 表。 同步要求 需要先全量初始化,再持续增量同步。 需要处理 INSERT 、 UPDATE 、 DELETE 。 当前只验证 terminal_pos_202602 单表,暂不处理后续每月新增分表。 单表数据量:日均约 500 万条。 延迟目标:10 秒内。 Doris Streaming Job 支持判断 Apache Doris 4.x 官方文档提供 CREATE JOB ... ON STREAMING ,支持以下两类模式: TVF Mode :使用 cdc_stream(...) 读取 PostgreSQL CDC,再通过 INSERT INTO ... SELECT ... 写入指定 Doris 表,适合单表 SQL 映射同步。 当前环境是 4.1.1-rc01 ,建议正式执行前在当前 Doris 集群验证 Streaming Job 语法和 FE 配置。 参考文档: CREATE STREAMING JOB : CREATE STREAMING JOB - Apache Doris PostgreSQL SQL Mapping Sync: PostgreSQL CDC with SQL Mapping - Apache Doris PostgreSQL Auto Table Creation Sync: PostgreSQL CDC with Auto Table Creation - Apache Doris Doris 4.1.1 Release Notes: Release 4.1.1 - Apache Doris 前置检查 PostgreSQL 配置检查 当前已确认 postgresql.conf 包含以下配置: wal_level = logical max_replication_slots = 10 max_wal_senders = 10 wal_sender_timeout = 0 执行以下 SQL 复核: SHOW wal_level; SHOW max_replication_slots; SHOW max_wal_senders; 检查源表主键: SELECT tc.table_schema, tc.table_name, kcu.column_name FROM information_schema.table_constraints tc JOIN information_schema.key_column_usage kcu ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema WHERE tc.constraint_type = 'PRIMARY KEY' AND tc.table_schema = 'public' AND tc.table_name = 'terminal_pos_202602'; Doris 配置检查 登录 Doris FE MySQL 协议端口后执行: SELECT @@version_comment, @@version; SHOW FRONTEND CONFIG LIKE 'max_streaming_job_num'; 如果 max_streaming_job_num 为 0 或 Streaming Job 语法不可用,需要先调整 Doris FE 配置或切换到正式 4.1.1 镜像版本。 PostgreSQL JDBC Driver 准备 Streaming Job 需要 PostgreSQL JDBC Driver。建议将驱动放到 Doris FE/BE 都可访问的 HTTP 地址。 示例: postgresql-42.7.3.jar 本文 SQL 中使用 <PG_DRIVER_URL> 占位,执行前替换为实际地址,例如: https://maven.aliyun.com/repository/public/org/postgresql/postgresql/42.7.3/postgresql-42.7.3.jar 源表结构 CREATE TABLE `fudabd_user` ( `id` bigint NOT NULL COMMENT "用户ID", `user_name` varchar(50) NOT NULL COMMENT "用户名", `password` varchar(255) NOT NULL COMMENT "密码(应加密存储)", `age` tinyint NULL COMMENT "年龄", `create_time` datetime NULL COMMENT "创建时间", `update_time` datetime NULL COMMENT "更新时间", `is_deleted` int NULL DEFAULT "0" COMMENT "是否删除标记" ) SQL 映射同步 推荐结论 当前验证目标是 fudabd_user 同步到 fudabd_user ,且 Doris 目标表不存在、需要设计为 UNIQUE KEY ,优先 SQL 映射同步。 该模式优势: 可将源表 fudabd_user 明确写入目标表 fudabd_user 。 可手动控制 Doris 表模型、字段类型、分桶数和副本数。 可承接 PostgreSQL 主键表的 INSERT 、 UPDATE 、 DELETE CDC 变更。 创建 Doris 数据库 CREATE DATABASE IF NOT EXISTS fudabd_common_plat_db; USE fudabd_common_plat_db; 创建 Doris 目标表 CREATE TABLE `fudabd_user` ( `id` bigint NOT NULL COMMENT "用户ID", `user_name` varchar(50) NOT NULL COMMENT "用户名", `password` varchar(255) NOT NULL COMMENT "密码(应加密存储)", `age` tinyint NULL COMMENT "年龄", `create_time` datetime NULL COMMENT "创建时间", `update_time` datetime NULL COMMENT "更新时间", `is_deleted` int NULL DEFAULT "0" COMMENT "是否删除标记" ) ENGINE=OLAP UNIQUE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 10 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "min_load_replica_num" = "-1", "is_being_synced" = "false", "storage_medium" = "hdd", "storage_format" = "V2", "inverted_index_storage_format" = "V3", "compression" = "LZ4", "enable_unique_key_merge_on_write" = "true", "light_schema_change" = "true", "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728", "enable_mow_light_delete" = "false" );; 参数建议: 单 BE 验证环境使用 replication_num = 1 。 生产多 BE 环境建议改为 replication_num = 3 。 日均 500 万数据验证阶段可先使用 BUCKETS 32 ,生产环境根据 BE 数量和 tablet 大小调整为 32 或 64 。 创建 SQL 映射 Streaming Job 执行前需要将 <PG_DRIVER_URL> 替换为 PostgreSQL JDBC Driver 的实际地址。 将 “offset” 从 “initial” 改为 “latest” 即可跳过全量快照,仅捕获增量变更: CREATE JOB pg_fudabd_user_to_fudabd_user ON STREAMING DO INSERT INTO fudabd_common_plat_db.fudabd_user ( id , user_name , password , age` tinyint , create_time , update_time , is_deleted ) SELECT id, user_name , password , age, create_time , update_time , is_deleted FROM cdc_stream( "type" = "postgres", "jdbc_url" = "jdbc:postgresql://127.0.0.1:15432/fudabd_common_plat_db", "driver_url" = "https://maven.aliyun.com/repository/public/org/postgresql/postgresql/42.7.3/postgresql-42.7.3.jar", "driver_class" = "org.postgresql.Driver", "user" = "postgres", "password" = "Fdbd@2013", "database" = "fudabd_common_plat_db", "schema" = "public", "table" = "fudabd_user", "offset" = "initial" ); JOB 运维命令 以下命令用于查看、暂停、恢复和删除前面创建的 Doris Streaming Job。 JOB 查看所有 INSERT 类型 JOB: SELECT * FROM jobs("type" = "insert"); 查看 SQL 映射同步 JOB: SELECT * FROM jobs("type" = "insert") WHERE Name = 'pg_fudabd_user_to_fudabd_user'; 查看 JOB 产生的 TASK 查看所有 INSERT 类型 TASK: SELECT * FROM tasks("type" = "insert"); 查看 SQL 映射同步 JOB 的 TASK: SELECT * FROM tasks("type" = "insert") WHERE JobName = 'pg_fudabd_user_to_fudabd_user'; 暂停 JOB 暂停 SQL 映射同步 JOB: PAUSE JOB WHERE jobName = 'pg_fudabd_user_to_fudabd_user'; 恢复启动 JOB 恢复 SQL 映射同步 JOB: RESUME JOB WHERE jobName = 'pg_fudabd_user_to_fudabd_user'; 删除 JOB 删除 SQL 映射同步 JOB: DROP JOB WHERE jobName = 'pg_fudabd_user_to_fudabd_user'; PGSQL运维命令 -- 查看当前 Publication SELECT p.pubname, n.nspname AS schema_name, c.relname AS table_name FROM pg_publication p JOIN pg_publication_rel pr ON p.oid = pr.prpubid JOIN pg_class c ON pr.prrelid = c.oid JOIN pg_namespace n ON c.relnamespace = n.oid; -- 查看 Replication Slot SELECT slot_name, plugin, slot_type, active, database, restart_lsn, confirmed_flush_lsn FROM pg_replication_slots; -- 如果 Slot 仍然 active,先终止连接 SELECT pid, usename, application_name, client_addr, state FROM pg_stat_activity WHERE backend_type = 'walsender'; SELECT pg_terminate_backend(pid); -- pid 需要手动替换 -- 删除 Replication Slot SELECT pg_drop_replication_slot('slot_name'); -- 删除 Publication -- 查看当前 Publication 进行替换 DROP PUBLICATION doris_pub_1781162893358; -- 确认 Slot 已删除 SELECT slot_name FROM pg_replication_slots; -- 检查 WAL 是否恢复正常 SELECT slot_name, active, pg_size_pretty( pg_wal_lsn_diff( pg_current_wal_lsn(), restart_lsn ) ) AS retained_wal FROM pg_replication_slots; 延迟与性能建议 当前单表日均约 500 万条,验证阶段建议先使用 BUCKETS 32 。 如果同步延迟超过 10 秒,优先检查 Doris Streaming Job 状态、BE compaction、tablet 数量、网络带宽和 PostgreSQL replication slot WAL 堆积。 如果 Doris 集群 BE 数量较多,可将 BUCKETS 调整到 64 ,但不建议在 POC 初期过度增加 tablet 数。 生产环境建议使用多 BE,并将 replication_num 调整为 3 。 PostgreSQL 侧需要持续监控 pg_replication_slots ,避免 Doris Job 停止后 WAL 长时间堆积。 注意事项 STREAMING JOB 任务状态出现PENDING解决 问题根因 __internal_schema.streaming_job_meta 是 Doris 内部管理 Streaming Job 元数据的系统表, FE 未能自动创建它 。所有 Streaming Job 操作都依赖此表,缺失则全部阻塞在 PENDING。 确认 __internal_schema 库及表现状 -- 查看内部库是否存在 SHOW DATABASES LIKE '__internal_schema'; -- 如果存在,查看里面有哪些表 SHOW TABLES FROM __internal_schema; 第一步:先停掉报错的 JOB 止血 TOP JOB pg_fudabd_user_to_fudabd_user; 第二步:手动创建缺失的内部表 CREATE TABLE IF NOT EXISTS `__internal_schema`.`streaming_job_meta` ( `id` bigint NOT NULL, `job_id` bigint NOT NULL, `table_name` varchar(256) NOT NULL, `chunk_list` text ) UNIQUE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_num" = "1" ); 这是基于日志中 SQL 推断的最小表结构。如果后续 FE 代码还访问了其他字段,会再次报错,届时根据错误信息用 ALTER TABLE 补充列即可。 第三步:删除旧 JOB 重新创建 3 个帖子 - 3 位参与者 阅读完整话题
经过今日的"拔网线一事" 我认为始皇开发客户端在客户端里加入PCDN要提上日程了 14 个帖子 - 11 位参与者 阅读完整话题
我有一台服务器,宽带是后付费的弹性ip,用的 CDT公网流量 ,每个月国内只有 20g 流量,超了很贵,我想改成固定带宽的宽带,把我之前收费的一个项目给免费公开出来,流量吃不住。 我是不是可以再买个弹性 ip。然后直接换绑? 有没有什么什么阿里云的活动可以买到便宜的 弹性 ip 哦?公益项目,太贵顶不住; 2 个帖子 - 2 位参与者 阅读完整话题
https://github.com/woodgear/refresh Refresh Refresh 是一个自托管的个人账号 feed API:用你自己的浏览器登录态,把 X/Twitter 、知乎、B 站推给你的内容采集成结构化资源,再通过网页、RSS 和 JSON API 消费。 它不是多用户托管服务,也不内置第三方账号凭据。登录态、抓取到的内容、媒体缓存和日志都属于本机运行态数据,不提交到仓库。 它做什么 通过 Chrome DevTools Protocol 操控一个独立的 Chrome profile 。 使用你自己的登录态抓取平台推荐流: X/Twitter home timeline GraphQL 响应 知乎 topstory / moments API B 站动态流 / 热门 API 每次抓取保存为不可变的 RefreshWindow 档案。 将内容归一化为 Message / Author / Account 等 k8s 风格资源。 提供 React 阅读界面:按源过滤、未读追踪、登录恢复、手动刷新。 提供 RSS: /rss/<source>.xml 和 /rss/all.xml 。 图片会本地化到 data/media ,方便 RSS 阅读器稳定回源。 隐私边界 仓库只放应用代码。以下运行态路径已被 git 忽略: profiles/ :Chrome profile 、cookies 、登录态 data/ :抓取内容、媒体、overlay 、调度器状态、日志 .env / .env.* :本地部署配置 公开仓库前不要把运行态目录、截图、导出的 cookie 、本地环境变量文件或真实数据样例提交进来。 本地运行 依赖: Bun pnpm Chrome / Chromium jq 、 xmllint (用于 verify.sh ) 启动: pnpm install pnpm start 默认地址: 后端 API: http://localhost:3001 前端网页: http://localhost:5173 首次使用时打开 http://localhost:5173 。如果账号未登录,页面会提示登录;登录过程发生在受管 Chrome profile (默认 profiles/main )里。 Chrome 启动与登录态 Refresh 不依赖外部浏览器自动化服务。后端需要访问平台时,会先检查本机 CDP: http://127.0.0.1:${RADAR_CDP_PORT}/json/version 如果 CDP 不可用,后端会自动拉起一个有窗口的 Chrome / Chromium: CDP 只监听本机 127.0.0.1 。 默认 CDP 端口是 19223 ,可用 RADAR_CDP_PORT 修改。 默认 profile 是 profiles/main ,可用 RADAR_PROFILE_DIR 修改。 Chrome 路径会自动探测;找不到时用 RADAR_CHROME_BIN 指定。 启动参数包含 --remote-debugging-port 和 --user-data-dir ,因此登录态会持久化在 profile 目录里。 登录、扫码和抓取都使用这个同一个 profile 。不要把 profiles/ 提交到仓库。 Linux 服务器部署时需要有可用的图形桌面会话,因为平台登录通常需要可见窗口。 scripts/ start-k2-tmux.sh 会在 tmux 进程里补齐常见桌面环境变量: XDG_RUNTIME_DIR WAYLAND_DISPLAY DISPLAY DBUS_SESSION_BUS_ADDRESS 如果检测到 WAYLAND_DISPLAY ,后端启动 Chrome 时会默认追加 --ozone-platform=wayland 。需要强制指定时可以设置: export RADAR_CHROME_OZONE_PLATFORM=wayland 验证 bunx tsc --noEmit ./verify.sh verify.sh 使用隔离的 mock 数据,不依赖真实平台登录态。 部署 Refresh 运行两个进程: 后端: bun server/index.ts 前端/Vite 反代: bunx vite 公网部署时,把公网地址放进环境变量,然后用反向代理或 tunnel 暴露 Vite 端口。 示例: export REFRESH_PUBLIC_URL="https://refresh.example.com" export SERVER_PORT=13001 export WEB_PORT=13002 scripts/start-k2-tmux.sh scripts/ start-k2-tmux.sh 会: 在 tmux session 中启动后端和前端; 用 REFRESH_PUBLIC_URL 设置 RADAR_BASE_URL ,保证 RSS 里的媒体地址能回源; 从 REFRESH_PUBLIC_URL 推导 Vite allowed host ; 将进程日志写入 data/logs/ 。 公网代理或 tunnel 指向: http://127.0.0.1:${WEB_PORT} 后端通过 Vite proxy 访问,因此通常只需要暴露 Web 端口。 常用环境变量 变量 用途 默认 PORT 后端端口 3001 RADAR_DATA_DIR 数据根目录 ./data RADAR_BASE_URL RSS 媒体绝对地址 http://localhost:$PORT RADAR_CDP_PORT 受管 Chrome CDP 端口 19223 RADAR_PROFILE_DIR 受管 Chrome profile 目录 ./profiles/main RADAR_CHROME_BIN Chrome 可执行文件 自动探测 RADAR_CHROME_OZONE_PLATFORM Chrome Ozone 平台,例如 wayland 检测到 WAYLAND_DISPLAY 时为 wayland RADAR_PROXY 媒体下载代理 http://127.0.0.1:7890 REFRESH_API_TARGET Vite 反代的后端地址 http://localhost:3001 REFRESH_ALLOWED_HOSTS Vite 允许访问的 host ,逗号分隔 未设置 REFRESH_PUBLIC_URL 公网部署 URL ,供 scripts/ start-k2-tmux.sh 使用 脚本必填 文档 文件 内容 AGENTS.md 当前架构、约定、API 速查、常见任务操作手册 docs/design.md 原始设计蓝图和设计取舍 docs/progress.md 实施日志、踩坑记录和后续候选项
https://github.com/woodgear/refresh Refresh Refresh 是一个自托管的个人账号 feed API:用你自己的浏览器登录态,把 X/Twitter 、知乎、B 站推给你的内容采集成结构化资源,再通过网页、RSS 和 JSON API 消费。 它不是多用户托管服务,也不内置第三方账号凭据。登录态、抓取到的内容、媒体缓存和日志都属于本机运行态数据,不提交到仓库。 它做什么 通过 Chrome DevTools Protocol 操控一个独立的 Chrome profile 。 使用你自己的登录态抓取平台推荐流: X/Twitter home timeline GraphQL 响应 知乎 topstory / moments API B 站动态流 / 热门 API 每次抓取保存为不可变的 RefreshWindow 档案。 将内容归一化为 Message / Author / Account 等 k8s 风格资源。 提供 React 阅读界面:按源过滤、未读追踪、登录恢复、手动刷新。 提供 RSS: /rss/<source>.xml 和 /rss/all.xml 。 图片会本地化到 data/media ,方便 RSS 阅读器稳定回源。 隐私边界 仓库只放应用代码。以下运行态路径已被 git 忽略: profiles/ :Chrome profile 、cookies 、登录态 data/ :抓取内容、媒体、overlay 、调度器状态、日志 .env / .env.* :本地部署配置 公开仓库前不要把运行态目录、截图、导出的 cookie 、本地环境变量文件或真实数据样例提交进来。 本地运行 依赖: Bun pnpm Chrome / Chromium jq 、 xmllint (用于 verify.sh ) 启动: pnpm install pnpm start 默认地址: 后端 API: http://localhost:3001 前端网页: http://localhost:5173 首次使用时打开 http://localhost:5173 。如果账号未登录,页面会提示登录;登录过程发生在受管 Chrome profile (默认 profiles/main )里。 Chrome 启动与登录态 Refresh 不依赖外部浏览器自动化服务。后端需要访问平台时,会先检查本机 CDP: http://127.0.0.1:${RADAR_CDP_PORT}/json/version 如果 CDP 不可用,后端会自动拉起一个有窗口的 Chrome / Chromium: CDP 只监听本机 127.0.0.1 。 默认 CDP 端口是 19223 ,可用 RADAR_CDP_PORT 修改。 默认 profile 是 profiles/main ,可用 RADAR_PROFILE_DIR 修改。 Chrome 路径会自动探测;找不到时用 RADAR_CHROME_BIN 指定。 启动参数包含 --remote-debugging-port 和 --user-data-dir ,因此登录态会持久化在 profile 目录里。 登录、扫码和抓取都使用这个同一个 profile 。不要把 profiles/ 提交到仓库。 Linux 服务器部署时需要有可用的图形桌面会话,因为平台登录通常需要可见窗口。 scripts/ start-k2-tmux.sh 会在 tmux 进程里补齐常见桌面环境变量: XDG_RUNTIME_DIR WAYLAND_DISPLAY DISPLAY DBUS_SESSION_BUS_ADDRESS 如果检测到 WAYLAND_DISPLAY ,后端启动 Chrome 时会默认追加 --ozone-platform=wayland 。需要强制指定时可以设置: export RADAR_CHROME_OZONE_PLATFORM=wayland 验证 bunx tsc --noEmit ./verify.sh verify.sh 使用隔离的 mock 数据,不依赖真实平台登录态。 部署 Refresh 运行两个进程: 后端: bun server/index.ts 前端/Vite 反代: bunx vite 公网部署时,把公网地址放进环境变量,然后用反向代理或 tunnel 暴露 Vite 端口。 示例: export REFRESH_PUBLIC_URL="https://refresh.example.com" export SERVER_PORT=13001 export WEB_PORT=13002 scripts/start-k2-tmux.sh scripts/ start-k2-tmux.sh 会: 在 tmux session 中启动后端和前端; 用 REFRESH_PUBLIC_URL 设置 RADAR_BASE_URL ,保证 RSS 里的媒体地址能回源; 从 REFRESH_PUBLIC_URL 推导 Vite allowed host ; 将进程日志写入 data/logs/ 。 公网代理或 tunnel 指向: http://127.0.0.1:${WEB_PORT} 后端通过 Vite proxy 访问,因此通常只需要暴露 Web 端口。 常用环境变量 变量 用途 默认 PORT 后端端口 3001 RADAR_DATA_DIR 数据根目录 ./data RADAR_BASE_URL RSS 媒体绝对地址 http://localhost:$PORT RADAR_CDP_PORT 受管 Chrome CDP 端口 19223 RADAR_PROFILE_DIR 受管 Chrome profile 目录 ./profiles/main RADAR_CHROME_BIN Chrome 可执行文件 自动探测 RADAR_CHROME_OZONE_PLATFORM Chrome Ozone 平台,例如 wayland 检测到 WAYLAND_DISPLAY 时为 wayland RADAR_PROXY 媒体下载代理 http://127.0.0.1:7890 REFRESH_API_TARGET Vite 反代的后端地址 http://localhost:3001 REFRESH_ALLOWED_HOSTS Vite 允许访问的 host ,逗号分隔 未设置 REFRESH_PUBLIC_URL 公网部署 URL ,供 scripts/ start-k2-tmux.sh 使用 脚本必填 文档 文件 内容 AGENTS.md 当前架构、约定、API 速查、常见任务操作手册 docs/design.md 原始设计蓝图和设计取舍 docs/progress.md 实施日志、踩坑记录和后续候选项
https://github.com/woodgear/refresh Refresh Refresh 是一个自托管的个人账号 feed API:用你自己的浏览器登录态,把 X/Twitter 、知乎、B 站推给你的内容采集成结构化资源,再通过网页、RSS 和 JSON API 消费。 它不是多用户托管服务,也不内置第三方账号凭据。登录态、抓取到的内容、媒体缓存和日志都属于本机运行态数据,不提交到仓库。 它做什么 通过 Chrome DevTools Protocol 操控一个独立的 Chrome profile 。 使用你自己的登录态抓取平台推荐流: X/Twitter home timeline GraphQL 响应 知乎 topstory / moments API B 站动态流 / 热门 API 每次抓取保存为不可变的 RefreshWindow 档案。 将内容归一化为 Message / Author / Account 等 k8s 风格资源。 提供 React 阅读界面:按源过滤、未读追踪、登录恢复、手动刷新。 提供 RSS: /rss/<source>.xml 和 /rss/all.xml 。 图片会本地化到 data/media ,方便 RSS 阅读器稳定回源。 隐私边界 仓库只放应用代码。以下运行态路径已被 git 忽略: profiles/ :Chrome profile 、cookies 、登录态 data/ :抓取内容、媒体、overlay 、调度器状态、日志 .env / .env.* :本地部署配置 公开仓库前不要把运行态目录、截图、导出的 cookie 、本地环境变量文件或真实数据样例提交进来。 本地运行 依赖: Bun pnpm Chrome / Chromium jq 、 xmllint (用于 verify.sh ) 启动: pnpm install pnpm start 默认地址: 后端 API: http://localhost:3001 前端网页: http://localhost:5173 首次使用时打开 http://localhost:5173 。如果账号未登录,页面会提示登录;登录过程发生在受管 Chrome profile (默认 profiles/main )里。 Chrome 启动与登录态 Refresh 不依赖外部浏览器自动化服务。后端需要访问平台时,会先检查本机 CDP: http://127.0.0.1:${RADAR_CDP_PORT}/json/version 如果 CDP 不可用,后端会自动拉起一个有窗口的 Chrome / Chromium: CDP 只监听本机 127.0.0.1 。 默认 CDP 端口是 19223 ,可用 RADAR_CDP_PORT 修改。 默认 profile 是 profiles/main ,可用 RADAR_PROFILE_DIR 修改。 Chrome 路径会自动探测;找不到时用 RADAR_CHROME_BIN 指定。 启动参数包含 --remote-debugging-port 和 --user-data-dir ,因此登录态会持久化在 profile 目录里。 登录、扫码和抓取都使用这个同一个 profile 。不要把 profiles/ 提交到仓库。 Linux 服务器部署时需要有可用的图形桌面会话,因为平台登录通常需要可见窗口。 scripts/ start-k2-tmux.sh 会在 tmux 进程里补齐常见桌面环境变量: XDG_RUNTIME_DIR WAYLAND_DISPLAY DISPLAY DBUS_SESSION_BUS_ADDRESS 如果检测到 WAYLAND_DISPLAY ,后端启动 Chrome 时会默认追加 --ozone-platform=wayland 。需要强制指定时可以设置: export RADAR_CHROME_OZONE_PLATFORM=wayland 验证 bunx tsc --noEmit ./verify.sh verify.sh 使用隔离的 mock 数据,不依赖真实平台登录态。 部署 Refresh 运行两个进程: 后端: bun server/index.ts 前端/Vite 反代: bunx vite 公网部署时,把公网地址放进环境变量,然后用反向代理或 tunnel 暴露 Vite 端口。 示例: export REFRESH_PUBLIC_URL="https://refresh.example.com" export SERVER_PORT=13001 export WEB_PORT=13002 scripts/start-k2-tmux.sh scripts/ start-k2-tmux.sh 会: 在 tmux session 中启动后端和前端; 用 REFRESH_PUBLIC_URL 设置 RADAR_BASE_URL ,保证 RSS 里的媒体地址能回源; 从 REFRESH_PUBLIC_URL 推导 Vite allowed host ; 将进程日志写入 data/logs/ 。 公网代理或 tunnel 指向: http://127.0.0.1:${WEB_PORT} 后端通过 Vite proxy 访问,因此通常只需要暴露 Web 端口。 常用环境变量 变量 用途 默认 PORT 后端端口 3001 RADAR_DATA_DIR 数据根目录 ./data RADAR_BASE_URL RSS 媒体绝对地址 http://localhost:$PORT RADAR_CDP_PORT 受管 Chrome CDP 端口 19223 RADAR_PROFILE_DIR 受管 Chrome profile 目录 ./profiles/main RADAR_CHROME_BIN Chrome 可执行文件 自动探测 RADAR_CHROME_OZONE_PLATFORM Chrome Ozone 平台,例如 wayland 检测到 WAYLAND_DISPLAY 时为 wayland RADAR_PROXY 媒体下载代理 http://127.0.0.1:7890 REFRESH_API_TARGET Vite 反代的后端地址 http://localhost:3001 REFRESH_ALLOWED_HOSTS Vite 允许访问的 host ,逗号分隔 未设置 REFRESH_PUBLIC_URL 公网部署 URL ,供 scripts/ start-k2-tmux.sh 使用 脚本必填 文档 文件 内容 AGENTS.md 当前架构、约定、API 速查、常见任务操作手册 docs/design.md 原始设计蓝图和设计取舍 docs/progress.md 实施日志、踩坑记录和后续候选项
现在是在升级吗还是崩了,还以为我是被封号了 3 个帖子 - 2 位参与者 阅读完整话题
LDC 带配套画板 把key放进去就能蹬了 cdk.linux.do LINUX DO CDK Linux Do 社区 CDK 快速分享平台 - 让分享变得更简单 不含任何商业推广 9 个帖子 - 4 位参与者 阅读完整话题
证据如下: 1.L站好好的活着呢 2.薄荷站好好的活着呢 3.Credit、CDK站好好活着呢 4.只有HUB站崩了 综上,HUB站崩了,导致了大家流量暴涨 对不起,给大家跪了! @neo @BOHE @Chenyme 24 个帖子 - 24 位参与者 阅读完整话题
我看有些领cdk都需要社区分数,有大佬知道在哪儿看,并且怎么获取吗 5 个帖子 - 5 位参与者 阅读完整话题
领取免费试用额度 cdk.linux.do LINUX DO CDK Linux Do 社区 CDK 快速分享平台 - 让分享变得更简单 兑换地址 ai.centos.hk New API 统一的 AI 模型聚合与分发网关,支持将各类大语言模型跨格式转换为 OpenAI、Claude、Gemini 兼容接口,为个人与企业提供集中式模型管理与网关服务。 使用文档 https://doc.centos.hk 37 个帖子 - 35 位参与者 阅读完整话题
**1024Proxy** 官方这边给了一批福利 CDK ,拿出来分享给 V2EX 的朋友们。 ## 1024Proxy 是什么? 1024Proxy 是一家提供海外代理 IP 服务的平台,支持: * 动态住宅代理 IP * 静态住宅代理 IP * ISP 代理 * 数据中心代理 * 全球多地区节点覆盖 * API 调用支持 比较适合: * 跨境电商 * 数据采集 * 社媒运营 * 广告投放测试 * 海外账号管理 * 市场调研等场景 ## 为什么分享它? 之前测试过几个代理平台,主要关注: * IP 纯净度 * 连接稳定性 * 国家地区覆盖 * API 易用性 * 性价比 1024Proxy 给我的感觉是: ✅ 节点资源比较丰富 ✅ 连接速度稳定 ✅ 支持按需提取 IP ✅ 后台操作简单 ✅ 新用户门槛较低 对于个人开发者和小团队来说比较友好。 ## 福利来了 本次提供部分限量 CDK 。 兑换后可获得: * 免费代理流量 * 产品体验资格 * 部分活动奖励(以官方实际规则为准) 数量有限,先到先得。 ## 如何领取 1. [注册账号]( https://1024proxy.com/?kwd=channel-2e ) 2. 联系 TG 客服 3. 回复本帖或私信领取 CDK 4. 在后台兑换即可获得对应流量 ## 个人体验 最近在做海外数据采集项目时: * IP 切换比较顺畅 * 请求成功率不错 * 长时间运行稳定性可以 * API 对开发者比较友好 对于需要频繁更换 IP 的业务来说,确实能省不少时间。 ## 欢迎交流 如果大家正在使用代理服务,也欢迎分享一下: * 当前在用哪家? * 最看重哪些指标? * 做跨境、电商还是数据采集? 我也可以根据自己的测试情况和大家交流使用体验。 **CDK 数量有限,领完即止。** 有需要体验 [1024Proxy] ( https://1024proxy.com/?kwd=channel-2e ) 的朋友可以直接留言: > 求 CDK 看到后会尽快回复。🚀
L站的新人,先分享一下自有资源; 订阅链接 https://sub-1.smjcdh.top/smjc/api/v1/client/subscribe?token=cb6ab14147606b6a46196983648647cb 1 个帖子 - 1 位参与者 阅读完整话题
**1024Proxy** 官方这边给了一批福利 CDK ,拿出来分享给 V2EX 的朋友们。 ## 1024Proxy 是什么? 1024Proxy 是一家提供海外代理 IP 服务的平台,支持: * 动态住宅代理 IP * 静态住宅代理 IP * ISP 代理 * 数据中心代理 * 全球多地区节点覆盖 * API 调用支持 比较适合: * 跨境电商 * 数据采集 * 社媒运营 * 广告投放测试 * 海外账号管理 * 市场调研等场景 ## 为什么分享它? 之前测试过几个代理平台,主要关注: * IP 纯净度 * 连接稳定性 * 国家地区覆盖 * API 易用性 * 性价比 1024Proxy 给我的感觉是: ✅ 节点资源比较丰富 ✅ 连接速度稳定 ✅ 支持按需提取 IP ✅ 后台操作简单 ✅ 新用户门槛较低 对于个人开发者和小团队来说比较友好。 ## 福利来了 本次提供部分限量 CDK 。 兑换后可获得: * 免费代理流量 * 产品体验资格 * 部分活动奖励(以官方实际规则为准) 数量有限,先到先得。 ## 如何领取 1. [注册账号]( https://1024proxy.com/?kwd=channel-2e ) 2. 联系 TG 客服 3. 回复本帖或私信领取 CDK 4. 在后台兑换即可获得对应流量 ## 个人体验 最近在做海外数据采集项目时: * IP 切换比较顺畅 * 请求成功率不错 * 长时间运行稳定性可以 * API 对开发者比较友好 对于需要频繁更换 IP 的业务来说,确实能省不少时间。 ## 欢迎交流 如果大家正在使用代理服务,也欢迎分享一下: * 当前在用哪家? * 最看重哪些指标? * 做跨境、电商还是数据采集? 我也可以根据自己的测试情况和大家交流使用体验。 **CDK 数量有限,领完即止。** 有需要体验 [1024Proxy] ( https://1024proxy.com/?kwd=channel-2e ) 的朋友可以直接留言: > 求 CDK 看到后会尽快回复。🚀
家里电脑大概一周没用,用的时候一直reconnect,网上看到登出再登陆,照做后就这样了,试了开全局、写.env、开tun模式都不行,节点也换过,求助 7 个帖子 - 7 位参与者 阅读完整话题
team 号 30个cdk 站点: https://magic-sub.zeabur.app 邀请码: https://cdk.linux.do/receive/4bc954f1-6664-420f-b5af-8c8ee321bda6 13 个帖子 - 12 位参与者 阅读完整话题
自研两个半月,Vibe了$1.7万元的token 主流检测Browserscan/Pixelscan全部通过 回馈社区第一波,先发200个试下水 因为私聊过neo没有回复我,主要不知道接入L站登陆后是否还会被视为广告,所以先以CDK的形式发一波,后续neo许可后我再接入,以长期形式回馈佬友。 领取地址: LINUX DO CDK 兑换时间:7月6日前激活 浏览器内核:148版本 完美支持:[AMD系列]Windows/Linux/MacOS 兼容支持:[ARM]MacOS,M系列的指纹似乎受到轻微影响,因为手里没有arm的机器无法调试 内置了本地API,大家可以自动化新建删除并获取CDP,但我目前还没有更详尽的计划和完善。 免责:若储存重要虚拟资产请关闭云同步功能。 特别:如果您是公益站站长、站内开源项目作者,可以为你提供更高的窗口额度。 2 个帖子 - 2 位参与者 阅读完整话题
(话题已被作者删除) 1 个帖子 - 1 位参与者 阅读完整话题