本地 Alpine Linux 配置
- 2025.2.1 作为本地主力 Liunx,原因为轻量、自定义。
- 2024.2.2 本要放弃再用 ubuntu ,发现 ubuntu 臃肿,问题也一样存在。在 Alpine Linux 调试完成!
安装基本工具
1 2
| apk update && apk upgrade apk add curl wget nano git zip unzip bash iptables openssh
|
安装社区工具
仓库源配置
在 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
| 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
| 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
| 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
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP
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 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 网络代理
- 导入 v2raya 镜像,借助增强工具的共享文件夹
- 安装 v2raya
- 在网页 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
|
配置 docker 网络代理
- 通过修改 /etc/docker/daemon.json 来设置 docker 代理。
- 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" }
|
配置系统代理
- 如果你希望在整个系统中启用 HTTP 代理,你需要设置相应的环境变量。可以通过编辑 /etc/profile 文件来全局配置。
- 编辑 /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
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 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 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 .
|
总结
- 安装好的 Alpine Liunx 需要网络初始化下,不然需要打开端口才能访问服务,因为 docker 将 Chain FORWARD 关闭了。
- 使用 apk add docker 默认关闭了Chain FORWARD ,导致重启之后本地无法访问服务,iptables 如何修改都无用,需要将 docker iptables 关闭,然后修改 iptables 才能生效。
- 修改了 docker iptables 出现问题,Alist 连接 Mega 不正常了,将 Alist 网络模式为 host 解决了。
- 不需要网络初始化,只需要将 docker iptables 关闭。设置 alist 网络为 host 工作环境搭建完毕了。
- 最终发现旧的 node 镜像内存爆了,换了 node:lts-alpine。
- 需要网络初始化,iptables 启动成功!一个系统的折腾就花了 3 天的调整。
参考资料
Alpine Liunx:https://alpinelinux.org