---
title: "Deploy Aimeos"
description: "Laravel e-commerce platform for online shops and marketplaces"
category: "Other"
url: https://railway.com/deploy/aimeos
---

# Deploy Aimeos

Laravel e-commerce platform for online shops and marketplaces

**[Deploy Aimeos on Railway](https://railway.com/template/aimeos)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/aimeos/manifest.json

- **Creator:** A3A
- **Category:** Other
- **Total deploys:** 1

## Template content

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### mailpit https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/mailpit.svg

- **Image:** axllent/mailpit:v1.31
- **Health check:** /livez
- **Public domain:** Yes

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

### aimeos https://io.aimeos.org/aimeos-live/cms/01a05d04-0e9d-72d6-976f-4ddaa7543c92/Aimeos_e_square_90__E3_B.png

- **Source:** https://github.com/gridalpha/aimeos-railway
- **Health check:** /ready
- **Public domain:** Yes

## Documentation

# Deploy and Host Aimeos on Railway

Aimeos is an open-source e-commerce platform built on Laravel, running everything from single-brand shops to multi-vendor marketplaces with millions of products. It gives you a complete storefront — catalogue, faceted search, basket, checkout, coupons, subscriptions and orders — plus a Vue.js admin backend, a JSON:API for headless frontends and a GraphQL admin API. Teams choose it when a hosted store is too restrictive and they want the shop inside their own Laravel codebase, where any controller, template or pricing rule can be overridden.

Deploy Aimeos on Railway and the whole stack arrives wired together: an `aimeos` service running the shop on FrankenPHP, a `Postgres` database holding products, orders and customers, a `Redis` instance backing Laravel's cache and sessions, and a `mailpit` service catching every order, account and password-reset e-mail until you connect a real SMTP relay. The shop container also runs the Aimeos maintenance jobs on a schedule, which is what sends order e-mails, rebuilds the product index and generates sitemaps. Self-host Aimeos this way and the only thing left to choose is a payment provider.

![Aimeos shop with Postgres, Redis and Mailpit on Railway](https://res.cloudinary.com/rroe4rtk/image/upload/f_auto,q_auto/v1789482629/aimeos-architecture.webp)

## Getting Started with Aimeos on Railway

Set `AIMEOS_ADMIN_EMAIL` and `AIMEOS_ADMIN_PASSWORD` before deploying — those become the shop administrator, and there is no default account. The first boot takes a few minutes while it migrates and installs the demo catalogue.

Open the public URL and you land on the storefront, whose navigation carries the demo categories — Best sellers, New arrivals, Hot deals — each holding real products with images, prices and brand filters. Click a product and add it to the basket: the line item with shipping and tax proves the database, the session store and the search index all work.

Then go to `/admin` and sign in. The backend opens on the dashboard; Catalog holds Products, Categories, Suppliers and Attributes. Change a product's price, save, and reload the storefront to see it. Marketing holds coupons, Sales the demo orders.

To see what the shop sends, open the Mailpit service's URL and sign in with the credentials in `MP_UI_AUTH`; minutes after the first boot its inbox holds the order confirmations the job scheduler sent. For real mail, point the `MAIL_*` variables at your own provider. `AIMEOS_DEMO_DATA=0` starts an empty shop instead — but the demo dataset is also what installs the payment and delivery services a checkout needs.

![Aimeos storefront showing the best sellers category with prices](https://res.cloudinary.com/rroe4rtk/image/upload/f_auto,q_auto/v1789482632/aimeos-storefront-catalogue.webp)
![Aimeos shopping basket holding a dress with shipping and tax](https://res.cloudinary.com/rroe4rtk/image/upload/f_auto,q_auto/v1789482634/aimeos-basket.webp)
![Aimeos admin product list with images, codes and labels](https://res.cloudinary.com/rroe4rtk/image/upload/f_auto,q_auto/v1789482636/aimeos-admin-products.webp)

## About Hosting Aimeos

Aimeos is an e-commerce framework that ships as a ready-made Laravel application. The catalogue, basket, checkout and order pipeline are composer packages you can extend or replace, and the same core runs inside TYPO3 and Symfony too. That suits a team that already writes PHP and wants the shop inside the application rather than beside it.

Key features:

- Categories, variants, bundles, vouchers, tier pricing, supplier data
- Faceted search on a dedicated product index, built for very large catalogues
- Basket rules, coupons, subscriptions, recurring payments
- 100+ payment gateways through Omnipay, plus delivery providers
- Multi-vendor, multi-channel and multi-warehouse modes behind single variables
- JSON:API storefront API and a GraphQL admin API for headless builds
- Admin backend in 30+ languages, with full RTL support

The Railway architecture is four services. `aimeos` serves HTTP through FrankenPHP and keeps uploaded media and CSV import/export files on its volume. `Postgres` stores the shop data. `Redis` holds the cache and sessions, which keeps a basket alive between requests. `mailpit` takes SMTP on the private network and gives you a web inbox.

## Why Deploy Aimeos on Railway

Railway removes the setup work between a composer project and a running shop:

- Database, cache and mail service provisioned and wired on deploy
- A persistent volume for product images and import/export files
- HTTPS and a public domain with no certificate work
- Private networking, so only the shop is reachable from outside
- Vertical scaling as the catalogue grows

## Common Use Cases

- A branded D2C store whose checkout and pricing rules need real customisation
- A B2B shop with customer-group pricing and large catalogues
- A multi-vendor marketplace, using `SHOP_MULTISHOP` and vendor self-registration
- A headless storefront in Next.js or Nuxt driven by the JSON:API

## Dependencies for Aimeos

- **aimeos** — built from [gridalpha/aimeos-railway](https://github.com/gridalpha/aimeos-railway) on the vendor's `aimeos/frankenphp:8.5` base, installing [aimeos/aimeos](https://github.com/aimeos/aimeos)
- **Postgres** — `ghcr.io/railwayapp-templates/postgres-ssl:18`
- **Redis** — `redis:8.2`
- **mailpit** — `axllent/mailpit:v1.31`

### Environment Variables Reference

| Variable | Purpose |
|---|---|
| `APP_SECRET` | Random string; Laravel's `APP_KEY` derives from it at boot |
| `APP_URL` | Public shop URL, used in e-mails and generated links |
| `AIMEOS_ADMIN_EMAIL` | E-mail of the administrator created at first boot |
| `AIMEOS_ADMIN_PASSWORD` | Password for that administrator |
| `AIMEOS_DEMO_DATA` | `1` installs the demo catalogue; `0` starts empty |
| `AIMEOS_JOBS_ENABLED` | `1` runs the maintenance jobs in the shop container |
| `SHOP_MULTISHOP` | Enables multi-vendor marketplace mode |
| `SHOP_MULTILOCALE` | Adds the language to every shop URL |
| `MAIL_HOST` / `MAIL_PORT` | SMTP endpoint; defaults to Mailpit |
| `MP_UI_AUTH` | `user:password` guarding the Mailpit inbox |

### Deployment Dependencies

- Source repository: 
- Upstream project: 
- Documentation: 

## Hardware Requirements for Self-Hosting Aimeos

| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU | 2+ vCPU |
| RAM | 1 GB | 2–4 GB |
| Storage | 5 GB volume | 10 GB+ for large media |
| Runtime | PHP 8.2+, PostgreSQL 9.6+ / MySQL 5.7.8+ | PHP 8.5, PostgreSQL 18 |

The first boot is the heaviest moment: migrations plus the demo dataset. A small catalogue then runs comfortably in 1 GB; a large index wants more.

## Self-Hosting Aimeos

Aimeos is installed with composer rather than pulled as a prebuilt image. A local install is one command, which then asks for your database and mail settings:

```
php composer.phar create-project aimeos/aimeos myshop
cd myshop
php artisan serve
```

The shop is then on `http://127.0.0.1:8000` and the backend on `/admin`. In a container that installer is unusable, so the steps are split: install without scripts at build time, then run setup from the entrypoint using environment variables.

```
composer create-project aimeos/aimeos . --no-interaction --no-scripts
php artisan migrate --force
php artisan aimeos:setup --option=setup/default/demo:1
php artisan aimeos:account you@example.com --password=secret --super --admin
```

Aimeos also needs its maintenance jobs on a schedule — order e-mails, index rebuilds, sitemaps, CSV imports. Upstream documents three cron entries; this template runs the same job lists as a loop inside the shop container, because several of them write the media and export directories the web tier serves.

## Is Aimeos Free to Self-Host?

Aimeos is MIT licensed and free to use, with no seat limits, transaction fees or feature gates. The company behind it sells commercial extensions, extended support and hosted plans, none of which is needed to run a full shop. On Railway you pay only for the compute, storage and bandwidth the four services use.

## FAQ

**What is Aimeos?**
Aimeos is an open-source e-commerce framework and shop application for Laravel. It provides the catalogue, basket, checkout, order pipeline and admin backend as composer packages you can extend, and scales from a small store to a marketplace with millions of products.

**What does this Railway template deploy?**
Four services: the Aimeos shop on FrankenPHP with a volume for media and imports, a PostgreSQL database, a Redis cache and session store, and a Mailpit inbox that captures outgoing mail until you configure a real relay.

**How do I log into the Aimeos admin backend?**
Go to `/admin` and sign in with the `AIMEOS_ADMIN_EMAIL` and `AIMEOS_ADMIN_PASSWORD` you set before deploying. That account is created on first boot with super-user and site-administrator rights; there is no default password.

**Why does the template include Redis and Mailpit?**
Redis stores the cache and session data, which keeps baskets alive across requests and lets the shop restart without logging anyone out. Mailpit gives the shop a working SMTP endpoint from the first minute, so order confirmations are captured and readable instead of failing silently.

**Can I use MySQL instead of PostgreSQL?**
Yes. Aimeos supports MySQL 5.7.8+, MariaDB 10.2.2+, PostgreSQL 9.6+ and SQL Server 2019+. Swap the database service and repoint the `DB_*` variables at it.

**Where do uploaded product images go?**
They are written to the shop service's volume and served from `/aimeos` on your public domain. Keep the volume attached, or every deploy starts with an empty media directory.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/aimeos
