本地 Alpine Linux 配置


  1. 2025.2.1 作为本地主力 Liunx,原因为轻量、自定义。
  2. 2024.2.2 本要放弃再用 ubuntu ,发现 ubuntu 臃肿,问题也一样存在。在 Alpine Linux 调试完成!

安装基本工具

1
2
apk update && apk upgrade
apk add curl wget nano git zip unzip bash iptables openssh

安装社区工具

1
2
# 添加仓库源配置
apk add gotop fd

仓库源配置

在 Alpine Linux 中,官方的仓库源通常会在 /etc/apk/repositories 文件中进行配置。默认情况下,它会指向 Alpine Linux 官方的主仓库。

1
nano /etc/apk/repositories
1
2
http://dl-cdn.alpinelinux.org/alpine/v3.21/main
http://dl-cdn.alpinelinux.org/alpine/v3.21/community

VirtualBox 增强工具安装

  1. 更新软件包
  2. 安装增强工具
  3. 设置开启启动
  4. 启动增强工具
  5. 显示系统服务的当前状态
1
2
3
4
5
apk update && apk upgrade
apk add virtualbox-guest-additions
rc-update add virtualbox-guest-additions default
/etc/init.d/virtualbox-guest-additions start
rc-status

配置静态地址

  1. 打开配置文件
  2. 添加静态地址
  3. 重启网络
1
nano /etc/network/interfaces
1
2
3
4
5
6
7
8
9
10
11
12
13
auto lo
iface lo inet loopback

# 静态 IP 配置
auto eth0
iface eth0 inet static
address 192.168.6.151
netmask 255.255.255.0
gateway 192.168.6.1
dns-nameservers 8.8.8.8 1.1.1.1

# DHCP 配置备选
# iface eth0 inet dhcp
1
service networking restart

安装 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

docker 镜像加速

不推荐使用,无奈之举。

1
2
mkdir -p /etc/docker/ 
nano /etc/docker/daemon.json
1
2
3
4
5
{
"registry-mirrors": [
"https://nomes.us.kg"
]
}
1
2
service docker restart
rc-status

docker iptables 控制

1
2
mkdir -p /etc/docker
nano /etc/docker/daemon.json
1
2
3
{
"iptables": false
}
1
2
service docker restart
service docker status

初始化网络环境

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
#!/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

echo "开启 SSH"
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

echo "重启 docker"
service docker restart

echo "初始化完成"
1
2
3
4
5
echo "停止所有容器"
docker stop $(docker ps -q)

echo "开始所有容器"
docker start $(docker ps -a -q)

启动 iptables

  1. 网络初始化
  2. 保存规则
  3. 查看规则
  4. 开机时自动加载
1
2
3
4
5
6
7
8
bash iptables.sh
/etc/init.d/iptables save
iptables-save > /etc/iptables/rules.v4
cat /etc/iptables/rules.v4

rc-update add iptables default
service iptables start
rc-status

v2raya 网络代理

  1. 导入 v2raya 镜像,借助增强工具的共享文件夹
  2. 安装 v2raya
  3. 在网页 2017 端口使用
1
2
3
4
docker load < v2raya.tar
mkdir -p /root/docker/v2raya
cd /root/docker/v2raya
nano docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
services:
v2raya:
image: mzz2017/v2raya
container_name: v2raya
restart: always
privileged: true
network_mode: host
environment:
- V2RAYA_LOG_FILE=/tmp/v2raya.log
volumes:
- /lib/modules:/lib/modules:ro
- /etc/resolv.conf:/etc/resolv.conf
- /etc/v2raya:/etc/v2raya
1
docker-compose up -d

配置 docker 网络代理

  1. 通过修改 /etc/docker/daemon.json 来设置 docker 代理。
  2. 20171 端口为 v2raya 的 HTTP 端口
1
2
mkdir -p /etc/docker/ 
nano /etc/docker/daemon.json
1
2
3
4
5
{
"http-proxy": "http://127.0.0.1:20171",
"https-proxy": "http://127.0.0.1:20171",
"no-proxy": "localhost,127.0.0.1"
}
1
service docker restart

配置系统代理

  1. 如果你希望在整个系统中启用 HTTP 代理,你需要设置相应的环境变量。可以通过编辑 /etc/profile 文件来全局配置。
  2. 编辑 /etc/profile 文件,添加代理配置:
  3. 在文件的末尾添加以下内容
  4. 保存并退出文件后,运行以下命令使配置生效
  5. 验证代理
1
nano /etc/profile
1
2
3
4
export HTTP_PROXY="http://127.0.0.1:20171"
export HTTPS_PROXY="http://127.0.0.1:20171"
# export SOCKS5_PROXY="socks5://127.0.0.1:20170"
# export NO_PROXY="localhost,127.0.0.1"
1
2
3
4
5
6
7
source /etc/profile

echo $HTTP_PROXY
echo $HTTPS_PROXY
# echo $SOCKS5_PROXY

wget google.com

alist 本地网络

1
2
3
4
5
6
7
8
9
services:
alist:
image: xhofe/alist:latest
container_name: alist
volumes:
- ./data:/opt/alist/data
- /root:/root
network_mode: host
restart: unless-stopped

时区设置

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
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
2
3
chmod 600 authorized_keys
cd
ls -ald .ssh .ssh/authorized_keys

启动服务

1
2
3
4
5
6
7
8
9
[ -d "/root/docker/v2raya" ] && cd /root/docker/v2raya && docker-compose up -d
[ -d "/root/docker/Github/ComeyNa" ] && cd /root/docker/Github/ComeyNa && docker-compose up -d
[ -d "/root/docker/Github/Message" ] && cd /root/docker/Github/Message && docker-compose up -d
[ -d "/root/docker/Github/Steps" ] && cd /root/docker/Github/Steps && docker-compose up -d
[ -d "/root/docker/alist" ] && cd /root/docker/alist && docker-compose up -d
[ -d "/root/docker/dpanel" ] && cd /root/docker/dpanel && docker-compose up -d
[ -d "/root/docker/kms" ] && cd /root/docker/kms && docker-compose up -d
[ -d "/root/docker/trilium" ] && cd /root/docker/trilium && docker-compose up -d
[ -d "/root/docker/vaultwarden" ] && cd /root/docker/vaultwarden && docker-compose up -d

自定义登录界面

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


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

NASI NOVARE CORAM

NOVRE NOVRE COMEY NA VERA TE NOVRE

MAVRAN MAVRAN CONAY MAVRAN

NOME NOME CONO NA VERA TE NOME

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



node:lts-alpine 镜像

1
2
3
4
5
6
7
8
9
docker run -it -d --name hexo -p 4000:4000 node:lts-alpine
docker exec -it hexo sh
npm install hexo-cli -g
hexo init blog
cd blog
npm install
apk add curl wget nano git zip unzip openssh bash
hexo server
exit
1
2
docker commit hexo node:lts
nano DockerFile
1
2
3
4
5
6
7
8
FROM node:lts

WORKDIR /blog
VOLUME /blog

EXPOSE 4000

CMD ["hexo", "server"]
1
docker build -f DockerFile -t raye2025/node:lts-alpine .

总结

  1. 安装好的 Alpine Liunx 需要网络初始化下,不然需要打开端口才能访问服务,因为 docker 将 Chain FORWARD 关闭了。
  2. 使用 apk add docker 默认关闭了Chain FORWARD ,导致重启之后本地无法访问服务,iptables 如何修改都无用,需要将 docker iptables 关闭,然后修改 iptables 才能生效。
  3. 修改了 docker iptables 出现问题,Alist 连接 Mega 不正常了,将 Alist 网络模式为 host 解决了。
  4. 不需要网络初始化,只需要将 docker iptables 关闭。设置 alist 网络为 host 工作环境搭建完毕了。
  5. 最终发现旧的 node 镜像内存爆了,换了 node:lts-alpine。
  6. 需要网络初始化,iptables 启动成功!一个系统的折腾就花了 3 天的调整。

参考资料

Alpine Liunx:https://alpinelinux.org