Jpom is a simple and lightweight low-intrusion online construction, automatic deployment, daily operation and maintenance, and project monitoring software.
In daily development, do you have the following pain points?
- There are no professional operations and maintenance personnel in the team, and developers have to do operational tasks, needing to manually build and deploy projects.
- Different projects have different build and deployment commands.
- There is a need for packaging in multiple environments such as development, testing, and production.
- There is a need to monitor the running status of multiple projects simultaneously.
- There is a need to download SSH tools to remotely connect to servers.
- There is a need to download FTP tools to transfer files to servers.
- When using multiple servers, synchronizing account passwords between different computers is inconvenient.
- Want to use some automation tools, but they are too resource-intensive and complicated to set up.
- Have personalized needs for automation tools and want to modify projects themselves, but the tools available on the market are too complex.
After using Jpom
- Convenient user management
- User operation monitoring, notifying specified user operations via email
- Multi-user management, independent project permissions for users (upload and delete permissions can be controlled), complete operation logs, using workspace isolation for permissions
- Accounts can enable MFA two-step verification to enhance account security
- Interface for real-time viewing of project running status, console logs, and managing project files
- Online modification of project text files
- Docker container management, Docker Swarm cluster management (Docker UI)
- Online SSH terminal, allowing you to easily manage servers without software like PuTTY, Xshell, FinalShell
- No need to know the server password after logging into the Jpom system
- Can specify commands to be prohibited from execution via SSH to avoid executing high-risk commands, and can automatically log executed commands
- Set file directories, view and manage corresponding project files and configuration files online
- SSH command templates can execute scripts online and can also be scheduled
- Online modification of text files
- Lightweight implementation of simple "bastion host" functionality
- Use project distribution to easily deploy cluster projects on multiple machines with one click
- Online builds without manually updating or upgrading projects
- Supports pulling from GIT, SVN repositories
- Supports container builds (docker)
- Supports SSH method for publishing
- Supports scheduled builds
- Supports triggering builds in WebHook form
- Supports online editing of nginx configuration files and automatic reload operations
- Manage nginx status, manage SSL certificates
- Project status monitoring with automatic alarms for exceptions and automatic restart attempts
- Supports email + DingTalk group + WeChat group notifications, actively sensing project operating conditions
- Node script templates + scheduled execution or triggers to expand more functions
- Important path authorization configuration to prevent users from mistakenly operating system files
📥 Install Jpom#
Jpom supports various installation methods to meet different users' personalized needs; you only need to choose one installation method.
Before starting the installation, we need a server, I recommend Wu Liu Qi Cloud for the server: https://www.vps567.com Hong Kong 2H2G5M server for $20/month, with high-defense CDN acceleration starting at just $18/month.
Method 1: 🚀 (Recommended) One-click installation (Linux)#
One-click install server#
Note: The installation directory is located in the directory where the command is executed!
⚠️ Special reminder: When performing one-click installation, be careful not to execute the command in the same directory, i.e., the Server side and Agent side cannot be installed in the same directory!
If you need to modify the path for server data and log storage, please modify the
jpom.path
configuration property in theapplication.yml
file.
# One-click default installation
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default
# One-click default installation + automatic configuration for startup service
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default+service
# Install server and jdk environment
yum install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Server jdk
# Install server and jdk, maven environment
yum install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Server jdk+mvn
# ubuntu
apt-get install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Server jdk
After successful startup, the server port is 2122
, and you can access the management page at http://127.0.0.1:2122/
(if accessing from a non-local machine, replace 127.0.0.1 with the IP address of your installed server).
If you cannot access the management system, execute the command
systemctl status firewalld
to check if the firewall is enabled. If the status bar shows greenActive: active (running)
, you need to allow port2122
.# Allow the management system's port 2122 firewall-cmd --add-port=2122/tcp --permanent # Restart the firewall for changes to take effect firewall-cmd --reload
If you have allowed the port on the operating system but still cannot access it, and you are using a cloud server, please check the security group rules in the cloud server backend to see if port 2122 is allowed.
⚠️ Note: There are various firewalls in Linux systems: Firewall, Iptables, SELinux, etc. When checking firewall configurations, make sure to check all of them.
One-click install plugin side#
If the server that installs the server side also needs to be managed, the plugin side also needs to be installed on the server side (the server side and plugin side can be installed simultaneously on the same server)
⚠️ Special reminder: When performing one-click installation, be careful not to execute the command in the same directory, i.e., the Server side and Agent side cannot be installed in the same directory!
If you need to modify the plugin side data and log storage path, please modify the
jpom.path
configuration property in theapplication.yml
file.
# One-click default installation
curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default
# One-click default installation + automatic configuration for startup service
curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default+service
# Install plugin side and jdk environment
yum install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Agent jdk
# ubuntu
apt-get install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Agent jdk
After successful startup, the plugin side port is 2123
, which is provided for use by the server side.
Method 2: 📦 Containerized installation#
⚠️ Note: The containerized installation method requires Docker to be installed first, click here for Docker installation documentation
Install with one command#
docker run -p 2122:2122 --name jpom-server jpomdocker/jpom
Use mounted storage for relevant data (may have compatibility issues in some environments)#
docker pull jpomdocker/jpom
mkdir -p /home/jpom-server/logs
mkdir -p /home/jpom-server/data
mkdir -p /home/jpom-server/conf
docker run -d -p 2122:2122 \
--name jpom-server \
-v /home/jpom-server/logs:/usr/local/jpom-server/logs \
-v /home/jpom-server/data:/usr/local/jpom-server/data \
-v /home/jpom-server/conf:/usr/local/jpom-server/conf \
jpomdocker/jpom
Use container volume for relevant data storage#
docker pull jpomdocker/jpom
docker volume create jpom-server-data
docker volume create jpom-server-logs
docker volume create jpom-server-conf
docker run -d -p 2122:2122 \
--name jpom-server \
-v jpom-server-data:/usr/local/jpom-server/data \
-v jpom-server-logs:/usr/local/jpom-server/logs \
-v jpom-server-conf:/usr/local/jpom-server/conf \
jpomdocker/jpom
The containerized installation only provides the server version. Due to the isolation of the container and the host environment, many functions of the plugin side cannot be used normally, so containerizing the plugin side is not very meaningful.
For installing Docker, configuring images, automatic startup, finding the installation directory, etc., you can refer to the documentation
https://jpom.top/pages/b63dc5/Running in lower versions of Docker may result in the error
ls: cannot access '/usr/local/jpom-server/lib/': Operation not permitted
, in which case you need to add the--privileged
parameter
For example:docker run -p 2122:2122 --name jpom-server jpomdocker/jpom --privileged
Method 3: 💾 Download and install#
- Download the installation package https://jpom.top/pages/all-downloads/
- Unzip the file
- Install the plugin side
- The
agent-x.x.x-release
directory contains all installation files for the plugin side - Upload to the corresponding server (the entire directory)
- Start the plugin side, using bat script for Windows environment, sh script for Linux environment. (If there are garbled characters or it cannot be executed normally, please check the encoding format and line endings.)
- Default running port for the plugin side:
2123
- The
- Install the server side
- The
server-x.x.x-release
directory contains all installation files for the server side - Upload to the corresponding server (the entire directory)
- Start the server side, using bat script for Windows environment, sh script for Linux environment. (If there are garbled characters or it cannot be executed normally, please check the encoding format and line endings.)
- Default running port for the server side:
2122
, access management page:http://127.0.0.1:2122/
(for non-local access, replace127.0.0.1
with your server IP address)
- The
Method 4: ⌨️ Compile and install#
- Visit the Jpom Gitee homepage to pull the latest complete code (it is recommended to use the master branch)
- Switch to the
web-vue
directory and executenpm install
(the Vue environment needs to be set up in advance, and details about installing dependencies can be found in the README.md in the web-vue directory) - Execute
npm run build
to package the Vue project - Switch to the project root directory and execute:
mvn clean package
- Install the plugin side
- Check the plugin side installation package
modules/agent/target/agent-x.x.x-release
- Package and upload to the server for execution (the entire directory)
- Start the plugin side, using bat script for Windows environment, sh script for Linux environment. (If there are garbled characters or it cannot be executed normally, please check the encoding format and line endings.)
- Default running port:
2123
- Check the plugin side installation package
- Install the server side
- Check the server side installation package
modules/server/target/server-x.x.x-release
- Package and upload to the server for execution (the entire directory)
- Start the server side, using bat script for Windows environment, sh script for Linux environment. (If there are garbled characters or it cannot be executed normally, please check the encoding format and line endings.)
- Default running port for the server side:
2122
, access management page:http://127.0.0.1:2122/
(for non-local access, replace127.0.0.1
with your server IP address)
- Check the server side installation package
You can also use
script/release.bat
orscript/release.sh
for quick packaging.
Method 5: 📦 One-click start with docker-compose#
- No need to install any environment, automatically compile and build
Note: Be sure to modify the token value in the
.env
file
yum install -y git
git clone https://gitee.com/dromara/Jpom.git
cd Jpom
docker-compose -f docker-compose.yml up
# docker-compose -f docker-compose.yml up --build
# docker-compose -f docker-compose.yml build --no-cache
# docker-compose -f docker-compose-local.yml up
# docker-compose -f docker-compose-local.yml build --build-arg TEMP_VERSION=.0
# docker-compose -f docker-compose-cluster.yml up --build
Method 6: 💻 Compile and run#
- Visit the Jpom Gitee homepage to pull the latest complete code (it is recommended to use the master branch; if you want to experience new features, you can use the dev branch)
- Run the plugin side
- Run
org.dromara.jpom.JpomAgentApplication
- Pay attention to the default account password information printed in the console
- Default running port for the plugin side:
2123
- Run
- Run the server side
- Run
org.dromara.jpom.JpomServerApplication
- Default running port for the server side:
2122
- Run
- Build the Vue page, switch to the
web-vue
directory (the local development environment needs to have node and npm) - Install project Vue dependencies, execute
npm install
in the console - Start development mode, execute
npm run dev
in the console - Access the front-end page based on the address output in the console:
http://127.0.0.1:3000/
(for non-local access, replace127.0.0.1
with your server IP address)
Manage Jpom Commands#
- Use bat script files in Windows systems.
# Server management script (command line)
./bin/Server.bat start # Start Jpom server
./bin/Server.bat stop # Stop Jpom server
./bin/Server.bat restart # Restart Jpom server
./bin/Server.bat status # View Jpom server running status
# Server management script (control panel), follow the prompts in the panel to enter operations
./bin/Server.bat
# Plugin management script
./bin/Agent.bat start # Start Jpom plugin
./bin/Agent.bat stop # Stop Jpom plugin
./bin/Agent.bat restart # Restart Jpom plugin
./bin/Agent.bat status # View Jpom plugin running status
# Plugin management script (control panel), follow the prompts in the panel to enter operations
./bin/Agent.bat
In Windows systems, after executing the startup, you need to follow the logs to track the startup status. If there are garbled characters, please check or modify the encoding format. The recommended encoding format for bat files in Windows systems is
GB2312
.
- Use sh script files in Linux systems.
# Server
./bin/Server.sh start # Start Jpom server
./bin/Server.sh stop # Stop Jpom server
./bin/Server.sh restart # Restart Jpom server
./bin/Server.sh status # View Jpom server running status
./bin/Service.sh install # Create application service for Jpom server (jpom-server)
# Plugin
./bin/Agent.sh start # Start Jpom plugin
./bin/Agent.sh stop # Stop Jpom plugin
./bin/Agent.sh restart # Restart Jpom plugin
./bin/Agent.sh status # View Jpom plugin running status
./bin/Service.sh install # Create application service for Jpom plugin (jpom-agent)
Linux Service Management#
The installation service here is for reference only; you can customize the configuration according to your needs.
After successfully using
./bin/Service.sh install
systemctl {status | start | stop | restart} jpom-server
systemctl {status | start | stop | restart} jpom-agent
⚙️ Jpom Parameter Configuration#
In the root path of the project:
Program Configuration ./conf/application.yml
#
- Plugin side example:
application.yml
- Server side example:
application.yml
Project Logs ./conf/logback.xml
#
- Plugin side example:
logback.xml
- Server side example:
logback.xml