Ubuntu 上“带界面好用”的反向代理管理系统首推 Nginx Proxy Manager(NPM)
安装 Nginx Proxy Manager(Docker Compose 方式)
适用:Ubuntu 20.04/22.04/24.04(需要有 80/443/81 端口),域名已指向本机。
1.一键安装 安装 Docker 与 Compose
一键安装 Docker 与 Compose(插件版)的脚本
使用方法
1)保存为 install-docker.sh
2)执行:bash install-docker.sh
(非 root 会自动用 sudo)
3)若要把当前用户加入 docker 组,执行:bash install-docker.sh --with-group
#!/usr/bin/env bash
# 安装 Docker CE 与 Docker Compose 插件(Ubuntu)
# 用法:
# bash install-docker.sh # 标准安装
# bash install-docker.sh --with-group # 安装后把当前用户加入 docker 组(免 sudo)
set -euo pipefail
WITH_GROUP="no"
if [[ "${1:-}" == "--with-group" ]]; then
WITH_GROUP="yes"
fi
#------- 提权工具 -------
if [[ $EUID -ne 0 ]]; then
SUDO="sudo"
else
SUDO=""
fi
#------- 基本检查 -------
if [[ ! -f /etc/os-release ]]; then
echo "不支持的系统:缺少 /etc/os-release"
exit 1
fi
source /etc/os-release
if [[ "${ID,,}" != "ubuntu" ]]; then
echo "此脚本仅支持 Ubuntu,检测到:$ID"
exit 1
fi
ARCH="$(dpkg --print-architecture)"
if [[ "$ARCH" != "amd64" && "$ARCH" != "arm64" ]]; then
echo "当前架构 $ARCH 未在脚本中验证,Docker 可能仍支持,但建议先确认。"
fi
#------- 卸载旧版本(若存在) -------
$SUDO apt-get remove -y docker docker-engine docker.io containerd runc >/dev/null 2>&1 || true
#------- 基础依赖 -------
$SUDO apt-get update -y
$SUDO apt-get install -y ca-certificates curl gnupg lsb-release
#------- 配置 Docker 官方仓库 -------
$SUDO install -m 0755 -d /etc/apt/keyrings
if [[ ! -f /etc/apt/keyrings/docker.asc ]]; then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | $SUDO tee /etc/apt/keyrings/docker.asc > /dev/null
$SUDO chmod a+r /etc/apt/keyrings/docker.asc
fi
CODENAME="$(. /etc/os-release && echo $VERSION_CODENAME)"
SOURCE_LINE="deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu ${CODENAME} stable"
echo "$SOURCE_LINE" | $SUDO tee /etc/apt/sources.list.d/docker.list > /dev/null
#------- 安装 Docker CE 与 Compose 插件 -------
$SUDO apt-get update -y
$SUDO apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#------- 启动并开机自启 -------
$SUDO systemctl enable --now docker
#-------(可选)将当前用户加入 docker 组 -------
if [[ "$WITH_GROUP" == "yes" ]]; then
if ! getent group docker >/dev/null; then
$SUDO groupadd docker
fi
# 若当前为 root,跳过加组
if [[ $EUID -ne 0 ]]; then
$SUDO usermod -aG docker "$USER"
ADDED_GROUP_MSG="已将用户 $USER 加入 docker 组;请重新登录终端使之生效。"
else
ADDED_GROUP_MSG="(当前为 root 运行,未修改任何用户组)"
fi
else
ADDED_GROUP_MSG="(未请求加入 docker 组,若需免 sudo 请使用 --with-group)"
fi
#------- 验证版本 -------
DOCKER_V="$($SUDO docker version --format '{{.Server.Version}}' 2>/dev/null || true)"
COMPOSE_V="$($SUDO docker compose version 2>/dev/null | awk '{print $3}' || true)"
echo "----------------------------------------"
echo "Docker 安装完成!"
echo "Docker 版本: ${DOCKER_V:-未知}"
echo "Docker Compose 版本: ${COMPOSE_V:-未知}"
echo "$ADDED_GROUP_MSG"
echo "测试命令:docker run --rm hello-world"
echo "Compose 用法示例:docker compose up -d"
echo "----------------------------------------"
2.在 Compose启动NPM
sudo mkdir -p /opt/npm
cd /opt/npm
cat > docker-compose.yml <<'EOF'
services:
npm:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- "80:80" # 对外 HTTP
- "81:81" # 面板(可以自定义)
- "443:443" # 对外 HTTPS
environment:
TZ: Asia/Shanghai # 按需改时区
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
# 如需让 NPM 直接把本机下载目录暴露为静态文件,可再挂载一条(只读):
# - /data/downloads:/srv/downloads:ro
EOF
sudo docker compose up -d
3.首次登录面板
浏览器打开:http://服务器IP:81
默认账号:[email protected]
默认密码:changeme
登录后立即修改邮箱与密码。
阅读剩余
版权声明:
作者:易策ZeroToOne
链接:https://yicego.com/chatgpt/chatgpt-share/491.html
文章版权归作者所有,未经允许请勿转载。
THE END