{"id":15034686,"url":"https://github.com/dromara/jpom","last_synced_at":"2025-05-14T09:06:37.907Z","repository":{"id":37094034,"uuid":"164062992","full_name":"dromara/Jpom","owner":"dromara","description":"【dromara】🚀简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件","archived":false,"fork":false,"pushed_at":"2025-05-12T06:10:30.000Z","size":104104,"stargazers_count":1721,"open_issues_count":14,"forks_count":335,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-05-14T09:05:27.215Z","etag":null,"topics":["ci-cd","docker","java","jpom","ssh-client"],"latest_commit_sha":null,"homepage":"https://jpom.dromara.org/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dromara.png","metadata":{"files":{"readme":"README-en.md","changelog":"CHANGELOG-BETA.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-01-04T05:38:56.000Z","updated_at":"2025-05-14T06:17:13.000Z","dependencies_parsed_at":"2023-10-16T18:33:33.004Z","dependency_job_id":"559be4b7-be14-4df9-9ee6-ff94c2764879","html_url":"https://github.com/dromara/Jpom","commit_stats":{"total_commits":5399,"total_committers":52,"mean_commits":"103.82692307692308","dds":0.242822744952769,"last_synced_commit":"c0a0507c0481d67e6600d0ded33c52eca88c1f5b"},"previous_names":[],"tags_count":162,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dromara%2FJpom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dromara%2FJpom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dromara%2FJpom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dromara%2FJpom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dromara","download_url":"https://codeload.github.com/dromara/Jpom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110374,"owners_count":22016391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ci-cd","docker","java","jpom","ssh-client"],"created_at":"2024-09-24T20:26:01.008Z","updated_at":"2025-05-14T09:06:37.870Z","avatar_url":"https://github.com/dromara.png","language":"Java","readme":"\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://jpom.top/\"  target=\"_blank\"\u003e\n\t    \u003cimg src=\"https://jpom.top/images/logo/jpom_logo.svg\" width=\"400\" alt=\"logo\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t\u003cstrong\u003e【dromara】🚀Simple and lightweight low-invasive online build, automated deployment, daily operations, and project monitoring software.\u003c/strong\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n   【\u003cstrong\u003eIt is also a native ops software\u003c/strong\u003e / \u003ca href=\"./README.md\"\u003e中文\u003c/a\u003e】\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca target=\"_blank\" href=\"https://gitee.com/dromara/Jpom\"\u003e\n        \u003cimg src='https://gitee.com/dromara/Jpom/badge/star.svg?theme=gvp' alt='gitee star'/\u003e\n    \u003c/a\u003e\n \t\u003ca target=\"_blank\" href=\"https://github.com/dromara/Jpom\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/github/stars/dromara/Jpom.svg?style=social\" alt=\"github star\"/\u003e\n    \u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://license.coscl.org.cn/MulanPSL2\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/:license-MulanPSL2-blue.svg\" alt=\"license\"/\u003e\n\t  \u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://gitee.com/dromara/Jpom\"\u003e\n        \u003cimg src='https://img.shields.io/badge/JDK-1.8.0_40+-green.svg' alt='jdk'/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca target=\"_blank\" href=\"https://www.codacy.com/gh/dromara/Jpom/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=dromara/Jpom\u0026amp;utm_campaign=Badge_Grade\"\u003e\n      \u003cimg src=\"https://app.codacy.com/project/badge/Grade/843b953f1446449c9a075e44ea778336\" alt=\"codacy\"/\u003e\n    \u003c/a\u003e\n  \u003ca target=\"_blank\" href=\"https://jpom.top/pages/changelog/new/\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/github/v/release/dromara/Jpom.svg\" alt=\"docker pull\"/\u003e\n    \u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://hub.docker.com/repository/docker/jpomdocker/jpom\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/docker/pulls/jpomdocker/jpom.svg\" alt=\"docker pull\"/\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\t👉 International Station：\u003ca target=\"_blank\" href=\"https://jpom.dromara.org\"\u003ehttps://jpom.dromara.org\u003c/a\u003e  👈\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t👉Mainland Station：\u003ca target=\"_blank\" href=\"https://jpom.top\"\u003ehttps://jpom.top/\u003c/a\u003e  👈\n\u003c/p\u003e\n\n## 😭 Do you experience these pain points in your daily development?\n\n- \u003cfont color=\"red\"\u003e**No dedicated operations team, so developers have to handle operations tasks**\u003c/font\u003e, including manual project building and deployment.\n- Different projects require different build and deployment commands.\n- Need to package for various environments like development, testing, and production.\n- Need to monitor the status of multiple projects simultaneously.\n- \u003cu\u003eNeed to download SSH tools\u003c/u\u003e to remotely connect to servers.\n- *Need to download FTP tools* to transfer files to servers.\n- Syncing account passwords across multiple servers and computers is inconvenient.\n- Want to use automation tools, but they are high-demanding on server performance and too complicated to set up.\n- **Have specific needs for automation tools and want to modify the project**, but existing tools are too complex.\n\n\u003e For distributed projects, these steps are even more cumbersome.\n\u003e\n\u003e Let Jpom help you solve these pain points! And these are just the basic features that Jpom offers.\n\n### 😁 After using [Jpom](https://gitee.com/dromara/Jpom)\n\n- Convenient User Management\n  1. User activity monitoring, with email notifications for specific user actions\n  2. Multi-user management with independent project permissions (control over upload and delete rights), comprehensive operation logs, and workspace-based permission isolation\n  3. Accounts can enable **MFA (Multi-Factor Authentication)** for security\n- Real-time interface to view project status, console logs, and manage project files\n\t1. Edit project text files online\n- Docker container management and Docker Swarm cluster management（**Docker UI**）\n- **Online SSH Terminal**, allowing easy server management without using PuTTY, Xshell, FinalShell, etc.\n\t1. No need to know server passwords after logging into the Jpom system\n\t2. Specify forbidden SSH commands to prevent high-risk operations and automatically log command execution\n\t3. Set file directories to manage project files and configuration files online\n\t4. Execute SSH command templates and schedule scripts online\n\t5. Edit text files online\n\t6. **Lightweight implementation of basic\"bastion host\"functionality**\n- One-click cluster project deployment using project distribution\n- Online build process eliminates the need for manual project updates and upgrades\n  1. Supports pulling from GIT and SVN repositories\n  2. **Supports container builds (docker)**\n\t3. Supports SSH-based deployment\n  4. Supports scheduled builds\n\t5. Supports WebHook-triggered builds\n- Supports online editing of nginx configuration files and automatic reload operations\n\t1. Manage nginx status and SSL certificates\n- Automatic alerts and restart attempts for abnormal project status\n\t1. Supports notifications via email, DingTalk groups, and WeChat groups, actively monitoring project status\n- Node script templates with scheduling or triggers for expanded functionality\n- Configurable authorization for important paths to prevent user errors with system files\n\n### 🔔️ Special Reminders\n\n\u003e 1. On Windows servers, some features may have compatibility issues due to system characteristics. It is recommended to thoroughly test in practical use. Linux currently has good compatibility.\n\u003e 2. Install the server and plugin components in different directories; do not install them in the same directory.\n\u003e 3. To uninstall Jpom plugin or server components, first stop the corresponding service, then delete the related program files, log folders, and data directories.\n\u003e 4. Local builds depend on the system environment. If build commands require Maven or Node.js,\n     ensure the corresponding environment is installed on the build server. If the environment is installed after the server is started, restart the server via the command line for the environment to take effect.\n\u003e 5. On Ubuntu/Debian servers, the plugin component may fail to add. Please create a .bash_profile file in the root directory of the current user.\n\u003e 6. After upgrading to version 2.7.x, downgrading is not recommended due to potential data incompatibility issues.\n\u003e 7. Currently, version 2.x.x uses HTTP for communication between the plugin and server components, so ensure network connectivity between them during use.\n\u003e 8. Jpom version 3.0 is already being planned. Stay tuned for the new release!\n\n### 🗒️ [Changelog](https://gitee.com/dromara/Jpom/blob/master/CHANGELOG.md)\n\nMust-read before upgrading: [CHANGELOG.md](https://gitee.com/dromara/Jpom/blob/master/CHANGELOG.md)\n\n## 📥 Installing Jpom\n\nJpom supports various installation methods to meet different user needs. Just choose one method to install.\n\n### Method 1: 🚀(Recommended) One-click Installation (Linux)\n\n#### One-click Server Installation\n\n\u003e **Note: The installation directory is the current directory where the command is executed!**\n\u003e\n\u003e ⚠️ Special Reminder: When using the one-click installation, ensure the command is executed in different directories. The Server and Agent cannot be installed in the same directory!\n\u003e\n\u003e To change the data and log storage paths of the server,\n\u003e modify the `jpom.path` configuration property in the file\n\u003e [`application.yml`](https://gitee.com/dromara/Jpom/blob/master/modules/server/src/main/resources/config_default/application.yml)\n\n```shell\n# Default one-click installation\ncurl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default\n# Default one-click installation and automatic startup service configuration\ncurl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default+service\n\n# Install server and jdk environment\nyum install -y wget \u0026\u0026 \\\nwget -O install.sh https://jpom.top/docs/install.sh \u0026\u0026 \\\nbash install.sh Server jdk\n\n# Install server and jdk, maven environment\nyum install -y wget \u0026\u0026 \\\nwget -O install.sh https://jpom.top/docs/install.sh \u0026\u0026 \\\nbash install.sh Server jdk+mvn\n\n# ubuntu\napt-get install -y wget \u0026\u0026 \\\nwget -O install.sh https://jpom.top/docs/install.sh \u0026\u0026 \\\nbash install.sh Server jdk\n```\n\nAfter a successful startup, the server port is `2122`. You can access the management page via `http://127.0.0.1:2122/`\n(if not accessing from the local machine, replace 127.0.0.1 with the IP address of the installed server).\n\n\u003e If you cannot access the management system, run the command `systemctl status firewalld` to check if the firewall is enabled.\n\u003e If you see `Active: active (running)` in green in the status bar, you need to allow port `2122`.\n\u003e\n\u003e```bash\n\u003e# Allow port 2122 for the management system\n\u003efirewall-cmd --add-port=2122/tcp --permanent\n\u003e# Reload the firewall to take effect\n\u003efirewall-cmd --reload\n\u003e```\n\u003e\n\u003eIf you have allowed the port in the operating system but still cannot access it, and you are using a cloud server, check the security group rules in the cloud server's control panel to see if port 2122 is allowed.\n\u003e\n\u003e⚠️ Note: There are multiple firewalls in Linux systems: Firewall, Iptables, SELinux, etc. When checking firewall configurations, make sure to check all of them.\n\n#### One-Click Agent Installation\n\n\u003e If the server where the server side is installed also needs to be managed, you need to install the agent on the server side as well (both the server and agent can be installed on the same server but in different directories).\n\u003e\n\u003e ⚠️ Special reminder: Do not execute the one-click installation command in the same directory for both the Server and Agent!\n\u003e\n\u003e If you need to modify the agent data and log storage paths, update the `jpom.path` configuration property in the file\n\u003e [`application.yml`](https://gitee.com/dromara/Jpom/blob/master/modules/agent/src/main/resources/config_default/application.yml)\n\n```shell\n# Default one-click installation\ncurl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default\n# Default one-click installation and auto-configure startup service\ncurl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default+service\n\n# Install agent and JDK environment\nyum install -y wget \u0026\u0026 \\\nwget -O install.sh https://jpom.top/docs/install.sh \u0026\u0026 \\\nbash install.sh Agent jdk\n\n# ubuntu\napt-get install -y wget \u0026\u0026 \\\nwget -O install.sh https://jpom.top/docs/install.sh \u0026\u0026 \\\nbash install.sh Agent jdk\n```\n\nAfter a successful startup, the agent port is `2123`, which is used by the server.\n\n### Method 2: 📦 Container Installation\n\n\u003e ⚠️ Note: Container installation requires Docker to be installed first. [Click here for Docker installation documentation](https://jpom.top/pages/b63dc5/)\n\n#### One-Command Installation\n\n```shell\ndocker run -p 2122:2122 --name jpom-server jpomdocker/jpom\n```\n\n#### Using Mount to Store Data (may have compatibility issues in some environments)\n\n1. Alibaba Cloud Repository\n\n```shell\ndocker pull registry.cn-chengdu.aliyuncs.com/jpomdocker/jpom\nmkdir -p /home/jpom-server/logs\nmkdir -p /home/jpom-server/data\nmkdir -p /home/jpom-server/conf\ndocker run -d -p 2122:2122 \\\n\t--name jpom-server \\\n\t-v /home/jpom-server/logs:/usr/local/jpom-server/logs \\\n\t-v /home/jpom-server/data:/usr/local/jpom-server/data \\\n\t-v /home/jpom-server/conf:/usr/local/jpom-server/conf \\\n\tjpomdocker/jpom\n```\n\n2. Docker Hub Repository\n\n```shell\ndocker pull jpomdocker/jpom\nmkdir -p /home/jpom-server/logs\nmkdir -p /home/jpom-server/data\nmkdir -p /home/jpom-server/conf\ndocker run -d -p 2122:2122 \\\n\t--name jpom-server \\\n\t-v /home/jpom-server/logs:/usr/local/jpom-server/logs \\\n\t-v /home/jpom-server/data:/usr/local/jpom-server/data \\\n\t-v /home/jpom-server/conf:/usr/local/jpom-server/conf \\\n\tjpomdocker/jpom\n```\n\n#### Using Docker Volumes to Store Data\n\n1. Alibaba Cloud Repository\n\n```shell\ndocker pull registry.cn-chengdu.aliyuncs.com/jpomdocker/jpom\ndocker volume create jpom-server-data\ndocker volume create jpom-server-logs\ndocker volume create jpom-server-conf\ndocker run -d -p 2122:2122 \\\n\t--name jpom-server \\\n\t-v jpom-server-data:/usr/local/jpom-server/data \\\n\t-v jpom-server-logs:/usr/local/jpom-server/logs \\\n\t-v jpom-server-conf:/usr/local/jpom-server/conf \\\n\tjpomdocker/jpom\n```\n\n2. Docker Hub Repository\n\n```shell\ndocker pull jpomdocker/jpom\ndocker volume create jpom-server-data\ndocker volume create jpom-server-logs\ndocker volume create jpom-server-conf\ndocker run -d -p 2122:2122 \\\n\t--name jpom-server \\\n\t-v jpom-server-data:/usr/local/jpom-server/data \\\n\t-v jpom-server-logs:/usr/local/jpom-server/logs \\\n\t-v jpom-server-conf:/usr/local/jpom-server/conf \\\n\tjpomdocker/jpom\n```\n\n\u003e Container installation only provides the server version. Due to isolation between the container and the host environment, many functionalities of the agent cannot be used properly. Therefore, containerization of the agent is not very meaningful.\n\u003e\n\u003e For more information on installing Docker, configuring images, auto-start, and locating the installation directory, refer to the documentation\n\u003e [https://jpom.top/pages/b63dc5/](https://jpom.top/pages/b63dc5/)\n\u003e\n\u003e In lower versions of Docker, you may encounter the error `ls: cannot access'/usr/local/jpom-server/lib/': Operation not permitted`\n\u003e In this case, add the `--privileged` parameter\n\u003e Example: `docker run -p 2122:2122 --name jpom-server jpomdocker/jpom --privileged`\n\n### Method 3: 💾 Download and Install\n\n1. Download the installation package from [https://jpom.top/pages/all-downloads/](https://jpom.top/pages/all-downloads/)\n2. Extract the files\n3. Install the agent:\n\t1. The `agent-x.x.x-release` directory contains all the installation files for the agent\n\t2. Upload the entire directory to the corresponding server\n\t3. Start the agent. Use the bat script on Windows and the sh script on Linux (if there are garbled characters or execution issues, check the encoding format and line endings)\n\t4. The default running port for the agent is `2123`\n4. Install the server:\n\t1. The `server-x.x.x-release` directory contains all the installation files for the server\n\t2. Upload the entire directory to the corresponding server\n\t3. Start the server. Use the bat script on Windows and the sh script on Linux (if there are garbled characters or execution issues, check the encoding format and line endings)\n\t4. The default running port for the server is `2122`. Access the management page at `http://127.0.0.1:2122/` (if not accessed locally, replace `127.0.0.1` with your server's IP address)\n\n### Method 4: ⌨️ Compile and Install\n\n1. Visit the [Jpom](https://gitee.com/dromara/Jpom) Gitee page and pull the latest complete code (recommended to use the master branch)\n2. Switch to the `web-vue` directory and run `npm install` (you need to have the Vue environment set up in advance; refer to the README.md in the web-vue directory for details)\n3. Run `npm run build` to package the Vue project\n4. Switch to the project root directory and run: `mvn clean package`\n5. Install the agent:\n\t1. Check the agent installation package in `modules/agent/target/agent-x.x.x-release`\n\t2. Upload the entire directory to the server\n\t3. Start the agent. Use the bat script on Windows and the sh script on Linux (if there are garbled characters or execution issues, check the encoding format and line endings)\n\t4. The default running port for the agent is `2123`\n6. Install the server:\n\t1. Check the server installation package in `modules/server/target/server-x.x.x-release`\n\t2. Upload the entire directory to the server\n\t3. Start the server. Use the bat script on Windows and the sh script on Linux (if there are garbled characters or execution issues, check the encoding format and line endings)\n\t4. The default running port for the server is `2122`. Access the management page at `http://127.0.0.1:2122/` (if not accessed locally, replace `127.0.0.1` with your server's IP address)\n\n\u003e You can also use `script/release.bat` or `script/release.sh` for quick packaging.\n\n### Method 5: 📦 One-Click Start with Docker-Compose\n\n- No environment installation required; automatically compiles and builds\n\n\u003e Note: Remember to modify the token value in the `.env` file\n\n```shell\nyum install -y git\ngit clone https://gitee.com/dromara/Jpom.git\ncd Jpom\ndocker-compose -f docker-compose.yml up\n# docker-compose -f docker-compose.yml up --build\n# docker-compose -f docker-compose.yml build --no-cache\n# docker-compose -f docker-compose-local.yml up\n# docker-compose -f docker-compose-local.yml build --build-arg TEMP_VERSION=.0\n# docker-compose -f docker-compose-cluster.yml up --build\n```\n\n### Method 6: 💻 Compile and Run\n\n1. Visit the [Jpom](https://gitee.com/dromara/Jpom) Gitee page and pull the latest complete code (it's recommended to use the master branch, but if you want to experience new features, you can use the\n   dev branch)\n2. Run the agent:\n\t1. Run `org.dromara.jpom.JpomAgentApplication`\n\t2. Note the default username and password information printed in the console.\n\t3. The agent's default running port: `2123`\n3. Run the server:\n\t1. Run `org.dromara.jpom.JpomServerApplication`\n\t2. The server's default running port: `2122`\n4. Build the Vue page, switch to the `web-vue` directory (make sure you have node and npm environments set up locally).\n5. Install the Vue project dependencies by executing `npm install` in the console.\n6. Start development mode by executing `npm run dev` in the console.\n7. Access the frontend page using the address output in the console: `http://127.0.0.1:3000/` (if not accessing from the local machine, replace `127.0.0.1` with your server's IP address).\n\n## Managing Jpom Commands\n\n1. Using BAT Script Files on Windows\n\n```bash\n# Server management scripts (command line)\n./bin/Server.bat start   # Start the Jpom server\n./bin/Server.bat stop    # Stop the Jpom server\n./bin/Server.bat restart # Restart the Jpom server\n./bin/Server.bat status  # Check the Jpom server status\n# Server management script (control panel), follow the panel prompts for operations\n./bin/Server.bat\n\n# Agent management scripts\n./bin/Agent.bat start   # Start the Jpom agent\n./bin/Agent.bat stop    # Stop the Jpom agent\n./bin/Agent.bat restart # Restart the Jpom agent\n./bin/Agent.bat status  # Check the Jpom agent status\n# Agent management script (control panel), follow the panel prompts for operations\n./bin/Agent.bat\n\n```\n\n\u003e After executing the startup script on Windows, follow the logs to check the startup status. If you encounter garbled text, check or modify the encoding format. It is recommended to use\n\u003e `GB2312` for BAT script encoding on Windows.\n\n2. Using SH Script Files on Linux\n\n```bash\n# Server management scripts\n./bin/Server.sh start     # Start the Jpom server\n./bin/Server.sh stop      # Stop the Jpom server\n./bin/Server.sh restart   # Restart the Jpom server\n./bin/Server.sh status    # Check the Jpom server status\n./bin/Service.sh install  # Create a service for the Jpom server (jpom-server)\n\n# Agent management scripts\n./bin/Agent.sh start     # Start the Jpom agent\n./bin/Agent.sh stop      # Stop the Jpom agent\n./bin/Agent.sh restart   # Restart the Jpom agent\n./bin/Agent.sh status    # Check the Jpom agent status\n./bin/Service.sh install # Create a service for the Jpom agent (jpom-agent)\n```\n\n## Linux Service Management\n\n\u003e The following service installation instructions are for reference only; customize configurations as needed.\n\u003e\n\u003e After successfully using `./bin/Service.sh install`:\n\u003e\n\u003e systemctl {status | start | stop | restart} jpom-server\n\u003e\n\u003e systemctl {status | start | stop | restart} jpom-agent\n\n## ⚙️ Jpom Configuration Parameters\n\nLocated in the project's root path:\n\n### Application Configuration `./conf/application.yml`\n\n1. Agent example:\n   [`application.yml`](https://gitee.com/dromara/Jpom/blob/master/modules/agent/src/main/resources/config_default/application.yml)\n2. Server example:\n   [`application.yml`](https://gitee.com/dromara/Jpom/blob/master/modules/server/src/main/resources/config_default/application.yml)\n\n### Project Logs `./conf/logback.xml`\n\n1. Agent example:\n   [`logback.xml`](https://gitee.com/dromara/Jpom/blob/master/modules/agent/src/main/resources/config_default/logback.xml)\n2. Server example:\n   [`logback.xml`](https://gitee.com/dromara/Jpom/blob/master/modules/server/src/main/resources/config_default/logback.xml)\n\n## 📝 Frequently Asked Questions and User Guide\n\n- [Home Page](https://jpom.top/)\n- [FQA](https://jpom.top/pages/FQA/)\n- [Glossary](https://jpom.top/pages/FQA/proper-noun/)\n\n### Practical Examples\n\n\u003e Some images may load slowly.\n\n1. [Local Build + SSH Deployment for Java Projects](https://jpom.top/pages/practice/build-java-ssh-release/)\n2. [Local Build + Project Deployment for Node Projects](https://jpom.top/pages/practice/build-node-release/)\n3. [Local Build + SSH Deployment for Node Projects](https://jpom.top/pages/practice/build-node-ssh-release/)\n4. [Local Build + Custom Management for Python Projects](https://jpom.top/pages/practice/project-dsl-python/)\n5. [Custom Management for Java Projects](https://jpom.top/pages/practice/project-dsl-java/)\n6. [Managing Compiled and Installed Nginx](https://jpom.top/pages/practice/node-nginx/)\n7. [Managing Docker](https://jpom.top/pages/practice/docker-cli/)\n8. [Container Build + Project Deployment for Java Projects](https://jpom.top/pages/practice/build-docker-java-node-release/)\n9. [More Practical Examples\u003e\u003e](https://jpom.top/pages/practice/)\n\n## Example Code Repositories\n\n1. [Jboot Example Code](https://gitee.com/keepbx/Jpom-demo-case/tree/master/jboot-test)\n2. [SpringBoot Example Code (ClassPath)](https://gitee.com/keepbx/Jpom-demo-case/tree/master/springboot-test)\n3. [SpringBoot Example Code (Jar)](https://gitee.com/keepbx/Jpom-demo-case/tree/master/springboot-test-jar)\n4. [Node Vue Example Code (antdv)](https://gitee.com/keepbx/Jpom-demo-case/tree/master/antdv)\n5. [Python Example Code](https://gitee.com/keepbx/Jpom-demo-case/tree/master/python)\n\n\u003e Node.js compile specific directory:\n\n```bash\nyarn --cwd xxxx/ install\nyarn --cwd xxxx/ build\n```\n\n\u003e Maven compile specific directory:\n\n```bash\nmvn -f xxxx/pom.xml clean package\n```\n\n## 🛠️ Overall Architecture\n\n![jpom-func-arch](https://jpom.top/images/jpom-func-arch.png)\n\n\n## 🐞 Community Discussion, Bug Reports, Suggestions, etc.\n\n1. Scan the QR code below on the left to join our WeChat group! (Add the assistant and mention Jpom to join the group)\n2. Open source projects rely on community support. If Jpom has helped you, consider buying us a coffee.\n   You can scan the [WeChat and Alipay QR codes](https://jpom.top/images/qrcode/praise-all.png)\n   or support us through [Gitee sponsorship](https://gitee.com/dromara/Jpom)\n   (click the donate button at the bottom of the project homepage, supports WeChat and Alipay). [Sponsorship records](https://jpom.top/pages/praise/publicity/)\n3. Purchase open source merchandise: [Merchandise Introduction](https://jpom.top/pages/shop/)\n4. For enterprise technical services, please contact us directly to discuss service plans.\n5. For bug reports and suggestions, feel free to create [issues](https://gitee.com/dromara/Jpom/issues); developers will respond periodically.\n6. To contribute, please see the [Contribution Guide](#Contribution Guide)。\n\nThank you to all sponsors and contributors; your support is our motivation for continuous updates and improvements!\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://jpom.top/images/qrcode/praise-all.png\" style=\"\" alt=\"praise img\"\u003e\n\u003c/p\u003e\n\n## 💖 Merchandise\n\nTo better support the open-source project, we have decided to launch merchandise.\n\nBy purchasing, you get a small item, and we receive the profit from your purchase (the prices of the merchandise may be slightly higher than market prices; please be aware before ordering).\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://jpom.top/images/qrcode/weixin-shop-jpom66.png\" style=\"\" alt=\"shop home\"\u003e\n\u003c/p\u003e\n\n## 🔨Contribution Guide\n\n\u003e By contributing, you agree to the terms of the [CLA](https://gitee.com/dromara/Jpom/blob/master/CLA.md) agreement\n\n### Contribution Guidelines\n\nAs an open-source project, Jpom relies on community support and welcomes contributions from everyone. Whether big or small, your contributions will help thousands of users and developers. Your contributions will also be permanently recorded in the list of contributors, which is the essence of open-source projects!\n\nTo ensure code quality and standards, and to help you quickly understand the project structure, please read the following before contributing:\n\n- [Jpom Contribution Guide](https://gitee.com/dromara/Jpom/blob/master/CODE_OF_CONDUCT.md)\n- [Typography Specifications (Chinese and English)](https://gitee.com/dromara/Jpom/blob/dev/typography-specification.md)\n\n### Contribution Steps\n\n1. Fork this repository.\n\n2. Clone your forked repository to your local machine.\n\n   Replace `branch-name` and `username` with the appropriate values.\n\n   Use `dev` for code contributions and `docs` for documentation contributions.\n\n   ```bash\n   git clone -b branch-name https://gitee.com/username/Jpom.git\n   ```\n\n3. Modify the code/documentation and commit your changes.\n\n   ```bash\n   # Add your changes to the staging area\n   git add .\n   # Commit your changes with a descriptive message\n   git commit -m 'Describe your changes'\n   # Push to your remote repository, replacing branch-name with dev or docs\n   git push origin branch-name\n   ```\n\n4. Create a Pull Request (PR).\n\n   Go to your repository on Gitee, create a PR request, and wait for the administrators to merge your changes.\n\n### Branch Explanation\n\n| Branch     | Description                                                   |\n|--------|------------------------------------------------------|\n| master | Main branch, protected. Does not accept PRs. Merges from the beta branch after testing.       |\n| beta   | \tBeta version branch, protected. Does not accept PRs. Merges from the dev branch after testing. |\n| dev    | Development branch, accepts PRs. Please submit PRs to the dev branch.                           |\n| docs   | Documentation branch, accepts PRs. Used for project documentation, feature introductions, and FAQ summaries.                         |\n\n\u003e Primarily use the dev and docs branches for PR submissions. Other branches are for archiving and can be ignored by contributors.\n\n## 🌍 Knowledge Planet\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://jpom.top/images/zsxq.jpg\" alt=\"Scan to join Knowledge Planet and learn more\"\u003e\n\u003c/p\u003e\n\n## 🔔 Recommended Projects\n\n| Project Name          | Project Link                                                                       | Description                                          |\n|---------------|----------------------------------------------------------------------------|-----------------------------------------------|\n| SpringBoot_v2 | [https://gitee.com/bdj/SpringBoot_v2](https://gitee.com/bdj/SpringBoot_v2) | \tA pure SpringBoot scaffold                          |\n| TLog GVP Project   | [https://gitee.com/dromara/TLog](https://gitee.com/dromara/TLog)           | A lightweight distributed log tagging and tracking tool for microservices |\n| Sa-Token      | [https://gitee.com/dromara/sa-token](https://gitee.com/dromara/sa-token)   | Possibly the most feature-rich Java authentication framework                      |\n| Erupt         | [https://gitee.com/erupt/erupt](https://gitee.com/erupt/erupt)             | Zero frontend code, pure annotation-based admin backend development                        |\n| hippo4j       | [https://gitee.com/magegoofy/hippo4j](https://gitee.com/magegoofy/hippo4j) | Powerful dynamic thread pool framework with monitoring and alert features                          |\n| HertzBeat     | [https://gitee.com/dromara/hertzbeat](https://gitee.com/dromara/hertzbeat) | Easy-to-use cloud monitoring system with strong custom monitoring capability              |\n\n## 🤝 Acknowledgements\n\n- Special thanks to JetBrains for providing a free open-source license:\n\n\u003cp\u003e\n\u003cimg src=\"https://jpom.top/images/friends/ad/jetbrains.png\" alt=\"JetBrains\" style=\"float:left;\"\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdromara%2Fjpom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdromara%2Fjpom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdromara%2Fjpom/lists"}