fedi feed router is a self-hosted tool for routing content from RSS/Atom feeds to the fediverse.
Find a file
2025-07-03 21:17:13 +02:00
.github/workflows Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
app Refactor auth retrieval 2025-07-03 21:17:13 +02:00
bootstrap Add database logging 2025-06-29 18:33:18 +02:00
config Get JWT token 2025-06-29 20:16:25 +02:00
database Check community history for same urls 2025-06-30 19:54:43 +02:00
docker Run commands at boot 2025-07-03 21:16:57 +02:00
public Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
resources Add database logging 2025-06-29 18:33:18 +02:00
routes Refactor auth retrieval 2025-07-03 21:17:13 +02:00
storage Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
tests Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
.dockerignore Fix compose issues 2025-07-03 21:16:57 +02:00
.editorconfig Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
.env.example Add updated at timestamp 2025-06-29 17:13:18 +02:00
.gitattributes Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
.gitignore Fix compose issues 2025-07-03 21:16:57 +02:00
.prettierignore Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
.prettierrc Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
artisan Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
components.json Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
composer.json Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
composer.lock Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
docker-compose.yml Add scheduler, fetch service 2025-06-29 09:37:49 +02:00
Dockerfile Fix compose issues 2025-07-03 21:16:57 +02:00
eslint.config.js Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
package.json Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
phpunit.xml Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
README.md Add refresh instructions 2025-07-03 21:16:57 +02:00
tsconfig.json Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00
vite.config.ts Fresh Laravel + Sail install 2025-06-29 08:50:03 +02:00

Lemmy Poster

A Laravel application for posting articles to Lemmy platforms.

Docker Deployment

Building the Image

docker build -t your-registry/lemmy-poster:latest .
docker push your-registry/lemmy-poster:latest

Docker Compose

Create a docker-compose.yml file:

services:
  app-web:
    image: your-registry/lemmy-poster:latest
    command: ["web"]
    ports:
      - "8000:8000"
    environment:
      - DB_DATABASE=${DB_DATABASE}
      - DB_USERNAME=${DB_USERNAME}
      - DB_PASSWORD=${DB_PASSWORD}
      - LEMMY_INSTANCE=${LEMMY_INSTANCE}
      - LEMMY_USERNAME=${LEMMY_USERNAME}
      - LEMMY_PASSWORD=${LEMMY_PASSWORD}
      - LEMMY_COMMUNITY=${LEMMY_COMMUNITY}
    depends_on:
      - mysql
    volumes:
      - storage_data:/var/www/html/storage/app
    restart: unless-stopped

  app-queue:
    image: your-registry/lemmy-poster:latest
    command: ["queue"]
    environment:
      - DB_DATABASE=${DB_DATABASE}
      - DB_USERNAME=${DB_USERNAME}
      - DB_PASSWORD=${DB_PASSWORD}
      - LEMMY_INSTANCE=${LEMMY_INSTANCE}
      - LEMMY_USERNAME=${LEMMY_USERNAME}
      - LEMMY_PASSWORD=${LEMMY_PASSWORD}
      - LEMMY_COMMUNITY=${LEMMY_COMMUNITY}
    depends_on:
      - mysql
    volumes:
      - storage_data:/var/www/html/storage/app
    restart: unless-stopped

  mysql:
    image: mysql:8.0
    environment:
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_PASSWORD=${DB_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
    restart: unless-stopped

volumes:
  mysql_data:
  storage_data:

Environment Variables

Create a .env file with:

# Database Settings
DB_DATABASE=lemmy_poster
DB_USERNAME=lemmy_user
DB_PASSWORD=your-password

# Lemmy Settings
LEMMY_INSTANCE=your-lemmy-instance.com
LEMMY_USERNAME=your-lemmy-username
LEMMY_PASSWORD=your-lemmy-password
LEMMY_COMMUNITY=your-target-community

Deployment

  1. Build and push the image to your registry
  2. Copy the docker-compose.yml to your server
  3. Create the .env file with your environment variables
  4. Run: docker compose up -d

The application will automatically:

  • Wait for the database to be ready
  • Run database migrations on first startup
  • Start the queue worker after migrations complete
  • Handle race conditions between web and queue containers

Initial Setup

After deployment, the article refresh will run every hour. To trigger the initial article fetch manually:

docker compose exec app-web php artisan article:refresh

The application will then automatically:

  • Fetch new articles every hour
  • Publish valid articles every 5 minutes
  • Sync community posts every 10 minutes

The web interface will be available on port 8000.

Architecture

The application uses a multi-container setup:

  • app-web: Serves the Laravel web interface and handles HTTP requests
  • app-queue: Processes background jobs (article fetching, Lemmy posting)
  • mysql: Database storage for articles, logs, and application data

Both app containers use the same Docker image but with different commands (web or queue). Environment variables are passed from your .env file to configure database access and Lemmy integration.