{"id":31915,"date":"2019-10-31T21:43:56","date_gmt":"2019-10-31T18:43:56","guid":{"rendered":"https:\/\/prohoster.info\/blog\/polzovatel-v-docker\/"},"modified":"2019-10-31T21:43:56","modified_gmt":"2019-10-31T18:43:56","slug":"polzovatel-v-docker","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/polzovatel-v-docker","title":{"rendered":"U\u017eivatel v Dockeru","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/aak74\/posts\/\">Andrej Kopylov<\/a><\/noindex>, n\u00e1\u0161 technick\u00fd \u0159editel, m\u00e1 r\u00e1d, aktivn\u011b pou\u017e\u00edv\u00e1 a propaguje Docker. V nov\u00e9m \u010dl\u00e1nku vysv\u011btluje, jak vytvo\u0159it u\u017eivatele v Dockeru. Spr\u00e1vn\u00e1 pr\u00e1ce s nimi, pro\u010d by u\u017eivatel\u00e9 nem\u011bli m\u00edt root pr\u00e1va a jak vy\u0159e\u0161it probl\u00e9m s nesouladem indik\u00e1tor\u016f v Dockerfile.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>V\u0161echny procesy v kontejneru budou b\u011b\u017eet pod u\u017eivatelsk\u00fdm \u00fa\u010dtem root, pokud ho speci\u00e1ln\u011b neur\u010d\u00edme. To se zd\u00e1 jako velmi pohodln\u00e9, proto\u017ee tento u\u017eivatel nem\u00e1 \u017e\u00e1dn\u00e1 omezen\u00ed. Pr\u00e1v\u011b proto je nespr\u00e1vn\u00e9 pracovat pod u\u017eivatelsk\u00fdm \u00fa\u010dtem root z hlediska bezpe\u010dnosti. Pokud nikdo na m\u00edstn\u00edm po\u010d\u00edta\u010di nepracuje s rootov\u00fdmi pr\u00e1vy, mnoho lid\u00ed spou\u0161t\u00ed procesy jako root v kontejnerech.<\/p>\n<p><\/p>\n<p>V\u017edy existuj\u00ed chyby, kter\u00e9 umo\u017e\u0148uj\u00ed \u0161kodliv\u00e9mu k\u00f3du dostat se ven z kontejneru a dostat se na hostitelsk\u00fd po\u010d\u00edta\u010d. P\u0159edpokl\u00e1daje to nejhor\u0161\u00ed, mus\u00edme zajistit, aby procesy b\u011b\u017eely uvnit\u0159 kontejneru pod u\u017eivatelsk\u00fdm \u00fa\u010dtem, kter\u00fd nem\u00e1 \u017e\u00e1dn\u00e1 pr\u00e1va na hostitelsk\u00e9 za\u0159\u00edzen\u00ed.<\/p>\n<p><\/p>\n<h2>Vytvo\u0159en\u00ed u\u017eivatele<\/h2>\n<p><\/p>\n<p>Vytv\u00e1\u0159en\u00ed u\u017eivatele v kontejneru se neli\u0161\u00ed od jeho vytv\u00e1\u0159en\u00ed v linuxov\u00fdch distribuc\u00edch. Nicm\u00e9n\u011b pro r\u016fzn\u00e9 z\u00e1kladn\u00ed obrazy se p\u0159\u00edkazy mohou li\u0161it.<\/p>\n<p><\/p>\n<p>Pro distribuce zalo\u017een\u00e9 na debianu je t\u0159eba do Dockerfile p\u0159idat:<\/p>\n<pre><code class=\"nginx\">RUN groupadd --gid 2000 node \n  &amp;&amp; useradd --uid 2000 --gid node --shell \/bin\/bash --create-home node<\/code><\/pre>\n<p><\/p>\n<p>Pro alpine:<\/p>\n<p><\/p>\n<pre><code class=\"nginx\">RUN addgroup -g 2000 node \n    &amp;&amp; adduser -u 2000 -G node -s \/bin\/sh -D node\n<\/code><\/pre>\n<p><\/p>\n<h2>Spou\u0161t\u011bn\u00ed proces\u016f pod u\u017eivatelsk\u00fdm \u00fa\u010dtem<\/h2>\n<p><\/p>\n<p>Pro spu\u0161t\u011bn\u00ed v\u0161ech n\u00e1sleduj\u00edc\u00edch proces\u016f pod u\u017eivatelsk\u00fdm \u00fa\u010dtem s UID 2000 prove\u010fte:<\/p>\n<p><\/p>\n<pre><code class=\"nginx\">USER 2000<\/code><\/pre>\n<p><\/p>\n<p>Pro spu\u0161t\u011bn\u00ed v\u0161ech n\u00e1sleduj\u00edc\u00edch proces\u016f pod u\u017eivatelsk\u00fdm \u00fa\u010dtem node prove\u010fte:<\/p>\n<p><\/p>\n<pre><code class=\"nginx\">USER node<\/code><\/pre>\n<p><\/p>\n<p>V\u00edce informac\u00ed v <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/engine\/reference\/builder\/#user\">dokumentaci<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h2>P\u0159ipojov\u00e1n\u00ed objem\u016f<\/h2>\n<p><\/p>\n<p>P\u0159i p\u0159ipojov\u00e1n\u00ed objem\u016f do kontejneru zajist\u011bte u\u017eivateli mo\u017enost \u010d\u00edst a (nebo) zapisovat soubory. K tomu mus\u00ed odpov\u00eddat UID (GID) u\u017eivatele v kontejneru a u\u017eivatele mimo kontejner, kter\u00fd m\u00e1 odpov\u00eddaj\u00edc\u00ed pr\u00e1va k souboru. P\u0159itom jm\u00e9na u\u017eivatel\u016f nemaj\u00ed \u017e\u00e1dn\u00fd v\u00fdznam.<\/p>\n<p><\/p>\n<p>\u010casto m\u00e1 na linuxov\u00e9m po\u010d\u00edta\u010di u\u017eivatel UID a GID rovny 1000. Tyto identifik\u00e1tory jsou p\u0159id\u011blov\u00e1ny prvn\u00edmu u\u017eivateli po\u010d\u00edta\u010de.<\/p>\n<p><\/p>\n<p>Zjistit sv\u00e9 identifik\u00e1tory je snadn\u00e9:<\/p>\n<p><\/p>\n<pre><code class=\"nginx\">id<\/code><\/pre>\n<p><\/p>\n<p>Z\u00edsk\u00e1te vy\u010derp\u00e1vaj\u00edc\u00ed informace o sv\u00e9m u\u017eivatelsk\u00e9m \u00fa\u010dtu.<br \/>\nNahra\u010fte 2000 v p\u0159\u00edkladech sv\u00fdm identifik\u00e1torem a v\u0161e bude v po\u0159\u00e1dku.<\/p>\n<p><\/p>\n<h2>P\u0159i\u0159azen\u00ed UID a GID u\u017eivatelsk\u00e9mu \u00fa\u010dtu<\/h2>\n<p><\/p>\n<p>Pokud byl u\u017eivatel vytvo\u0159en d\u0159\u00edve, ale je t\u0159eba zm\u011bnit identifik\u00e1tory, lze to prov\u00e9st takto:<\/p>\n<p><\/p>\n<pre><code class=\"nginx\">RUN usermod -u 1000 node \n  &amp;&amp; groupmod -g 1000 node\n<\/code><\/pre>\n<p><\/p>\n<p>Pokud pou\u017e\u00edv\u00e1te z\u00e1kladn\u00ed obraz alpine, je t\u0159eba nainstalovat bal\u00ed\u010dek shadow:<\/p>\n<p><\/p>\n<pre><code class=\"nginx\">RUN apk add --no-cache shadow<\/code><\/pre>\n<p><\/p>\n<h2>P\u0159ed\u00e1n\u00ed u\u017eivatelsk\u00e9ho identifik\u00e1toru do kontejneru p\u0159i stav\u011bn\u00ed obrazu<\/h2>\n<p><\/p>\n<p>Pokud se v\u00e1\u0161 identifik\u00e1tor a identifik\u00e1tory v\u0161ech lid\u00ed, kte\u0159\u00ed na projektu pracuj\u00ed, shoduj\u00ed, sta\u010d\u00ed uv\u00e9st tento identifik\u00e1tor v Dockerfile. Nicm\u00e9n\u011b \u010dasto se identifik\u00e1tory u\u017eivatel\u016f neshoduj\u00ed.<\/p>\n<p><\/p>\n<p>Jak to dos\u00e1hnout, nen\u00ed hned jasn\u00e9. Pro m\u011b to bylo nejt\u011b\u017e\u0161\u00ed p\u0159i osvojov\u00e1n\u00ed dockera. Mnoho u\u017eivatel\u016f dockera si neuv\u011bdomuje, \u017ee existuj\u00ed r\u016fzn\u00e9 f\u00e1ze \u017eivota obrazu. Nejprve se obraz sestav\u00ed, k tomu se pou\u017e\u00edv\u00e1 Dockerfile. P\u0159i spu\u0161t\u011bn\u00ed kontejneru z obrazu se Dockerfile u\u017e nepou\u017e\u00edv\u00e1.<\/p>\n<p><\/p>\n<p>Vytv\u00e1\u0159en\u00ed u\u017eivatel\u016f by m\u011blo prob\u00edhat p\u0159i stav\u011bn\u00ed obrazu. To plat\u00ed i pro ur\u010den\u00ed u\u017eivatele, pod kter\u00fdm se procesy spou\u0161t\u00ed. To znamen\u00e1, \u017ee n\u011bjak\u00fdm zp\u016fsobem mus\u00edme p\u0159edat dovnit\u0159 kontejneru UID (GID).<\/p>\n<p><\/p>\n<p>Pro pou\u017eit\u00ed extern\u00edch prom\u011bnn\u00fdch v Dockerfile slou\u017e\u00ed direktivy <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/engine\/reference\/builder\/#env\">ENV<\/a><\/noindex> a\u00a0<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/engine\/reference\/builder\/#arg\">ARG<\/a><\/noindex>. Podrobn\u00e9 srovn\u00e1n\u00ed direktiv <noindex><a rel=\"nofollow\" href=\"https:\/\/vsupalov.com\/docker-arg-env-variable-guide\/\">tady<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Dockerfile<\/p>\n<p><\/p>\n<pre><code class=\"nginx\">ARG UID=1000\nARG GID=1000\nENV UID=${UID}\nENV GID=${GID}\nRUN usermod -u $UID node \n  &amp;&amp; groupmod -g $GID node\n<\/code><\/pre>\n<p><\/p>\n<p>P\u0159edat argumenty p\u0159es docker-compose lze takto:<\/p>\n<p><\/p>\n<p>docker-compose<\/p>\n<p><\/p>\n<pre><code class=\"nginx\">build:\n  context: .\/src\/backend\n  args:\n    UID: 1000\n    GID: 1000\n<\/code><\/pre>\n<p><\/p>\n<p>P.S. Pro osvojen\u00ed v\u0161ech taj\u016f dockera nesta\u010d\u00ed \u010d\u00edst dokumentaci nebo \u010dl\u00e1nky. Je t\u0159eba hodn\u011b cvi\u010dit, je t\u0159eba c\u00edtit docker.<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/448480\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0410\u043d\u0434\u0440\u0435\u0439 \u041a\u043e\u043f\u044b\u043b\u043e\u0432, \u043d\u0430\u0448 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440, \u043b\u044e\u0431\u0438\u0442, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u00a0\u043f\u0440\u043e\u043f\u0430\u0433\u0430\u043d\u0434\u0438\u0440\u0443\u0435\u0442 Docker. \u0412 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043d \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432\u00a0Docker. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0438\u043c\u0438, \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\u00a0\u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u00a0root \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0438, \u043a\u0430\u043a \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u0432\u00a0Dockerfile. \u0412\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u0437-\u043f\u043e\u0434 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root, \u0435\u0441\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0435\u0433\u043e \u043d\u0435\u00a0\u0443\u043a\u0430\u0437\u0430\u0442\u044c. \u042d\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u0432\u0435\u0434\u044c \u0443\u00a0\u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31915","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0410\u043d\u0434\u0440\u0435\u0439 \u041a\u043e\u043f\u044b\u043b\u043e\u0432, \u043d\u0430\u0448 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440, \u043b\u044e\u0431\u0438\u0442, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438 \u043f\u0440\u043e\u043f\u0430\u0433\u0430\u043d\u0434\u0438\u0440\u0443\u0435\u0442 Docker.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/polzovatel-v-docker\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432 Docker | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0410\u043d\u0434\u0440\u0435\u0439 \u041a\u043e\u043f\u044b\u043b\u043e\u0432, \u043d\u0430\u0448 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440, \u043b\u044e\u0431\u0438\u0442, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438 \u043f\u0440\u043e\u043f\u0430\u0433\u0430\u043d\u0434\u0438\u0440\u0443\u0435\u0442 Docker.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/polzovatel-v-docker\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:43:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:43:56+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47U\u017eivatel v Dockeru | ProHoster","description":"Andrej Kopylov, n\u00e1\u0161 technick\u00fd \u0159editel, m\u00e1 dockera r\u00e1d, aktivn\u011b ho vyu\u017e\u00edv\u00e1 a propaguje.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/polzovatel-v-docker","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432 Docker | ProHoster","og:description":"\u0410\u043d\u0434\u0440\u0435\u0439 \u041a\u043e\u043f\u044b\u043b\u043e\u0432, \u043d\u0430\u0448 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440, \u043b\u044e\u0431\u0438\u0442, \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438 \u043f\u0440\u043e\u043f\u0430\u0433\u0430\u043d\u0434\u0438\u0440\u0443\u0435\u0442 Docker.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/polzovatel-v-docker","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:43:56+00:00","article:modified_time":"2019-10-31T18:43:56+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31915","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 08:25:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:08:10","updated":"2026-01-21 08:25:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/31915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=31915"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/31915\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=31915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=31915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=31915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}