Railway

Deploy Mealie

Self-host Mealie, the open source recipe manager and meal planner

Deploy Mealie

/var/lib/postgresql/data

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.

Mealie Railway architecture

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.

Mealie recipe collection showing three imported dinner recipes Mealie recipe page with ingredients and step-by-step instructions Mealie weekly meal planner with dinners scheduled across three days

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_trgm created on first boot for fuzzy search.

Environment Variables Reference

VariablePurpose
MEALIE_ADMIN_EMAILAdministrator email, set on first boot
MEALIE_ADMIN_PASSWORDAdministrator password. Applied only while the account is untouched, so a change made later in the UI is never overwritten
BASE_URLPublic address used for notification and OIDC callback links
ALLOW_SIGNUPWhether strangers can register. Left false; invitations still work
DB_ENGINESet to postgres to use the database rather than SQLite
TZServer 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

Hardware Requirements for Self-Hosting Mealie

ResourceMinimumRecommended
CPU1 vCPU2 vCPU
RAM512 MB1 GB
Storage1 GB volume5 GB for large image libraries
DatabasePostgreSQL 16+PostgreSQL 16+ on its own volume
RuntimeDockerDocker

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

More templates in this category

View Template
Rocky Linux
[Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
42
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
52