diff --git a/apps/rsshub/config.json b/apps/rsshub/config.json new file mode 100644 index 00000000..183e1434 --- /dev/null +++ b/apps/rsshub/config.json @@ -0,0 +1,26 @@ +{ + "name": "RSSHub", + "available": true, + "port": 8220, + "exposable": true, + "id": "rsshub", + "description": "RSSHub is an open source, easy to use, and extensible RSS feed generator. It's capable of generating RSS feeds from pretty much everything.", + "tipi_version": 1, + "version": "2024-04-17", + "categories": ["utilities", "media", "automation"], + "short_desc": "Everything is RSSible with RSSHub", + "author": "https://github.com/DIYgod", + "source": "https://github.com/DIYgod/RSSHub", + "website": "https://docs.rsshub.app/", + "url_suffix": "", + "form_fields": [ + { + "type": "password", + "label": "Access Key", + "max": 256, + "min": 4, + "required": false, + "env_variable": "ACCESS_KEY" + } + ] +} diff --git a/apps/rsshub/data/app.env b/apps/rsshub/data/app.env new file mode 100644 index 00000000..3b27c726 --- /dev/null +++ b/apps/rsshub/data/app.env @@ -0,0 +1,331 @@ +# Based on...: +# https://docs.rsshub.app/deploy/config +# +# and source-code values, as official docs are incomplete: +# https://github.com/DIYgod/RSSHub/blob/master/lib/config.ts +# + +################################# +# Network Configuration +################################# +# +#PORT=1200 +#LISTEN_INADDR_ANY=true +#REQUEST_RETRY=2 +#REQUEST_TIMEOUT=30000 +UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" +#NO_RANDOM_UA=null + +################################# +# CORS Requests +################################# +# +#ALLOW_ORIGIN="*" + +################################# +# Cache Configurations +################################# +# +CACHE_TYPE="redis" +#CACHE_REQUEST_TIMEOUT=60 +#CACHE_EXPIRE=300 +#CACHE_CONTENT_EXPIRE=3600 +REDIS_URL="redis://redis:6379/" +#MEMORY_MAX=256 + +################################# +# Proxy Configurations +################################# +# +#PROXY_PROTOCOL="" +#PROXY_HOST="" +#PROXY_PORT="" +#PROXY_URI="{protocol}://{host}:{port}" +#PROXY_AUTH="BASE64_BASIC_AUTH_STRING" (Proxy-Authorization: Basic ${PROXY_AUTH}) +#PROXY_URL_REGEX=".*" +#PROXY_STRATEGY=all/on_retry +#PAC_URI="" +#PAC_SCRIPT="" + +################################# +# Access Control Configurations +################################# +# +#ACCESS_KEY="yourpassword" + +################################# +# Logging Configurations +################################# +# +#DEBUG_INFO=true +#LOGGER_LEVEL="info" +#NO_LOGFILES=false +#SHOW_LOGGER_TIMESTAMP=false +#SENTRY="" +#SENTRY_ROUTE_TIMEOUT=30000 + +################################# +# Image Processing +################################# +# +#HOTLINK_TEMPLATE="${protocol}//${host}${pathname}" +#HOTLINK_INCLUDE_PATHS="" +#HOTLINK_EXCLUDE_PATHS="" + +################################# +# Experimental Features +################################# +# +#ALLOW_USER_HOTLINK_TEMPLATE=false +#FILTER_REGEX_ENGINE="re2" +#ALLOW_USER_SUPPLY_UNSAFE_DOMAIN=false + +################################# +# Other Application Configurations +################################# +# +#DISALLOW_ROBOT=true +#ENABLE_CLUSTER=false +NODE_ENV="production" +#NODE_NAME="" +PUPPETEER_WS_ENDPOINT="ws://browserless:3000" +#CHROMIUM_EXECUTABLE_PATH="" +#TITLE_LENGTH_LIMIT=150 +#OPENAI_API_KEY="" +#OPENAI_MODEL="gpt-3.5-turbo-16k" +#OPENAI_TEMPERATURE=0.2 +#OPENAI_MAX_TOKENS=0 +#OPENAI_API_ENDPOINT="https://api.openai.com/v1" +#OPENAI_PROMPT="Please summarize the following article and reply with markdown format." +#REMOTE_CONFIG="" +#REMOTE_CONFIG_AUTH="" (Authorization: Basic ${REMOTE_CONFIG_AUTH}) + +################################# +# Route-specific Configurations +################################# +# +## BiliBili ## +#BILIBILI_COOKIE_{uid}="" +#BILIBILI_DM_IMG_LIST="[{"x":2721,"y":615,"z":0,"timestamp":29,"type":0}]" +# +## BitBucket ## +#BITBUCKET_USERNAME="" +#BITBUCKET_PASSWORD="" +# +## BTBYR ## +#BTBYR_HOST="" +#BTBYR_COOKIE="" +# +## BUPT ## +#BUPT_PORTAL_COOKIE="" +# +## Civitai ## +#CIVITAI_COOKIE="" +# +## Dida365 ## +#DIDA365_USERNAME="" +#DIDA365_PASSWORD="" +# +## Discord ## +#DISCORD_AUTHORIZATION="" +# +## Discourse ## +#DISCOURSE_CONFIG_{id}="{"link":link,"key":key}" +# +## Discuz ## +#DISCUZ_COOKIE_{cid}=0 +# +## Disqus ## +#DISQUS_API_KEY="" +# +## Douban +#DOUBAN_COOKIE="" +# +## E-Hentai ## +#EH_IPB_MEMBER_ID="" +#EH_IPB_PASS_HASH="" +#EH_SK="" +#EH_IGNEOUS="" +#EH_STAR="" +#EH_IMG_PROXY="" +# +## Email ## +#EMAIL_CONFIG_{email}="password=password&host=server&port=port" +# +## Fanfou ## +#FANFOU_CONSUMER_KEY="" +#FANFOU_CONSUMER_SECRET="" +#FANFOU_USERNAME="" +#FANFOU_PASSWORD="" +# +## Fantia ## +#FANTIA_COOKIE +# +## Game4399 ## +#GAME_4399="" +# +## GitHub ## +#GITHUB_ACCESS_TOKEN="" +# +## Gitee ## +#GITEE_ACCESS_TOKEN="" +# +## Google ## +#GOOGLE_FONTS_API_KEY="" +# +## Hefeng ## +#HFENG_KEY="" +# +## Infzm ## +#INFZM_COOKIE="" +# +## Initium ## +#INITIUM_USERNAME="" +#INITIUM_PASSWORD="" +#INITIUM_BEARER_TOKEN="" +#INITIUM_IAP_RECEIPT="" +# +## Instagram ## +#IG_USERNAME="" +#IG_PASSWORD="" +#IG_PROXY="" +#IG_COOKIE="" +# +## Iwara ## +#IWARA_USERNAME="" +#IWARA_PASSWORD="" +# +## JavDB ## +#JAVDB_SESSION="" +# +## Last.FM ## +#LASTFM_API_KEY="" +# +## LightNovel.us ## +#SECURITY_KEY="{security_key: 3cXXXX}" +# +## Manhuagui ## +#MHGUI_COOKIE="" +# +## Mastodon ## +#MASTODON_API_HOST="" +#MASTODON_API_ACCESS_TOKEN="" +#MASTODON_API_ACCT_DOMAIN="" +# +## Medium ## +#MEDIUM_COOKIE_{username}="" +#MEDIUM_ARTICLE_COOKIE="" +# +## MiHoyo ## +#MIHOYO_COOKIE="" +# +## MiniFlux ## +#MINIFLUX_INSTANCE="" +#MINIFLUX_TOKEN="" +# +## Mox ## +#MOX_COOKIE="" +# +## Netease Cloud Music ## +#NCM_COOKIES="" +# +## NewRank ## +#NEWRANK_COOKIE="" +# +## NGA ## +#NGA_PASSPORT_UID="" +#NGA_PASSPORT_CID="" +# +## NHentai ## +#NHENTAI_USERNAME="" +#NHENTAI_PASSWORD="" +# +## Notion ## +#NOTION_TOKEN="" +# +## Pianyuan ## +#PIANYUAN_COOKIE="" +# +## Pixabay ## +#PIXABAY_KEY="" +# +## Pixiv ## +#PIXIV_REFRESHTOKEN="" +#PIXIV_BYPASS_CDN=false +#PIXIV_BYPASS_HOSTNAME="public-api.secure.pixiv.net" +#PIXIV_BYPASS_DOH="https://1.1.1.1/dns-query" +#PIXIV_IMG_PROXY="https://i.pixiv.re" +# +## Pixiv Fanbox ## +#FANBOX_SESSION_ID="" +# +## PKubbs ## +#PKUBBS_COOKIE="" +# +## Qingting ## +#QINGTING_ID="" +# +## Saraba1st ## +#SARABA1ST_COOKIE="" +# +## Sehuatang ## +#SEHUATANG_COOKIE="" +# +## SCBoy ## +#SCBOY_BBS_TOKEN="" +# +## Sci-Hub ## +#SCIHUB_HOST="https://sci-hub.se/" +# +## Spotify ## +#SPOTIFY_CLIENT_ID="" +#SPOTIFY_CLIENT_SECRET="" +#SPOTIFY_REFRESHTOKEN="" +# +## Telegram ## +#TELEGRAM_TOKEN="" +#TELEGRAM_SESSION="" +#TELEGRAM_API_ID="" +#TELEGRAM_API_HASH="" +#TELEGRAM_MAX_CONCURRENT_DOWNLOADS="" +# +## TopHub ## +#TOPHUB_COOKIE="" +# +## Twitter / X ## +#TWITTER_OAUTH_TOKEN="" +#TWITTER_OAUTH_TOKEN_SECRET="" +#TWITTER_USERNAME="" +#TWITTER_PASSWORD="" +#TWITTER_COOKIE="" +# +## Weibo ## +#WEIBO_APP_KEY="" +#WEIBO_APP_SECRET="" +#WEIBO_COOKIES="" +#WEIBO_REDIRECT_URL="" +# +## Wenku8 ## +#WENKU8_COOKIE="" +# +## xiaoyuzhou ## +#XIAOYUZHOU_ID="" +#XIAOYUZHOU_TOKEN="" +# +## Ximalaya ## +#XIMALAYA_TOKEN="" +# +## Xueqiu ## +#XUEQIU_COOKIES="" +# +## YouTube ## +#YOUTUBE_KEY="" +#YOUTUBE_CLIENT_ID="" +#YOUTUBE_CLIENT_SECRET="" +#YOUTUBE_REFRESH_TOKEN="" +# +## Zhihu ## +#ZHIHU_COOKIES="" +# +## Zodgame ## +#ZODGAME_COOKIE="" \ No newline at end of file diff --git a/apps/rsshub/docker-compose.yml b/apps/rsshub/docker-compose.yml new file mode 100644 index 00000000..295547a8 --- /dev/null +++ b/apps/rsshub/docker-compose.yml @@ -0,0 +1,63 @@ +version: '3.9' + +services: + rsshub: + image: diygod/rsshub:2024-04-17 + container_name: rsshub_main + restart: unless-stopped + ports: + - ${APP_PORT}:1200 + environment: + TZ: ${TZ} + env_file: + - ${APP_DATA_DIR}/data/app.env + networks: + - tipi_main_network + depends_on: + - redis + - browserless + labels: + # Main + traefik.enable: true + traefik.http.middlewares.rss-web-redirect.redirectscheme.scheme: https + traefik.http.services.rsshub.loadbalancer.server.port: 1200 + # Web + traefik.http.routers.rss-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.rss-insecure.entrypoints: web + traefik.http.routers.rss-insecure.service: rsshub + traefik.http.routers.rss-insecure.middlewares: rss-web-redirect + # Websecure + traefik.http.routers.rss.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.rss.entrypoints: websecure + traefik.http.routers.rss.service: rsshub + traefik.http.routers.rss.tls.certresolver: myresolver + # Local domain + traefik.http.routers.rss-local-insecure.rule: Host(`rsshub.${LOCAL_DOMAIN}`) + traefik.http.routers.rss-local-insecure.entrypoints: web + traefik.http.routers.rss-local-insecure.service: rsshub + traefik.http.routers.rss-local-insecure.middlewares: rss-web-redirect + # Local domain secure + traefik.http.routers.rss-local.rule: Host(`rsshub.${LOCAL_DOMAIN}`) + traefik.http.routers.rss-local.entrypoints: websecure + traefik.http.routers.rss-local.service: rsshub + traefik.http.routers.rss-local.tls: true + + browserless: + image: browserless/chrome + container_name: rsshub_browserless + restart: unless-stopped + ulimits: + core: + hard: 0 + soft: 0 + networks: + - tipi_main_network + + redis: + image: redis:alpine + container_name: rsshub_redis + restart: unless-stopped + volumes: + - ${APP_DATA_DIR}/data/redis:/data + networks: + - tipi_main_network diff --git a/apps/rsshub/metadata/description.md b/apps/rsshub/metadata/description.md new file mode 100644 index 00000000..dde899dc --- /dev/null +++ b/apps/rsshub/metadata/description.md @@ -0,0 +1,29 @@ +![](https://camo.githubusercontent.com/ceaf8f7b5c2b0f5b71013f5553cd4e71dfbc47787928a2ec1cfe0e41a7a0b99c/68747470733a2f2f646f63732e7273736875622e6170702f696d672f6c6f676f2e706e67) + +# RSSHub + +## Introduction + +Introduction + +RSSHub is an open source, easy to use, and extensible RSS feed generator. It's capable of generating RSS feeds from pretty much everything. + +RSSHub delivers millions of contents aggregated from all kinds of sources, our vibrant open source community is ensuring the deliver of RSSHub's new routes, new features and bug fixes. + +RSSHub can be used with browser extension [RSSHub Radar](https://github.com/DIYgod/RSSHub-Radar) and mobile auxiliary app [RSSBud (iOS)](https://github.com/Cay-Zhang/RSSBud) and [RSSAid (Android)](https://github.com/LeetaoGoooo/RSSAid) + +[English docs](https://docs.rsshub.app/) | [Telegram Group](https://t.me/rsshub) | [Telegram Channel](https://t.me/awesomeRSSHub) | [Twitter](https://twitter.com/intent/follow?screen_name=_RSSHub) | [中文文档](https://docs.rsshub.app/zh/) + + +## Configuration + +Must be done via environment variables, either through a custom app.env file or directly modifying the docker-compose.yml file, as detailed in https://runtipi.io/docs/guides/customize-app-config. + +More info related to available configuration envvars for RSSHub can be found on https://docs.rsshub.app/deploy/config. + +## Related Projects + +- [RSSHub Radar](https://github.com/DIYgod/RSSHub-Radar): A browser extension that can help you quickly discover and subscribe to the RSS and RSSHub of current websites. +- [RSSBud](https://github.com/Cay-Zhang/RSSBud): RSSHub Radar for iOS platform, designed specifically for mobile ecosystem optimization. +- [RSSAid](https://github.com/LeetaoGoooo/RSSAid): RSSHub Radar for Android platform built with Flutter. +- [DocSearch](https://github.com/Fatpandac/DocSearch): Link RSSHub DocSearch into Raycast diff --git a/apps/rsshub/metadata/logo.jpg b/apps/rsshub/metadata/logo.jpg new file mode 100644 index 00000000..2ba142fe Binary files /dev/null and b/apps/rsshub/metadata/logo.jpg differ