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
登录后立即修改邮箱与密码。

Ubuntu 上“带界面好用”的反向代理管理系统首推 Nginx Proxy Manager(NPM)Ubuntu 上“带界面好用”的反向代理管理系统首推 Nginx Proxy Manager(NPM)

阅读剩余
THE END