# FFR (Feed to Fediverse Router) A Laravel-based application for routing RSS/Atom feeds to Fediverse platforms like Lemmy. Built with Laravel, Livewire, and FrankenPHP for a modern, single-container deployment. ## Features - **Feed aggregation** - Fetch articles from multiple RSS/Atom feeds - **Fediverse publishing** - Automatically post to Lemmy communities - **Route configuration** - Map feeds to specific channels with keywords - **Approval workflow** - Optional manual approval before publishing - **Queue processing** - Background job handling with Laravel Horizon - **Single container deployment** - Simplified hosting with FrankenPHP ## Self-hosting The production image is available at `codeberg.org/lvl0/ffr:latest`. ### docker-compose.yml ```yaml services: app: image: codeberg.org/lvl0/ffr:latest container_name: ffr_app restart: always ports: - "8000:8000" environment: APP_KEY: "${APP_KEY}" APP_URL: "${APP_URL}" DB_DATABASE: "${DB_DATABASE}" DB_USERNAME: "${DB_USERNAME}" DB_PASSWORD: "${DB_PASSWORD}" REDIS_HOST: redis REDIS_PORT: 6379 volumes: - app_storage:/app/storage depends_on: - db - redis healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/up"] interval: 30s timeout: 10s retries: 3 start_period: 40s db: image: mariadb:11 container_name: ffr_db restart: always environment: MYSQL_DATABASE: "${DB_DATABASE}" MYSQL_USER: "${DB_USERNAME}" MYSQL_PASSWORD: "${DB_PASSWORD}" MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}" volumes: - db_data:/var/lib/mysql redis: image: redis:7-alpine container_name: ffr_redis restart: always volumes: - redis_data:/data volumes: db_data: redis_data: app_storage: ``` ### Environment Variables | Variable | Required | Description | |----------|----------|-------------| | `APP_KEY` | Yes | Encryption key. Generate with: `echo "base64:$(openssl rand -base64 32)"` | | `APP_URL` | Yes | Your domain (e.g., `https://ffr.example.com`) | | `DB_DATABASE` | Yes | Database name | | `DB_USERNAME` | Yes | Database user | | `DB_PASSWORD` | Yes | Database password | | `DB_ROOT_PASSWORD` | Yes | MariaDB root password | ## Development ### NixOS / Nix ```bash git clone https://codeberg.org/lvl0/ffr.git cd ffr nix-shell ``` The shell will display available commands and optionally start the containers for you. #### Available Commands | Command | Description | |---------|-------------| | `dev-up` | Start development environment | | `dev-down` | Stop development environment | | `dev-restart` | Restart containers | | `dev-logs` | Follow app logs | | `dev-logs-db` | Follow database logs | | `dev-shell` | Enter app container | | `dev-artisan ` | Run artisan commands | | `prod-build [tag]` | Build and push prod image (default: latest) | #### Services | Service | URL | |---------|-----| | App | http://localhost:8000 | | Vite | http://localhost:5173 | | MariaDB | localhost:3307 | | Redis | localhost:6380 | ### Other Platforms Contributions welcome for development setup instructions on other platforms. ## License This project is open-source software licensed under the [AGPL-3.0 license](LICENSE). ## Support For issues and questions, please use [Codeberg Issues](https://codeberg.org/lvl0/ffr/issues).