{"id":4807,"date":"2025-08-04T09:45:18","date_gmt":"2025-08-04T00:45:18","guid":{"rendered":"https:\/\/eternalsphere.net\/echoes\/?p=4807"},"modified":"2026-06-06T09:05:41","modified_gmt":"2026-06-06T00:05:41","slug":"fm0ky8lwzzn43vz","status":"publish","type":"post","link":"https:\/\/eternalsphere.net\/echoes\/index.php\/2025\/08\/04\/fm0ky8lwzzn43vz\/","title":{"rendered":"Ubuntu \u5b89\u88c5 Don&#8217;t Starve Together \u4e13\u7528\u670d\u52a1\u5668\uff08\u96c6\u4e2d\u76ee\u5f55 + systemd \u81ea\u542f\uff09"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u672c\u6559\u7a0b\u9002\u7528\u4e8e Ubuntu 20.04\/22.04\uff0c\u90e8\u7f72 <strong>Don&#8217;t Starve Together\uff08DST\uff09\u8054\u673a\u7248\u4e13\u7528\u670d\u52a1\u5668<\/strong>\uff0c\u91c7\u7528<strong>\u96c6\u4e2d\u5f0f\u76ee\u5f55\u7ba1\u7406\u7ed3\u6784<\/strong>\uff0c\u5373\u670d\u52a1\u7aef\u7a0b\u5e8f\u3001\u914d\u7f6e\u6587\u4ef6\u3001\u4e16\u754c\u5b58\u6863\u3001MOD \u5747\u7edf\u4e00\u653e\u5728\u4e00\u4e2a\u76ee\u5f55\u4e0b\uff0c\u4fbf\u4e8e\u7ef4\u62a4\u3001\u5907\u4efd\u548c\u8fc1\u79fb\u3002<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcc1 \u8def\u5f84\u7ed3\u6784\u8bbe\u5b9a<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u5185\u5bb9<\/th><th>\u8def\u5f84\u793a\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>\u5b89\u88c5\u76ee\u5f55<\/td><td><code>\/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server<\/code><\/td><\/tr><tr><td>\u5b58\u6863\u914d\u7f6e\u8def\u5f84<\/td><td>\u540c\u4e0a\uff0c\u4f4d\u4e8e <code>.klei\/DoNotStarveTogether\/Cluster_1\/<\/code> \u5b50\u76ee\u5f55\u4e2d<\/td><\/tr><tr><td>\u542f\u52a8\u811a\u672c<\/td><td><code>start.sh<\/code> \u4f4d\u4e8e <code>dst_dedicated_server<\/code> \u6839\u76ee\u5f55\u4e0b<\/td><\/tr><tr><td>\u6267\u884c\u7528\u6237<\/td><td>\u5047\u8bbe\u4e3a <code>youruser<\/code>\uff08\u666e\u901a\u975e root \u7528\u6237\uff0c\u8bf7\u66ff\u6362\u4e3a\u5b9e\u9645\u7528\u6237\u540d\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2460 \u5b89\u88c5\u4f9d\u8d56\u548c SteamCMD<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88c5 32 \u4f4d\u8fd0\u884c\u73af\u5883\u548c SteamCMD\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sudo add-apt-repository multiverse<br>sudo dpkg --add-architecture i386<br>sudo apt update<br>sudo apt install lib32gcc-s1 steamcmd<br>sudo apt remove libcurl4-gnutls-dev<br>sudo apt install libcurl4-gnutls-dev:i386<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u786e\u8ba4\u5b89\u88c5\u6210\u529f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/usr\/games\/steamcmd<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u51fa\u73b0 SteamCMD \u547d\u4ee4\u884c\u754c\u9762\u540e\u8f93\u5165 <code>quit<\/code> \u9000\u51fa\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2461 \u5b89\u88c5 DST \u670d\u52a1\u7aef<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u670d\u52a1\u7aef\u76ee\u5f55\u5e76\u5b89\u88c5\u6e38\u620f\u670d\u52a1\u7aef\u6587\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>mkdir -p \/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88c5 DST\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/usr\/games\/steamcmd +force_install_dir \/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server +login anonymous +app_update 343050 validate +quit<br><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2462 \u4e0a\u4f20\u6216\u590d\u5236\u4e16\u754c\u5b58\u6863<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ece\u5ba2\u6237\u7aef\u6e38\u620f\u4e2d\u5bfc\u51fa\u7684\u4e16\u754c\u5b58\u6863\uff08\u5982 <code>Cluster_1<\/code> \u6587\u4ef6\u5939\uff09\uff0c\u5e94\u4e0a\u4f20\u81f3\u4ee5\u4e0b\u8def\u5f84\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/.klei\/DoNotStarveTogether\/<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u547d\u4ee4\u793a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>mkdir -p \/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/.klei\/DoNotStarveTogether<br>scp -r Cluster_1 youruser@server_ip:\/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/.klei\/DoNotStarveTogether\/<br><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2463 \u6dfb\u52a0\u670d\u52a1\u5668 Token<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u524d\u5f80 <a>Klei \u6e38\u620f\u670d\u52a1\u5668\u9875\u9762<\/a> \u83b7\u53d6 token\uff0c\u5199\u5165\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vim \/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/.klei\/DoNotStarveTogether\/Cluster_1\/cluster_token.txt<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7c98\u8d34\u5e76\u4fdd\u5b58\uff0c\u5185\u5bb9\u5e94\u4e3a\u4e00\u884c\u5b57\u7b26\u4e32\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2464 \u914d\u7f6e\u7aef\u53e3\uff08\u5173\u952e\uff09<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u7f16\u8f91 <code>cluster.ini<\/code>\uff1a<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>[SHARD]<br>shard_enabled = true<br>bind_ip = 127.0.0.1<br>master_ip = 127.0.0.1<br>master_port = 10889<br>cluster_key = secret_key_123<br><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u7f16\u8f91 <code>Master\/server.ini<\/code>\uff1a<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>[NETWORK]<br>server_port = 10999<br><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u7f16\u8f91 <code>Caves\/server.ini<\/code>\uff1a<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>[NETWORK]<br>server_port = 11000<br><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2465 \u5f00\u653e\u9632\u706b\u5899\u7aef\u53e3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u4f7f\u7528 UFW\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sudo ufw allow 10999\/udp     # Master \u4e16\u754c<br>sudo ufw allow 11000\/udp     # Caves \u4e16\u754c<br>sudo ufw allow 10889\/tcp     # Shard \u5206\u7247\u8fde\u63a5<br>sudo ufw allow 8767\/udp      # Steam\u5927\u5385\u5339\u914d\uff08\u53ef\u9009\uff09<br>sudo ufw allow 27017\/udp     # Steam\u5927\u5385\u5339\u914d\uff08\u53ef\u9009\uff09<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u67e5\u770b\u72b6\u6001\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sudo ufw status<br><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2466 \u7f16\u5199\u542f\u52a8\u811a\u672c<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>vim \/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/start.sh<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>#!\/bin\/bash<br><br>install_dir=\"\/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\"<br>cluster_name=\"Cluster_1\"<br>dontstarve_dir=\"$install_dir\/.klei\/DoNotStarveTogether\"<br><br>function fail()<br>{<br>    echo Error: \"$@\" &gt;&amp;2<br>    exit 1<br>}<br><br>function check_for_file()<br>{<br>    if [ ! -e \"$1\" ]; then<br>        fail \"Missing file: $1\"<br>    fi<br>}<br><br>check_for_file \"$dontstarve_dir\/$cluster_name\/cluster.ini\"<br>check_for_file \"$dontstarve_dir\/$cluster_name\/cluster_token.txt\"<br>check_for_file \"$dontstarve_dir\/$cluster_name\/Master\/server.ini\"<br>check_for_file \"$dontstarve_dir\/$cluster_name\/Caves\/server.ini\"<br>check_for_file \"$install_dir\/bin\"<br><br>cd \"$install_dir\/bin\" || fail<br><br>export KLEI_SAVE_DIR=\"$dontstarve_dir\"<br><br>run_shared=(.\/dontstarve_dedicated_server_nullrenderer)<br>run_shared+=(-console)<br>run_shared+=(-cluster \"$cluster_name\")<br>run_shared+=(-monitor_parent_process $$)<br>run_shared+=(-shard)<br><br>\"${run_shared[@]}\" Caves | sed 's\/^\/Caves: \/' &amp;<br>\"${run_shared[@]}\" Master | sed 's\/^\/Master: \/'<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u5b58\u5e76\u6388\u6743\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>chmod +x \/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/start.sh<br><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2467 \u914d\u7f6e systemd \u670d\u52a1<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sudo vim \/etc\/systemd\/system\/dst_server.service<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5185\u5bb9\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>[Unit]<br>Description=Don't Starve Together Dedicated Server<br>After=network.target<br><br>[Service]<br>Type=simple<br>User=youruser<br>WorkingDirectory=\/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server<br>ExecStart=\/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/start.sh<br>Restart=on-failure<br>RestartSec=5<br>Environment=KLEI_SAVE_DIR=\/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/.klei\/DoNotStarveTogether<br><br>[Install]<br>WantedBy=multi-user.target<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u7528\u5e76\u542f\u52a8\u670d\u52a1\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sudo systemctl daemon-reexec<br>sudo systemctl daemon-reload<br>sudo systemctl enable dst_server<br>sudo systemctl start dst_server<br><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd0d \u67e5\u770b\u8fd0\u884c\u72b6\u6001<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>sudo systemctl status dst_server<br>journalctl -u dst_server -e --no-pager<br><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 \u603b\u7ed3\u76ee\u5f55\u7ed3\u6784<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server\/<br>\u251c\u2500\u2500 bin\/                            # DST \u670d\u52a1\u7aef<br>\u251c\u2500\u2500 mods\/                           # MOD\u76ee\u5f55<br>\u251c\u2500\u2500 start.sh                        # \u542f\u52a8\u811a\u672c<br>\u251c\u2500\u2500 .klei\/DoNotStarveTogether\/<br>\u2502   \u2514\u2500\u2500 Cluster_1\/<br>\u2502       \u251c\u2500\u2500 cluster.ini<br>\u2502       \u251c\u2500\u2500 cluster_token.txt<br>\u2502       \u251c\u2500\u2500 Master\/server.ini<br>\u2502       \u2514\u2500\u2500 Caves\/server.ini<br><\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 \u5e38\u89c1\u95ee\u9898\u63d0\u9192<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u95ee\u9898<\/th><th>\u539f\u56e0<\/th><th>\u89e3\u51b3\u65b9\u6cd5<\/th><\/tr><\/thead><tbody><tr><td>\u670d\u52a1\u5668\u5927\u5385\u65e0\u6cd5\u641c\u7d22<\/td><td>\u672a\u5f00\u653e UDP \u7aef\u53e3<\/td><td>\u68c0\u67e5 10999\/11000 UDP \u662f\u5426\u5f00\u653e<\/td><\/tr><tr><td>\u6d1e\u7a74\u65e0\u6cd5\u8fdb\u5165<\/td><td>Caves \u914d\u7f6e\u9519\u8bef\u6216\u7aef\u53e3\u88ab\u5360\u7528<\/td><td>\u786e\u4fdd <code>server.ini<\/code> \u548c <code>cluster.ini<\/code> \u8bbe\u7f6e\u6b63\u786e<\/td><\/tr><tr><td>\u591a\u4e2a\u670d\u52a1\u5668\u51b2\u7a81<\/td><td>\u4f7f\u7528\u4e86\u76f8\u540c\u7aef\u53e3<\/td><td>\u7ed9\u6bcf\u4e2a\u670d\u52a1\u5668\u5206\u914d\u4e0d\u540c\u7aef\u53e3\u7ec4<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u5c31\u662f\u4e00\u4efd<strong>\u53ef\u5f00\u673a\u81ea\u542f\u3001\u96c6\u4e2d\u7ba1\u7406\u3001\u80fd\u76f4\u63a5\u516c\u7f51\u8fd0\u884c\u7684 DST \u670d\u52a1\u7aef\u90e8\u7f72\u5168\u6559\u7a0b\uff08\u542b\u7aef\u53e3\u914d\u7f6e\uff09<\/strong>\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6559\u7a0b\u9002\u7528\u4e8e Ubuntu 20.04\/22.04\uff0c\u90e8\u7f72 Don&#8217;t Starve Together\uff08DST\uff09\u8054\u673a\u7248\u4e13\u7528\u670d\u52a1\u5668\uff0c\u91c7\u7528\u96c6\u4e2d\u5f0f\u76ee\u5f55\u7ba1\u7406\u7ed3\u6784\uff0c\u5373\u670d\u52a1\u7aef\u7a0b\u5e8f\u3001\u914d\u7f6e\u6587\u4ef6\u3001\u4e16\u754c\u5b58\u6863\u3001MOD \u5747\u7edf\u4e00\u653e\u5728\u4e00\u4e2a\u76ee\u5f55\u4e0b\uff0c\u4fbf\u4e8e\u7ef4\u62a4\u3001\u5907\u4efd\u548c\u8fc1\u79fb\u3002 \ud83d\udcc1 \u8def\u5f84\u7ed3\u6784\u8bbe\u5b9a \u5185\u5bb9 \u8def\u5f84\u793a\u4f8b \u5b89\u88c5\u76ee\u5f55 \/home\/youruser\/Steam\/steamapps\/common\/dst_dedicated_server \u5b58\u6863\u914d\u7f6e\u8def\u5f84 \u540c\u4e0a\uff0c\u4f4d\u4e8e .klei\/DoNotStarveTogether\/Cluster_1\/ \u5b50\u76ee\u5f55\u4e2d \u542f\u52a8\u811a\u672c start.sh \u4f4d\u4e8e dst_dedicated_server \u6839\u76ee\u5f55\u4e0b \u6267\u884c\u7528\u6237 \u5047\u8bbe\u4e3a youruser\uff08\u666e\u901a\u975e root \u7528\u6237\uff0c\u8bf7\u66ff\u6362\u4e3a\u5b9e\u9645\u7528\u6237\u540d\uff09 \u2460 \u5b89\u88c5\u4f9d\u8d56\u548c SteamCMD \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88c5 32 \u4f4d\u8fd0\u884c\u73af\u5883\u548c SteamCMD\uff1a sudo add-apt-repository multiversesudo dpkg &#8211;add-architecture i386sudo apt updatesudo apt install lib32gcc-s1 steamcmdsudo apt remove libcurl4-gnutls-devsudo apt &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[188],"tags":[],"class_list":["post-4807","post","type-post","status-publish","format-standard","hentry","category-4tszqli5pumymaa"],"_links":{"self":[{"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/posts\/4807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/comments?post=4807"}],"version-history":[{"count":3,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/posts\/4807\/revisions"}],"predecessor-version":[{"id":4811,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/posts\/4807\/revisions\/4811"}],"wp:attachment":[{"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/media?parent=4807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/categories?post=4807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/tags?post=4807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}