Deploy Mealie
Self-host Mealie, the open source recipe manager and meal planner
Just deployed
/var/lib/postgresql/data
mealie
Just deployed
/app/data
Deploy and Host Mealie on Railway
Mealie is an open-source recipe manager and meal planner for people tired of losing recipes to bookmarks, screenshots and blog posts that vanish. Paste a link from almost any cooking site and Mealie reads the page's structured data to pull out the title, photo, ingredients, steps and timings as a clean, ad-free recipe card you own. From there it is a kitchen system: drop recipes onto a weekly calendar, turn that plan into a shopping list that merges duplicates, and share it with a household.
Deploy Mealie on Railway and two services are provisioned: the application container, serving the web interface and REST API on a public HTTPS domain, and a PostgreSQL database holding recipes, meal plans, shopping lists and users. A persistent volume holds recipe images and the signing keys that keep you logged in across restarts. Database credentials, the public URL and the first administrator account are wired up before the first page load, so there is no setup wizard and no default password.

Getting Started with Mealie on Railway
Open the generated Railway URL and you land on a sign-in page, not a setup wizard, because the administrator account is created while the container boots. Sign in with MEALIE_ADMIN_EMAIL and MEALIE_ADMIN_PASSWORD; admin works as the username, and a generated password is visible in the Variables tab. To prove the deployment works, import a real recipe: open Create → Import with URL, paste a link from a site such as BBC Good Food or Serious Eats, and press Create. Within seconds you should have a full recipe page with photo, ingredients and numbered steps, confirming that scraping, image storage and database writes all work. Next open Meal Planner, add that recipe to a day, then use Shopping Lists to pull its ingredients in; Mealie merges quantities of the same ingredient across recipes. Sign-ups are disabled, so add family members with an invitation link under Settings → Households.

About Hosting Mealie
Mealie is a Python (FastAPI) backend serving a Vue frontend from one container, backed by SQLite or PostgreSQL. This template uses PostgreSQL, which the project recommends once more than a couple of people are active and which unlocks fuzzy search via pg_trgm. Self-hosting matters because a recipe collection is long-lived personal data: commercial apps change pricing, sunset sync or gate exports, while Mealie keeps it all in your own database with a documented API and JSON backups.
Key features:
- Recipe import from a URL, working with most cooking sites out of the box
- A parser splitting "2 garlic cloves, finely chopped" into quantity, food and note
- Weekly meal planning, with rules that auto-fill days from tags or categories
- Shopping lists aggregating ingredients across recipes, checkable from a phone
- Households and user groups, so several people share one plan with their own login
- Cookbooks, tags, categories and a timeline of what you cooked
- A full REST API with tokens, plus optional OIDC and LDAP sign-on
- Importers for Paprika, Nextcloud Cookbook, Tandoor and Copy Me That
The Mealie service handles web requests, the API, scraping and an in-process scheduler. PostgreSQL stores structured data. The volume holds recipe images plus the token-signing secrets, which is why it is required even with an external database.
Why Deploy Mealie on Railway
Railway removes the server administration self-hosting usually implies.
- PostgreSQL is provisioned and connected automatically, with no connection strings to copy
- A public HTTPS domain with a managed certificate is issued on deploy
- The persistent volume for recipe images is attached and mounted for you
- Redeploys pull new Mealie releases without touching your data
- Logs, metrics and one-click rollback are built in
Common Use Cases
- Replacing a paid recipe app such as Paprika with a private, exportable collection
- Running a family meal rota where everyone sees the same week and shopping list
- Archiving recipes from blogs before they vanish behind paywalls
- Driving kitchen dashboards from the REST API, such as tonight's dinner on a wall display
Dependencies for Mealie
- Mealie — built from
ghcr.io/mealie-recipes/mealie, the official image from mealie-recipes/mealie. Serves the UI and API on port 9000 and does the recipe scraping. - PostgreSQL — a Railway managed database for recipes, users, meal plans and shopping lists, with
pg_trgmcreated on first boot for fuzzy search.
Environment Variables Reference
| Variable | Purpose |
|---|---|
MEALIE_ADMIN_EMAIL | Administrator email, set on first boot |
MEALIE_ADMIN_PASSWORD | Administrator password. Applied only while the account is untouched, so a change made later in the UI is never overwritten |
BASE_URL | Public address used for notification and OIDC callback links |
ALLOW_SIGNUP | Whether strangers can register. Left false; invitations still work |
DB_ENGINE | Set to postgres to use the database rather than SQLite |
TZ | Server time zone, deciding when nightly tasks run |
SMTP_* | Optional mail for password resets and invitations |
OIDC_* | Optional single sign-on against an identity provider |
Deployment Dependencies
- Image: ghcr.io/mealie-recipes/mealie
- Repository: github.com/mealie-recipes/mealie (AGPL-3.0)
- Docs: docs.mealie.io
- Runtime: Python 3.12, PostgreSQL 16+
Hardware Requirements for Self-Hosting Mealie
| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 512 MB | 1 GB |
| Storage | 1 GB volume | 5 GB for large image libraries |
| Database | PostgreSQL 16+ | PostgreSQL 16+ on its own volume |
| Runtime | Docker | Docker |
Mealie is light at rest; the heaviest moments are imports, which fetch and resize an image, and the ingredient parser.
Self-Hosting Mealie with Docker
Outside Railway, the smallest setup is one container with a volume. The following is a docker run command using SQLite:
docker run -d --name mealie -p 9925:9000 \
-e ALLOW_SIGNUP=false -e BASE_URL=https://mealie.example.com \
-v mealie-data:/app/data ghcr.io/mealie-recipes/mealie:latest
For several users, run it against PostgreSQL. The following is a docker-compose.yml fragment:
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:latest
ports: ["9925:9000"]
volumes: [mealie-data:/app/data]
environment:
ALLOW_SIGNUP: "false"
BASE_URL: https://mealie.example.com
DB_ENGINE: postgres
POSTGRES_SERVER: postgres
POSTGRES_USER: mealie
POSTGRES_PASSWORD: change-me
POSTGRES_DB: mealie
postgres:
image: postgres:17
volumes: [mealie-pgdata:/var/lib/postgresql/data]
environment:
POSTGRES_USER: mealie
POSTGRES_PASSWORD: change-me
POSTGRES_DB: mealie
volumes: {mealie-data: {}, mealie-pgdata: {}}
Disable sign-ups before exposing any instance to the internet.
Is Mealie Free? What It Costs to Self-Host
Mealie is free and open source under the AGPL-3.0 licence, with no paid tier, seat limits or feature gating. Your only cost is infrastructure: on Railway, usage-based charges for the container, database and volume, and a household instance is a small workload. For comparison, Paprika charges per platform, roughly $5 on mobile and $30 on desktop, and several rivals are subscription-based.
FAQ
What is Mealie?
Mealie is an open-source, self-hosted recipe manager and meal planner. It imports recipes from web pages into your own database and adds meal planning, shopping lists and multi-user households on top.
What does this Railway template deploy?
The Mealie container with a public HTTPS domain and a persistent volume for recipe images, plus a managed PostgreSQL database. The administrator account and database credentials are configured before the app starts.
Why does this template include a PostgreSQL database?
Mealie defaults to SQLite, which is fine for one user but handles concurrent writes poorly and rules out fuzzy search. PostgreSQL is what the project recommends for shared instances, and it scales and backs up independently of the app.
Do I need the volume if I am already using PostgreSQL?
Yes. Recipe images live on disk rather than in the database, and Mealie writes its token-signing secrets to the same directory. Without a volume, images vanish and everyone is logged out on each restart.
How do I log in for the first time and can other people sign up?
Sign in as admin, or with the email from MEALIE_ADMIN_EMAIL, using the password from MEALIE_ADMIN_PASSWORD. Public registration is disabled, so others join via an invitation link from household settings.
Can I import recipes from Paprika or another recipe app?
Yes. Mealie ships migration importers for Paprika, Tandoor, Nextcloud Cookbook and Copy Me That on the group migrations page, plus a bulk importer for a list of URLs.
Template Content
