RSSHub Docker & Self-Hosted Deployment

GitHub

TypeScript bilibili & douban repository by @DIYgod. AI agent rules & system prompts with 46k stars.

45,726 stars TypeScript TypeScript 1 file ยท ~1,533 tokens #bilibili#douban#dribbble#instagram#lofter#pixiv#rss#rsshub
RAW Compose
1. Pull Image (DOCKERHUB) docker pull diygod/rsshub
2. Docker Run (1-Click Launch) docker run -d --name rsshub -p 1200:1200 --restart always diygod/rsshub
3. Podman Run podman run -d --name rsshub -p 1200:1200 --restart always diygod/rsshub
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/diygod/rsshub:latest
5. ORAS Pull (OCI Artifact) oras pull diygod/rsshub
6. Compose Deployment docker compose up -d
docker-compose.yml
Download .yml
services:
    rsshub:
        # two ways to enable Playwright:
        # * comment out marked lines, then use this image instead: diygod/rsshub:chromium-bundled
        # * (consumes more disk space and memory) leave everything unchanged
        image: diygod/rsshub # or ghcr.io/diygod/rsshub
        restart: always
        ports:
            - '1200:1200'
        environment:
            NODE_ENV: production
            CACHE_TYPE: redis
            REDIS_URL: 'redis://redis:6379/'
            PLAYWRIGHT_CDP_ENDPOINT: 'ws://browserless:3000?token=${BROWSERLESS_TOKEN:-rsshub}' # marked
        healthcheck:
            test: ['CMD', 'curl', '-f', 'http://localhost:1200/healthz']
            interval: 30s
            timeout: 10s
            retries: 3
        depends_on:
            - redis
            - browserless # marked

    browserless: # marked
        image: ghcr.io/browserless/chromium # marked
        restart: always # marked
        environment: # marked
            TOKEN: '${BROWSERLESS_TOKEN:-rsshub}' # marked
        ulimits: # marked
            core: # marked
                hard: 0 # marked
                soft: 0 # marked
        healthcheck: # marked
            test: ['CMD-SHELL', 'curl -f "http://localhost:3000/pressure?token=$$TOKEN"'] # marked
            interval: 30s # marked
            timeout: 10s # marked
            retries: 3 # marked

    redis:
        image: redis:alpine
        restart: always
        volumes:
            - redis-data:/data
        healthcheck:
            test: ['CMD', 'redis-cli', 'ping']
            interval: 30s
            timeout: 10s
            retries: 5
            start_period: 5s

volumes:
    redis-data: