Linux服务器初始化的一些设置

1. 增加root权限用户

image

1.1 SSH关闭允许root用户登陆

由于脚本小子太多了,老是ssh爆破,遂关闭root用户的ssh登录
image

vim /etc/ssh/sshd_config
# 修改以下内容:
PermitRootLogin no
# 保存后重启服务:
systemctl restart sshd

1.2 安装fail2ban

sudo aptinstall fail2ban -y
sudo systemctl enable fail2ban --now
# 配置 SSH 防护规则:
sudo vim /etc/fail2ban/jail.local
[sshd]
enabled = true
bantime = 3600
maxretry = 5
sudo systemctl restart fail2ban

2. 更新依赖

sudo apt update​
更新本地软件包索引或列表。它会连接至配置的软件源服务器,检查所有可用软件包及其最新版本信息,并更新本地的数据库。刷新信息。让你的系统知道有哪些软件包有新版本可用。

sudo apt upgrade -y​
根据 update获取的最新信息,实际安装可升级的软件包。-y选项表示自动对所有确认提示回答 “yes”。执行升级。将已安装的软件包安全地更新到最新版本。

sudo apt update && sudo apt upgrade -y

3. Linux网络相关配置 BBR配置

脚本地址:https://github.com/ylx2016/Linux-NetSpeed
image

4. 安装Oh My Sh

Oh My Sh官网地址:https://ohmyz.sh/

4.1 基本工具安装

安装 zsh git curl

sudo apt install zsh git curl -y

设置默认终端为zsh(注意:不要使用 sudo)

chsh -s /bin/zsh

4.2 安装 oh-my-zsh

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

4.3 从.bashrc中迁移配置(可选)

如果之前在使用bash时自定义了一些环境变量、别名等,那么在切换到zsh后,你需要手动迁移这些自定义配置。


# 查看bash配置文件,并手动复制自定义配置
cat ~/.bashrc
# 编辑zsh配置文件,并粘贴自定义配置
vim ~/.zshrc
# 启动新的zsh配置
source ~/.zshrc

5. Docker和Docker Compose

5.1 安装

以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作。
首先更新系统,安装一些必要的软件包:

apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates

从 Docker 官方下载 GPG 密钥,然后将这个密钥解密并保存到系统的密钥环中;配置软件源,以便能够从 Docker 官方仓库安装 Docker:

curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list

国内机器可以用清华 TUNA 的国内源:

curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker. List

然后更新系统后即可安装 Docker CE 和 Docker Compose 插件:

apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

如果需要某个特定用户可以用 Docker rootless 模式运行 Docker,那么可以把这个用户也加入 docker 组:

apt install docker-ce-rootless-extras
sudo usermod -aG docker xxx            #将xxx用户加入docker组

5.2 权限问题

在默认情况下,Docker 需要 sudo 运行,如果运行时出现 permission denied 或者只能用 sudo docker ps,说明当前用户没有足够的权限使用 Docker。
通常,解决这个问题的方法是 将当前用户添加到 docker 组,然后重新登录或者重启系统。
运行以下命令,检查用户是否属于 docker 组:groups
如果 docker 不在输出中,手动添加当前用户到 docker 组:sudo usermod -aG docker $USER
然后,手动刷新用户组(避免重新登录):newgrp docker
再次运行:groups

5.3 docker compose别名

一直输入docker compose比较长和啰嗦,所以给docker compose起一个别名。本人使用zsh,使用以下命令即可。

vim ~/.zshrc

在最后一行增加:alias dc="docker compose"
然后执行以下命令:

source ~/.zshrc

6. Caddy配置

6.1 自定义安装Caddy

由于需要一些社区的插件,官方镜像不满足,遂使用Dockerfile自定义打包镜像

# Dockerfile
# Dockerfile
FROM caddy:2-builder-alpine AS builder

# 使用 xcaddy 构建自定义 Caddy 二进制文件
RUN xcaddy build \
    --with github.com/caddy-dns/cloudflare \
    --with github.com/caddyserver/transform-encoder \
    --with github.com/mholt/caddy-l4 \
    --with github.com/mholt/caddy-webdav \
    --with github.com/mholt/caddy-dynamicdns \
    --with github.com/mholt/caddy-ratelimit \
    --with github.com/kirsch33/realip \
    --with github.com/abiosoft/caddy-json-parse \
    --with github.com/lindenlab/caddy-s3-proxy \
    --with github.com/zhangjiayin/caddy-geoip2 \
    --with github.com/greenpau/caddy-security \
    --with github.com/caddy-dns/route53 \
    --with github.com/WeidiDeng/caddy-cloudflare-ip

FROM caddy:2-alpine

# 将自定义的 Caddy 二进制文件复制到生产镜像中
COPY --from=builder /usr/bin/caddy /usr/bin/caddy

6.2 Caddyfile配置样例

{
    # 可选:全局设置,例如启用实验性HTTP/3
    experimental_http3
    # 可选:如果四层代理也需要自动TLS,确保自动HTTPS重定向不影响原始TCP连接
    auto_https disable_redirects
}

# ========================
# 四层 TCP/UDP 代理配置
# ========================
{
    # 此部分由 'layer4' 应用处理,用于非HTTP(S)的原始TCP/UDP连接
    layer4 {
        # 示例1:SSH隧道代理 (TCP)
        # 访问 tcp-vsc.xxx.xyz:8022 的请求将被转发到内部服务器的22端口(SSH)
        tcp-vsc.xxx.xyz:8022 {
            reverse_proxy code-server:22
        }

        # 示例2:通用TCP代理,可用于数据库、游戏服务等
        # 此配置监听 8657 端口上的原始TCP连接,并转发到内部服务的 3389 端口
        :8657 {
            reverse_proxy 10.0.1.100:3389
        }

        # 注意:UDP代理使用 'udp://' 前缀,例如用于DNS或游戏语音
        # udp-vsc.xxx.xyz:5353 {
        #    reverse_proxy udp://dns-server:53
        # }
    }
}

# ========================
# 七层 HTTP/HTTPS 代理配置
# ========================
# 你的原始HTTP(S)代理配置保持不变
# 此部分由 'http' 应用处理,用于HTTP/HTTPS请求
vsc.xxx.xyz {
    reverse_proxy http://code-server:8080 {
        header_up Host {host}   # 传递原始 Host 头
        header_up X-Real-IP {remote}  # 传递客户端 IP
    }
    tls {
        dns cloudflare {env.CLOUDFLARE_API_TOKEN}
    }
    encode gzip  # 启用压缩
}

# 你可以添加更多的七层HTTP站点
# 例如,为另一个服务配置基于路径的路由
# admin.xxx.xyz {
#     route /api/* {
#         uri strip_prefix /api
#         reverse_proxy http://backend-api:8081
#     }
#     file_server /static/* {
#         root /var/www/admin
#     }
#     tls {
#         dns cloudflare {env.CLOUDFLARE_API_TOKEN}
#     }
# }
posted @ 2025-11-14 23:39  Timskt  阅读(4)  评论(0)    收藏  举报