- PHP 65%
- Blade 33.3%
- CSS 0.5%
- Shell 0.4%
- JavaScript 0.3%
- Other 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .ai/rules | ||
| .changes | ||
| .codex | ||
| .forgejo/workflows | ||
| .github | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| docker | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| tests | ||
| .changie.yaml | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .envrc | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| artisan | ||
| CHANGELOG.md | ||
| composer.json | ||
| composer.lock | ||
| devenv.lock | ||
| devenv.nix | ||
| devenv.yaml | ||
| docker-compose.dev.yml | ||
| docker-compose.local.yml | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||
| phpstan.neon | ||
| phpunit.xml | ||
| pint.json | ||
| README.md | ||
| screenshot.png | ||
| TODO.md | ||
| vite.config.js | ||
RSSexy
A feed reader with a nice UI and good user experience.
Self hosting
Docker is the only supported way, however, RSSexy is a regular laravel app. If you want to deploy it on forge or laravel cloud, feel free.
You can deploy a single container that runs the webapp, scheduler and worker. Or you can deploy the worker separately. Both examples below.
Important reverse proxy setup
If the app is behind a reverse proxy that terminates TLS, which is a very common setup,
make sure to add OCTANE_HTTPS: true to your environment.
Docker compose (All in one)
services:
web:
image: gitgud.boo/javif89/rssexy:latest
restart: unless-stopped
ports:
- "8080:8080"
environment:
WORKER_ENABLED: "true"
APP_ENV: production
APP_KEY: "base64:" # Read below on how to generate
APP_URL: http://localhost:8080
REGISTRATION_ENABLED: "true"
FEEDS_SYNC_EVERY_MINUTES: "30"
FEEDS_PRUNE_AFTER_DAYS: "30"
# Could be sqlite, postgres, or mysql. Read more below
DB_CONNECTION: pgsql
DB_HOST: postgres
DB_PORT: "5432"
DB_DATABASE: rssexy
DB_USERNAME: rssexy
DB_PASSWORD: password
Docker compose (Separate worker)
services:
web:
image: gitgud.boo/javif89/rssexy:latest
restart: unless-stopped
ports:
- "8080:8080"
environment:
WORKER_ENABLED: "false"
# Rest of your config variables
worker:
image: gitgud.boo/javif89/rssexy:latest
restart: unless-stopped
command:
- php
- artisan
- queue:work
- --sleep=3
- --tries=3
- --max-time=3600
environment:
# Same environment variables as above
Configuration
All configuration is done through environment variables.
Basic Settings
APP_URL=https://rssexy.yourdomain.com
REGISTRATION_ENABLED=true
Application Key
The APP_KEY env variable is needed for encrypting sessions and cookies.
Generate one with: printf 'base64:%s\n' "$(openssl rand -base64 32)"
Admin User
Note that the first user will be the administrator. If registration is disabled but OIDC is configured, people can still "register" by login in with OIDC.
Database
RSSexy supports sqlite, postgres, and mysql.
SQLite
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite
Postgres & MySQL
DB_CONNECTION=pgsql # or mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=rssexy
DB_USERNAME=root
DB_PASSWORD=
Feed Sync
FEEDS_SYNC_EVERY_MINUTES=30
FEEDS_PRUNE_AFTER_DAYS=30
Email is done through SMTP.
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="RSSexy"
OIDC
OIDC_ISSUER=https://auth.example.com/application/o/rssexy/
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
OIDC_REDIRECT_URI="${APP_URL}/auth/oidc/callback"
OIDC_BUTTON_LABEL="Log in with SSO"
