{"id":21927,"date":"2024-02-13T21:10:00","date_gmt":"2024-02-13T20:10:00","guid":{"rendered":"https:\/\/www.oderland.se\/support\/?post_type=ht_kb&#038;p=21927"},"modified":"2024-02-15T09:59:20","modified_gmt":"2024-02-15T08:59:20","slug":"hur-installerar-jag-opensearch-i-oderland-cloud","status":"publish","type":"ht_kb","link":"https:\/\/www.oderland.se\/support\/artikel\/hur-installerar-jag-opensearch-i-oderland-cloud\/","title":{"rendered":"Hur installerar jag OpenSearch i Oderland Cloud?"},"content":{"rendered":"\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">Denna guide \u00e4r baserad p\u00e5 en Debian 12 image, med flavor a1-c1-m4 (1 core, 4GB ram) och en 10GB boot disk.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">Vi har valt <a href=\"https:\/\/caddyserver.com\/\" data-type=\"link\" data-id=\"https:\/\/caddyserver.com\/\">Caddy<\/a> som reverse proxy med automatisk TLS st\u00f6d och basic auth, men det finns andra alternativ som t.ex. traefik, nginx eller att konfigurera OpenSearch security plugin med certifikat eller certbot.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"196\" src=\"https:\/\/www.oderland.se\/support\/wp-content\/uploads\/2024\/02\/opensearch_logo_default-1024x196.png\" alt=\"OpenSearch logo\" class=\"wp-image-21928\" srcset=\"https:\/\/www.oderland.se\/support\/wp-content\/uploads\/2024\/02\/opensearch_logo_default-1024x196.png 1024w, https:\/\/www.oderland.se\/support\/wp-content\/uploads\/2024\/02\/opensearch_logo_default-300x57.png 300w, https:\/\/www.oderland.se\/support\/wp-content\/uploads\/2024\/02\/opensearch_logo_default-768x147.png 768w, https:\/\/www.oderland.se\/support\/wp-content\/uploads\/2024\/02\/opensearch_logo_default-50x10.png 50w, https:\/\/www.oderland.se\/support\/wp-content\/uploads\/2024\/02\/opensearch_logo_default-60x11.png 60w, https:\/\/www.oderland.se\/support\/wp-content\/uploads\/2024\/02\/opensearch_logo_default-100x19.png 100w, https:\/\/www.oderland.se\/support\/wp-content\/uploads\/2024\/02\/opensearch_logo_default.png 1486w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Vad \u00e4r OpenSearch och varf\u00f6r vill jag installera det?<\/h2>\n\n\n\n<p>OpenSearch&nbsp;\u00e4r en distribuerad s\u00f6k- och analysmotor baserad p\u00e5&nbsp;Apache Lucene.<\/p>\n\n\n\n<p>Den anv\u00e4nds som ett verktyg f\u00f6r att hj\u00e4lpa till vid s\u00f6kningar, analyser och monitorering.<\/p>\n\n\n\n<p>Vissa system som t.ex. Magento, WordPress m.m. kan anv\u00e4nda denna f\u00f6r att snabba upp och g\u00f6ra s\u00f6k mer relevant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ElasticSearch eller OpenSearch?<\/h3>\n\n\n\n<p>Det v\u00e4ljer du sj\u00e4lv. OpenSearch \u00e4r en fork av ElasticSearch 7.10.2, dvs sista versionen innan ElasticSearch \u00e4ndrade sin licensform.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Var hittar jag mer dokumentation om OpenSearch?<\/h3>\n\n\n\n<p><a href=\"https:\/\/opensearch.org\/\">https:\/\/opensearch.org\/<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Observera<\/h3>\n\n\n\n<p>Den h\u00e4r guiden beskriver hur du kan s\u00e4tta upp OpenSearch med en reverse proxy framf\u00f6r som hanterar automatiska certifikat och l\u00f6senordsinloggning.<\/p>\n\n\n\n<p>Den tar dock ej upp hur man skapar upp ett kluster f\u00f6r OpenSearch, vilket \u00e4r rekommenderat om man skall k\u00f6ra det i produktion.<\/p>\n\n\n\n<p>Den tar inte heller upp hur man brandv\u00e4ggar i <a href=\"https:\/\/www.oderland.se\/cloud\/\" data-type=\"link\" data-id=\"https:\/\/www.oderland.se\/cloud\/\">Oderland Cloud<\/a> om du beh\u00f6ver l\u00e5sa ned access fr\u00e5n t.ex. en IP-adress, t.ex. om du vill begr\u00e4nsa access fr\u00e5n en annan Cloud server eller fr\u00e5n v\u00e5ra andra tj\u00e4nster som <a href=\"https:\/\/www.oderland.se\/managed-server\/\" data-type=\"link\" data-id=\"https:\/\/www.oderland.se\/managed-server\/\">Managed Server<\/a>, <a href=\"https:\/\/www.oderland.se\/losningar\/byraer\/\" data-type=\"link\" data-id=\"https:\/\/www.oderland.se\/losningar\/byraer\/\">Agency<\/a> eller <a href=\"https:\/\/www.oderland.se\/webbhotell\/\" data-type=\"link\" data-id=\"https:\/\/www.oderland.se\/webbhotell\/\">Webbhotell<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Utf\u00f6rande<\/h2>\n\n\n\n<p>Vi skapar en server i Oderland Cloud med Docker och pekar ett v\u00e4rdnamn (t.ex. dom\u00e4n eller subdom\u00e4n) mot serverns nya ip-adress.<\/p>\n\n\n\n<p>D\u00e4refter ssh:ar vi in till servern. Sedan skapar vi ett docker n\u00e4tverk som vi d\u00f6per till caddy. Det anv\u00e4nds till de containrar man vill f\u00e5 automatisk TLS (https:\/\/).<\/p>\n\n\n\n<p>Vi skapar en mappstruktur samt en docker-compose.yml fil som talar om vilka tj\u00e4nster som skall k\u00f6ras och hur de skall konfigureras och anger samma v\u00e4rdnamn som vi pekat till servern.<\/p>\n\n\n\n<p>Vi skapar upp ett l\u00f6senord med hj\u00e4lp av Caddy hash-password att anv\u00e4nda f\u00f6r basic auth i docker-compose.yml filen.<\/p>\n\n\n\n<p>Sen startar vi upp v\u00e5r nya docker compose stack och testar att vi f\u00e5r certifikat och ett svar fr\u00e5n OpenSearch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">F\u00f6rberedelser<\/h3>\n\n\n\n<p>Skapa f\u00f6rst en server i Oderland Cloud med Docker, kika p\u00e5 en av guiderna nedan om du beh\u00f6ver hj\u00e4lp.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.oderland.se\/support\/artikel\/sa-installerar-du-en-ny-server-med-docker-engine-i-oderland-cloud\/\">https:\/\/www.oderland.se\/support\/artikel\/sa-installerar-du-en-ny-server-med-docker-engine-i-oderland-cloud\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/www.oderland.se\/support\/artikel\/sa-installerar-du-docker-engine-i-oderland-cloud\/\">https:\/\/www.oderland.se\/support\/artikel\/sa-installerar-du-docker-engine-i-oderland-cloud\/<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Peka v\u00e4rdnamn (dom\u00e4n eller subdom\u00e4n)<\/h3>\n\n\n\n<p><a href=\"https:\/\/www.oderland.se\/support\/artikel\/hur-pekar-jag-mitt-domannamn-mot-min-vps\/\" data-type=\"link\" data-id=\"https:\/\/www.oderland.se\/support\/artikel\/hur-pekar-jag-mitt-domannamn-mot-min-vps\/\">Peka ett l\u00e4mpligt v\u00e4rdnamn<\/a> till serverns ipv4 adress. Du beh\u00f6ver g\u00f6ra det h\u00e4r steget f\u00f6r att vi skall kunna f\u00e5 ut ett TLS certifikat fr\u00e5n Letsencrypt automatiskt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ut\u00f6ka virtuellt minne och g\u00e5 med i docker gruppen<\/h3>\n\n\n\n<p>SSH:a in till servern.<\/p>\n\n\n\n<p>Vi kommer att k\u00f6ra samtliga kommandon som debian anv\u00e4ndaren, men beh\u00f6ver anv\u00e4nda sudo ibland<\/p>\n\n\n\n<p>B\u00f6rja med att g\u00e5 med i docker gruppen och aktivera den f\u00f6r din session.<\/p>\n\n\n\n<p>Vi beh\u00f6ver ocks\u00e5 ut\u00f6ka vm.max_map_count d\u00e5 OpenSearch annars kan orsaka en del out of memory exceptions.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sudo usermod -aG docker $USER\nnewgrp docker\necho 'vm.max_map_count=262144' | sudo tee -a \/etc\/sysctl.d\/opensearch.conf\nsudo sysctl -p<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Skapa Docker n\u00e4tverk<\/h3>\n\n\n\n<p>Skapa sedan ett docker n\u00e4tverk som vi anv\u00e4nder f\u00f6r de containers vi vill proxya via Caddy och automatiskt hantera Let&#8217;s Encrypt \/ Zero SSL f\u00f6r att f\u00e5 s\u00e4ker anslutning.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker network create caddy<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Skapa ett hashat l\u00f6senord f\u00f6r Basic Auth till Caddy<\/h3>\n\n\n\n<p>Vi anv\u00e4nder oss av hash-password fr\u00e5n Caddy f\u00f6r att hasha ett l\u00f6senord. <strong>Kopiera inte nedan rakt av, utan byt ut texten L\u00d6SENORDET till ett bra l\u00f6senor<\/strong>d som du sedan kommer beh\u00f6va anv\u00e4nda i din applikation f\u00f6r att ansluta till OpenSearch.<\/p>\n\n\n\n<p>Vi ers\u00e4tter $ mot $$ med sed s\u00e5 att hashen skall fungera i docker-compose.yml, annars tolkas det som variabler.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker run --rm lucaslorentz\/caddy-docker-proxy:ci-alpine hash-password --plaintext L\u00d6SENORDET|sed 's\/\\$\/\\$\\$\/g'\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">S\u00e4tt upp docker-compose.yml filen<\/h3>\n\n\n\n<p>Nu skapar vi mappen f\u00f6r docker-compose.yml filen och l\u00e4gger in texten nedan.<br>Ers\u00e4tt <strong>HASHED_PASSWORD<\/strong> med l\u00f6senordshashen du fick ut ovan.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir -p ~\/compose\/opensearch\ncat &lt;&lt; EOF &gt; ~\/compose\/opensearch\/docker-compose.yml\nversion: \"3.7\" \n \nservices: \n  caddy: \n    image: lucaslorentz\/caddy-docker-proxy:ci-alpine \n    ports: \n      - 80:80 \n      - 443:443 \n    environment: \n      - CADDY_INGRESS_NETWORKS=caddy \n    networks: \n      - caddy \n    volumes: \n      - \/var\/run\/docker.sock:\/var\/run\/docker.sock \n      - caddy_data:\/data \n    restart: unless-stopped \n  opensearch: \n    image: opensearchproject\/opensearch:2.11.1\n    volumes: \n      - osdata01:\/usr\/share\/opensearch\/data\n    environment:\n      - \"cluster.name=opensearch-cluster\"\n      - \"node.name=os-node01\"\n      - \"discovery.type=single-node\"\n      - \"bootstrap.memory_lock=true\"\n      - \"plugins.security.disabled=true\"\n      - \"OPENSEARCH_JAVA_OPTS=-Xms2G -Xmx2G\"\n    labels:\n      caddy: HOSTNAME\n      caddy.reverse_proxy: \"{{upstreams 9200}}\"\n      caddy.basicauth: \/*\n      caddy.basicauth.admin: HASHED_PASSWORD\n    networks:\n      - caddy\n    ulimits:\n      memlock:\n        soft: -1\n        hard: -1\n      nofile:\n        soft: 65536\n        hard: 65536\n    restart: unless-stopped\n\nvolumes:\n  osdata01:\n    driver: local\n  caddy_data:\n    driver: local\n\nnetworks:\n  caddy:\n    external: true\nEOF<\/pre>\n\n\n\n<p>Vi s\u00e4tter ocks\u00e5 max minnesanv\u00e4ndning f\u00f6r Javamotorn till 2GB ovan. Du kan beh\u00f6va h\u00f6ja detta samt serverns minne om du har stora index.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ange ditt v\u00e4rdnamn<\/h3>\n\n\n\n<p>Har du pekat ett v\u00e4rdnamn som du vill anv\u00e4nda f\u00f6r servern eller f\u00f6r OpenSearch s\u00e5 kan du nu redigera kodsnutten ovan och \u00e4ndra HOSTNAME till ditt valda v\u00e4rdnamn. Du kan ocks\u00e5 g\u00f6ra det i efterhand med sed kommandot som vi visar nedan.<\/p>\n\n\n\n<p>I demo-syfte s\u00e5 skapade vi os.oderland.cloud s\u00e5 att vi sedan kan g\u00e5 mot https:\/\/ os.oderland.cloud f\u00f6r att n\u00e5 OpenSearch. Exemplet ser d\u00e5 ut f\u00f6ljande med sed kommandot.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sed -i 's\/HOSTNAME\/os.oderland.cloud\/g' ~\/compose\/opensearch\/docker-compose.yml<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Starta upp OpenSearch och Caddy<\/h3>\n\n\n\n<p>Starta sedan v\u00e5r nya docker compose stack.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cd ~\/compose\/opensearch\ndocker compose up -d<\/pre>\n\n\n\n<p>D\u00e5 h\u00e4mtas samtliga images\/layers och sedan startar tj\u00e4nsterna upp.<\/p>\n\n\n\n<p>Du kan f\u00f6lja loggen via: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker compose logs -f<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Vanliga fr\u00e5gor<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Kan jag anv\u00e4nda ElasticPress f\u00f6r WordPress ihop med OpenSearch?<\/h3>\n\n\n\n<p>Ja! Du b\u00f6r dock anv\u00e4nda dig av en snippet fr\u00e5n <a href=\"https:\/\/elasticpress.zendesk.com\/hc\/en-us\/articles\/16677288265741-Compatibility\" data-type=\"link\" data-id=\"https:\/\/elasticpress.zendesk.com\/hc\/en-us\/articles\/16677288265741-Compatibility\">deras sajt<\/a> f\u00f6r att pluginen skall f\u00f6rst\u00e5 vilken version som anv\u00e4nds.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">N\u00e4r jag ansluter min Magento 2.4.x mot OpenSearch s\u00e5 klagar den p\u00e5 connection?<\/h3>\n\n\n\n<p>I skrivande stund (2024-02-15) finns en <a href=\"https:\/\/github.com\/magento\/magento2\/issues\/37236\" data-type=\"link\" data-id=\"https:\/\/github.com\/magento\/magento2\/issues\/37236\">buggrapport<\/a> d\u00e4r det beskrivs att Magento f\u00f6rv\u00e4ntar sig att anslutningen sker okrypterat mellan Magento och OpenSearch\/ElasticSearch.<\/p>\n\n\n\n<p>Vi rekommenderar naturligtvis inte detta, men tyv\u00e4rr ligger detta helt p\u00e5 Magento\/Adobe att l\u00f6sa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00c4ndra v\u00e4rdnamn<\/h3>\n\n\n\n<p>Om du editerar docker-compose.yml filen i efterhand och byter ut till annat v\u00e4rdnamn s\u00e5 beh\u00f6ver du starta om stacken och forcera nya configs via:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker compose up --force-recreate -d<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Hur kan man styra Caddy Proxyn<\/h3>\n\n\n\n<p><a href=\"https:\/\/github.com\/lucaslorentz\/caddy-docker-proxy#reverse-proxy-examples\" data-type=\"link\" data-id=\"https:\/\/github.com\/lucaslorentz\/caddy-docker-proxy#reverse-proxy-examples\">L\u00e4s mer om Caddy proxyn<\/a> och hur du kan styra via t.ex. paths eller hur du l\u00e4gger till fler dom\u00e4ner mot samma service.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vad \u00e4r OpenSearch och varf\u00f6r vill jag installera det? OpenSearch&nbsp;\u00e4r en distribuerad s\u00f6k- och analysmotor baserad p\u00e5&nbsp;Apache Lucene. Den anv\u00e4nds som ett verktyg f\u00f6r att hj\u00e4lpa till vid s\u00f6kningar, analyser och monitorering. Vissa system som t.ex. Magento, WordPress m.m. kan anv\u00e4nda denna f\u00f6r att snabba upp och g\u00f6ra s\u00f6k mer&#8230;<\/p>\n","protected":false},"author":15,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"ht-kb-category":[681],"ht-kb-tag":[],"class_list":["post-21927","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-cloud"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb\/21927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/comments?post=21927"}],"version-history":[{"count":6,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb\/21927\/revisions"}],"predecessor-version":[{"id":21954,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb\/21927\/revisions\/21954"}],"wp:attachment":[{"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/media?parent=21927"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb-category?post=21927"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.oderland.se\/support\/wp-json\/wp\/v2\/ht-kb-tag?post=21927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}