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.
- Official site: recipes.musicavis.ca
- Source code: github.com/reaper47/recipya
- License: GPL-3.0
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
- Open
http://your-server-ip:8078in your browser - Click Register to create your first account
- After registration, set
RECIPYA_SERVER_NO_SIGNUPS: "true"in your Docker Compose to prevent unwanted signups, then restart:docker compose up -d - 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:
- Click the + button or use the import feature
- Paste the recipe URL (supports most major recipe sites)
- Recipya parses the structured recipe data (schema.org Recipe format)
- 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:
- Go to Settings → Data
- Click Export to download all recipes as JSON
- 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.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments