Files
server-deploy/base
2026-04-28 17:07:08 +08:00
..
2026-04-28 17:07:08 +08:00
2026-04-28 17:07:08 +08:00
2026-04-28 17:07:08 +08:00

服务器基础环境

公共基础设施脚本,提供以下功能:

  • 系统初始化:安装常用工具、设置时区
  • Docker 安装:使用阿里云镜像源,配置国内加速
  • Nginx 安装:反向代理服务器,统一管理 HTTPS
  • Certbot 安装Let's Encrypt SSL 证书自动申请与续期
  • 防火墙配置:开放 SSH / HTTP / HTTPS 端口

设计理念

  • 幂等性:每个安装步骤都会先检查是否已安装,避免重复操作
  • 可复用:既可以独立运行,也可以被其他服务的部署脚本 source 调用
  • 国内优化Docker 使用阿里云 APT 源安装,镜像拉取使用国内加速

使用方式

方式一:独立运行(安装全部基础环境)

# 上传到服务器
scp -r base/ root@<服务器IP>:/opt/base

# 登录服务器执行
cd /opt/base
cp .env.example .env
# 编辑 .env 配置 Docker 镜像加速(可选)
# 配置 SSH_PUBLIC_KEY 可实现密钥登录(推荐)
bash setup.sh

配置 SSH 密钥认证(推荐)

首次部署前,将本地公钥填入 base/.envsetup.sh 运行时会自动配置服务器,后续 SSH/SCP 无需再输入密码。

第一步:生成本地 SSH 密钥(如果还没有)

# Windows PowerShell
ssh-keygen -t ed25519

第二步:将公钥写入 base/.env

# Windows PowerShell复制公钥内容
Get-Content ~/.ssh/id_ed25519.pub

将输出的内容(形如 ssh-ed25519 AAAA... comment)填入 base/.env

SSH_PUBLIC_KEY=ssh-ed25519 AAAA...(你的公钥内容)

第三步:上传 .env 并运行 setup.sh

正常执行上传和 bash setup.shSSH 密钥即自动配置完成。后续连接直接:

ssh root@<服务器IP>         # 无需密码
scp -r ... root@<服务器IP>  # 无需密码

方式二:被其他服务脚本调用

#!/usr/bin/env bash
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BASE_DIR="$(cd "$SCRIPT_DIR/../base" && pwd)"
source "$BASE_DIR/setup.sh"

# 现在可以使用 base 提供的所有函数
check_root
init_system
install_docker
install_nginx
# ...

提供的函数

函数 说明
check_root 检查是否 root 用户
init_system 系统初始化,安装基础工具
install_docker 安装 Docker + Compose V2
configure_docker_mirrors 配置 Docker 镜像加速
install_nginx 安装配置 Nginx
install_certbot 安装 Certbot
setup_firewall_base 开放 22/80/443 端口
firewall_allow_port <port> [desc] 开放额外端口
setup_ssh_key <pubkey> 配置 SSH 公钥认证
setup_ssl_cert <domain> <email> [name] 申请 SSL 证书
deploy_nginx_conf <template> <domain> <name> 部署 Nginx 反向代理配置
load_base_env [dir] 加载 base/.env

目录结构

base/
├── setup.sh          # 主脚本(函数库 + 独立运行入口)
├── .env.example      # 配置模板
├── .env              # 实际配置(从 .env.example 复制)
└── README.md         # 本文件