feat:添加极光面板到列表

This commit is contained in:
okxlin 2023-07-03 23:54:34 +08:00
parent e72ae45db0
commit b03d17b045
9 changed files with 634 additions and 0 deletions

View File

@ -0,0 +1,8 @@
CONTAINER_NAME="aurora"
DATA_PATH="./data"
PANEL_APP_PORT_HTTP="40036"
PANEL_DB_NAME="aurora_2NEat7"
PANEL_DB_USER="aurora_MiTsmn"
PANEL_DB_USER_PASSWORD="aurora_NMXeah"
SECRECY_KEY="aurora_CHQxSd"
SSH_KEY_PATH="/root/.ssh/id_rsa"

View File

@ -0,0 +1,56 @@
additionalProperties:
formFields:
- default: aurora
envKey: PANEL_DB_NAME
labelEn: Database
labelZh: 数据库名
random: true
required: true
rule: paramCommon
type: text
- default: aurora
envKey: PANEL_DB_USER
labelEn: User
labelZh: 数据库用户
random: true
required: true
rule: paramCommon
type: text
- default: aurora
envKey: PANEL_DB_USER_PASSWORD
labelEn: Password
labelZh: 数据库用户密码
random: true
required: true
rule: paramComplexity
type: password
- default: 40036
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: 端口
required: true
rule: paramPort
type: number
- default: ./data
edit: true
envKey: DATA_PATH
labelEn: Data storage folder
labelZh: 数据存放文件夹
required: true
type: text
- default: /root/.ssh/id_rsa
edit: true
envKey: SSH_KEY_PATH
labelEn: SSH key file
labelZh: SSH 私钥文件
required: true
type: text
- default: aurora
envKey: SECRECY_KEY
labelEn: Secret Key
labelZh: 保密密码
random: true
required: true
rule: paramComplexity
type: password

View File

@ -0,0 +1,100 @@
version: "3"
services:
worker:
container_name: ${CONTAINER_NAME}-worker
restart: always
networks:
- aurora-network
- aurora-worker
volumes:
- ${SSH_KEY_PATH}:/app/ansible/env/ssh_key
- ${DATA_PATH}/aurora:/app/ansible/priv_data_dirs
environment:
TZ: 'Asia/Shanghai'
DATABASE_URL: postgresql://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@postgres:5432/${PANEL_DB_NAME}
TRAFFIC_INTERVAL_SECONDS: 600
DDNS_INTERVAL_SECONDS: 120
command: bash worker.sh
image: leishi1313/aurora-admin-backend:0.18.6
depends_on:
- redis
labels:
createdBy: Apps
backend:
container_name: ${CONTAINER_NAME}-backend
restart: always
networks:
- aurora-network
volumes:
- ${DATA_PATH}/aurora:/app/ansible/priv_data_dirs
environment:
TZ: 'Asia/Shanghai'
PYTHONPATH: .
DATABASE_URL: postgresql://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@postgres:5432/${PANEL_DB_NAME}
SECREY_KEY: ${SECRECY_KEY}
image: leishi1313/aurora-admin-backend:0.18.6
command: bash -c "while !</dev/tcp/postgres/5432; do sleep 1; done; alembic upgrade heads && python app/main.py"
depends_on:
- postgres
- redis
labels:
createdBy: Apps
nginx:
container_name: ${CONTAINER_NAME}-nginx
restart: always
networks:
- aurora-network
image: leishi1313/aurora-admin-frontend:0.18.6
environment:
TZ: 'Asia/Shanghai'
ports:
- "${PANEL_APP_PORT_HTTP}:80"
depends_on:
- backend
labels:
createdBy: Apps
redis:
container_name: ${CONTAINER_NAME}-redis
restart: always
networks:
- aurora-network
environment:
TZ: 'Asia/Shanghai'
image: redis:7.0.11
labels:
createdBy: Apps
postgres:
container_name: ${CONTAINER_NAME}-postgres
restart: always
networks:
- aurora-network
volumes:
- "${DATA_PATH}/db-data:/var/lib/postgresql/data"
environment:
TZ: 'Asia/Shanghai'
POSTGRES_USER: ${PANEL_DB_USER}
POSTGRES_PASSWORD: ${PANEL_DB_USER_PASSWORD}
POSTGRES_DB: ${PANEL_DB_NAME}
image: postgres:13-alpine
labels:
createdBy: Apps
networks:
aurora-worker:
external: true
enable_ipv6: false
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "true"
ipam:
driver: default
config:
- subnet: fd00:ea23:9c80:4a54:e242:5f97::/96
gateway: fd00:ea23:9c80:4a54:e242:5f97::1
aurora-network:
external: true
driver: bridge

286
apps/aurora/README.md Normal file
View File

@ -0,0 +1,286 @@
# 使用介绍
## 1.前期准备
- 创建所需网络
终端运行
```
docker network create aurora-worker
docker network create aurora-network
```
## 2.生成 SSH 密钥
```
# 如果面板服务器并没有已经生成好的 ssh 密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 后面一直回车,跳过设置 passphase 即可
# 然后还需要将面板服务器 ~/.ssh/id_rsa.pub 里面的内容复制到每一台被控机的 ~/.ssh/authorized_keys 文件中去。
```
## 3.启动应用后创建管理员
当应用已经正确启动,点击面板"容器"功能,,找到与`aurora` `backend`相关的容器,
终端运行以下
```
# 创建管理员用户密码必须设置8位以上否则无法登陆
python app/initial_data.py
```
## 4.已知问题
当开启`UFW`等防火墙功能时,所创建的网络间容器通信存在问题,无法正确运行。
有兴趣的可以尝试以下方式,或可解决与防火墙的共存问题。
- [what-is-the-best-practice-of-docker-ufw-under-ubuntu](https://stackoverflow.com/questions/30383845/what-is-the-best-practice-of-docker-ufw-under-ubuntu)
* * *
# 原始相关
# 极光面板
## 这是什么?
这是一个多服务器端口租用管理面板,你可以添加多台服务器及端口,并将其分配给任意注册用户,租户则可以很方便地使用被分配的端口来完成各种操作,目前支持的端口功能(**以下功能均支持 AMD64 或 ARM64 架构运行**
- [iptables](https://www.netfilter.org/)
- [socat](http://www.dest-unreach.org/socat/)
- [gost](https://github.com/ginuerzh/gost)
- [ehco](https://github.com/Ehco1996/ehco)
- [realm](https://github.com/zephyrchien/realm)
- [v2ray](https://github.com/v2fly/v2ray-core)
- [brook](https://github.com/txthinking/brook)
- [iperf](https://iperf.fr)
- [haproxy](http://www.haproxy.org)
- [wstunnel](https://github.com/erebe/wstunnel)
- [shadowsocks](https://github.com/shadowsocks)
- [tinyPortMapper](https://github.com/wangyu-/tinyPortMapper)
- [Prometheus Node Exporter](https://github.com/leishi1313/node_exporter)
目前,全部端口转发功能均已支持 `IPV6` 。除 `iptables` 以外的转发方式,如果中转机器本身同时具备 `IPV4``IPV6` 网络访问能力,可以借助端口转发实现 `IPV4 to IPV6``IPV6 to IPV4`
### 面板服务器与被控机说明
**面板建议安装在单独的一台服务器上,建议安装配置为不低于单核 512M 内存的 VPS 中**,可以直接部署到本地。**被控机端无需做任何特别配置,只需保证面板服务器能够通过 ssh 连接至被控机即可。**
面板服务器在连接被控机的时候会检测被控机是否已经安装好 python python 为被控机必须依赖),如果被控机上没安装会自动在被控机上通过 apt / yum 执行 python 安装优先安装python3如果被控机没有自带 python 且自动安装失败会导致面板显示被控机连接失败(表现为被控机连接状态持续转圈)。
#### 面板(主控机)支持进度:
- 操作系统
- [x] CentOS 7+
- [x] Debian 8+
- [x] Ubuntu 18+
- [x] Alpine Linux 3.15.0+ (请使用一键脚本安装)
- 虚拟平台
- [x] KVM
- [x] VMware
- [x] OVZ (需要 OVZ 支持 docker
- CPU 架构
- [x] AMD64
- [x] ARM64
- 网络类型
- [x] IPV4
- [X] IPV6
特别说明:由于 docker 默认不开启 IPV6如果需要在面板通过 IPV6 连接被控机 SSH请在面板机器的配置文件中开启 `ipv6` 选项,并使用 `ip6tables` 命令为容器添加 IPV6 NAT**命令中的 IPV6 地址不需要做任何更改**
```shell
# 1. docker-compose.yml 配置开启 ipv6 选项,该配置文件默认在 ~/aurora/ 目录下
# 找到 enable_ipv6: false 该行,将 false 改为 true重建容器
cd ~/aurora/ && docker-compose up -d
# 2. ip6tables 命令,直接复制粘贴回车即可(注意,重启系统会导致 ip6tables 规则被重置,需要手动重新添加)
ip6tables -t nat -A POSTROUTING -s fd00:ea23:9c80:4a54:e242:5f97::/96 -j MASQUERADE
```
#### 中转机器(被控机)支持进度:
- 操作系统
- [x] CentOS 7+
- [x] Debian 8+
- [x] Ubuntu 18+
- [ ] Alpine Linux 3.15.0+ (正在开发中,仅支持 iptables 转发和流量统计)
- [x] 其他操作系统如果支持 docker可以参考下面的手动安装方法
- 虚拟平台
- [x] KVM
- [x] VMware
- [x] OVZ
- CPU 架构
- [x] AMD64
- [x] ARM64
- 网络类型
- [x] IPV4
- [X] IPV6
- Linux init process
- [x] systemd
- [ ] SysVinit
- [ ] OpenRC
## 怎么跑起来?
## 一键脚本(推荐)
目前已支持一键安装、更新(自动同步旧配置)、卸载面板以及备份数据库、添加超级管理员帐号、更换面板端口等操作。**使用一键脚本安装后,如果仍需使用一脚脚本更新,请勿更改数据库用户名和密码,否则会使得更新后无法同步更改后的数据库用户名和密码,导致数据库连接出错。**
```shell
bash <(curl -fsSL https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/install.sh)
# 国内机器安装可以选择使用 fastgit 镜像
# 但由于拉取 docker 镜像时候默认服务器仍在国外,可能拉取速度较慢
# 可自行搜索如何配置 Docker Hub 国内镜像加速
# bash <(curl -fsSL https://raw.fastgit.org/Aurora-Admin-Panel/deploy/main/install.sh) --mirror
```
一键脚本默认从 Github 拉取所需的配置文件,如果是在国内机器安装,请检查连接 Github 的网络是否正常。一键脚本也支持更新测试版本,只需要添加 `--dev` 参数执行脚本即可,但是测试版本并不稳定,可能会出现各种问题,不建议在生产环境中使用。
## 手动安装 — 中转被控机
**对于不在中转机器(被控机)支持进度里面的系统版本,无法直接使用面板连接中转机器。** 如果被控机支持运行 docker则可以利用被控机运行一个网络模式为 host 的特权 centos7 容器,并利用面板连接到 centos7 docker 中,实现转发功能的操作。(或可以参考 [aurora-client](https://github.com/smartcatboy/aurora-client) 直接编译被控端镜像运行)
```shell
# 启动 centos 7 特权容器,设置网络模式为 host ,并设置为开机自启动
sudo docker run -d --privileged --name aurora-client --network=host --restart=always -v /lib/modules:/lib/modules centos:7 /usr/sbin/init
# 进入 centos 7 容器内
sudo docker exec -it aurora-client bash
# 在 docker 内安装 openssh 服务端,并修改容器的 ssh 端口(避免跟主机 ssh 服务冲突)
yum makecache -y && yum install -y openssh-server
sed -i "s/#Port 22/Port 62222/" /etc/ssh/sshd_config
# 启用 ssh 服务
systemctl enable --now sshd
# 安装 iptables 转发必须的依赖
yum install -y iproute
# 为 root 账号设置密码
passwd
# 直接在面板添加中转机器 ip:62222 ,用户名 root ,密码为刚刚设置的密码
# 卸载时候只需要在面板删除对应中转机,并删除 aurora-client 容器即可
sudo docker stop aurora-client && sudo docker rm aurora-client
```
## 手动安装 — 面板主控机
如果一键脚本提示不支持当前系统版本时,可以尝试使用手动安装的方式。
### 1. 安装 docker必须
```shell
curl -fsSL https://get.docker.com | sudo bash -s docker && sudo systemctl enable --now docker
# 国内机器安装可以选择使用阿里镜像
# curl -fsSL https://get.docker.com | sudo bash -s docker --mirror Aliyun && sudo systemctl enable --now docker
# 如果当前执行安装命令的不是 root 用户,请执行下面部分
# =================非root用户执行==================
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
# =================非root用户执行==================
```
### 2. 安装 docker-compose必须
```shell
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose
# 如果 /usr/local/bin 不在环境变量 PATH 里
# ============================可选================================
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# ============================可选================================
```
### 3. 生成 SSH 密钥(建议,非必须)
此步操作目的为让面板服务器通过密钥连接被控机 ssh **可以提高被控机安全性,非必须步骤**,如果不采用密钥连接方式,后续在面板添加被控机使可以选择使用密码连接的方式。
```shell
# 如果面板服务器并没有已经生成好的 ssh 密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 后面一直回车,跳过设置 passphase 即可
# 然后还需要将面板服务器 ~/.ssh/id_rsa.pub 里面的内容复制到每一台被控机的 ~/.ssh/authorized_keys 文件中去。
```
### 4. 安装并启动面板(必须)
```shell
mkdir -p ~/aurora && cd ~/aurora && wget https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/docker-compose.yml -O docker-compose.yml && docker-compose up -d
# 创建管理员用户密码必须设置8位以上否则无法登陆
docker-compose exec backend python app/initial_data.py
```
之后可以访问 `http://你的IP:8000` 进入面板。
## 配置说明
1. 修改所有的 `POSTGRES_USER``POSTGRES_PASSWORD` ,以及相应的 `DATABASE_URL` ,虽然数据库不公开,但使用默认的数据库用户和密码并不安全!
2. 后端默认会发送错误信息到 Sentry **建议使用测试版本不要关闭,方便排查错误**),可能会导致信息泄漏,移除 `ENABLE_SENTRY: 'yes'` 就好。
3. 默认挂载 `~/.ssh/id_rsa` 作为连接服务器的密钥,如使用其他密钥或者不使用密钥可以删除配置文件中的 `- $HOME/.ssh/id_rsa:/app/ansible/env/ssh_key`
## 更新
### 正式版
```shell
cd ~/aurora
wget https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/docker-compose.yml -O docker-compose.yml
docker-compose pull && docker-compose down --remove-orphans && docker-compose up -d
```
### ~~内测版(目前已不维护,请不要使用)~~
```shell
cd ~/aurora
wget https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/docker-compose-dev.yml -O docker-compose.yml
docker-compose pull && docker-compose down --remove-orphans && docker-compose up -d
```
## 数据库备份与恢复
### 备份
```shell
docker-compose exec -T postgres pg_dump -d aurora -U [数据库用户名默认aurora] -c > data.sql
```
### 恢复
```shell
# 首先先把所有服务停下
docker-compose down
# 只启动数据库服务
docker-compose up -d postgres
# 执行数据恢复
docker-compose exec -T postgres psql -d aurora -U [数据库用户名默认aurora] < data.sql
# 然后正常启动所有服务
docker-compose up -d
```
## 卸载面板
```shell
docker-compose down
docker volume rm aurora_db-data
docker volume rm aurora_app-data
```
## 面板长什么样?
### 服务器管理页面
![](https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/img/servers.png)
#### 修改/添加服务器
![](https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/img/servers_edit.png)
### 服务器端口管理页面
![](https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/img/server.png)
#### 添加/编辑端口
![](https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/img/server_port_edit.png)
#### 端口分配页面
![](https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/img/server_port_users.png)
#### 端口设置 iptables
![](https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/img/server_port_edit_rule_iptables.png)
#### 端口设置 gost
![](https://raw.githubusercontent.com/Aurora-Admin-Panel/deploy/main/img/server_port_edit_rule_gost.png)

20
apps/aurora/data.yml Normal file
View File

@ -0,0 +1,20 @@
name: Aurora
tags:
- 工具
title: 一个多服务器端口租用管理面板
type: 工具
description: 一个多服务器端口租用管理面板
additionalProperties:
key: aurora
name: Aurora
tags:
- Tool
shortDescZh: 一个多服务器端口租用管理面板
shortDescEn: A multi-server port leasing management panel
type: tool
crossVersionUpdate: true
limit: 1
recommend: 0
website: https://github.com/Aurora-Admin-Panel/deploy
github: https://github.com/Aurora-Admin-Panel/deploy
document: https://github.com/Aurora-Admin-Panel/deploy

View File

@ -0,0 +1,8 @@
CONTAINER_NAME="aurora"
DATA_PATH="./data"
PANEL_APP_PORT_HTTP="40036"
PANEL_DB_NAME="aurora_2NEat7"
PANEL_DB_USER="aurora_MiTsmn"
PANEL_DB_USER_PASSWORD="aurora_NMXeah"
SECRECY_KEY="aurora_CHQxSd"
SSH_KEY_PATH="/root/.ssh/id_rsa"

View File

@ -0,0 +1,56 @@
additionalProperties:
formFields:
- default: aurora
envKey: PANEL_DB_NAME
labelEn: Database
labelZh: 数据库名
random: true
required: true
rule: paramCommon
type: text
- default: aurora
envKey: PANEL_DB_USER
labelEn: User
labelZh: 数据库用户
random: true
required: true
rule: paramCommon
type: text
- default: aurora
envKey: PANEL_DB_USER_PASSWORD
labelEn: Password
labelZh: 数据库用户密码
random: true
required: true
rule: paramComplexity
type: password
- default: 40036
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: 端口
required: true
rule: paramPort
type: number
- default: ./data
edit: true
envKey: DATA_PATH
labelEn: Data storage folder
labelZh: 数据存放文件夹
required: true
type: text
- default: /root/.ssh/id_rsa
edit: true
envKey: SSH_KEY_PATH
labelEn: SSH key file
labelZh: SSH 私钥文件
required: true
type: text
- default: aurora
envKey: SECRECY_KEY
labelEn: Secret Key
labelZh: 保密密码
random: true
required: true
rule: paramComplexity
type: password

View File

@ -0,0 +1,100 @@
version: "3"
services:
worker:
container_name: ${CONTAINER_NAME}-worker
restart: always
networks:
- aurora-network
- aurora-worker
volumes:
- ${SSH_KEY_PATH}:/app/ansible/env/ssh_key
- ${DATA_PATH}/aurora:/app/ansible/priv_data_dirs
environment:
TZ: 'Asia/Shanghai'
DATABASE_URL: postgresql://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@postgres:5432/${PANEL_DB_NAME}
TRAFFIC_INTERVAL_SECONDS: 600
DDNS_INTERVAL_SECONDS: 120
command: bash worker.sh
image: leishi1313/aurora-admin-backend:0.18.6
depends_on:
- redis
labels:
createdBy: Apps
backend:
container_name: ${CONTAINER_NAME}-backend
restart: always
networks:
- aurora-network
volumes:
- ${DATA_PATH}/aurora:/app/ansible/priv_data_dirs
environment:
TZ: 'Asia/Shanghai'
PYTHONPATH: .
DATABASE_URL: postgresql://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@postgres:5432/${PANEL_DB_NAME}
SECREY_KEY: ${SECRECY_KEY}
image: leishi1313/aurora-admin-backend:0.18.6
command: bash -c "while !</dev/tcp/postgres/5432; do sleep 1; done; alembic upgrade heads && python app/main.py"
depends_on:
- postgres
- redis
labels:
createdBy: Apps
nginx:
container_name: ${CONTAINER_NAME}-nginx
restart: always
networks:
- aurora-network
image: leishi1313/aurora-admin-frontend:0.18.6
environment:
TZ: 'Asia/Shanghai'
ports:
- "${PANEL_APP_PORT_HTTP}:80"
depends_on:
- backend
labels:
createdBy: Apps
redis:
container_name: ${CONTAINER_NAME}-redis
restart: always
networks:
- aurora-network
environment:
TZ: 'Asia/Shanghai'
image: redis:7.0.11
labels:
createdBy: Apps
postgres:
container_name: ${CONTAINER_NAME}-postgres
restart: always
networks:
- aurora-network
volumes:
- "${DATA_PATH}/db-data:/var/lib/postgresql/data"
environment:
TZ: 'Asia/Shanghai'
POSTGRES_USER: ${PANEL_DB_USER}
POSTGRES_PASSWORD: ${PANEL_DB_USER_PASSWORD}
POSTGRES_DB: ${PANEL_DB_NAME}
image: postgres:13-alpine
labels:
createdBy: Apps
networks:
aurora-worker:
external: true
enable_ipv6: false
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "true"
ipam:
driver: default
config:
- subnet: fd00:ea23:9c80:4a54:e242:5f97::/96
gateway: fd00:ea23:9c80:4a54:e242:5f97::1
aurora-network:
external: true
driver: bridge

BIN
apps/aurora/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB