Hey, wanna install PPanel? Hold up—gotta get your domain and Nginx ready first. Otherwise, it's like trying to make instant noodles without hot water... just staring at dry noodles! 😂 What you need: A domain (I use Cloudflare, example is sahara.de5.net—swap in your own, okay?) + A server with root access (don't tell me you don't have one yet~).
Pro move: Add an A record (or AAAA for IPv6) in your domain DNS settings, pointing to your server's IP. Once that's done, SSH into your server (I went straight for Google Cloud), and let's roll!
Easy, right? Follow along, no crashes guaranteed—because I've already crashed for you! 🚗💨
嘿!想装PPanel?先别急——域名和Nginx得安排上,不然就像煮泡面没开水,干瞪眼!😂 你需要啥:一个域名(我托管在Cloudflare,示例是sahara.de5.net,你换成自己的哦!)+ 一台有root权限的服务器(别告诉我还没有~)。
骚操作:在域名托管那儿加个A记录(IPv6就加AAAA),把域名指向服务器IP。搞定后,ssh连上服务器(我直接怼了谷歌云),准备开整!
简单吧?跟着走,不翻车,因为我翻过车了~🚗💨
# 用这个命令查看一下OS | Check the OS with this command
uname -a && cat /proc/version
# 转换到root用户 | Switch to root user
sudo -i
# 更新软件 | Update software packages
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
# 安装一下 curl nginx vim | Install curl nginx vim
apt install -y curl nginx vim
# 检查一下nginx是否已经安装好 | Check if nginx is installed correctly
which nginx
# 启动nginx | Start nginx
systemctl enable --now nginx
# 安装acme, 它能够自动获取SSL/TLS证书 | Install acme, which can automatically obtain SSL/TLS certificates
curl https://get.acme.sh | sh -s
export PATH="$HOME/.acme.sh:$PATH"
# 创建ppanel配置文件到Nginx底下 | Create ppanel config file under Nginx
touch /etc/nginx/conf.d/ppanel.conf
# 复制的配置文件内容 -- {sahara.de5.net -> 你的域名} | Configuration file content -- {sahara.de5.net -> your domain}
server {
listen 80;
listen [::]:80;
server_name admin.sahara.de5.net
user.sahara.de5.net
api.sahara.de5.net;
location /.well-known/acme-challenge {
root /opt/ppanel;
}
}
# 重新加载nginx | Reload nginx
nginx -t && nginx -s reload
# 创建验证⽬录 | Create verification directory
mkdir -p /opt/ppanel/.well-known/acme-challenge
# 创建证书存放⽬录 | Create certificate storage directory
mkdir /opt/ppanel/certs
# 创建ssl证书 -- {sahara.de5.net -> 你的域名} | Create SSL certificate -- {sahara.de5.net -> your domain}
acme.sh --issue --server letsencrypt \
-d admin.sahara.de5.net \
-d api.sahara.de5.net \
-d user.sahara.de5.net \
-w /opt/ppanel
# 查看服务器公网IP | Check server public IP
curl -4 ipinfo.io/ip
# 安装证书 -- {sahara.de5.net -> 你的域名} | Install certificate -- {sahara.de5.net -> your domain}
acme.sh --install-cert -d admin.sahara.de5.net \
--key-file /opt/ppanel/certs/key.pem \
--fullchain-file /opt/ppanel/certs/cert.pem \
--reloadcmd "systemctl reload nginx"
# 自动刷新 -- {sahara.de5.net -> 你的域名} | Auto-renew -- {sahara.de5.net -> your domain}
# 每天凌晨 1:30 自动执行 "证书续期" 的任务,让SSL证书不会过期。 | Automatically renew SSL certificate at 1:30 AM daily to prevent expiration
echo "30 1 * * * \
acme.sh --renew \
-d admin.sahara.de5.net \
-d api.sahara.de5.net \
-d user.sahara.de5.net \
--force &> /dev/null" \
>> /etc/cron.d/ppanel_domain \
&& chmod +x /etc/cron.d/ppanel_domain
# 确认定时更新SSL任务添加 | Confirm scheduled SSL renewal task added
cat /etc/cron.d/ppanel_domain
# 应该能看到下面这个东西 -- {sahara.de5.net -> 你的域名}: | You should see the following -- {sahara.de5.net -> your domain}:
30 1 * * * acme.sh --renew -d admin.sahara.de5.net -d api.sahara.de5.net -d user.sahara.de5.net --force &> /dev/null
# 配置Nginx, 要进到/打开这个nginx的配置文件(/etc/nginx/nginx.conf) | Configure Nginx, open this nginx config file (/etc/nginx/nginx.conf)
# {sahara.de5.net -> 你的域名} | {sahara.de5.net -> your domain}
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 日志格式(可选) | Log format (optional)
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
### =============== HTTP Server ===============
server {
listen 80;
listen [::]:80;
server_name admin.sahara.de5.net api.sahara.de5.net user.sahara.de5.net;
# Let's Encrypt 验证目录 | Let's Encrypt verification directory
location ^~ /.well-known/acme-challenge/ {
root /opt/ppanel;
default_type "text/plain";
}
# 其他请求全部重定向到 HTTPS | Redirect all other requests to HTTPS
location / {
return 301 https://$host$request_uri;
}
}
### =============== HTTPS for admin ===============
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name admin.sahara.de5.net;
ssl_certificate /opt/ppanel/certs/cert.pem;
ssl_certificate_key /opt/ppanel/certs/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
### =============== HTTPS for api ===============
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name api.sahara.de5.net;
ssl_certificate /opt/ppanel/certs/cert.pem;
ssl_certificate_key /opt/ppanel/certs/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
### =============== HTTPS for user ===============
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name user.sahara.de5.net;
ssl_certificate /opt/ppanel/certs/cert.pem;
ssl_certificate_key /opt/ppanel/certs/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
# 检测nginx语法,重新加载nginx | Check nginx syntax, reload nginx
nginx -t && nginx -s reload
# 域名配置完成之后,就可以开始安装PPanel了. | After domain configuration is complete, you can start installing PPanel.
# 这个是官网的PPanel Docker 一件安装命令(2025年12月13号) | This is the official PPanel Docker one-click installation command. (13/12/2025)
bash <(curl -fsSL https://raw.githubusercontent.com/perfect-panel/ppanel-script/refs/heads/main/install.sh)
No comments:
Post a Comment