From cdee1885b97b251e7f16887650eb77a9af11d21c Mon Sep 17 00:00:00 2001 From: lostecho Date: Fri, 26 Dec 2025 07:42:44 +0000 Subject: [PATCH] add readme --- .gitignore | 27 +++++++- README.md | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 README.md diff --git a/.gitignore b/.gitignore index 1b09780..953d756 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,27 @@ .DS_Store files/.DS_Store -.DS_Store -files/.DS_Store + +# PyCharm +.idea/ +*.iml +*.iws +.idea_modules/ + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +env/ +venv/ +ENV/ +.venv + +# Ansible +*.retry +ansible.cfg + +# OS +Thumbs.db + diff --git a/README.md b/README.md new file mode 100644 index 0000000..c315aec --- /dev/null +++ b/README.md @@ -0,0 +1,190 @@ +# Ansible 管理项目 + +这是一个用于自动化部署和管理多个服务器配置的 Ansible 项目,包括 Caddy 反向代理、frpc 内网穿透和 Docker Compose 服务。 + +## 项目结构 + +``` +ansible_management/ +├── inventory.ini # Ansible 主机清单文件 +├── deploy_caddy.yml # 部署 Caddy 配置 +├── deploy_clash.yml # 部署 Clash 和 Docker Compose 服务 +├── deploy_docker.yml # 部署 Docker Compose 应用 +├── deploy_frpc.yml # 部署 frpc 服务 +└── files/ # 配置文件目录 + ├── 192.168.31.101/ # 本地服务器配置 + │ ├── Caddyfile + │ ├── clash/ + │ ├── dify/ + │ ├── frp/ + │ │ ├── docker-compose.yml + │ │ └── frpc.toml + │ ├── lobe-chat-database/ + │ └── openlist/ + └── 192.238.204.39/ # 远程服务器配置 + └── Caddyfile +``` + +## 前置要求 + +1. **Ansible**:在控制节点上安装 Ansible + ```bash + # Ubuntu/Debian + sudo apt update && sudo apt install ansible + + # macOS + brew install ansible + ``` + +2. **SSH 访问**:确保可以通过 SSH 无密码访问目标服务器 + ```bash + # 生成 SSH 密钥(如果还没有) + ssh-keygen -t ed25519 + + # 复制公钥到目标服务器 + ssh-copy-id root@192.168.31.101 + ssh-copy-id root@192.238.204.39 + ``` + +3. **目标服务器要求**: + - 已安装 Python 3(Ansible 需要) + - 对于 Alpine Linux,可能需要预先安装 Python 3 + +## 配置说明 + +### 主机清单 (inventory.ini) + +编辑 `inventory.ini` 文件,配置您的服务器信息: + +```ini +[caddy_servers] +# 本地 1panel 服务器 +192.168.31.101 + +# 远程 Ubuntu 服务器 +192.238.204.39 + +[all:vars] +# 请替换成您登录服务器的用户名 +ansible_user=root + +# 可选:指定 SSH 密钥路径 +192.168.31.101 ansible_ssh_private_key_file=~/.ssh/id_ed25519 +192.168.204.39 ansible_ssh_private_key_file=~/.ssh/id_ed25519 +``` + +### 配置文件 + +在 `files/` 目录下,为每个主机准备相应的配置文件: + +- **Caddyfile**:Caddy 反向代理配置 +- **frpc.toml**:frpc 内网穿透配置 +- **docker-compose.yml**:Docker Compose 服务定义 + +文件命名规则:`files/<主机名>/<配置文件>` + +## 部署命令 + +### 1. 测试连接 + +在部署前,先测试 Ansible 是否能连接到所有主机: + +```bash +ansible caddy_servers -i inventory.ini -m ping +``` + +### 2. 部署 Caddy 配置 + +部署 Caddy 配置文件并重载服务: + +```bash +ansible-playbook -i inventory.ini deploy_caddy.yml +``` + +### 3. 部署 frpc 服务 + +部署 frpc 配置并重启服务: + +```bash +ansible-playbook -i inventory.ini deploy_frpc.yml +``` + +### 4. 部署 Docker Compose 服务 + +部署 Docker Compose 应用: + +```bash +ansible-playbook -i inventory.ini deploy_docker.yml +``` + +### 5. 部署 Clash 服务 + +部署 Clash 相关配置: + +```bash +ansible-playbook -i inventory.ini deploy_clash.yml +``` + +### 6. 部署所有服务 + +一次性部署所有服务: + +```bash +ansible-playbook -i inventory.ini deploy_caddy.yml deploy_frpc.yml deploy_docker.yml deploy_clash.yml +``` + +## 服务说明 + +### Caddy + +Caddy 是一个自动 HTTPS 的 Web 服务器,用于反向代理多个服务到公网域名。 + +- **配置文件**:`/etc/caddy/Caddyfile` +- **服务管理**: + - systemd: `systemctl reload caddy` + - OpenRC: `rc-service caddy reload` + +### frpc + +frpc 是 frp 的客户端,用于内网穿透,将内网服务暴露到公网。 + +- **配置文件**:`/root/frpc/data/frpc.toml` +- **Docker Compose**:`/root/frpc/docker-compose.yml` +- **管理命令**:`docker compose -f /root/frpc/docker-compose.yml up -d` + +### Docker Compose 服务 + +支持通过 Docker Compose 部署的各种应用服务。 + +## 注意事项 + +1. **配置验证**:Caddyfile 会在部署前进行语法验证 +2. **权限设置**:敏感配置文件(如 frpc.toml)使用 `0640` 权限 +3. **系统兼容性**: + - 支持 systemd(Ubuntu/Debian) + - 支持 OpenRC(Alpine Linux) +4. **主机特定配置**:某些任务使用 `when` 条件仅在特定主机上执行 + +## 故障排查 + +### 查看详细输出 + +```bash +ansible-playbook -i inventory.ini deploy_caddy.yml -vvv +``` + +### 检查特定主机 + +```bash +ansible-playbook -i inventory.ini deploy_caddy.yml --limit 192.168.31.101 +``` + +### 仅执行检查(不实际执行) + +```bash +ansible-playbook -i inventory.ini deploy_caddy.yml --check +``` + +## 许可证 + +请参阅 [LICENSE](LICENSE) 文件了解详细信息。 \ No newline at end of file