{"id":207,"date":"2024-01-03T21:58:06","date_gmt":"2024-01-03T13:58:06","guid":{"rendered":"https:\/\/blog.zangzheyi.top\/?p=207"},"modified":"2024-01-06T20:07:37","modified_gmt":"2024-01-06T12:07:37","slug":"next-terminal-docker-%e5%ae%89%e8%a3%85","status":"publish","type":"post","link":"https:\/\/blog.zangzheyi.top\/index.php\/2024\/01\/03\/next-terminal-docker-%e5%ae%89%e8%a3%85\/","title":{"rendered":"\u3010\u8f6c\u8f7d\u3011Next Terminal | docker \u5b89\u88c5"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u672c\u6587\u7531 <a href=\"http:\/\/ksria.com\/simpread\/\">\u7b80\u60a6 SimpRead<\/a> \u8f6c\u7801\uff0c \u539f\u6587\u5730\u5740 <a href=\"https:\/\/next-terminal.typesafe.cn\/docs\/install\/docker-install.html\">next-terminal.typesafe.cn<\/a><\/p>\n\n\n\n<p>Next Terminal \u5b98\u65b9\u6587\u6863<\/p>\n<\/blockquote>\n\n\n\n<p>\u63d0\u793a\uff1a\u56fd\u5185\u7528\u6237\u53ef\u4ee5\u4f7f\u7528\u963f\u91cc\u4e91\u955c\u50cf\u4ed3\u5e93<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>guacd<\/strong> <code>registry.cn-beijing.aliyuncs.com\/dushixiang\/guacd<\/code><\/li>\n\n\n\n<li><strong>next-terminal<\/strong> <code>registry.cn-beijing.aliyuncs.com\/dushixiang\/next-terminal<\/code><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528 sqlite \u5b58\u50a8\u6570\u636e <a href=\"#\u4f7f\u7528-sqlite-\u5b58\u50a8\u6570\u636e\">#<\/a><\/h2>\n\n\n\n<p>\u5728\u4efb\u610f\u4f4d\u7f6e\u521b\u5efa\u6587\u4ef6\u5939 next-terminal \uff0c\u7136\u540e\u5728\u6b64\u6587\u4ef6\u5939\u4e0b\u521b\u5efa docker-compose.yml \u5e76\u5199\u5165\u5982\u4e0b\u5185\u5bb9\uff1a<\/p>\n\n\n\n<p>yaml<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.3'\nservices:\n  guacd:\n    image: dushixiang\/guacd:latest\n    volumes:\n      - .\/data:\/usr\/local\/next-terminal\/data\n    restart:\n          always\n  next-terminal:\n    image: dushixiang\/next-terminal:latest\n    environment:\n      DB: sqlite\n      GUACD_HOSTNAME: guacd\n      GUACD_PORT: 4822\n    ports:\n      - \"8088:8088\"\n    volumes:\n      - \/etc\/localtime:\/etc\/localtime\n      - .\/data:\/usr\/local\/next-terminal\/data\n    restart:\n      always<\/code><\/pre>\n\n\n\n<p>\u524d\u53f0\u542f\u52a8\u547d\u4ee4<\/p>\n\n\n\n<p>\u540e\u53f0\u542f\u52a8\u547d\u4ee4<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528 mysql \u5b58\u50a8\u6570\u636e <a href=\"#\u4f7f\u7528-mysql-\u5b58\u50a8\u6570\u636e\">#<\/a><\/h2>\n\n\n\n<p>\u5728\u4efb\u610f\u4f4d\u7f6e\u521b\u5efa\u6587\u4ef6\u5939 next-terminal \uff0c\u7136\u540e\u5728\u6b64\u6587\u4ef6\u5939\u4e0b\u521b\u5efa docker-compose.yml \u5e76\u5199\u5165\u5982\u4e0b\u5185\u5bb9\uff1a<\/p>\n\n\n\n<p>yaml<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.3'\nservices:\n  mysql:\n    image: mysql:8.0\n    environment:\n      MYSQL_DATABASE: next-terminal\n      MYSQL_USER: next-terminal\n      MYSQL_PASSWORD: next-terminal\n      MYSQL_ROOT_PASSWORD: next-terminal\n    volumes:\n      - .\/data\/mysql:\/var\/lib\/mysql\n    restart:\n          always\n  guacd:\n    image: dushixiang\/guacd:latest\n    volumes:\n      - .\/data:\/usr\/local\/next-terminal\/data\n    restart:\n          always\n  next-terminal:\n    image: dushixiang\/next-terminal:latest\n    environment:\n      DB: mysql\n      MYSQL_HOSTNAME: mysql\n      MYSQL_PORT: 3306\n      MYSQL_USERNAME: next-terminal\n      MYSQL_PASSWORD: next-terminal\n      MYSQL_DATABASE: next-terminal\n      GUACD_HOSTNAME: guacd\n      GUACD_PORT: 4822\n    ports:\n      - \"8088:8088\"\n    volumes:\n      - \/etc\/localtime:\/etc\/localtime\n      - .\/data:\/usr\/local\/next-terminal\/data\n    depends_on:\n      - mysql\n    restart:\n      always<\/code><\/pre>\n\n\n\n<p>\u524d\u53f0\u542f\u52a8\u547d\u4ee4<\/p>\n\n\n\n<p>\u540e\u53f0\u542f\u52a8\u547d\u4ee4<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528\u5916\u90e8\u7684 mysql \u5b58\u50a8\u6570\u636e <a href=\"#\u4f7f\u7528\u5916\u90e8\u7684-mysql-\u5b58\u50a8\u6570\u636e\">#<\/a><\/h2>\n\n\n\n<p>\u5728\u4efb\u610f\u4f4d\u7f6e\u521b\u5efa\u6587\u4ef6\u5939 next-terminal \uff0c\u7136\u540e\u5728\u6b64\u6587\u4ef6\u5939\u4e0b\u521b\u5efa docker-compose.yml \u5e76\u5199\u5165\u5982\u4e0b\u5185\u5bb9\uff1a<\/p>\n\n\n\n<p>yaml<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.3'\nservices:\n  guacd:\n    image: dushixiang\/guacd:latest\n    volumes:\n      - .\/data:\/usr\/local\/next-terminal\/data\n    restart:\n          always\n  next-terminal:\n    image: dushixiang\/next-terminal:latest\n    environment:\n      DB: mysql\n      # \u8bf7\u4fee\u6539\u4e0b\u9762\u7684 MySql \u914d\u7f6e\uff0c\u9700\u81ea\u884c\u521b\u5efa\u6570\u636e\u5e93\u548c\u7528\u6237\n      MYSQL_HOSTNAME: mysql\n      MYSQL_PORT: 3306\n      MYSQL_USERNAME: next-terminal\n      MYSQL_PASSWORD: next-terminal\n      MYSQL_DATABASE: next-terminal\n      # \u8bf7\u4fee\u6539\u4e0a\u9762\u7684 MySql \u914d\u7f6e\uff0c\u9700\u81ea\u884c\u521b\u5efa\u6570\u636e\u5e93\u548c\u7528\u6237\n      GUACD_HOSTNAME: guacd\n      GUACD_PORT: 4822\n    ports:\n      - \"8088:8088\"\n    volumes:\n      - \/etc\/localtime:\/etc\/localtime\n      - .\/data:\/usr\/local\/next-terminal\/data\n    restart:\n      always<\/code><\/pre>\n\n\n\n<p>\u524d\u53f0\u542f\u52a8\u547d\u4ee4<\/p>\n\n\n\n<p>\u540e\u53f0\u542f\u52a8\u547d\u4ee4<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5f00\u542f sshd \u670d\u52a1 <a href=\"#\u5f00\u542fsshd\u670d\u52a1\">#<\/a><\/h2>\n\n\n\n<p>\u4ee5 sqlite \u6a21\u5f0f\u4e3a\u4f8b\uff0c\u4fee\u6539 docker-compose.yml\uff0c\u589e\u52a0 <strong>\u9ad8\u4eae<\/strong> \u533a\u57df\u7684\u914d\u7f6e<\/p>\n\n\n\n<p>yaml<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.3'\nservices:\n  guacd:\n    image: dushixiang\/guacd:latest\n    volumes:\n      - .\/data:\/usr\/local\/next-terminal\/data\n    restart:\n          always\n  next-terminal:\n    image: dushixiang\/next-terminal:latest\n    environment:\n      DB: sqlite\n      GUACD_HOSTNAME: guacd\n      GUACD_PORT: 4822\n      SSHD_ENABLE: \"true\"\n    ports:\n      - \"8088:8088\"\n      - \"8089:8089\"\n    volumes:\n      - \/etc\/localtime:\/etc\/localtime\n      - .\/data:\/usr\/local\/next-terminal\/data\n      - ~\/.ssh\/id_rsa:\/root\/.ssh\/id_rsa\n    restart:\n          always<\/code><\/pre>\n\n\n\n<p>\u63a5\u4e0b\u6765\u4f7f\u7528 next-terminal \u4e2d\u7684\u7528\u6237\u5373\u53ef\u4f7f\u7528\u3002 \u793a\u4f8b\uff1a<\/p>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh admin@127.0.0.1 -p 8089<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">docker-compose \u66f4\u65b0\u65b9\u5f0f <a href=\"#docker-compose-\u66f4\u65b0\u65b9\u5f0f\">#<\/a><\/h2>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose pull &amp;&amp; docker-compose restart<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528 docker \u547d\u4ee4\u5b89\u88c5 <a href=\"#\u4f7f\u7528docker\u547d\u4ee4\u5b89\u88c5\">#<\/a><\/h2>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5b89\u88c5 guacd\ndocker run --restart=always --name guacd -d \\\n  -v \/root\/next-terminal\/data:\/usr\/local\/next-terminal\/data \\\n  dushixiang\/guacd:latest\n# \u5b89\u88c5 next-terminal\ndocker run --restart=always --name next-terminal -d \\\n  --link guacd \\\n  -p 8088:8088 \\\n  -v \/root\/next-terminal\/data:\/usr\/local\/next-terminal\/data \\\n  -v \/etc\/localtime:\/etc\/localtime \\\n  -e DB=sqlite \\\n  -e GUACD_HOSTNAME=guacd \\\n  -e GUACD_PORT=4822 \\\n  dushixiang\/next-terminal:latest \\<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u73af\u5883\u53d8\u91cf <a href=\"#\u73af\u5883\u53d8\u91cf\">#<\/a><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u53c2\u6570<\/th><th>\u542b\u4e49<\/th><th>\u9ed8\u8ba4\u503c<\/th><\/tr><\/thead><tbody><tr><td>DB<\/td><td>\u6570\u636e\u5e93\u7c7b\u578b\uff0c\u53ef\u9009 [&#8216;sqlite&#8217;,&#8217;mysql&#8217;]<\/td><td>sqlite<\/td><\/tr><tr><td>SQLITE_FILE<\/td><td>sqlite \u6570\u636e\u5e93\u6587\u4ef6\u5b58\u653e\u5730\u5740<\/td><td>\/usr\/local\/next-terminal\/data\/sqlite\/next-terminal.db<\/td><\/tr><tr><td>MYSQL_HOSTNAME<\/td><td>mysql \u6570\u636e\u5e93\u5730\u5740<\/td><td>127.0.0.1<\/td><\/tr><tr><td>MYSQL_PORT<\/td><td>mysql \u6570\u636e\u5e93\u7aef\u53e3<\/td><td>3306<\/td><\/tr><tr><td>MYSQL_USERNAME<\/td><td>mysql \u6570\u636e\u5e93\u7528\u6237<\/td><td>next-terminal<\/td><\/tr><tr><td>MYSQL_PASSWORD<\/td><td>mysql \u6570\u636e\u5e93\u5bc6\u7801<\/td><td>next-terminal<\/td><\/tr><tr><td>MYSQL_DATABASE<\/td><td>mysql \u6570\u636e\u5e93\u540d\u79f0<\/td><td>next-terminal<\/td><\/tr><tr><td>SERVER_ADDR<\/td><td>\u670d\u52a1\u5668\u76d1\u542c\u5730\u5740<\/td><td>0.0.0.0:8088<\/td><\/tr><tr><td>ENCRYPTION_KEY<\/td><td>\u6388\u6743\u51ed\u8bc1\u548c\u8d44\u4ea7\u7684\u5bc6\u7801\uff0c\u5bc6\u94a5\u7b49\u654f\u611f\u4fe1\u606f\u52a0\u5bc6\u7684 key<\/td><td>next-terminal<\/td><\/tr><tr><td>GUACD_HOSTNAME<\/td><td>Guacd \u670d\u52a1\u5730\u5740<\/td><td>127.0.0.1<\/td><\/tr><tr><td>GUACD_PORT<\/td><td>Guacd \u670d\u52a1\u76d1\u542c\u7aef\u53e3<\/td><td>4822<\/td><\/tr><tr><td>GUACD_RECORDING<\/td><td>\u5f55\u5c4f\u6587\u4ef6\u4fdd\u5b58\u76ee\u5f55<\/td><td>\/usr\/local\/next-terminal\/data\/recording<\/td><\/tr><tr><td>GUACD_DRIVE<\/td><td>\u8fdc\u7a0b\u684c\u9762\u6302\u8f7d\u76d8\u6839\u76ee\u5f55<\/td><td>\/usr\/local\/next-terminal\/data\/drive<\/td><\/tr><tr><td>SSHD_ENABLE<\/td><td>\u662f\u5426\u5f00\u542f sshd \u670d\u52a1<\/td><td>false<\/td><\/tr><tr><td>SSHD_ADDR<\/td><td>sshd \u670d\u52a1\u76d1\u542c\u7684\u5730\u5740<\/td><td>0.0.0.0:8089<\/td><\/tr><tr><td>SSHD_KEY<\/td><td>sshd \u670d\u52a1\u4f7f\u7528\u79c1\u94a5\u8def\u5f84<\/td><td>~\/.ssh\/id_rsa<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u7531 \u7b80\u60a6 SimpRead \u8f6c\u7801\uff0c <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2,5],"tags":[9,36,35],"class_list":["post-207","post","type-post","status-publish","format-standard","hentry","category-2","category-5","tag-it","tag-36","tag-35"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/posts\/207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/comments?post=207"}],"version-history":[{"count":2,"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/posts\/207\/revisions"}],"predecessor-version":[{"id":213,"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/posts\/207\/revisions\/213"}],"wp:attachment":[{"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/media?parent=207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/categories?post=207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zangzheyi.top\/index.php\/wp-json\/wp\/v2\/tags?post=207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}