# app/jumpserver

> 使用 Pigsty 托管的 PostgreSQL 部署 JumpServer 开源堡垒机

---

LLMS index: [llms.txt](/llms.txt)

---

`app/jumpserver` 配置模板部署 JumpServer Community Edition，并使用 Pigsty 托管的 PostgreSQL 18 作为外部数据库。当前模板按 JumpServer v4.10.16-ce 验证。


--------

## 配置概览

- 配置名称：`app/jumpserver`
- 节点数量：单节点
- Web 端口：`8080`
- SSH 端口：`2222`
- 相关配置：[`meta`](/docs/conf/meta/)

启用方式：

```bash
./configure -c app/jumpserver [-i <primary_ip>]
```


--------

## 配置内容

源文件地址：[`pigsty/conf/app/jumpserver.yml`](https://github.com/pgsty/pigsty/blob/main/conf/app/jumpserver.yml)

<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># File      :   jumpserver.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Desc      :   pigsty config for running 1-node jumpserver app</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Ctime     :   2026-07-09</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Mtime     :   2026-07-09</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Docs      :   https://pigsty.io/docs/app/jumpserver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># License   :   Apache-2.0 @ https://pigsty.io/docs/about/license/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Copyright :   2018-2026  Ruohang Feng / Vonng (rh@vonng.com)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#==============================================================#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># JumpServer: open-source PAM / bastion host</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># GitHub: https://github.com/jumpserver/jumpserver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Last Verified JumpServer Version: v4.10.16-ce on 2026-07-09</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># how to use this template:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#  curl -fsSL https://repo.pigsty.io/get | bash; cd ~/pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># ./bootstrap                  # prepare local repo &amp; ansible</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># ./configure -c app/jumpserver # use this jumpserver config template</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># vi pigsty.yml                # IMPORTANT: CHANGE CREDENTIALS / DOMAIN / SECRETS!</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># ./deploy.yml                 # install pigsty &amp; pgsql</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># ./docker.yml                 # install docker &amp; docker-compose</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># ./app.yml                    # install jumpserver with docker-compose</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># To replace domain name:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#   sed -ie &#39;s/jump.pigsty/yourdomain.com/g&#39; pigsty.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c"># Default Credential:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c">#   admin / ChangeMe</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">all</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">children</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># the jumpserver application</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">jumpserver</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{}<span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">jumpserver  </span><span class="w"> </span><span class="c"># specify app name to be installed (in the apps)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">apps</span><span class="p">:</span><span class="w">             </span><span class="c"># define all applications</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span><span class="nt">jumpserver</span><span class="p">:</span><span class="w">     </span><span class="c"># app name, should have corresponding ~/pigsty/app/jumpserver folder</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">file</span><span class="p">:</span><span class="w">         </span><span class="c"># persistent directories to be created</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver                 ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/core            ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/core/data       ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/core/data/logs  ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/certs           ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/koko            ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/koko/data       ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/lion            ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/lion/data       ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/chen            ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/chen/data       ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/nginx           ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/nginx/data      ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/nginx/data/logs ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/redis           ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span>- {<span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="nt">/data/jumpserver/redis/data      ,state</span><span class="p">:</span><span class="w"> </span><span class="nt">directory ,mode</span><span class="p">:</span><span class="w"> </span><span class="m">0755</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="nt">conf</span><span class="p">:</span><span class="w">         </span><span class="c"># override /opt/jumpserver/.env config file</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="c"># replace with your domain</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">DOMAINS</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;10.10.10.10:8080,10.10.10.10,jump.pigsty&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="c"># image / version</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">REGISTRY</span><span class="p">:</span><span class="w"> </span><span class="l">docker.io</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">JUMPSERVER_VERSION</span><span class="p">:</span><span class="w"> </span><span class="l">v4.10.16-ce</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">REDIS_VERSION</span><span class="p">:</span><span class="w"> </span><span class="m">7.4.6</span>-<span class="l">bookworm</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="c"># fixed Docker bridge; containers reach host PG through host IP/VIP</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">JUMPSERVER_DATA</span><span class="p">:</span><span class="w"> </span><span class="l">/data/jumpserver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">VOLUME_DIR</span><span class="p">:</span><span class="w"> </span><span class="l">/data/jumpserver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">DOCKER_SUBNET</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.0</span><span class="l">/24</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">REDIS_IP</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">CELERY_IP</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.3</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">CORE_IP</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.4</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">LION_IP</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.5</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">CHEN_IP</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.6</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">KOKO_IP</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.7</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">WEB_IP</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.8</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="c"># IMPORTANT: generate once and never change after production data exists</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">SECRET_KEY</span><span class="p">:</span><span class="w"> </span><span class="l">ChangeMeSecretKeyMustBeKeptForever0123456789ABCDEF</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">BOOTSTRAP_TOKEN</span><span class="p">:</span><span class="w"> </span><span class="l">ChangeMeBootstrapToken2026</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="c"># database credentials; DB_PASSWORD must not contain single or double quotes</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">DB_ENGINE</span><span class="p">:</span><span class="w"> </span><span class="l">postgresql</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">DB_HOST</span><span class="p">:</span><span class="w"> </span><span class="m">10.10.10.10</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">DB_PORT</span><span class="p">:</span><span class="w"> </span><span class="m">5432</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">DB_USER</span><span class="p">:</span><span class="w"> </span><span class="l">jumpserver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">DB_PASSWORD</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.JumpServer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">DB_NAME</span><span class="p">:</span><span class="w"> </span><span class="l">jumpserver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="c"># local Redis container in app/jumpserver/docker-compose.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="c"># use a fixed bridge IP to avoid Docker DNS resolution races in JumpServer workers</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">REDIS_HOST</span><span class="p">:</span><span class="w"> </span><span class="m">192.168.250.2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">REDIS_PORT</span><span class="p">:</span><span class="w"> </span><span class="m">6379</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">REDIS_PASSWORD</span><span class="p">:</span><span class="w"> </span><span class="l">Redis.JumpServer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="c"># access and component settings</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">HTTP_PORT</span><span class="p">:</span><span class="w"> </span><span class="m">8080</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">SSH_PORT</span><span class="p">:</span><span class="w"> </span><span class="m">2222</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">CLIENT_MAX_BODY_SIZE</span><span class="p">:</span><span class="w"> </span><span class="l">4096m</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">CORE_HOST</span><span class="p">:</span><span class="w"> </span><span class="l">http://192.168.250.4:8080</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">PERIOD_TASK_ENABLED</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">SESSION_EXPIRE_AT_BROWSER_CLOSE</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">USE_LB</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">USE_IPV6</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">USE_XPACK</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">LOG_LEVEL</span><span class="p">:</span><span class="w"> </span><span class="l">ERROR</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">TZ</span><span class="p">:</span><span class="w"> </span><span class="l">Asia/Shanghai</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">CURRENT_VERSION</span><span class="p">:</span><span class="w"> </span><span class="l">v4.10.16-ce</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">CORE_WORKER</span><span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">              </span><span class="nt">CELERY_WORKER_COUNT</span><span class="p">:</span><span class="w"> </span><span class="m">2</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># the jumpserver database: single-node starter</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg-jumpserver</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">pg_seq</span><span class="p">:</span><span class="w"> </span><span class="nt">1, pg_role</span><span class="p">:</span><span class="w"> </span><span class="l">primary } }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">vars</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_cluster</span><span class="p">:</span><span class="w"> </span><span class="l">pg-jumpserver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_extensions</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">  </span><span class="c"># JumpServer itself requires no PostgreSQL extension</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_users</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">jumpserver ,password</span><span class="p">:</span><span class="w"> </span><span class="nt">DBUser.JumpServer ,pgbouncer</span><span class="p">:</span><span class="w"> </span><span class="nt">true ,pool_mode</span><span class="p">:</span><span class="w"> </span><span class="nt">session ,roles</span><span class="p">:</span><span class="w"> </span><span class="nt">[ dbrole_admin ] ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">admin user for jumpserver service }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_databases</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="nt">jumpserver ,owner</span><span class="p">:</span><span class="w"> </span><span class="nt">jumpserver ,comment</span><span class="p">:</span><span class="w"> </span><span class="l">jumpserver main database }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_hba_rules</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="nt">jumpserver ,db</span><span class="p">:</span><span class="w"> </span><span class="nt">jumpserver ,addr</span><span class="p">:</span><span class="w"> </span><span class="nt">192.168.250.0/24 ,auth</span><span class="p">:</span><span class="w"> </span><span class="nt">pwd ,order</span><span class="p">:</span><span class="w"> </span><span class="nt">560 ,title</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;allow jumpserver access from docker bridge&#39;</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pgb_hba_rules</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">          </span>- {<span class="w"> </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="nt">jumpserver ,db</span><span class="p">:</span><span class="w"> </span><span class="nt">jumpserver ,addr</span><span class="p">:</span><span class="w"> </span><span class="nt">192.168.250.0/24 ,auth</span><span class="p">:</span><span class="w"> </span><span class="nt">pwd ,order</span><span class="p">:</span><span class="w"> </span><span class="nt">390 ,title</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;allow jumpserver pgbouncer access from docker bridge&#39;</span><span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">pg_crontab</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s1">&#39;00 01 * * * /pg/bin/pg-backup full&#39;</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="c"># make a full backup every 1am</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">infra</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">infra_seq</span><span class="p">:</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>}<span class="w"> </span>}<span class="w"> </span>}<span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">etcd</span><span class="p">:</span><span class="w">  </span>{<span class="w"> </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">10.10.10.10</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">etcd_seq</span><span class="p">:</span><span class="w"> </span><span class="nt">1 } }, vars</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">etcd_cluster</span><span class="p">:</span><span class="w"> </span><span class="l">etcd } }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">vars</span><span class="p">:</span><span class="w">                               </span><span class="c"># global variables</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l">v4.5.0                  </span><span class="w"> </span><span class="c"># pigsty version string</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">admin_ip</span><span class="p">:</span><span class="w"> </span><span class="m">10.10.10.10</span><span class="w">             </span><span class="c"># admin node ip address</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">region</span><span class="p">:</span><span class="w"> </span><span class="l">default                  </span><span class="w"> </span><span class="c"># upstream mirror region: default|china|europe</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">node_tune</span><span class="p">:</span><span class="w"> </span><span class="l">oltp                  </span><span class="w"> </span><span class="c"># node tuning specs: oltp,olap,tiny,crit</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_conf</span><span class="p">:</span><span class="w"> </span><span class="l">oltp.yml                </span><span class="w"> </span><span class="c"># pgsql tuning specs: {oltp,olap,tiny,crit}.yml</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_version</span><span class="p">:</span><span class="w"> </span><span class="m">18</span><span class="w">                    </span><span class="c"># JumpServer 4.x requires PostgreSQL &gt;= 16</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_packages</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="l">pgsql-main, pgsql-common ]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">docker_enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">              </span><span class="c"># enable docker on app group</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#docker_registry_mirrors: [&#34;https://docker.1panel.live&#34;,&#34;https://docker.1ms.run&#34;,&#34;https://docker.xuanyuan.me&#34;,&#34;https://registry-1.docker.io&#34;]</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">proxy_env</span><span class="p">:</span><span class="w">                        </span><span class="c"># global proxy env when downloading packages &amp; pull docker images</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">no_proxy</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.*,*.tsinghua.edu.cn&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#http_proxy:  127.0.0.1:12345 # add your proxy env here for downloading packages or pull images</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#https_proxy: 127.0.0.1:12345 # usually the proxy is format as http://user:pass@proxy.xxx.com</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="c">#all_proxy:   127.0.0.1:12345</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">infra_portal</span><span class="p">:</span><span class="w">                     </span><span class="c"># domain names and upstream servers</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">home</span><span class="p">:</span><span class="w"> </span>{<span class="w"> </span><span class="nt">domain</span><span class="p">:</span><span class="w"> </span><span class="l">i.pigsty }</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">      </span><span class="nt">jumpserver</span><span class="p">:</span><span class="w">                     </span><span class="c"># nginx server config for jumpserver</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">domain</span><span class="p">:</span><span class="w"> </span><span class="l">jump.pigsty          </span><span class="w"> </span><span class="c"># REPLACE WITH YOUR OWN DOMAIN!</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">endpoint</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;10.10.10.10:8080&#34;</span><span class="w">  </span><span class="c"># jumpserver web endpoint: IP:PORT</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">websocket</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">               </span><span class="c"># add websocket support</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="nt">certbot</span><span class="p">:</span><span class="w"> </span><span class="l">jump.pigsty         </span><span class="w"> </span><span class="c"># certbot cert name, apply with `make cert`</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">repo_enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">node_repo_modules</span><span class="p">:</span><span class="w"> </span><span class="l">node,infra,pgsql</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c"># PASSWORD : https://pigsty.io/docs/setup/security/</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c">#----------------------------------------------#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">grafana_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">grafana_view_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Viewer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.DBA</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_monitor_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Monitor</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">pg_replication_password</span><span class="p">:</span><span class="w"> </span><span class="l">DBUser.Replicator</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">patroni_password</span><span class="p">:</span><span class="w"> </span><span class="l">Patroni.API</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">haproxy_admin_password</span><span class="p">:</span><span class="w"> </span><span class="l">pigsty</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">minio_secret_key</span><span class="p">:</span><span class="w"> </span><span class="l">S3User.MinIO</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">etcd_root_password</span><span class="p">:</span><span class="w"> </span><span class="l">Etcd.Root</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nn">...</span><span class="w">
</span></span></span></code></pre></div>


--------

## 配置解读

- 为 Core、Koko、Lion、Chen、Nginx 与 Redis 预建 `/data/jumpserver` 持久化目录
- 使用固定 Docker 网段 `192.168.250.0/24`，并为 PostgreSQL/PgBouncer 配置对应 HBA
- PostgreSQL 集群名为 `pg-jumpserver`，数据库与服务账号为 `jumpserver`
- 本地 Redis 由应用 Compose 管理
- 通过 `jump.pigsty` 反向代理到 `10.10.10.10:8080`

部署前必须替换 `SECRET_KEY`、`BOOTSTRAP_TOKEN`、Redis/数据库密码与域名。`SECRET_KEY` 在产生生产数据后必须保持不变。
