VPS Alpine Liunx 配置


Alpine Liunx 在 VPS 上的使用记录。


DD 系统

1
wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh && bash InstallNET.sh -alpine
1
初始密码:LeitboGi0ro

安装基本工具

1
2
3
4
5
apk update && apk upgrade
apk add curl wget nano git zip unzip fd gotop iptables openssh nmap
# 下载备份
wget https://xingyue.serv00.net/liunx819.zip
unzip liunx819.zip

安装 docker 与 docker compose

1
2
3
4
apk update && apk add docker
rc-update add docker default
service docker start
rc-status
1
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
1
docker -v && docker-compose -v

初始化网络

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash

# 清空现有的所有规则
echo "清空现有的所有规则"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# 设置默认策略:接受所有传入流量,允许所有出去流量
echo "设置默认策略:接受所有传入流量,允许所有出去流量"
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 允许本机之间的通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 限制每秒最大 SYN 包数(防止端口扫描)
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 开启 docker 网络
iptables -A FORWARD -o docker0 -j ACCEPT
iptables -A FORWARD -i docker0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 允许端口 22 (SSH) 访问
echo "允许端口 22 (SSH) 访问 "
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# http https
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT


iptables -A INPUT -p tcp --dport 40000 -j ACCEPT

# 禁用 NPM 81 网页端
iptables -A INPUT -p tcp --dport 81 -j DROP

#删除 禁用 81 网页端规则
#iptables -D INPUT -p tcp --dport 81 -j DROP

service docker restart

echo "docker 重启完毕"

sysctl -p
echo "初始化网络完成"

颜色配置

1
nano ~/.bashrc
1
2
3
export LS_COLORS="di=96:fi=0:ln=35:pi=40:so=1;32:do=35:bd=1;33:cd=1;33"
alias ls='ls --color=auto'
PS1='\[\033[01;32m\]\u@\h \w\$ \[\033[00m\]'
1
source ~/.bashrc
1
nano ~/.profile
1
2
3
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
1
source ~/.bashrc

一键登录

1
2
3
mkdir ~/.ssh && chmod 700 ~/.ssh
cd ~/.ssh
nano authorized_keys
1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMwe3w4S9SI8pjYMVnibPllQ2b33oB8fx8ZIp/GnyDG/qDdvMZcAYy1M+tmnOk9MViKzFu4agNH70GkdHtHeqzntrizVfdD80JTxigKE/35wEnOdk1k6BvpSCYMMBIqPnmjiXYMBbSDryQCixLJw+7LqYSL9C8+mOSlnzWVQfgdd6kmHzgSrlzn0xiiqOMwGZWn50dXSv8EVIHriqzp/IqD4RDWyqEhKolrZcAl3ukYqZTkkpHNF8YNM0cbKIQbFHHsW8LdCUPh+yZ3OTY9wS4nFmj9eVGHZw4lkBGB8vcHnnu69bW0XYQe/9GKQqOCuolNon9zcky0d9wuKp84Jaz rsa-key-20230612
1
chmod 600 authorized_keys

SSH 设置

1
nano /etc/ssh/sshd_config
1
2
3
4
5
6
7
8
# 端口转发
AllowTcpForwarding yes
GatewayPorts yes

# 禁止密码登录 密钥登录
Port 2500
PasswordAuthentication no
PubkeyAuthentication yes
1
service sshd restart

TCP 优化

1
nano /etc/sysctl.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 禁用 ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

# 主要用于提高流量调度的公平性,减少延迟和波动,尤其适用于对实时性有较高要求的网络环境。
net.core.default_qdisc=fq_pie

# 禁用 ping
net.ipv4.icmp_echo_ignore_all = 1

# 增加 TCP 接收和发送缓冲区的大小
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# 启用 TCP 快速打开(TCP Fast Open)
net.ipv4.tcp_fastopen = 3

# 调整 TCP 拥塞控制算法为 BBR
net.ipv4.tcp_congestion_control = bbr

# 增加 TCP 保活时间
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 5

# 增加 SYN 队列大小
net.ipv4.tcp_max_syn_backlog = 2048

# 增加最大端口范围
net.ipv4.ip_local_port_range = 1024 65535

# 禁用 TCP 时间戳
net.ipv4.tcp_timestamps = 0

# 提高最大连接数
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_max_tw_buckets = 6000
1
2
3
4
5
6
7
8
9
10
# 禁用 ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

# 禁用 ping
net.ipv4.icmp_echo_ignore_all = 1

# 调整 TCP 拥塞控制算法为 BBR
net.ipv4.tcp_congestion_control = bbr
1
sysctl -p

时区设置

1
2
3
4
5
apk add tzdata
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
date
nano /etc/profile
1
export TZ="Asia/Shanghai"
1
source /etc/profile

自定义登录界面

1
nano /etc/motd
1
2
3
4
5
6
7
8
9
10
11
12
13

------------------------------------

NASI NOVARE CORAM

NOVRE NOVRE COMEY NA VERA TE NOVRE

MAVRAN MAVRAN CONAY MAVRAN

NOME NOME CONO NA VERA TE NOME

-----------------------------------


ws+tls 节点 开启流量

1
2
3
iptables -A INPUT -p tcp --dport 50002 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 50002 -j ACCEPT


总结

  1. NPM 确实可以实现可视化管理,且不暴露 81 端口。
  2. Nginx 在本地,没有必要修改 docker 的网络设置。
  3. 当 docker 的 iptables=false 时,容器的网络需要添加 iptables 规则才能恢复。
  4. Alpine Liunx 的 SSH 需要设置才能使用端口转发。
  5. ws 节点搭建在 ubuntu 有效,在 Alpine 不知道为什么不会成功。