Skip to main content
Deploy the official Meilisearch image on Upsun using Docker image support. For prerequisites and limitations, see Self-hosted services from public Docker images.

Before you begin

  1. Install the Upsun CLI.
  2. Run the following commands to log in and connect the current Git repository to the correct Upsun project. Replace <PROJECT_ID> with your project ID (run upsun projects to list them).

1. Configure Meilisearch as an app

Add the following configuration to .upsun/config.yaml.
  • This configuration uses the startup command defined by the image. The official Meilisearch image already starts Meilisearch and listens on 0.0.0.0:7700, so this example does not set web.commands.start to override it.
  • The /meili_data mount maps to the path used by the official image for indexes, dumps, and snapshots.

2. Set or update the Meilisearch master key

Set MEILI_MASTER_KEY as a sensitive runtime environment variable instead of committing it to .upsun/config.yaml.
  1. Generate a long random value for the master key:
  2. Use the generated value in place of <LONG_RANDOM_MASTER_KEY>:
If the MEILI_MASTER_KEY variable already exists, update it:

3. Deploy the app

Commit the changes to .upsun/config.yaml and push them to Upsun:

4. Allocate Meilisearch resources

The first deployment defaults to a minimal resource allocation regardless of app type (0.5 CPU, 512 MB disk, and 1408 MB memory). That’s enough to boot the container, but not to handle real indexing and search traffic, so set a production baseline for the app:
With container_profile: HIGH_MEMORY, the Meilisearch app gets 2 CPU, about 4 GB RAM, 10 GB disk, and one instance. If your indexes, dumps, or snapshots grow past that, increase the disk size. If you changed resources after the app was already deployed, redeploy the environment:

5. Validate the deployment

List the routes, and confirm that the HTTPS route mapped to the meilisearch app appears. You’ll use it in place of <MEILISEARCH_ROUTE> in the next step.
Check the health endpoint. Replace <MEILISEARCH_ROUTE> with the HTTPS route for the Meilisearch app:
Expected response:
If the health check doesn’t return this, or you run into other issues deploying the app, debug the app over SSH to check /var/log/app.log and the container’s process state.

Updating the image version

To use a different Meilisearch version, update the version in image.name:
Then, commit and push the change:
Last modified on July 10, 2026