Skip to main content

留档|服务器初始化

国内环境无法直接访问Github,Docker Hub等国外资源,以下是国内服务器环境搭建记录。

1. 开启密钥ssh,禁止root用户和密码登录

前提,已经创建好公钥id_rsa.pub。

1.1. 创建 app 用户并设置密码

sudo adduser --shell /bin/bash --gecos "" app
# 系统会提示你输入并确认密码,其他信息可以直接回车跳过

1.2. 为 app 用户配置 SSH 公钥登录

# 切换到 app 用户的 home 目录
sudo -u app mkdir -p /home/app/.ssh
sudo -u app chmod 700 /home/app/.ssh

# 将你的公钥内容追加到 authorized_keys(假设本地 id_rsa.pub 在当前目录)
sudo tee -a /home/app/.ssh/authorized_keys < ./id_rsa.pub

# 设置文件权限
sudo chmod 600 /home/app/.ssh/authorized_keys
sudo chown -R app:app /home/app/.ssh

# 加入sudo
sudo usermod -aG sudo app

1.3. 验证 app 用户可以通过密钥登录

ssh -i ~/.ssh/id_rsa app@your.server.ip

1.4 编辑 SSH 服务配置,禁止 root 登录和密码登录

sudo vim /etc/ssh/sshd_config

找到并修改(或添加)以下配置项:

# 禁止 root 用户通过任何方式登录
PermitRootLogin no

# 全局禁止密码认证(仅允许密钥)
PasswordAuthentication no

# 确保公钥认证开启
PubkeyAuthentication yes

1.5 重启 SSH 服务以应用配置

sudo systemctl restart sshd

1.6 测试禁止密码及 root 登录

# 验证密码登录被拒绝
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no app@your.server.ip

# 验证 root 登录被拒绝
ssh root@your.server.ip

2. docker安装

访问 https://get.docker.com/ 复制脚本内容到服务器上执行。

vim get-docker.sh
chmod +x get-docker.sh
./get-docker.sh --mirror Aliyun # 使用阿里云镜像

# 加入用户组
sudo usermod -aG docker app
# 立即生效
newgrp docker

3. docker hub 镜像加速

国内代理镜像地址:https://github.com/dongyubin/DockerHub

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.1ms.run",
"https://dytt.online",
"https://lispy.org",
"https://docker.xiaogenban1993.com",
"https://docker.yomansunter.com",
"https://666860.xyz",
"https://a.ussh.net",
"https://hub.rat.dev",
"https://docker.m.daocloud.io"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

4. NET转发

落地:154.17.235.206:45287 中转:110.41.163.171:36443

# 1. 删除旧的 PREROUTING DNAT 规则 (45287)
sudo iptables -t nat -D PREROUTING \
-i eth0 \
-p tcp --dport 36443 \
-j DNAT --to-destination 154.17.235.206:45287

# 2. 删除旧的 POSTROUTING SNAT 规则 (45287)
sudo iptables -t nat -D POSTROUTING \
-o eth0 \
-p tcp -d 154.17.235.206 --dport 45287 \
-j SNAT --to-source 110.41.163.171

# (如果你曾用 MASQUERADE 而非 SNAT,也删除它)
sudo iptables -t nat -D POSTROUTING \
-o eth0 \
-p tcp -d 154.17.235.206 --dport 45287 \
-j MASQUERADE

# 3. 删除旧的 FORWARD 放行规则 (45287)
sudo iptables -D FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -D FORWARD -p tcp -d 154.17.235.206 --dport 45287 -j ACCEPT

# ——至此,所有旧规则已清理完毕 —— #

# 4. 添加新的 PREROUTING DNAT 规则 (转发到 57176)
sudo iptables -t nat -A PREROUTING \
-i eth0 \
-p tcp --dport 36443 \
-j DNAT --to-destination 154.17.235.206:57176

# 5. 添加新的 POSTROUTING SNAT 规则 (源地址伪装为公网 IP)
sudo iptables -t nat -A POSTROUTING \
-o eth0 \
-p tcp -d 154.17.235.206 --dport 57176 \
-j SNAT --to-source 110.41.163.171

# 如果你的公网 IP 很可能变化,推荐用 MASQUERADE:
# sudo iptables -t nat -A POSTROUTING \
# -o eth0 \
# -p tcp -d 154.17.235.206 --dport 57176 \
# -j MASQUERADE

# 6. 添加新的 FORWARD 放行规则 (允许转发至 57176)
sudo iptables -I FORWARD 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -I FORWARD 1 -p tcp -d 154.17.235.206 --dport 57176 -j ACCEPT

# 7. 保存并持久化 (Debian/Ubuntu 系统)
sudo apt install netfilter-persistent
sudo netfilter-persistent save

5. 创建SWAP

# 1. 在根目录下创建 2G 的 swapfile
sudo fallocate -l 2G /swapfile
# 如果提示 fallocate 不支持,改用:
# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 验证
swapon --show
free -h

# 设置开机自动挂载
sudo vim /etc/fstab
# 增加一行
/swapfile none swap sw 0 0

# 调低 Swappiness
sudo vim /etc/sysctl.d/99-swappiness.conf
# 增加一行
vm.swappiness=10
# 应用
sudo sysctl --system