fedi-feed-router/README.md

3.3 KiB

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

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

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 <cmd> 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.

Support

For issues and questions, please use Codeberg Issues.