<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Samuel Jimenez</title>
    <description>The latest articles on DEV Community by Samuel Jimenez (@eskombro).</description>
    <link>https://dev.to/eskombro</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F473988%2Fa3bb09d2-5e85-44b4-99e3-dc41037aa537.png</url>
      <title>DEV Community: Samuel Jimenez</title>
      <link>https://dev.to/eskombro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eskombro"/>
    <language>en</language>
    <item>
      <title>How to deploy a MeiliSearch instance on DigitalOcean</title>
      <dc:creator>Samuel Jimenez</dc:creator>
      <pubDate>Wed, 23 Sep 2020 13:50:38 +0000</pubDate>
      <link>https://dev.to/meilisearch/how-to-deploy-a-meilisearch-instance-on-digitalocean-139h</link>
      <guid>https://dev.to/meilisearch/how-to-deploy-a-meilisearch-instance-on-digitalocean-139h</guid>
      <description>&lt;h1&gt;
  
  
  How to deploy a MeiliSearch instance on DigitalOcean
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Create an out-of-the-box MeiliSearch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Create a new "droplet"
&lt;/h3&gt;

&lt;p&gt;A "droplet" is a set of resources, as a Virtual Machine, or a Server, in which you can run your own applications.&lt;br&gt;
In any DigitalOcean page, when you are logged in, you will find a menu in the upper-right corner. Click on "Create" -&amp;gt; "Droplets".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NxHZOySd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/01.create.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NxHZOySd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/01.create.png" alt="Create droplet" width="331" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Select MeiliSearch snapshot
&lt;/h3&gt;

&lt;p&gt;By default, DigitalOcean will display the "distributions" tab. Select the "Marketplace" tab and search for "meili". Select it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f7W48Ocn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/02.marketplace.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f7W48Ocn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/02.marketplace.png" alt="Marketplace" width="880" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Select your plan
&lt;/h3&gt;

&lt;p&gt;Select your plan. Plans start at $5 (click on "See all plans" for more options). Memory-optimized options will give you better results for a production environment on big datasets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tT_rBWJM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/03.select-plan.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tT_rBWJM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/03.select-plan.png" alt="Select plan" width="880" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Select a region for your droplet
&lt;/h3&gt;

&lt;p&gt;Select the region where you want to deploy your droplet. Remember, the closer you are to your users or customers, the better will be their search experience with MeiliSearch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8W6CJiku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/04.select-region.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8W6CJiku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/04.select-region.png" alt="Select region" width="880" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Add your ssh key
&lt;/h3&gt;

&lt;p&gt;Select your SSH key in order to be able to connect to your droplet later. If you don't see your SSH key add yours to your account.&lt;/p&gt;

&lt;p&gt;If you need help with this, visit &lt;a href="https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/to-account/"&gt;this link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also set a password for &lt;code&gt;root&lt;/code&gt; user if you prefer this authentication method.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tE1GnNWx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/05.add-ssh-key.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tE1GnNWx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/05.add-ssh-key.png" alt="Add ssh key" width="880" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Choose your droplet name and tags
&lt;/h3&gt;

&lt;p&gt;Here you can select the name that will be visible everywhere in your DigitalOcean account. Choose wisely!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dZCPjYmD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/06.droplet-name.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dZCPjYmD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/06.droplet-name.png" alt="Droplet name" width="880" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tags are a very good method to know who created resources, and for organizing resources or projects. Try to always add some tags to make clear what are the server purposes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lFC9_R1o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/06.add-tags.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lFC9_R1o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/06.add-tags.png" alt="Add tags" width="880" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Finally click on Create Droplet
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6hC7rEGK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/07.create-droplet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6hC7rEGK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/07.create-droplet.png" alt="Create droplet" width="880" height="69"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Your MeiliSearch is running (with no config)
&lt;/h3&gt;

&lt;p&gt;Instance creation in progress...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3Tm2G11W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/08.creating.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3Tm2G11W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/08.creating.png" alt="Creating" width="880" height="81"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;... done!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pOJyaWhh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/08.created-ip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pOJyaWhh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/08.created-ip.png" alt="Created" width="880" height="74"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Test MeiliSearch.
&lt;/h3&gt;

&lt;p&gt;Copy the public IP address:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--54c-STWV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/09.copy-ip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--54c-STWV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/09.copy-ip.png" alt="Copy IP" width="880" height="74"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paste it in your browser. If this screen is shown, your MeiliSearch is now ready!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OaBXjVS9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/09.test-meili.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OaBXjVS9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/09.test-meili.png" alt="Test MeiliSearch" width="880" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure production settings in your MeiliSearch Droplet
&lt;/h2&gt;

&lt;p&gt;Configuring your MeiliSearch from a DigitalOcean droplet is very straightforward. Establish an SSH connection with your droplet and a script will guide you through the process.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Make your domain name point to your droplet
&lt;/h3&gt;

&lt;p&gt;If you want to use your own domain name (or sub-domain), add &lt;code&gt;A record&lt;/code&gt; in your domain name provider account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SrbQtU8a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/11.domain-a-record.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SrbQtU8a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/11.domain-a-record.png" alt="Domain to  MeiliSearch" width="880" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This should work out of the box. Your domain should be usable for your MeiliSearch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KO0zbsK6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/11.working-domain.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KO0zbsK6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/11.working-domain.png" alt="Domain to  MeiliSearch" width="880" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Set API KEY and SSL (HTTPS)
&lt;/h3&gt;

&lt;p&gt;Meilisearch is running with a development configuration. It means that you haven't set up an API KEY (anyone can read/write from your MeiliSearch) and you aren't using HTTPS yet. But no worries, the configuration process is automated and very simple. Just connect via SSH to your new MeiliSearch Droplet and answer a few questions:&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1. Run the configuration script
&lt;/h3&gt;

&lt;p&gt;Open a terminal and start a new SSH connection with the IP you got from DigitalOcean.&lt;/p&gt;

&lt;p&gt;Write in your terminal &lt;code&gt;ssh root@&amp;lt;your-ip-address&amp;gt;&lt;/code&gt; and press Enter to establish connection:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zBL65te9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/12.open-terminal-ssh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zBL65te9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/12.open-terminal-ssh.png" alt="Terminal ssh" width="473" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Write &lt;code&gt;yes&lt;/code&gt; and press Enter to accept the authentication process.&lt;/p&gt;

&lt;p&gt;A script will run automatically, asking for your settings and desired configuration. If you want to run this script again later, you can do so by typing:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sh /var/opt/meilisearch/scripts/first-login/000-set-meili-env.sh&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Enjoy your ready-to-use MeiliSearch droplet
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3IxKNfHm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/13.finish.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3IxKNfHm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/meilisearch/documentation/master/.vuepress/public/digitalocean/13.finish.png" alt="Enjoy" width="880" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enjoy&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>search</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
