Deploy a Meilisearch instance on DigitalOcean
Part 1: Deploy Meilisearch on a Droplet
1. Create a new Droplet
DigitalOcean Droplets are Linux-based virtual machines in which you can run your applications.
Once you log in to your DigitalOcean account, click the green "Create" button at the top-right of the page and select "Droplets".
Refer to DigitalOcean's documentation to learn more about creating and configuring Droplets.
2. Select a region for your Droplet
Select the region where you want to deploy your Droplet. Remember, the closer you are to your users, the better their search experience with Meilisearch will be.
3. Select Meilisearch image
By default, DigitalOcean displays the "OS" tab. Select the "Marketplace" tab, search for "Meilisearch", and select the image.
4. Choose Droplet size
This is where you choose the amount of RAM, storage, and CPU cores your Droplet will have. Select your plan based on your needs. Memory-optimized options will give you better results when working with big datasets.
5. Choose an authentication method
You can either use SSH keys or a password to access your Droplet. We recommend using SSH keys as they are more secure.
Select the SSH keys you want to add to your Droplet. If you don't have a key, follow DigitalOcean's instructions on how to create one.
6. Choose your Droplet name and tags
Here you can select the name that will be visible everywhere in your DigitalOcean account. Droplets can only contain alphanumeric characters, dashes, and periods.
Tags are great for managing resources. They are custom labels you assign to droplets. Tags can contain letters, numbers, colons, dashes, and underscores. You can use multiple tags for a single resource. Try naming tags based on a droplet's function.
7. Click on "Create Droplet"
8. Test Meilisearch
Once created, click on the Droplet's public IP address to copy it:
Paste it into your browser. If you can access the search preview, Meilisearch is ready to use.
Part 2: Configure production settings in your Meilisearch Droplet
To configure Meilisearch for production on a DigitalOcean Droplet, use SSH to access your Droplet and a script will guide you through the process. Alternatively, use the Droplet Console with your preferred browser.
1. Make your domain name point to your Droplet
If you want to use your own domain, click the "Create" button and select "Domain/DNS".
Type in your domain name in the "Enter domain field" and click "Add Domain".
This should work out of the box. Your domain name should now be linked to your Meilisearch instance. Use curl
to access it and verify DNS has been properly configured:
curl -v http://<your-domain-name>/health
The server should answer with a 200 OK
status code and the following body {"status": "available"}
:
…
HTTP/1.1 200 OK
…
{"status": "available"}
…
2. Set master key and SSL (HTTPS)
Meilisearch is currently running in a development environment. We haven't set up a master key, meaning anyone can read/write to the Meilisearch instance. Since we aren't using HTTPS yet, this configuration is unsafe for production.
To start the configuration process, either connect to your Droplet via SSH or use the Droplet Console in your preferred browser and follow the instructions:
2.1. Run the configuration script
Open a terminal and start a new SSH connection with the IP you got from DigitalOcean.
Type in the following command in your terminal and press Enter to establish a connection:
ssh root@DIGITAL_OCEAN_IP_ADDRESS
Type yes
and press Enter to accept the authentication process.
NOTE
The above command is not required if you are using the Droplet Console.
A script will run automatically, asking for your settings and desired configuration. If you want to run this script again anytime, you can do so by using the following command:
meilisearch-setup
The same script will run automatically if you use the Droplet Console.
3. Enjoy your ready-to-use Meilisearch droplet
Your Meilisearch Droplet is ready to be used in production.
To check if everything is running smoothly, do an HTTP call to the /health
route:
curl -v https://<your-domain-name>/health
The server should answer with a 200 OK
status code and the following body {"status": "available"}
as shown in the example below:
…
HTTP/1.1 200 OK
…
{"status": "available"}
…