{"id":488143,"date":"2026-07-22T08:41:05","date_gmt":"2026-07-22T08:41:05","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=488143"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=488143","title":{"rendered":"Qdrant + Tailscale\u00a0\u2014 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0437\u0430\u0449\u0438\u0442\u0430"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/93f\/e5f\/476\/93fe5f476d20ab2c729b8ff3a93d51e5.jpeg\" width=\"1376\" height=\"768\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/93f\/e5f\/476\/93fe5f476d20ab2c729b8ff3a93d51e5.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/93f\/e5f\/476\/93fe5f476d20ab2c729b8ff3a93d51e5.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>Qdrant <\/strong>\u2014 \u044d\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u043b\u044f\u00a0\u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Qdrant \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0432\u00a0\u0447\u0430\u0442\u2011\u0431\u043e\u0442\u0430\u0445, RAG\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u043d\u0430\u00a0\u0431\u0430\u0437\u0435 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Qdrant \u0432\u0430\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c \u0438\u043b\u0438\u00a0\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u041f\u043e\u00a0\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, Qdrant \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0432\u00a0\u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e\u00a0\u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u043d\u0435\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u0443\u00a0\u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430.<\/p>\n<p>\u0412\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Qdrant \u043d\u0430\u00a0Ubuntu 24.04\u00a0\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c:<\/p>\n<ul>\n<li>\n<p>\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 Tailscale;<\/p>\n<\/li>\n<li>\n<p>\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u00a0API\u2011\u043a\u043b\u044e\u0447\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a Qdrant \u0432\u00a0Docker;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 Qdrant \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u0441\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a\u00a0\u043d\u0435\u043c\u0443 \u0441\u043c\u043e\u0433\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u00a0\u0432\u0430\u0448 Tailscale\u2011\u0441\u0435\u0433\u043c\u0435\u043d\u0442.<\/p>\n<blockquote>\n<p>\u0412\u0430\u0448\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u00a0Tailscale \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0432\u00a0\u0420\u043e\u0441\u0441\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u00a0\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c SSH \u0447\u0435\u0440\u0435\u0437 Tailscale, \u0445\u043e\u0442\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435\u00a0\u043e\u0431\u00a0\u044d\u0442\u043e\u043c.<\/p>\n<\/blockquote>\n<h3>\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Tailscale<\/h3>\n<p>Tailscale \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u0448\u0438\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438. \u041a\u0430\u0436\u0434\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 IP\u2011\u0430\u0434\u0440\u0435\u0441, \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0438\u0434\u0430:<\/p>\n<pre><code>100.x.x.x<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c IP\u2011\u0430\u0434\u0440\u0435\u0441\u043e\u043c VPS. \u041e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 Tailscale.<\/p>\n<p>\u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435, \u0447\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442 Qdrant \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<\/p>\n<pre><code>http:\/\/\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439\\_IP\\_\u0441\u0435\u0440\u0432\u0435\u0440\u0430:6333<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 Tailscale:<\/p>\n<pre><code>https:\/\/\u0438\u043c\u044f-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.\u0432\u0430\u0448-tailnet.ts.net<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e Qdrant \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043d API\u2011\u043a\u043b\u044e\u0447\u043e\u043c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043b\u044f\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/p>\n<ol>\n<li>\n<p>\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u00a0\u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 Tailscale;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 API\u2011\u043a\u043b\u044e\u0447 Qdrant.<\/p>\n<\/li>\n<\/ol>\n<h2>\u0428\u0430\u0433 1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Tailscale<\/h2>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443:<\/p>\n<pre><code class=\"bash\">sudo apt updatesudo apt upgrade -y<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Tailscale:<\/p>\n<pre><code class=\"bash\">curl -fsSL https:\/\/tailscale.com\/install.sh | sh<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u00a0Tailnet:<\/p>\n<pre><code class=\"bash\">sudo tailscale up --ssh --hostname=qdrant-server<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b Tailscale \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0434\u043b\u044f\u00a0\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0435\u0451 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441:<\/p>\n<pre><code class=\"bash\">sudo tailscale status<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0423\u0437\u043d\u0430\u0439\u0442\u0435 Tailscale IP \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">tailscale ip -4<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>100.101.102.103<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u043e\u0442 IP\u2011\u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430.<\/p>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 Tailscale \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0440\u0430\u043d\u0435\u0435\u00a0\u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>--advertise-exit-node<\/code>, \u0430\u00a0Exit Node \u0432\u0430\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u0435\u043d, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:<\/p>\n<p><code>sudo tailscale up --reset <\/code> <\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043d\u043e\u0432\u043e:<\/p>\n<p><code>sudo tailscale up --ssh --hostname=qdrant-server <\/code> <\/p>\n<\/blockquote>\n<h2>\u0428\u0430\u0433 2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Docker<\/h2>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Docker \u0438 Docker Compose:<\/p>\n<pre><code class=\"bash\">sudo apt install -y docker.io docker-compose-plugin<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c Docker \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">sudo systemctl enable --now docker<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443:<\/p>\n<pre><code class=\"bash\">docker --versiondocker compose version<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c Docker Compose \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>sudo<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <code>.env<\/code> \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e <code>root<\/code>.<\/p>\n<h2>\u0428\u0430\u0433 3. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 Qdrant<\/h2>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f\u00a0Qdrant:<\/p>\n<pre><code class=\"bash\">sudo mkdir -p \/opt\/qdrant\/{storage,snapshots,backup}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432:<\/p>\n<pre><code class=\"bash\">sudo chown -R \"$USER:$USER\" \/opt\/qdrant<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433:<\/p>\n<pre><code class=\"bash\">cd \/opt\/qdrant<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f:<\/p>\n<ul>\n<li>\n<p><code>storage<\/code>\u00a0\u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 Qdrant;<\/p>\n<\/li>\n<li>\n<p><code>snapshots<\/code>\u00a0\u2014 \u0441\u043d\u0438\u043c\u043a\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p><code>backup<\/code>\u00a0\u2014 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p><code>.env<\/code>\u00a0\u2014 API\u2011\u043a\u043b\u044e\u0447;<\/p>\n<\/li>\n<li>\n<p><code>docker-compose.yml<\/code>\u00a0\u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u00a0\u2014 \u044d\u0442\u043e:<\/p>\n<pre><code>\/opt\/qdrant\/storage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438\u043b\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 Docker\u2011\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<h2>\u0428\u0430\u0433 4. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 API\u2011\u043a\u043b\u044e\u0447\u0430<\/h2>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043a\u043b\u044e\u0447:<\/p>\n<pre><code class=\"bash\">openssl rand -hex 32<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0451 \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b <code>.env<\/code>:<\/p>\n<pre><code class=\"bash\">sudo nano \/opt\/qdrant\/.env<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435:<\/p>\n<pre><code>QDRANT_API_KEY=\u0412\u0410\u0428_\u0421\u0413\u0415\u041d\u0415\u0420\u0418\u0420\u041e\u0412\u0410\u041d\u041d\u042b\u0419_\u041a\u041b\u042e\u0427<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>QDRANT_API_KEY=8c4b0bd2a90f0a3d71b6e5f0f3f0d8f93f4a8e5b3a7d1c2e6f9a0b4c8d2e1f7a<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0444\u0430\u0439\u043b \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u043f\u0440\u0430\u0432\u0430:<\/p>\n<pre><code class=\"bash\">sudo chown root:root \/opt\/qdrant\/.envsudo chmod 600 \/opt\/qdrant\/.env<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c API\u2011\u043a\u043b\u044e\u0447 \u0441\u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code>root<\/code>.<\/p>\n<h2>\u0428\u0430\u0433 5. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Docker Compose<\/h2>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<pre><code class=\"bash\">sudo nano \/opt\/qdrant\/docker-compose.yml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435:<\/p>\n<pre><code class=\"yaml\">services:  qdrant:    image: qdrant\/qdrant:latest    container_name: qdrant    restart: unless-stopped    environment:      QDRANT__SERVICE__API_KEY: ${QDRANT_API_KEY}    ports:      - \"127.0.0.1:6333:6333\"      - \"127.0.0.1:6334:6334\"    volumes:      - \/opt\/qdrant\/storage:\/qdrant\/storage      - \/opt\/qdrant\/snapshots:\/qdrant\/snapshots    healthcheck:      test:        - CMD-SHELL        - wget --no-verbose --tries=1 --spider http:\/\/127.0.0.1:6333\/readyz || exit 1      interval: 30s      timeout: 5s      retries: 5      start_period: 20s<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u00a0\u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"bash\">sudo chown root:root \/opt\/qdrant\/docker-compose.ymlsudo chmod 600 \/opt\/qdrant\/docker-compose.yml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre><code class=\"yaml\">- \"127.0.0.1:6333:6333\"- \"127.0.0.1:6334:6334\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Qdrant \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041e\u043d \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0442\u043a\u0440\u044b\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 IP\u2011\u0430\u0434\u0440\u0435\u0441.<\/p>\n<h2>\u0428\u0430\u0433 6. \u0417\u0430\u043f\u0443\u0441\u043a Qdrant<\/h2>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 <code>.env<\/code> \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 <code>root<\/code>, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 Docker Compose \u0447\u0435\u0440\u0435\u0437 <code>sudo<\/code>:<\/p>\n<pre><code class=\"bash\">cd \/opt\/qdrantsudo docker compose up -d<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">sudo docker compose ps<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043b\u043e\u0433\u0438:<\/p>\n<pre><code class=\"bash\">sudo docker compose logs --tail=100 qdrant<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c Qdrant:<\/p>\n<pre><code class=\"bash\">curl http:\/\/127.0.0.1:6333\/readyz<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u043e\u0442\u0432\u0435\u0442:<\/p>\n<pre><code>healthz check passed<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c API \u0441\u00a0\u043a\u043b\u044e\u0447\u043e\u043c:<\/p>\n<pre><code class=\"bash\">sudo bash -c 'set -asource \/opt\/qdrant\/.envset +acurl -H \"api-key: ${QDRANT_API_KEY}\" \\http:\/\/127.0.0.1:6333\/collections'<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, Qdrant \u0432\u0435\u0440\u043d\u0451\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439. \u041f\u043e\u043a\u0430 \u043e\u043d \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c:<\/p>\n<pre><code class=\"json\">{  \"result\": {    \"collections\": []  },  \"status\": \"ok\"}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h2>\u0428\u0430\u0433 7. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f Qdrant \u0447\u0435\u0440\u0435\u0437 Tailscale<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u043c Tailscale \u043a\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 Qdrant:<\/p>\n<pre><code class=\"bash\">sudo tailscale serve --bg http:\/\/127.0.0.1:6333<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:<\/p>\n<pre><code class=\"bash\">sudo tailscale serve status<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Tailscale \u043f\u043e\u043a\u0430\u0436\u0435\u0442 HTTPS\u2011\u0430\u0434\u0440\u0435\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>https:\/\/qdrant-server.example-tailnet.ts.net<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<pre><code class=\"json\">{  \"title\": \"qdrant - vector search engine\",  \"version\": \"1.18.3\"}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0437\u043d\u0430\u0447\u0438\u0442 Qdrant \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0447\u0435\u0440\u0435\u0437 Tailscale.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u043e\u0439\u0442\u0438 \u0432\u00a0\u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u0442\u043e \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c dashboard \u043a\u00a0\u043d\u0430\u0448\u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code>https:\/\/qdrant-server.example-tailnet.ts.net\/dashboard<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">curl \\  -H \"api-key: \u0412\u0410\u0428_QDRANT_API_KEY\" \\  https:\/\/\u0412\u0410\u0428_TAILSCALE_\u0410\u0414\u0420\u0415\u0421\/collections<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u0435\u0437\u00a0API\u2011\u043a\u043b\u044e\u0447\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0437\u0430\u0449\u0438\u0442\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430.<\/p>\n<h2>\u0428\u0430\u0433 8. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432<\/h2>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0433\u0434\u0435 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 Qdrant:<\/p>\n<pre><code class=\"bash\">sudo ss -ltnp | grep -E '6333|6334'<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c:<\/p>\n<pre><code>127.0.0.1:6333127.0.0.1:6334<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435:<\/p>\n<pre><code>0.0.0.0:6333<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0Qdrant \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430\u00a0\u0432\u0441\u0435\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445. \u0414\u043b\u044f\u00a0\u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e <code>127.0.0.1<\/code>.<\/p>\n<h2>\u0428\u0430\u0433 9. \u041a\u0430\u043a\u00a0\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438<\/h2>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 Qdrant \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435:<\/p>\n<pre><code>\/opt\/qdrant\/storage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d \u043a\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 bind mount:<\/p>\n<pre><code class=\"yaml\">- \/opt\/qdrant\/storage:\/qdrant\/storage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442\u044c.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"bash\">sudo docker compose pullsudo docker compose up -d<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u043e\u00a0\u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c\u00a0\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e.<\/p>\n<p>\u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0431\u0435\u0437\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"bash\">sudo docker compose down -v<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0438 \u043d\u0435\u00a0\u0443\u0434\u0430\u043b\u044f\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433:<\/p>\n<pre><code>\/opt\/qdrant\/storage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h2>\u0428\u0430\u0433 10. \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442\u00a0\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043d\u043e\u00a0\u043d\u0435\u00a0\u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u043e\u0442\u00a0\u043f\u043e\u043b\u043e\u043c\u043a\u0438 \u0434\u0438\u0441\u043a\u0430, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u043b\u0438\u00a0\u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u00a0\u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, NAS \u0438\u043b\u0438\u00a0\u0432\u00a0S3-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<p>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u00a0\u2014 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433:<\/p>\n<pre><code class=\"bash\">sudo tar -czf \\  \/opt\/qdrant\/backup\/qdrant-$(date +%F-%H-%M-%S).tar.gz \\  -C \/opt\/qdrant storage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u044b:<\/p>\n<pre><code class=\"bash\">sudo ls -lh \/opt\/qdrant\/backup<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"bash\">rsync -av \/opt\/qdrant\/backup\/ \\  backup-user@100.111.112.113:\/srv\/backups\/qdrant\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410\u0434\u0440\u0435\u0441 <code>100.111.112.113<\/code> \u0432\u00a0\u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u00a0\u2014 Tailscale IP \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<h2>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Qdrant<\/h2>\n<p>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">cd \/opt\/qdrant<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e:<\/p>\n<pre><code class=\"bash\">sudo tar -czf \\  \/opt\/qdrant\/backup\/qdrant-before-update-$(date +%F-%H-%M-%S).tar.gz \\  -C \/opt\/qdrant storage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437:<\/p>\n<pre><code class=\"bash\">sudo docker compose pull<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:<\/p>\n<pre><code class=\"bash\">sudo docker compose up -d<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\">sudo docker compose ps<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c API:<\/p>\n<pre><code class=\"bash\">curl http:\/\/127.0.0.1:6333\/readyz<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h2>\u0418\u0442\u043e\u0433<\/h2>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443:<\/p>\n<pre><code>\u041a\u043b\u0438\u0435\u043d\u0442  \u2193Tailscale  \u2193Tailscale Serve  \u2193127.0.0.1:6333  \u2193Qdrant \u0432 Docker  \u2193\/opt\/qdrant\/storage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>Qdrant \u043d\u0435\u00a0\u043e\u0442\u043a\u0440\u044b\u0442 \u0432\u0441\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0441\u0442\u0443\u043f \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u00a0\u0432\u0430\u0448\u0435\u0439 Tailscale\u2011\u0441\u0435\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>API \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0449\u0438\u0449\u0451\u043d \u043a\u043b\u044e\u0447\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Docker\u2011\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 Tailscale \u0438 API\u2011\u043a\u043b\u044e\u0447:<\/p>\n<pre><code class=\"python\">from qdrant_client import QdrantClientclient = QdrantClient(    url=\"https:\/\/\u0412\u0410\u0428\\_TAILSCALE\\_\u0410\u0414\u0420\u0415\u0421\",    api_key=\"\u0412\u0410\u0428_QDRANT_API_KEY\",)print(client.get_collections())<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u043b\u0438 \u043d\u0430\u0448\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0431\u0430\u0437\u0443 Qdrant \u0438 \u043f\u043e\u00a0\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0441\u0430\u043c \u0432\u0445\u043e\u0434 \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u00a0SSH.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1061724\/\">https:\/\/habr.com\/ru\/articles\/1061724\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qdrant \u2014 \u044d\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u043b\u044f\u00a0\u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Qdrant \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0432\u00a0\u0447\u0430\u0442\u2011\u0431\u043e\u0442\u0430\u0445, RAG\u2011\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u043d\u0430\u00a0\u0431\u0430\u0437\u0435 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430.\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Qdrant \u0432\u0430\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043e\u0440\u0442 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c \u0438\u043b\u0438\u00a0\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.\u041f\u043e\u00a0\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, Qdrant \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0432\u00a0\u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0443\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e\u00a0\u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0\u043d\u0435\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u0443\u00a0\u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430.\u0412\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Qdrant \u043d\u0430\u00a0Ubuntu 24.04\u00a0\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c:\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0447\u0435\u0440\u0435\u0437 Tailscale;\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u00a0API\u2011\u043a\u043b\u044e\u0447\u0443;\u0437\u0430\u043f\u0443\u0441\u043a Qdrant \u0432\u00a0Docker;\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438;\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435;\u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 Qdrant \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u0441\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a\u00a0\u043d\u0435\u043c\u0443 \u0441\u043c\u043e\u0433\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u00a0\u0432\u0430\u0448 Tailscale\u2011\u0441\u0435\u0433\u043c\u0435\u043d\u0442.\u0412\u0430\u0448\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u00a0Tailscale \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0432\u00a0\u0420\u043e\u0441\u0441\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u00a0\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c SSH \u0447\u0435\u0440\u0435\u0437 Tailscale, \u0445\u043e\u0442\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435\u00a0\u043e\u0431\u00a0\u044d\u0442\u043e\u043c.\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d TailscaleTailscale \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u0443\u044e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u0448\u0438\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438. \u041a\u0430\u0436\u0434\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 IP\u2011\u0430\u0434\u0440\u0435\u0441, \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0438\u0434\u0430:100.x.x.x\u042d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c IP\u2011\u0430\u0434\u0440\u0435\u0441\u043e\u043c VPS. \u041e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 Tailscale.\u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435, \u0447\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0440\u0442 Qdrant \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442.\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:http:\/\/\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439\\_IP\\_\u0441\u0435\u0440\u0432\u0435\u0440\u0430:6333\u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 Tailscale:https:\/\/\u0438\u043c\u044f-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.\u0432\u0430\u0448-tailnet.ts.net\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e Qdrant \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0449\u0438\u0449\u0451\u043d API\u2011\u043a\u043b\u044e\u0447\u043e\u043c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u043b\u044f\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u00a0\u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 Tailscale;\u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 API\u2011\u043a\u043b\u044e\u0447 Qdrant.\u0428\u0430\u0433 1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Tailscale\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0443:sudo apt updatesudo apt upgrade -y\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Tailscale:curl -fsSL https:\/\/tailscale.com\/install.sh | sh\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043a\u00a0Tailnet:sudo tailscale up &#8212;ssh &#8212;hostname=qdrant-server\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b Tailscale \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0434\u043b\u044f\u00a0\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0435\u0451 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0442\u0430\u0442\u0443\u0441:sudo tailscale status\u0423\u0437\u043d\u0430\u0439\u0442\u0435 Tailscale IP \u0441\u0435\u0440\u0432\u0435\u0440\u0430:tailscale ip -4\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:100.101.102.103\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u043e\u0442 IP\u2011\u0430\u0434\u0440\u0435\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430.\u0415\u0441\u043b\u0438 Tailscale \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0440\u0430\u043d\u0435\u0435\u00a0\u0431\u044b\u043b \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#8212;advertise-exit-node, \u0430\u00a0Exit Node \u0432\u0430\u043c \u043d\u0435\u00a0\u043d\u0443\u0436\u0435\u043d, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435:sudo tailscale up &#8212;reset  \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043d\u043e\u0432\u043e:sudo tailscale up &#8212;ssh &#8212;hostname=qdrant-server  \u0428\u0430\u0433 2. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Docker\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Docker \u0438 Docker Compose:sudo apt install -y docker.io docker-compose-plugin\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c Docker \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u00a0\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:sudo systemctl enable &#8212;now docker\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443:docker &#8212;versiondocker compose version\u0412\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c Docker Compose \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 sudo, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0444\u0430\u0439\u043b .env \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e root.\u0428\u0430\u0433 3. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 Qdrant\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f\u00a0Qdrant:sudo mkdir -p \/opt\/qdrant\/{storage,snapshots,backup}\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432:sudo chown -R &#171;$USER:$USER&#187; \/opt\/qdrant\u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433:cd \/opt\/qdrant\u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f:storage\u00a0\u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 Qdrant;snapshots\u00a0\u2014 \u0441\u043d\u0438\u043c\u043a\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439;backup\u00a0\u2014 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438;.env\u00a0\u2014 API\u2011\u043a\u043b\u044e\u0447;docker-compose.yml\u00a0\u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430.\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u00a0\u2014 \u044d\u0442\u043e:\/opt\/qdrant\/storage\u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0438\u043b\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 Docker\u2011\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.\u0428\u0430\u0433 4. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 API\u2011\u043a\u043b\u044e\u0447\u0430\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043a\u043b\u044e\u0447:openssl rand -hex 32\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0421\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0451 \u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b .env:sudo nano \/opt\/qdrant\/.env\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435:QDRANT_API_KEY=\u0412\u0410\u0428_\u0421\u0413\u0415\u041d\u0415\u0420\u0418\u0420\u041e\u0412\u0410\u041d\u041d\u042b\u0419_\u041a\u041b\u042e\u0427\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:QDRANT_API_KEY=8c4b0bd2a90f0a3d71b6e5f0f3f0d8f93f4a8e5b3a7d1c2e6f9a0b4c8d2e1f7a\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0444\u0430\u0439\u043b \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u043f\u0440\u0430\u0432\u0430:sudo chown root:root \/opt\/qdrant\/.envsudo chmod 600 \/opt\/qdrant\/.env\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c API\u2011\u043a\u043b\u044e\u0447 \u0441\u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e root.\u0428\u0430\u0433 5. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Docker Compose\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:sudo nano \/opt\/qdrant\/docker-compose.yml\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435:services:  qdrant:    image: qdrant\/qdrant:latest    container_name: qdrant    restart: unless-stopped    environment:      QDRANT__SERVICE__API_KEY: ${QDRANT_API_KEY}    ports:      &#8212; &#171;127.0.0.1:6333:6333&#187;      &#8212; &#171;127.0.0.1:6334:6334&#187;    volumes:      &#8212; \/opt\/qdrant\/storage:\/qdrant\/storage      &#8212; \/opt\/qdrant\/snapshots:\/qdrant\/snapshots    healthcheck:      test:        &#8212; CMD-SHELL        &#8212; wget &#8212;no-verbose &#8212;tries=1 &#8212;spider http:\/\/127.0.0.1:6333\/readyz || exit 1      interval: 30s      timeout: 5s      retries: 5      start_period: 20s\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u00a0\u0444\u0430\u0439\u043b:sudo chown root:root \/opt\/qdrant\/docker-compose.ymlsudo chmod 600 \/opt\/qdrant\/docker-compose.yml\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0441\u0442\u0440\u043e\u043a\u0438:- &#171;127.0.0.1:6333:6333&#187;- &#171;127.0.0.1:6334:6334&#8243;Qdrant \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041e\u043d \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0442\u043a\u0440\u044b\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 IP\u2011\u0430\u0434\u0440\u0435\u0441.\u0428\u0430\u0433 6. \u0417\u0430\u043f\u0443\u0441\u043a Qdrant\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 .env \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 root, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 Docker Compose \u0447\u0435\u0440\u0435\u0437 sudo:cd \/opt\/qdrantsudo docker compose up -d\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430:sudo docker compose ps\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043b\u043e\u0433\u0438:sudo docker compose logs &#8212;tail=100 qdrant\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c Qdrant:curl http:\/\/127.0.0.1:6333\/readyz\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u043e\u0442\u0432\u0435\u0442:healthz check passed\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c API \u0441\u00a0\u043a\u043b\u044e\u0447\u043e\u043c:sudo bash -c &#8216;set -asource \/opt\/qdrant\/.envset +acurl -H &#171;api-key: ${QDRANT_API_KEY}&#187; \\http:\/\/127.0.0.1:6333\/collections&#8217;\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, Qdrant \u0432\u0435\u0440\u043d\u0451\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439. \u041f\u043e\u043a\u0430 \u043e\u043d \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c:{  &#171;result&#187;: {    &#171;collections&#187;: []  },  &#171;status&#187;: &#171;ok&#187;}\u0428\u0430\u0433 7. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f Qdrant \u0447\u0435\u0440\u0435\u0437 Tailscale\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u043c Tailscale \u043a\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 Qdrant:sudo tailscale serve &#8212;bg http:\/\/127.0.0.1:6333\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:sudo tailscale serve statusTailscale \u043f\u043e\u043a\u0430\u0436\u0435\u0442 HTTPS\u2011\u0430\u0434\u0440\u0435\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:https:\/\/qdrant-server.example-tailnet.ts.net\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0430:{  &#171;title&#187;: &#171;qdrant &#8212; vector search engine&#187;,  &#171;version&#187;: &#171;1.18.3&#187;}\u0437\u043d\u0430\u0447\u0438\u0442 Qdrant \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0447\u0435\u0440\u0435\u0437 Tailscale.\u0427\u0442\u043e\u0431\u044b \u0432\u043e\u0439\u0442\u0438 \u0432\u00a0\u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u0442\u043e \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c dashboard \u043a\u00a0\u043d\u0430\u0448\u0435\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:https:\/\/qdrant-server.example-tailnet.ts.net\/dashboard\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:curl \\  -H &#171;api-key: \u0412\u0410\u0428_QDRANT_API_KEY&#187; \\  https:\/\/\u0412\u0410\u0428_TAILSCALE_\u0410\u0414\u0420\u0415\u0421\/collections\u0411\u0435\u0437\u00a0API\u2011\u043a\u043b\u044e\u0447\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0437\u0430\u0449\u0438\u0442\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430.\u0428\u0430\u0433 8. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u043e\u0440\u0442\u043e\u0432\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0433\u0434\u0435 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 Qdrant:sudo ss -ltnp | grep -E &#8216;6333|6334&#8217;\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c:127.0.0.1:6333127.0.0.1:6334\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435:0.0.0.0:6333\u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0Qdrant \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430\u00a0\u0432\u0441\u0435\u0445 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445. \u0414\u043b\u044f\u00a0\u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e 127.0.0.1.\u0428\u0430\u0433 9. \u041a\u0430\u043a\u00a0\u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438\u0414\u0430\u043d\u043d\u044b\u0435 Qdrant \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u00a0\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435:\/opt\/qdrant\/storage\u041e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d \u043a\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0447\u0435\u0440\u0435\u0437 bind mount:- \/opt\/qdrant\/storage:\/qdrant\/storage\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u00a0\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0442\u044c.\u041f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f:sudo docker compose pullsudo docker compose up -d\u041d\u043e\u00a0\u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c\u00a0\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e.\u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0431\u0435\u0437\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438:sudo docker compose down -v\u0438 \u043d\u0435\u00a0\u0443\u0434\u0430\u043b\u044f\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433:\/opt\/qdrant\/storage\u0428\u0430\u0433 10. \u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442\u00a0\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043d\u043e\u00a0\u043d\u0435\u00a0\u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u043e\u0442\u00a0\u043f\u043e\u043b\u043e\u043c\u043a\u0438 \u0434\u0438\u0441\u043a\u0430, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u043b\u0438\u00a0\u043e\u0448\u0438\u0431\u043a\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u00a0\u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435, NAS \u0438\u043b\u0438\u00a0\u0432\u00a0S3-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u00a0\u2014 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433:sudo tar -czf \\  \/opt\/qdrant\/backup\/qdrant-$(date +%F-%H-%M-%S).tar.gz \\  -C \/opt\/qdrant storage\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u044b:sudo ls -lh \/opt\/qdrant\/backup\u0414\u043b\u044f\u00a0\u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:rsync -av \/opt\/qdrant\/backup\/ \\  backup-user@100.111.112.113:\/srv\/backups\/qdrant\/\u0410\u0434\u0440\u0435\u0441 100.111.112.113 \u0432\u00a0\u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u00a0\u2014 Tailscale IP \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Qdrant\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:cd \/opt\/qdrant\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e:sudo tar -czf \\  \/opt\/qdrant\/backup\/qdrant-before-update-$(date +%F-%H-%M-%S).tar.gz \\  -C \/opt\/qdrant storage\u0417\u0430\u0442\u0435\u043c \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437:sudo docker compose pull\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:sudo docker compose up -d\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435:sudo docker compose ps\u0418 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c API:curl http:\/\/127.0.0.1:6333\/readyz\u0418\u0442\u043e\u0433\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443:\u041a\u043b\u0438\u0435\u043d\u0442  \u2193Tailscale  \u2193Tailscale Serve  \u2193127.0.0.1:6333  \u2193Qdrant \u0432 Docker  \u2193\/opt\/qdrant\/storage\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:Qdrant \u043d\u0435\u00a0\u043e\u0442\u043a\u0440\u044b\u0442 \u0432\u0441\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443;\u0434\u043e\u0441\u0442\u0443\u043f \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u00a0\u0432\u0430\u0448\u0435\u0439 Tailscale\u2011\u0441\u0435\u0442\u0438;API \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0449\u0438\u0449\u0451\u043d \u043a\u043b\u044e\u0447\u043e\u043c;\u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430;\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Docker\u2011\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438;\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.\u0414\u043b\u044f\u00a0\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0430\u0434\u0440\u0435\u0441 Tailscale \u0438 API\u2011\u043a\u043b\u044e\u0447:from qdrant_client import QdrantClientclient = QdrantClient(    url=&#187;https:\/\/\u0412\u0410\u0428\\_TAILSCALE\\_\u0410\u0414\u0420\u0415\u0421&#187;,    api_key=&#187;\u0412\u0410\u0428_QDRANT_API_KEY&#187;,)print(client.get_collections())\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u043b\u0438 \u043d\u0430\u0448\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u0443\u044e \u0431\u0430\u0437\u0443 Qdrant \u0438 \u043f\u043e\u00a0\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0441\u0430\u043c \u0432\u0445\u043e\u0434 \u043d\u0430\u00a0\u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u00a0SSH.\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 https:\/\/habr.com\/ru\/articles\/1061724\/<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-488143","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=488143"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488143\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}