RSS
A simple, opinionated, RSS feed aggregator.
/app/storage
directory for easy volume mounting. Port 80 is exposed by default for application access. This application does not support HTTPS, for that you should instead use a proxy layer such as nginx./home/barry/rss
directory. In this example, feeds would be configured in a /home/barry/rss/feeds.txt
file.docker run -d \ --restart unless-stopped \ -p 8080:80 \ -v /home/barry/rss:/app/storage \ ghcr.io/ssddanbrown/rss:latest
./rss-files
directory relative to the docker-compose.yml file. In this example, feeds would be configured in a ./rss-files/feeds.txt
file.--- version: "2" services: rss: image: ghcr.io/ssddanbrown/rss:latest container_name: rss environment: - APP_NAME=RSS volumes: - ./rss-files:/app/storage ports: - "8080:80" restart: unless-stopped
/app/storage
.https://feed.url.com/feed.xml feed-name #tag-a #tag-b https://example.com/feed.xml Example #updates #news # Lines starting with a hash are considered comments. # Empty lines are fine and will be ignored. # Underscores in names will be converted to spaces. https://example.com/feed-b.xml News_Site #news # Feed color can be set using square brackets after the name. # The color must be a CSS-compatible color value. https://example.com/feed-c.xml Blue_News[#0078b9] #news #blue
.env
file or, when using docker, via environment variables.# The name of the application. # Only really shown in the title/browser-tab. APP_NAME=RSS # The path to the config file. # Defaults to `storage/feeds.txt` within the application folder. APP_CONFIG_FILE=/app/storage/feeds.txt # Enable or disable the loading of post thumbnails. # Does not control them within the UI, but controls the fetching # when posts are fetched. # Defaults to true. APP_LOAD_POST_THUMBNAILS=true # The number of minutes before a feed is considered outdated and # therefore should be updated upon request. # This effectively has a minimum of 5 minutes in the docker setup. APP_FEED_UPDATE_FREQUENCY=60
X-Forwarded-Prefix
header to make the application aware of sub-path usage.location /rss/ { proxy_pass http://container-ip:80/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Prefix "/rss/"; proxy_redirect off; }
# Clone down and enter the project git clone https://github.com/ssddanbrown/rss.git cd rss # Install PHP dependencies via composer # This will check you meet the minimum PHP version and extensions required. composer install # Create database file touch storage/database/database.sqlite # Copy config, generate app key, migrate database & link storage cp .env.example .env php artisan key:generate php artisan migrate php artisan storage:link # Install JS dependencies & build CSS/JS npm install npm run build
public
directory and handle PHP. You'd also need a process to run the laravel queue system in addition to a cron job to run the schedule.# Serve the app php artisan serve # Watch the queue php artisan queue:listen # Work the schedule php artisan schedule:work
./vendor/bin/phpunit
./vendor/bin/php-cs-fixer fix