一键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