游戏服务器部署中心
153 |选择你想要部署的游戏服务器,一键快速安装
154 | 155 |加载游戏列表中...
157 |├── .github └── workflows │ ├── docker-no-cache-publish.yml │ └── docker-publish.yml ├── Dockerfile ├── LICENSE ├── README.md ├── app ├── index.html ├── package.json ├── src │ ├── App.css │ ├── App.tsx │ ├── api.ts │ ├── components │ │ ├── BetaNotice.tsx │ │ ├── ContainerInfo.tsx │ │ ├── FileManager.tsx │ │ ├── FileManagerHelpModal.tsx │ │ ├── FrpDocModal.tsx │ │ ├── FrpManager.tsx │ │ ├── Login.tsx │ │ ├── NotFound.tsx │ │ ├── ProtectedRoute.tsx │ │ ├── Register.tsx │ │ ├── ServerTerminal.tsx │ │ ├── SimpleServerTerminal.tsx │ │ ├── Terminal.tsx │ │ ├── TerminalExample.tsx │ │ ├── TerminalManager.tsx │ │ └── XTerminal.tsx │ ├── context │ │ └── AuthContext.tsx │ ├── hooks │ │ ├── useIsMobile.ts │ │ └── useTerminal.ts │ ├── index.css │ ├── index.html │ ├── main.js │ ├── main.tsx │ ├── monaco-config.ts │ ├── pages │ │ ├── About.tsx │ │ ├── Environment.tsx │ │ ├── ServerGuide.tsx │ │ └── Settings.tsx │ ├── services │ │ └── terminalService.ts │ └── types.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts ├── docker-compose.yml ├── docs ├── assets │ ├── 08e8eabffd009b7e6283d505df989e30-20250527200418-mrhe5em.png │ ├── 68965b46d69230aa67360d4739fd33bc-20250527200021-v9j00xs.png │ ├── 8b119a50dd749371b96dc8d682a2a134-20250527194120-372sqw8.png │ ├── 91cc851dea80f19c7d948be1985eb2f6-20250527200351-rbxsund.png │ ├── QQ20250527-203735-20250527203749-def1cz4.png │ ├── cf13b683aa564ee8bcbf456204eb7f7f-20250527195825-6fg8gkr.png │ ├── image-20250527205016-ftlve2s.png │ ├── image-20250527205455-st3i6wo.png │ ├── image-20250527205703-y73278h.png │ ├── image-20250527210756-arh5p3u.png │ ├── image-20250527211647-ygyk68a.png │ ├── image-20250527211757-549t0nv.png │ └── image-20250527212021-6qk2z3s.png ├── 内网穿透的使用方法.md ├── 导入第三方游戏服务端.md ├── 常见问题.md └── 部署指南.md ├── frp ├── LoCyanFrp │ ├── frpc │ ├── frpc.ini │ └── frpc_full.ini ├── Sakura │ └── frpc ├── frpc │ ├── frpc │ └── frpc.toml ├── mefrp │ └── frpc └── npc │ └── frpc └── server ├── MCdownloads.py ├── api_server.py ├── auth_middleware.py ├── auth_service.py ├── config.py ├── direct_installer.py ├── game_installer.py ├── installgame.json ├── pty_manager.py ├── sponsor_validator.py └── start_web.sh /.github/workflows/docker-no-cache-publish.yml: -------------------------------------------------------------------------------- 1 | name: Docker_Push_no_cache 2 | 3 | on: 4 | workflow_dispatch: # 手动触发 5 | 6 | jobs: 7 | docker: 8 | runs-on: ubuntu-latest 9 | steps: 10 | # 第一步:检出代码 11 | - name: 拉取仓库代码 12 | uses: actions/checkout@v3 13 | 14 | # 第二步:设置构建环境 15 | - name: 配置QEMU模拟器 16 | uses: docker/setup-qemu-action@v2 17 | 18 | - name: 配置Docker Buildx 19 | uses: docker/setup-buildx-action@v2 20 | with: 21 | driver-opts: network=host 22 | 23 | # 第三步:登录所有镜像仓库 24 | - name: 登录Docker仓库 25 | uses: docker/login-action@v2 26 | with: 27 | username: ${{ secrets.DOCKERHUB_USERNAME }} 28 | password: ${{ secrets.DOCKERHUB_TOKEN }} 29 | - name: 登录GitHub容器仓库 30 | uses: docker/login-action@v2 31 | with: 32 | registry: ghcr.io 33 | username: ${{ github.repository_owner }} 34 | password: ${{ secrets.GITHUB_TOKEN }} 35 | 36 | # 第四步:构建并推送镜像(不使用缓存) 37 | - name: 构建推送Docker镜像(无缓存) 38 | uses: docker/build-push-action@v4 39 | with: 40 | context: . 41 | push: true 42 | tags: | 43 | xiaozhu674/gameserver:0.5 44 | ghcr.io/${{ github.repository_owner }}/gameserver:0.5 45 | # 明确禁用缓存 46 | no-cache: true 47 | 48 | # 第五步:单独创建缓存供后续使用 49 | - name: 创建构建缓存 50 | uses: docker/build-push-action@v4 51 | with: 52 | context: . 53 | push: false # 不推送镜像 54 | tags: | 55 | xiaozhu674/gameserver:0.5 56 | cache-from: type=gha 57 | cache-to: type=gha,mode=max 58 | -------------------------------------------------------------------------------- /.github/workflows/docker-publish.yml: -------------------------------------------------------------------------------- 1 | name: Docker_Push 2 | 3 | on: 4 | workflow_dispatch: # 手动触发 5 | 6 | jobs: 7 | docker: 8 | runs-on: ubuntu-latest 9 | steps: 10 | # 第一步:检出代码 11 | - name: 拉取仓库代码 12 | uses: actions/checkout@v3 13 | 14 | # 第二步:设置构建环境 15 | - name: 配置QEMU模拟器 16 | uses: docker/setup-qemu-action@v2 17 | 18 | - name: 配置Docker Buildx 19 | uses: docker/setup-buildx-action@v2 20 | with: 21 | driver-opts: network=host 22 | 23 | # 第三步:登录所有镜像仓库 24 | - name: 登录Docker仓库 25 | uses: docker/login-action@v2 26 | with: 27 | username: ${{ secrets.DOCKERHUB_USERNAME }} 28 | password: ${{ secrets.DOCKERHUB_TOKEN }} 29 | - name: 登录GitHub容器仓库 30 | uses: docker/login-action@v2 31 | with: 32 | registry: ghcr.io 33 | username: ${{ github.repository_owner }} # 改为明确的用户名 34 | password: ${{ secrets.GITHUB_TOKEN }} 35 | 36 | # 第四步:构建并推送镜像(带缓存功能) 37 | - name: 缓存并构建推送DockerHub 38 | uses: docker/build-push-action@v4 39 | with: 40 | context: . # 构建上下文路径 41 | push: true # 构建后自动推送 42 | tags: | 43 | xiaozhu674/gameservermanager:2.0.3 44 | xiaozhu674/gameservermanager:latest 45 | ghcr.io/${{ github.repository_owner }}/gameservermanager:2.0.3 46 | ghcr.io/${{ github.repository_owner }}/gameservermanager:latest 47 | cache-from: type=gha # 使用GitHub缓存 48 | cache-to: type=gha,mode=max # 写入GitHub缓存 49 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:bullseye-slim 2 | 3 | ENV DEBIAN_FRONTEND=noninteractive \ 4 | STEAM_USER=steam \ 5 | STEAM_HOME=/home/steam \ 6 | STEAMCMD_DIR=/home/steam/steamcmd \ 7 | GAMES_DIR=/home/steam/games 8 | 9 | # 将apt源改为中国镜像源(清华TUNA) 10 | RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \ 11 | && sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list 12 | 13 | # 安装SteamCMD和常见依赖(包括32位库) 14 | RUN apt-get update && apt-get upgrade -y \ 15 | && dpkg --add-architecture i386 \ 16 | && apt-get update \ 17 | && apt-get install -y --no-install-recommends \ 18 | ca-certificates \ 19 | locales \ 20 | wget \ 21 | curl \ 22 | jq \ 23 | xdg-user-dirs \ 24 | libncurses5:i386 \ 25 | libbz2-1.0:i386 \ 26 | libicu67:i386 \ 27 | libxml2:i386 \ 28 | libstdc++6:i386 \ 29 | lib32gcc-s1 \ 30 | libc6-i386 \ 31 | lib32stdc++6 \ 32 | libcurl4-gnutls-dev:i386 \ 33 | libcurl4-gnutls-dev \ 34 | libgl1-mesa-glx:i386 \ 35 | gcc-10-base:i386 \ 36 | libssl1.1:i386 \ 37 | libopenal1:i386 \ 38 | libtinfo6:i386 \ 39 | libtcmalloc-minimal4:i386 \ 40 | # .NET和Mono相关依赖(ECO服务器等需要) 41 | libgdiplus \ 42 | libc6-dev \ 43 | libasound2 \ 44 | libpulse0 \ 45 | pulseaudio \ 46 | libpulse-dev \ 47 | libnss3 \ 48 | libgconf-2-4 \ 49 | libcap2 \ 50 | libatk1.0-0 \ 51 | libcairo2 \ 52 | libcups2 \ 53 | libgtk-3-0 \ 54 | libgdk-pixbuf2.0-0 \ 55 | libpango-1.0-0 \ 56 | libx11-6 \ 57 | libxt6 \ 58 | # Unity游戏服务端额外依赖(7日杀等) 59 | libsdl2-2.0-0:i386 \ 60 | libsdl2-2.0-0 \ 61 | libpulse0:i386 \ 62 | libfontconfig1:i386 \ 63 | libfontconfig1 \ 64 | libudev1:i386 \ 65 | libudev1 \ 66 | libpugixml1v5 \ 67 | libvulkan1 \ 68 | libvulkan1:i386 \ 69 | libgconf-2-4:i386 \ 70 | # 额外的Unity引擎依赖(特别针对7日杀) 71 | libatk1.0-0:i386 \ 72 | libxcomposite1 \ 73 | libxcomposite1:i386 \ 74 | libxcursor1 \ 75 | libxcursor1:i386 \ 76 | libxrandr2 \ 77 | libxrandr2:i386 \ 78 | libxss1 \ 79 | libxss1:i386 \ 80 | libxtst6 \ 81 | libxtst6:i386 \ 82 | libxi6 \ 83 | libxi6:i386 \ 84 | libxkbfile1 \ 85 | libxkbfile1:i386 \ 86 | libasound2:i386 \ 87 | libgtk-3-0:i386 \ 88 | libdbus-1-3 \ 89 | libdbus-1-3:i386 \ 90 | # ARK: Survival Evolved(方舟生存进化)服务器额外依赖 91 | libelf1 \ 92 | libelf1:i386 \ 93 | libatomic1 \ 94 | libatomic1:i386 \ 95 | nano \ 96 | net-tools \ 97 | netcat \ 98 | procps \ 99 | python3 \ 100 | python3-pip \ 101 | tar \ 102 | unzip \ 103 | bzip2 \ 104 | xz-utils \ 105 | zlib1g:i386 \ 106 | fonts-wqy-zenhei \ 107 | fonts-wqy-microhei \ 108 | libc6 \ 109 | libc6:i386 \ 110 | && rm -rf /var/lib/apt/lists/* 111 | 112 | # 安装Node.js (用于运行Web界面) 113 | RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ 114 | && apt-get update && apt-get install -y nodejs \ 115 | && rm -rf /var/lib/apt/lists/* 116 | 117 | # 配置npm使用淘宝源 118 | RUN npm config set registry https://registry.npmmirror.com 119 | 120 | # 设置 locales 121 | RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \ 122 | && sed -i -e 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen \ 123 | && locale-gen 124 | ENV LANG=zh_CN.UTF-8 \ 125 | LANGUAGE=zh_CN:zh \ 126 | LC_ALL=zh_CN.UTF-8 127 | 128 | # 创建steam用户 129 | RUN useradd -m -s /bin/bash ${STEAM_USER} \ 130 | && mkdir -p ${STEAMCMD_DIR} ${GAMES_DIR} \ 131 | && chown -R ${STEAM_USER}:${STEAM_USER} ${STEAM_HOME} 132 | 133 | # 配置pip使用国内源 (这里放在创建用户之后) 134 | RUN mkdir -p /root/.pip /home/steam/.pip \ 135 | && echo '[global]\n\ 136 | index-url = https://pypi.tuna.tsinghua.edu.cn/simple\n\ 137 | trusted-host = pypi.tuna.tsinghua.edu.cn' > /root/.pip/pip.conf \ 138 | && cp /root/.pip/pip.conf /home/steam/.pip/pip.conf \ 139 | && chown -R ${STEAM_USER}:${STEAM_USER} /home/steam/.pip 140 | 141 | 142 | # 切换到root用户安装SteamCMD(确保有足够权限) 143 | USER root 144 | WORKDIR /home/steam 145 | 146 | # 下载并安装SteamCMD 147 | RUN mkdir -p ${STEAMCMD_DIR} \ 148 | && cd ${STEAMCMD_DIR} \ 149 | && (if curl -s --connect-timeout 3 http://192.168.10.23:7890 >/dev/null 2>&1 || wget -q --timeout=3 --tries=1 http://192.168.10.23:7890 -O /dev/null >/dev/null 2>&1; then \ 150 | echo "代理服务器可用,使用代理下载和初始化"; \ 151 | export http_proxy=http://192.168.10.23:7890; \ 152 | export https_proxy=http://192.168.10.23:7890; \ 153 | wget -t 5 --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -O steamcmd_linux.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz \ 154 | || wget -t 5 --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -O steamcmd_linux.tar.gz https://media.steampowered.com/installer/steamcmd_linux.tar.gz; \ 155 | tar -xzvf steamcmd_linux.tar.gz; \ 156 | rm steamcmd_linux.tar.gz; \ 157 | chown -R ${STEAM_USER}:${STEAM_USER} ${STEAMCMD_DIR}; \ 158 | chmod +x ${STEAMCMD_DIR}/steamcmd.sh; \ 159 | su - ${STEAM_USER} -c "export http_proxy=http://192.168.10.23:7890 && export https_proxy=http://192.168.10.23:7890 && cd ${STEAMCMD_DIR} && ./steamcmd.sh +quit"; \ 160 | unset http_proxy https_proxy; \ 161 | else \ 162 | echo "代理服务器不可用,使用直接连接"; \ 163 | wget -t 5 --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -O steamcmd_linux.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz \ 164 | || wget -t 5 --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -O steamcmd_linux.tar.gz https://media.steampowered.com/installer/steamcmd_linux.tar.gz; \ 165 | tar -xzvf steamcmd_linux.tar.gz; \ 166 | rm steamcmd_linux.tar.gz; \ 167 | chown -R ${STEAM_USER}:${STEAM_USER} ${STEAMCMD_DIR}; \ 168 | chmod +x ${STEAMCMD_DIR}/steamcmd.sh; \ 169 | su - ${STEAM_USER} -c "cd ${STEAMCMD_DIR} && ./steamcmd.sh +quit"; \ 170 | fi) \ 171 | # 创建steamclient.so符号链接 172 | && mkdir -p ${STEAM_HOME}/.steam/sdk32 ${STEAM_HOME}/.steam/sdk64 \ 173 | && ln -sf ${STEAMCMD_DIR}/linux32/steamclient.so ${STEAM_HOME}/.steam/sdk32/steamclient.so \ 174 | && ln -sf ${STEAMCMD_DIR}/linux64/steamclient.so ${STEAM_HOME}/.steam/sdk64/steamclient.so \ 175 | # 创建额外的游戏常用目录链接 176 | && mkdir -p ${STEAM_HOME}/.steam/sdk32/steamclient.so.dbg.sig ${STEAM_HOME}/.steam/sdk64/steamclient.so.dbg.sig \ 177 | && mkdir -p ${STEAM_HOME}/.steam/steam \ 178 | && ln -sf ${STEAMCMD_DIR}/linux32 ${STEAM_HOME}/.steam/steam/linux32 \ 179 | && ln -sf ${STEAMCMD_DIR}/linux64 ${STEAM_HOME}/.steam/steam/linux64 \ 180 | && ln -sf ${STEAMCMD_DIR}/steamcmd ${STEAM_HOME}/.steam/steam/steamcmd \ 181 | && chown -R ${STEAM_USER}:${STEAM_USER} ${STEAM_HOME}/.steam 182 | 183 | 184 | # 复制前端package.json并安装依赖 185 | COPY --chown=steam:steam ./app/package.json ./app/package-lock.json* /home/steam/app/ 186 | WORKDIR /home/steam/app 187 | RUN npm install --legacy-peer-deps --no-fund && \ 188 | npm install react-router-dom @types/react @types/react-dom react-dom @monaco-editor/react monaco-editor js-cookie @types/js-cookie 189 | 190 | # 安装后端依赖 191 | RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple flask flask-cors gunicorn requests psutil PyJWT rarfile zstandard 192 | 193 | # 添加启动脚本 194 | RUN echo '#!/bin/bash\n\ 195 | echo "启动游戏服务器部署Web界面..."\n\ 196 | echo "请访问 http://[服务器IP]:5000 使用Web界面"\n\ 197 | \n\ 198 | # 确保start_web.sh有执行权限\n\ 199 | chmod +x /home/steam/server/start_web.sh\n\ 200 | \n\ 201 | # 启动API服务器\n\ 202 | cd /home/steam/server\n\ 203 | ./start_web.sh\n\ 204 | ' > /home/steam/start_web.sh \ 205 | && chmod +x /home/steam/start_web.sh 206 | 207 | # 创建目录用于挂载游戏数据 208 | VOLUME ["${GAMES_DIR}"] 209 | 210 | # 暴露API服务端口 - 对外网开放 211 | EXPOSE 5000 212 | # 暴露常用游戏端口 213 | EXPOSE 27015-27020/tcp 214 | EXPOSE 27015-27020/udp 215 | 216 | # 复制FRP文件 217 | COPY --chown=steam:steam ./frp/LoCyanFrp /home/steam/FRP/LoCyanFrp 218 | COPY --chown=steam:steam ./frp/frpc /home/steam/FRP/frpc 219 | COPY --chown=steam:steam ./frp/mefrp /home/steam/FRP/mefrp 220 | COPY --chown=steam:steam ./frp/Sakura /home/steam/FRP/Sakura 221 | COPY --chown=steam:steam ./frp/npc /home/steam/FRP/npc 222 | RUN chmod +x /home/steam/FRP/LoCyanFrp/frpc 223 | RUN chmod +x /home/steam/FRP/frpc/frpc 224 | RUN chmod +x /home/steam/FRP/mefrp/frpc 225 | RUN chmod +x /home/steam/FRP/Sakura/frpc 226 | RUN chmod +x /home/steam/FRP/npc/frpc 227 | 228 | # 最后一步:复制前端代码并构建 229 | COPY --chown=steam:steam ./app /home/steam/app 230 | WORKDIR /home/steam/app 231 | RUN npm run build && \ 232 | echo "前端构建完成" 233 | 234 | # 复制后端代码 235 | COPY --chown=steam:steam ./server /home/steam/server 236 | RUN chmod +x /home/steam/server/start_web.sh 237 | 238 | 239 | # 设置工作目录和启动命令 240 | WORKDIR /home/steam 241 | CMD ["/home/steam/start_web.sh"] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 项目介绍 2 | GameServerManager 简称GSManager 让游戏服务器的部署、管理和维护变得简单高效。基于Docker技术,支持多款热门游戏,一键部署,轻松管理。\ 3 | 项目最大亮点是环境全部在Docker中运行,拥有环境兼容性最高的Docker镜像,能运行几乎所有支持Linux游戏服务端;并且任何人不受限制的使用面板上的所有功能,人人平等。 4 | 5 | ### [>>快速使用](https://github.com/yxsj245/GameServerManager/blob/2.0/docs/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97.md) 6 | ### [>>文档站](http://blogpage.xiaozhuhouses.asia/html6/index.html#/) 7 | ### [>>官方网站](http://blogpage.xiaozhuhouses.asia/html5/index.html) 8 |
以上是对您的使用帮助
49 |您访问的页面不存在,将在3秒后自动跳转到首页...
27 |确定要终止当前游戏的安装过程吗?
341 |终止安装可能会导致游戏文件不完整,需要重新安装。
342 |选择你想要部署的游戏服务器,一键快速安装
154 | 155 |加载游戏列表中...
157 |{progress.usage_hint}
198 |路径: {progress.path}
199 |{progress.error}
215 | } 218 | onClick={() => installJava(version.id)} 219 | > 220 | 重试安装 221 | 222 |{getStatusText(progress.status)}
233 |没有符合筛选条件的站点
201 |