## Choosing a deployment target

| Target | Best for |
| --- | --- |
| [Generic Linux server](/content/docs/resources/self_hosting/deployment/running_production/index.html) | Any Linux server or VPS. Start here if your provider isn’t listed below. |
| [AWS](/content/docs/resources/self_hosting/deployment/aws/index.html) | Amazon Web Services EC2 instances |
| [GCP](/content/docs/resources/self_hosting/deployment/gcp/index.html) | Google Cloud Compute Engine VMs |
| [Azure](/content/docs/resources/self_hosting/deployment/azure/index.html) | Azure Virtual Machines |
| [DigitalOcean](/content/docs/resources/self_hosting/deployment/digitalocean/index.html) | DigitalOcean droplets |

All cloud provider guides follow the same pattern: provision a server, install Meilisearch, configure systemd, set up Nginx with HTTPS, and configure firewall rules. The main differences are provider-specific networking and firewall configuration.

## Production checklist

Before going to production, make sure you have:

- [ ] Set a strong [master key](/content/docs/resources/self_hosting/security/master_api_keys/index.html) (at least 16 bytes)
- [ ] Set [environment to `production`](/content/docs/resources/self_hosting/configuration/reference#environment/index.html)
- [ ] Configured a reverse proxy (Nginx or Caddy) with HTTPS
- [ ] Set up [scheduled snapshots](/content/docs/resources/self_hosting/data_backup/snapshots/index.html) or a backup strategy
- [ ] Configured systemd to restart Meilisearch on failure
- [ ] Reviewed [RAM and threading settings](/content/docs/resources/self_hosting/performance/ram_multithreading/index.html) for your workload
