{"id":3017,"date":"2026-01-17T15:51:40","date_gmt":"2026-01-17T12:51:40","guid":{"rendered":"https:\/\/mechanogurus.ru\/?p=3017"},"modified":"2026-01-17T16:18:03","modified_gmt":"2026-01-17T13:18:03","slug":"%d0%ba%d0%b0%d0%ba-%d1%83%d0%b4%d0%b0%d0%bb%d0%b8%d1%82%d1%8c-%d0%b7%d0%b0%d0%bf%d0%b8%d1%81%d1%8c-%d0%be%d1%80%d0%b3%d0%b0%d0%bd%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d0%b8-%d0%b2-zammad-self-hosted-ubuntu","status":"publish","type":"post","link":"https:\/\/mechanogurus.ru\/?p=3017","title":{"rendered":"\u041a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 Zammad (self-hosted, Ubuntu 22.04)"},"content":{"rendered":"\n<p class=\"has-system-font-font-family\">\u0412 Zammad \u0432\u0435\u0440\u0441\u0438\u0438 6.x (\u0432\u043a\u043b\u044e\u0447\u0430\u044f 6.5.x) \u0432 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043d\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u201c\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e\u201d. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, UI \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0438\u0448\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451 (active = false), \u043d\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n\n\n\n<p class=\"has-system-font-font-family\">\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 SSH \u0438 Rails-\u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 self-hosted Zammad, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u043d\u0430 Ubuntu 22.04 (\u043d\u0435 Docker).<\/p>\n\n\n\n<p class=\"has-system-font-font-family\"><strong>\u041a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\">\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438:<\/p>\n\n\n\n<ul class=\"wp-block-list has-system-font-font-family\">\n<li>\u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \/ \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439;<\/li>\n\n\n\n<li>\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 (\u0444\u043e\u0440\u043c\u044b, \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, n8n);<\/li>\n\n\n\n<li>\u0443 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 0 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 0 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439;<\/li>\n\n\n\n<li>\u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u201c\u043f\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c\u201d \u0431\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d-\u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-system-font-font-family\">\u26a0\ufe0f \u0412\u0430\u0436\u043d\u043e: \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0438\u0436\u0435 \u043d\u0435\u043e\u0431\u0440\u0430\u0442\u0438\u043c\u044b. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n\n\n\n<p class=\"has-system-font-font-family\"><strong>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list has-system-font-font-family\">\n<li>Zammad \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0435 \u0432 Docker<\/li>\n\n\n\n<li>\u041e\u0421: Ubuntu 22.04<\/li>\n\n\n\n<li>\u0415\u0441\u0442\u044c SSH-\u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443<\/li>\n\n\n\n<li>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c zammad \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442<\/li>\n\n\n\n<li>\u0412\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 sudo<\/li>\n<\/ul>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\"><strong>\u0428\u0430\u0433 1. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0430\u0432<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\">\u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Zammad \u0438 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 bundle \u0438 vendor \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\/zammad\n\nsudo chown -R zammad:zammad \/opt\/zammad\/.bundle \/opt\/zammad\/vendor 2&gt;\/dev\/null || true<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\"><strong>\u0428\u0430\u0433 2. \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u201c\u0431\u0438\u0442\u044b\u0445\u201d \u043a\u0435\u0448\u0435\u0439 Bundler (\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e)<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\">\u0418\u043d\u043e\u0433\u0434\u0430 Rails-\u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u044b\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0445 git-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041e\u0447\u0438\u0441\u0442\u0438\u043c \u043a\u0435\u0448\u0438:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -u zammad -H bash -lc 'rm -rf \/opt\/zammad\/vendor\/bundle\/ruby\/*\/bundler\/gems\/omniauth-weibo-oauth2-* 2&gt;\/dev\/null || true'\nsudo -u zammad -H bash -lc 'rm -rf \/opt\/zammad\/vendor\/bundle\/ruby\/*\/cache\/bundler\/git\/omniauth-weibo-oauth2-* 2&gt;\/dev\/null || true'\nsudo -u zammad -H bash -lc 'rm -rf \/opt\/zammad\/.bundle\/cache\/bundler\/git\/omniauth-weibo-oauth2-* 2&gt;\/dev\/null || true'<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\"><strong>\u0428\u0430\u0433 3. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 Bundler (\u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 Ruby Zammad)<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\">Zammad \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 Ruby, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 ruby \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\/zammad\nsudo -u zammad -H bash -lc '\nexport PATH=\/opt\/zammad\/bin:\/opt\/zammad\/vendor\/ruby-3.2.8\/bin:$PATH\nexport RAILS_ENV=production\nruby \/opt\/zammad\/bin\/bundle config set --local path vendor\/bundle\nruby \/opt\/zammad\/bin\/bundle install --without test development --jobs 4\n'<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\"><br><strong>\u0428\u0430\u0433 4. \u0417\u0430\u043f\u0443\u0441\u043a Rails-\u043a\u043e\u043d\u0441\u043e\u043b\u0438 Zammad<\/strong><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\/zammad\nsudo -u zammad -H bash -lc '\nexport PATH=\/opt\/zammad\/bin:\/opt\/zammad\/vendor\/ruby-3.2.8\/bin:$PATH\nexport RAILS_ENV=production\nruby \/opt\/zammad\/bin\/bundle exec rails c\n'<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\">\u0412\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435:<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Loading production environment (Rails ...)\npry(main)&gt;<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\"><strong>\u0428\u0430\u0433 5. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\">\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043e.<\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\"><strong>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Organization.where(active: false).count<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\"><br><strong>\u0421\u043f\u0438\u0441\u043e\u043a ID \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Organization.where(active: false).pluck(:id, :name)<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\"><br><strong>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e: \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u043d\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/strong><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>inactive = Organization.where(active: false)\ninactive.map { |o| &#91;o.id, o.name, o.members.count] }<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\">\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>active = false<\/li>\n\n\n\n<li>members.count = 0<\/li>\n<\/ul>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\"><strong>\u0428\u0430\u0433 6. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\">\u0415\u0441\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>inactive.each do |o|\n  puts \"Deleting ##{o.id} #{o.name}\"\n  o.destroy!\nend<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\">destroy! \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u2014 \u043e\u043d \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0441\u0432\u044f\u0437\u0438.<br><br><strong>\u0428\u0430\u0433 7. \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/strong><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Organization.where(active: false).count<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:500\">\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u201c0\u201d<br><br><strong>\u0428\u0430\u0433 8. \u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/strong><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exit<\/code><\/pre>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\"><strong>\u0427\u0430\u0441\u0442\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0441\u043e\u0432\u0435\u0442\u044b<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\"><strong>\u274c SyntaxError \u0432&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\"><strong>pry<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\">\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u043c\u0443\u0441\u043e\u0440\u0430 (shell-\u043a\u043e\u043c\u0430\u043d\u0434, |, ~, \u043b\u043e\u0433\u043e\u0432).<\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\">\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0432\u044b\u0439\u0442\u0438 (exit) \u0438 \u0437\u0430\u0439\u0442\u0438 \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\"><strong>\u274c\u00a0NameError: undefined local variable<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\">\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0435 org.destroy! \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\"><strong>\u26a0\ufe0f \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\" style=\"font-style:normal;font-weight:100\">\u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e:<\/p>\n\n\n\n<ul class=\"wp-block-list has-system-font-font-family\">\n<li>\u0435\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438;<\/li>\n\n\n\n<li>\u0435\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0442\u0438\u043a\u0435\u0442\u044b;<\/li>\n\n\n\n<li>\u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-system-font-font-family\">\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0443\u0436\u043d\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443.<\/p>\n\n\n\n<p class=\"has-system-font-font-family\"><strong>\u0418\u0442\u043e\u0433<\/strong><\/p>\n\n\n\n<p class=\"has-system-font-font-family\">\u0425\u043e\u0442\u044f Zammad \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 UI, self-hosted \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0430\u0451\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0447\u0435\u0440\u0435\u0437 Rails-\u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043c\u0435\u0442\u043e\u0434:<\/p>\n\n\n\n<ul class=\"wp-block-list has-system-font-font-family\">\n<li>\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d \u043f\u0440\u0438 \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0439;<\/li>\n\n\n\n<li>\u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f production;<\/li>\n\n\n\n<li>\u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 Ubuntu 22.04;<\/li>\n\n\n\n<li>\u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 Docker \u0438\u043b\u0438 system Ruby.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 Zammad \u0432\u0435\u0440\u0441\u0438\u0438 6.x (\u0432\u043a\u043b\u044e\u0447\u0430\u044f 6.5.x) \u0432 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043d\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u201c\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e\u201d. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u0438 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, UI \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0438\u0448\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451 (active = false), \u043d\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 SSH \u0438 Rails-\u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 self-hosted Zammad, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3019,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-3017","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-zammad"],"_links":{"self":[{"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=\/wp\/v2\/posts\/3017","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3017"}],"version-history":[{"count":3,"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=\/wp\/v2\/posts\/3017\/revisions"}],"predecessor-version":[{"id":3023,"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=\/wp\/v2\/posts\/3017\/revisions\/3023"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=\/wp\/v2\/media\/3019"}],"wp:attachment":[{"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mechanogurus.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}