Self-Hosting Recipya with Docker Compose

What Is Recipya?

Recipya is a lightweight, self-hosted recipe manager that lets you import recipes from any website, organize your collection, plan meals, and generate shopping lists. It’s a single Go binary with an embedded SQLite database — no external dependencies, no database server, no Redis. Just one container.

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 256 MB of free RAM
  • 1 GB of free disk space
  • A domain name (optional, for remote access)

Docker Compose Configuration

Create a docker-compose.yml file:

services:
  recipya:
    image: reaper99/recipya:v1.2.2
    container_name: recipya
    ports:
      - "8078:8078"
    environment:
      # Server configuration
      RECIPYA_SERVER_PORT: "8078"
      RECIPYA_SERVER_URL: "http://0.0.0.0"
      RECIPYA_SERVER_IS_PROD: "true"
      RECIPYA_SERVER_NO_SIGNUPS: "false"    # Set to true after creating your account
      RECIPYA_SERVER_AUTOLOGIN: "false"
    volumes:
      - recipya-data:/root/.config/Recipya
    restart: unless-stopped

volumes:
  recipya-data:

Start the stack:

docker compose up -d

Initial Setup

  1. Open http://your-server-ip:8078 in your browser
  2. Click Register to create your first account
  3. After registration, set RECIPYA_SERVER_NO_SIGNUPS: "true" in your Docker Compose to prevent unwanted signups, then restart: docker compose up -d
  4. Start importing recipes by pasting URLs or adding them manually

Configuration

Recipe Import from URLs

Recipya’s strongest feature is web scraping. Paste any recipe URL and it extracts the structured data:

  1. Click the + button or use the import feature
  2. Paste the recipe URL (supports most major recipe sites)
  3. Recipya parses the structured recipe data (schema.org Recipe format)
  4. Review and save

Supported sources include: AllRecipes, BBC Good Food, Serious Eats, Food Network, Budget Bytes, and hundreds more that use standard recipe schema markup.

Email Configuration (Optional)

For password resets and sharing features, add SMTP settings:

environment:
  RECIPYA_EMAIL: "[email protected]"
  RECIPYA_EMAIL_SMTP_HOST: "smtp.example.com"
  RECIPYA_EMAIL_SMTP_USERNAME: "[email protected]"
  RECIPYA_EMAIL_SMTP_PASSWORD: "your-smtp-password"

Multi-User Setup

Recipya supports multiple user accounts. Each user has their own recipe collection. Enable signups temporarily to create accounts, then disable:

environment:
  RECIPYA_SERVER_NO_SIGNUPS: "false"  # Enable temporarily

Data Export

Export your entire recipe collection as a backup or for migration:

  1. Go to Settings → Data
  2. Click Export to download all recipes as JSON
  3. Recipes can also be exported individually as PDF

Reverse Proxy

Place Recipya behind a reverse proxy for SSL. With Nginx Proxy Manager, point your domain to recipya:8078.

See Reverse Proxy Setup for configuration guides.

Backup

All data lives in a single SQLite database inside the data volume:

# Copy the database file
docker compose exec recipya cp /root/.config/Recipya/recipya.db /tmp/recipya-backup.db
docker compose cp recipya:/tmp/recipya-backup.db ./recipya-backup-$(date +%Y%m%d).db

# Or back up the entire volume
docker run --rm -v recipya-data:/data -v $(pwd):/backup alpine tar czf /backup/recipya-data-$(date +%Y%m%d).tar.gz -C /data .

See Backup Strategy for comprehensive approaches.

Troubleshooting

Recipe import fails for certain sites

Symptom: Pasting a URL returns “could not scrape recipe” or shows empty fields.

Fix: Not all recipe websites use schema.org structured data. Sites that use JavaScript-rendered content or non-standard formats may not be parseable. Try pasting the recipe’s print page URL instead, or add the recipe manually.

Images not loading after import

Symptom: Recipes import successfully but images show broken links.

Fix: Recipya downloads and stores images locally. If images fail to download (network issues, hotlink protection), they’ll show as broken. Re-import the recipe or manually upload the image through the edit view.

Permission denied errors on startup

Symptom: Container fails to start with permission errors on the data directory.

Fix: If running with a custom user ID, set the user directive in Docker Compose:

services:
  recipya:
    user: "1000:1000"

Ensure the data volume has matching ownership.

Resource Requirements

  • RAM: 100 MB idle, 200 MB under load
  • CPU: Low — single Go binary, minimal overhead
  • Disk: 500 MB for application, plus 1-5 MB per recipe with images

Verdict

Recipya is the lightest self-hosted recipe manager. A single container, no database server, no Redis — it just works. The web scraping is reliable for most major recipe sites, and the meal planning with shopping list generation covers the practical workflow. It lacks the polish of Mealie (no grocery store aisle sorting) and the cooking-focused features of Tandoor (no nutritional data), but for a “just save my recipes and plan my meals” tool, Recipya is the simplest option to deploy and maintain.

Comments