{"id":13424939,"url":"https://github.com/anyant/rssant","last_synced_at":"2025-03-15T18:36:12.540Z","repository":{"id":36847252,"uuid":"229764065","full_name":"anyant/rssant","owner":"anyant","description":"蚁阅 - 让 RSS 更好用，轻松订阅你喜欢的博客和资讯","archived":false,"fork":false,"pushed_at":"2024-08-27T08:16:28.000Z","size":4972,"stargazers_count":1607,"open_issues_count":25,"forks_count":138,"subscribers_count":30,"default_branch":"master","last_synced_at":"2024-10-26T23:55:56.258Z","etag":null,"topics":["rss"],"latest_commit_sha":null,"homepage":"https://rss.anyant.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anyant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-23T14:05:07.000Z","updated_at":"2024-10-26T02:39:29.000Z","dependencies_parsed_at":"2024-06-10T20:11:25.051Z","dependency_job_id":null,"html_url":"https://github.com/anyant/rssant","commit_stats":null,"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anyant%2Frssant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anyant%2Frssant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anyant%2Frssant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anyant%2Frssant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anyant","download_url":"https://codeload.github.com/anyant/rssant/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243775957,"owners_count":20346298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rss"],"created_at":"2024-07-31T00:01:01.044Z","updated_at":"2025-03-15T18:36:07.515Z","avatar_url":"https://github.com/anyant.png","language":"Python","readme":"# 蚁阅 ( RSSAnt )\n\n\u003e 让 RSS 更好用，轻松订阅你喜欢的博客和资讯  \n\n### 主要特点\n\n- 全平台，无广告，无推荐，专注阅读\n- 支持全文阅读，支持播客和视频内容\n- 智能查找订阅源，智能裂图修复\n- 支持夜间模式，全球 RSS 均可订阅\n- 开源，开箱即用，也支持自己部署\n\n开箱即用地址: https://rss.anyant.com\n\n## 蚁阅会员\n\n蚁阅按订阅制收费，因为订阅更新需要服务器资源，免费无法持续提供稳定服务。  \n\n|          |  会员版   |   免费版   | 开源版   |\n|----------|---------|------------|---------|\n| 订阅数量  |  不限    |   不限     |  不限     |\n| 使用方式  |  开箱即用 |  开箱即用  | 自己部署维护 |\n| 全部功能  |  支持    |  试用30天  |   支持     |\n| 技术支持  |  优先    |   常规    |   常规    |\n\n会员版价格：**5元/月** 或者 **30元/年**  \n充值入口在【账号设置】页面，欢迎充值会员，支付蚁阅服务器费用！  \n\n**蚁阅兑换码**\n\n在博客，公众号，论坛社区上推荐蚁阅，可联系我获取超级兑换码。  \n如果你喜欢蚁阅，不妨也推荐给更多人，非常感谢！  \n\n给蚁阅提供反馈和建议，报 Bug 等等，也可以获得兑换码。  \n如有任何疑问和建议都欢迎与我联系！  \n\n## 作者近况\n\n很高兴你能看到这里，在2021年初，我开始全职独立开发，踏上了创业之路。考虑到恰饭问题，我开启了新的项目，蚁阅暂时处于维护状态，新功能要再搁置一段时间了。\n\n我会每两周写一篇文章，记录创业的过程，欢迎关注[Guyskk的博客](https://blog.guyskk.com/)自宅创业系列。\n\n## 反馈与协作\n\n蚁阅主仓库托管在 [码云](https://gitee.com/anyant/rssant) 上，[GitHub](https://github.com/anyant/rssant) 主要作为镜像仓库。  \n\n码云和 GitHub 均可提交 Issue:\n- https://gitee.com/anyant/rssant/issues\n- https://github.com/anyant/rssant/issues\n\n码云和 GitHub 也均可提交 Pull Request:\n- https://gitee.com/anyant/rssant/pulls\n- https://github.com/anyant/rssant/pulls\n\n如果你有码云账号，建议到码云提交 Pull Request。  \n非常感谢你的支持！\n\n## 部署文档\n\n蚁阅基于Docker部署，服务器环境要求:\n\n- Linux, 1G 内存\n- [Docker](https://developer.aliyun.com/mirror/docker-ce) + [镜像加速器](https://juejin.im/post/5cd2cf01f265da0374189441)\n\n#### 第一步，准备配置文件\n\n配置文件保存为 `~/rssant/rssant.env`，按照注释说明修改。\n\n```bash\n# 默认关闭DEBUG，请勿在开发测试之外开启DEBUG\nRSSANT_DEBUG=0\n\n# 请随机生成一个字符串\nRSSANT_SECRET_KEY=SECRET\n\n# 应用的访问地址\nRSSANT_ROOT_URL=http://localhost:6789\n\n# 检查订阅的时间间隔，默认30分钟\nRSSANT_CHECK_FEED_MINUTES=30\n\n# 请前往GITHUB设置页面申请，不需要Github登录可留空\n# GitHub OAuth callback:\n# http://\u003c你的域名\u003e/api/v1/accounts/github/login/callback/\nRSSANT_GITHUB_CLIENT_ID=\nRSSANT_GITHUB_SECRET=\n\n# SMTP邮件功能，不需要注册功能可留空\nRSSANT_ADMIN_EMAIL=\nRSSANT_SMTP_ENABLE=false\nRSSANT_SMTP_HOST=smtp.qq.com\nRSSANT_SMTP_PORT=465\nRSSANT_SMTP_USE_SSL=true\nRSSANT_SMTP_USERNAME=\nRSSANT_SMTP_PASSWORD=\n\n# RSS代理功能，可留空\n# 参考项目 cloudflare_worker/rssant 目录下的说明部署代理\nRSSANT_RSS_PROXY_ENABLE=false\nRSSANT_RSS_PROXY_URL=\nRSSANT_RSS_PROXY_TOKEN=\n\n# 为保障网络安全，默认不允许订阅局域网地址，如有需要可设置为true\n# RSSANT_ALLOW_PRIVATE_ADDRESS=true\n\n# 以下配置保持不动\nRSSANT_SCHEDULER_NETWORK=rssant\nRSSANT_PG_DB=rssant\nRSSANT_PG_HOST=localhost\nRSSANT_PG_USER=rssant\nRSSANT_PG_PASSWORD=rssant\n```\n\n#### 第二步，启动服务\n\n将以下脚本保存为 `~/rssant/start.sh`，其中端口 `6789` 可改为自定义端口。\n\n```bash\n#!/bin/bash\n\ndocker volume create rssant-data || true\ndocker volume create rssant-postgres-data || true\ndocker volume create rssant-postgres-logs || true\n\ndocker rm -f rssant || true\ndocker run -ti --name rssant -d \\\n    -p 6789:80 \\\n    --env-file ~/rssant/rssant.env \\\n    -v rssant-data:/app/data \\\n    -v rssant-postgres-data:/var/lib/postgresql/11/main \\\n    -v rssant-postgres-logs:/var/log/postgresql \\\n    --log-driver json-file --log-opt max-size=50m --log-opt max-file=10 \\\n    --restart unless-stopped \\\n    guyskk/rssant:latest\n\ndocker logs --tail 1000 -f rssant\n```\n\n先执行 `sed -i 's/\\r//' ~/rssant/start.sh` 处理脚本换行符，再启动服务 `bash ~/rssant/start.sh`，当看到下面的日志时，服务就启动好了。\n\n```bash\n# 初始化数据库的日志\nI 2019-12-22 11:01:36 scripts.django_db_init:26   extension hstore created\nI 2019-12-22 11:01:36 scripts.django_db_init:33   create admin user\nI 2019-12-22 11:01:36 scripts.django_db_init:41   update site info\nI 2019-12-22 11:01:36 scripts.django_db_init:53   create github social app\n# 程序正常运行中的日志\nI 2019-12-22 13:16:08 rssant_harbor.actors.rss:418  delete 0 old feed creations\nI 2019-12-22 13:16:08 rssant_harbor.actors.rss:423  retry 0 status=UPDATING feed creations\nI 2019-12-22 13:16:08 rssant_harbor.actors.rss:429  retry 0 status=PENDING feed creations\n```\n\n执行 `docker exec -ti rssant supervisorctl status`, 以下进程状态说明一切正常：\n\n```\napi                              RUNNING   pid 9, uptime 0:10:03\nasync-api                        RUNNING   pid 10, uptime 0:10:03\nharbor                           RUNNING   pid 11, uptime 0:10:03\ninitdb                           EXITED    Dec 22 01:15 PM\nnginx                            RUNNING   pid 15, uptime 0:10:03\npostgres                         RUNNING   pid 17, uptime 0:10:03\nscheduler                        RUNNING   pid 19, uptime 0:10:03\nworker                           RUNNING   pid 21, uptime 0:10:03\n```\n\n访问 http://localhost:6789/admin/    用户名: admin 密码: admin  \n点击页面右上角 \"CHANGE PASSWORD\" 修改密码。\n\n**大功告成，返回首页即可开始使用了！**\n\n如需停止服务，执行: `docker rm -f rssant`  \n如需备份数据，备份 `rssant-postgres-data` 这个卷即可，其他卷可忽略。  \n\n## 开发环境\n\n#### 系统级依赖\n\n- Linux 或 Mac OSX\n- [Docker](https://developer.aliyun.com/mirror/docker-ce) + [镜像加速器](https://juejin.im/post/5cd2cf01f265da0374189441)\n- Python + [pyenv](https://github.com/pyenv/pyenv-installer)\n- Node.js + [nvm](https://github.com/nvm-sh/nvm#install--update-script)\n\n#### 后端\n\n安装依赖\n\n```\ngit clone git@gitee.com:anyant/rssant.git\ncd rssant\npyenv virtualenv -p python3.8 3.8.6 rssant\npyenv local rssant\npip install -r requirements.txt\n```\n\n启动数据库\n\n```\nbash ./scripts/postgres_start.sh\n```\n\n初始化数据库\n\n```\npython manage.py migrate\npython manage.py runscript django_db_init\n```\n\n开多个终端，分别启动以下服务\n\n```\npython manage.py runserver 6788\n\npython -m rssant_async.main\n\npython -m rssant_scheduler.main --concurrency 10\n\npython -m rssant_harbor.main --concurrency 10\n\npython -m rssant_worker.main --concurrency 10\n```\n\n访问 http://127.0.0.1:6788/doc/v1/  账号: admin 密码: admin\n\n访问 http://127.0.0.1:6788/docs/v1/#api-v1-feed-import-create   \n点击 Interact，输入任意博客地址，例如: `https://www.ruanyifeng.com/blog/` , 然后提交。  \n请求应当正常返回，后台任务控制台会输出查找订阅的日志信息。  \n\n测试\n\n```\npytest\n```\n\n打包\n\n```\ndocker build -t rssant/api:latest .\n```\n\n#### 前端\n\n```\ngit clone git@gitee.com:anyant/rssant-web.git\ncd rssant-web\nnpm install\nnpm run serve\n```\n\n访问 http://127.0.0.1:6789/ 即可看到前端页面。\n\n打包\n\n```\ndocker build -t rssant/web:latest .\n```\n\n#### guyskk/rssant\n\n打包\n\n```\nbash ./box/build.sh\n```\n\n运行\n\n```\nbash ./box/run.sh\n```\n","funding_links":[],"categories":["实战","Python","Python (1887)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanyant%2Frssant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanyant%2Frssant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanyant%2Frssant/lists"}