一键DD重装云ECS,抛弃宝塔面板,直接部署Nginx
逐步教程及Docker compose安装容器(慎点:超长篇幅)
一:一键DD
下载(当前系统是 Linux)
国外:
curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh
国内:
curl -O https://raw.gitmirror.com/bin456789/reinstall/main/reinstall.sh
所有功能均可在 Linux / Windows 下使用
Linux 下运行 bash reinstall.sh
Windows 下运行 reinstall.bat
功能 1: 安装 Linux
参数 --ci 表示强制使用云镜像安装
静态 IP 的机器安装 CentOS、Alma、Rocky、Fedora、Ubuntu,必须使用 --ci 参数
如果不清楚机器是静态 IP 还是动态 IP,也可使用 --ci
bash reinstall.sh centos 7|8|9 (8|9 为 stream 版本)
alma 8|9
rocky 8|9
fedora 38|39
debian 10|11|12
ubuntu 20.04|22.04
alpine 3.16|3.17|3.18|3.19
opensuse 15.5|tumbleweed
arch (暂不支持 ARM)
gentoo
不输入版本号,则安装最新版
安装完成后,直接reboot重启,会自动开始安装
二:安装Nginx
重装以后,整个服务器的思路是,只有nginx是跑在物理机的,其他都是虚拟机,一定要先安装的应用
防火墙,ufw
apt update
apt upgrade
apt install ufw
# 先开启22 端口,以防意外
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
# 开启ufw
ufw enable
ufw 常用的命令
# 查看端口
ufw status
# 开放端口
ufw allow 80/tcp
# 关闭端口
ufw delete allow 80/tcp
# 重装
ufw reload
nginx
注: nginx对文件敏感很高,修改的时候一定不能出错,不然服务异常。
apt install nginx
安装以后,默认位置在
/etc/nginx
nginx配置思路,在指定文件夹中,创建一个用来放nginx站点文件的文件夹,以及log的文件夹,
在nginx.conf追加配置,引用站点配置;
# /etc/nginx 文件夹下面
cd /etc/nginx
# 新建一个vhost
mkdir vhosts
# 编辑conf
nano nginx.conf
# 在配置文件中找到 include /etc/nginx/sites-enabled/*; 在后面添加
include /etc/nginx/vhosts/*.conf;
然后进入vhosts里面,为每个网站创建nginx的配置文件,比如给portainer创建一个反向代理
server {
listen 80; # 监听80端口,HTTP请求
listen 443 ssl http2; # 监听443端口,启用SSL和HTTP/2协议
server_name [YOUR DOMAIN]; # 服务器名称,请替换为您的域名{我这里填写的ip地址也可以}
# 设置访问日志和错误日志路径
access_log /var/www/wwwlog/pg.uncley.cc.log;
error_log /var/www/wwwlog/pg.uncley.cc.error.log;;
# SSL配置
ssl_certificate /YOUR SSL PATH/fullchain.pem; # SSL证书路径
ssl_certificate_key /YOUR SSL PATH/privkey.pem; # SSL私钥路径
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; # 支持的SSL协议版本
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; # SSL密码套件
ssl_prefer_server_ciphers on; # 优先使用服务器端的密码套件
ssl_session_cache shared:SSL:10m; # SSL会话缓存大小
ssl_session_timeout 10m; # SSL会话超时时间
add_header Strict-Transport-Security "max-age=31536000"; # 启用严格传输安全性
error_page 497 https://$host$request_uri; # 配置HTTPS强制跳转
# 自定义反向代理配置
location ^~ / {
proxy_pass http://localhost:9000; # 反向代理到本地9000端口
proxy_set_header Host localhost; # 设置代理请求头部
####################################
# 支持WebSocket
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "upgrade";
####################################
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Port $server_port;
# proxy_set_header REMOTE-HOST $remote_addr;
# add_header X-Cache $upstream_cache_status;
}
}
nginx创建以后需要重载
# 重载
systemctl reload nginx
# 也可以重启
systemctl restart nginx
三:一键docker
国外:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
国内:
curl -ssL https://get.daocloud.io/docker sh
四:一键docker创建portainer-ce中文版
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ce
安装完成后进入http://localhost:9000 ,进入portainer-ce ,注册登录
点击左侧网络,添加网络
五:compose文件-postgres
开始使用docker compose安装容器
1:先ssh在根目录下新建一个docker文件夹,方便以后的容器都在里面,方便查询管理
cd /home #进入home文件夹
mkdir docker #新建docker文件夹
cd docker #进入docker文件夹
#比如我现在要创建postgres文件夹
mkdir postgres #新建postgres文件夹
cd postgres #进入postgres文件夹
nano docker-compose.yml #新建docker-compose.yml文件
#会直接进入docker-compose.yml,然后复制下列命令进去,ctrl+o保存,enter确认,ctrl+x退出
#下面的docker compose有注释的都要修改,按需修改,或者只修改后面带有[666]的。
#退出后,在当前目录下输入运行yml,拉取并启动容器
docker compose up -d
version: '3'
services:
postgres:
image: postgres # 使用的镜像
container_name: postgres # 容器名称
ports:
- 5432:5432 # 将宿主机的5432端口映射到容器的5432端口
environment:
- POSTGRES_USER=postgres # PostgreSQL用户名 [666]
- POSTGRES_PASSWORD=jB2x3BNfqPWo5u # PostgreSQL密码 [666]
volumes:
- $PWD/config/postgres.conf:/etc/postgresql/postgresql.conf
- $PWD/data:/var/lib/postgresql/data
command: postgres -c 'config_file=/etc/postgresql/postgresql.conf'
networks:
default:
external: true
name: yang # 网络名称 [666]
六:compose文件pgadmin4
同上,需首先在 home/docker目录下新建容器文件夹,并在容器文件夹下新建docker-compose.yml文件。
version: '3'
services:
pgadmin4:
image: dpage/pgadmin4:latest
container_name: pgadmin4 # 容器名称
ports:
- 5433:80 # 将宿主机的5433端口映射到容器的80端口
volumes:
- $PWD/config/config.py:/pgadmin4/config.py # 挂载pgAdmin 4配置文件
environment:
- PGADMIN_DEFAULT_EMAIL=547877820@qq.com # 设置pgAdmin 4的默认邮箱 [666]
- PGADMIN_DEFAULT_PASSWORD=6601212xy.. # 设置pgAdmin 4的默认密码 [666]
- PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True # 设置增强的Cookie保护
- PGADMIN_CONFIG_LOGIN_BANNER="Authorised users only!"
- PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10
- PGDATA=/var/lib/postgresql/data/pgdata
networks:
default:
external: true
name: yang # 网络名称 [666]
安装完成后 我们吧pgadmin4反代出去,这样才能访问web管理
这里我们输入 cd /etc/nginx/vhosts
cp por.cc.conf pg.cc.conf
#这里的por.cc.conf就是刚刚portainer的反代理配置文件,我们把他复制并重命名为 pg.cc.conf
安装成功后登录数据库
这里需要修改配置文件
1:在postgres文件里新建conf文件
cd /home/docker/postgres/config
nano postgres.conf
#填入:listen_addresses = '*'
完成过后ctrl+o 保存 , enter 回车 , ctrl+x 退出编辑
2:再到data文件夹修改pg_hba.conf配置
这里注释掉local 和 host
并在下一行添加:host all all [your ip]/32 scram-sha-256
cd /home/docker/postgres/data
nano pg_hba.conf
host all all [your ip]/32 scram-sha-256
完成过后ctrl+o 保存 , enter 回车 , ctrl+x 退出编辑
然后回到portainer界面,重启一下postgres容器。
七:compose文件umami
同上,需首先在 home/docker目录下新建容器文件夹,并在容器文件夹下新建docker-compose.yml文件。
version: '3'
services:
umami:
image: docker.umami.dev/umami-software/umami:postgresql-latest
container_name: umami # 容器名称
ports:
- 3000:3000 # 将宿主机的3000端口映射到容器的3000端口
environment:
DATABASE_URL: postgresql://umami:123456..@172.18.0.2:5432/umami # Umami使用的数据库URL [666]
DATABASE_TYPE: postgresql # 数据库类型
APP_SECRET: 9DeGy7Dqc4rxoF # Umami的应用密钥
restart: always
networks:
default:
external:
name: yang # 网络名称 [666]
八:compose文件-vaultwarden的postgres版本
同上,需首先在 home/docker目录下新建容器文件夹,并在容器文件夹下新建docker-compose.yml文件。
version: '3.8' # 使用的Docker Compose文件版本
services: # 定义服务
server: # 服务器服务
container_name: vaultwarden # 容器名称
image: 'vaultwarden/server:latest' # 使用的镜像
volumes: # 挂载卷
- '$PWD/data/:/data/' # 将主机的$data目录挂载到容器的/data目录
env_file: # 环境文件
- ".env" # 使用当前目录下的.env文件
ports: # 端口映射
- '8081:80' # 将主机的8081端口映射到容器的80端口
environment: # 设置环境变量
- "DATABASE_URL=postgresql://vaultwarden:123456..@172.18.0.2:5432/vaultwarden" # 数据库连接URL
- "ADMIN_TOKEN=$argon2i$v=19$m=4096,t=3,p=1$c2FsdEl0V2l0aFNhbHQ$W1hIaHWbw6MohuGyHfJICV3CbBRcqAQrXy1Cp9UcZrE" # 管理员令牌
- "RUST_BACKTRACE=1" # Rust调试追踪
restart: unless-stopped # 重启策略,除非手动停止
networks: # 定义网络
default: # 默认网络
name: yang # 网络名称
external: true # 外部网络
八:compose文件-Trilium版本
version: '3'
services:
trilium-cn:
image: nriver/trilium-cn
restart: always
ports:
- "8085:8080"
volumes:
# 把同文件夹下的 trilium-data 目录映射到容器内
- ./trilium-data:/root/trilium-data
environment:
# 环境变量表示容器内笔记数据的存储路径
- TRILIUM_DATA_DIR=/root/trilium-data
# 可选功能: 健康检查。需要启用的话,把下面的注释去掉
#healthcheck:
# test: ["CMD-SHELL", "curl --fail http://localhost:8080/api/health-check | jq -e '.status == "ok"' || exit 1"]
# interval: 30s
# timeout: 10s
# retries: 3