🖥️ 我有特别(抽象)的服务器配置方式
不建议任何人参考该配置。
我的第一台VPS来自Cloudcone洛杉矶机房,配置1核0.5G内存,年付9.99刀。
我的第一本服务器使用指南是Project X的小小白白话文教程。很感谢这个教程,让我第一次在命令行手动安装了Xray,并用Nginx做了Fallback,搭建了我的第一个自建节点——VLESS+XTLS。虽然它很快就被特征识别墙了,还花了我5刀换IP。
折腾简史
说起来我接触电脑挺早的。小学三年级左右,我最常买的商品是Windows XP盗版Ghost系统安装光盘,每次买了不久就刮花了,导致Ghost写硬盘失败。那时候玩电脑纯离线,没事就翻C盘所有可执行文件挨个点开看能不能运行。
软件靠拿着我的Android 2.1摩托罗拉,骑小自行车到商店街门口偷WiFi,去西西软件园下东西。在那个3G标速大概300KB/s的年代,我偷了店家整整2GB的软件包(不包含镜像)。那时候下了不少PE工具,还有GRUB4DOS和EasyBoot这种能自己画启动界面的引导程序,后来还折腾过能隐藏启动分区的FbinstTool。2014年之后就跑去混无忧启动论坛了。
我的第一台笔记本是联想SL400,运行最新的Windows Vista系统。那时候的Vista真的很先进很好看,Aero毛玻璃效果放现在也不过时。后来Windows 8.1刚出预览版,又偷邻居家WiFi下了安装镜像,激活密钥到今天还能背出来。
虽然我从2016年左右就开始用Linux,第一个发行版是Ubuntu Desktop 16.04,之后用过18.04、CDLinux、Beini、Kali Linux(那时候还叫BackTrack)等等,但直到2021年大二上学期才正式接触Linux服务器。因为之前也经常用终端,上手起来不算太难。之后又体验了Debian系、RHEL系、OpenSUSE、Arch Linux、Alpine Linux、OpenWRT、FreeBSD、Hackintosh、Chrome OS系、Solaris,把大学的大部分时间都浪费在这些系统上了。
我很庆幸第一个服务器系统是简约的Debian而不是CentOS 7。RHEL系确实臃肿,后来在体验RHEL时,1GB内存的VPS运行dnf直接OOM。接触Arch Linux后,完善的Wiki文档和KISS思想让我很舒服,从自己折腾Xorg/Wayland加各种桌面环境和窗口管理器,到后面直接Gnome养老,命令行能力也大幅提升了。
选购VPS
玩机到今天,我只会再买日本线路VPS和家宽落地。VPS最好是4809、9929、58807这种线路,最差也要4134、4837、58453,落地一定要私家车。体验过一次极品线路和落地后就再也回不去了,IIJ软银这些都入不了眼。其他香港新加坡的鸡都是抽奖,不稳定。
配置无所谓,1C0.5G也能流畅运行,也不需要跑Docker容器。
系统安装流程
初始化
无论商家给什么系统,到手第一件事先DD重装。用grub-imageboot引导Debian netboot全新安装,商家预装的系统一般带cloud-init这些东西,已经不需要了。
apt install grub-imageboot wget
mkdir -p /boot/images
cd /boot/images
wget https://deb.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/mini.iso
update-grub2
reboot
安装Debian
重启后进入安装界面,选择Expert Install模式,因为该模式不强制创建非root账户。
基础设置:
- 时区使用服务器所属地区
- 主机名起个二次元角色名或直接用域名
- DNS选1.1.1.1和1.0.0.1
- NTP服务器选服务器所在地区的政府服务器
软件配置:
- 不启用apt source源
- 不需要Cockpit就不启用Debian Backports
- 内核选linux-image-cloud-amd64
- 开启unattended-upgrades自动安全更新
首次开机
第一次开机后,内核可能会改网卡名称,需要注意修改网络配置。
# 修改SSH配置
# 修改Grub配置 /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 nomodeset"
GRUB_TERMINAL=console
# dpkg-reconfigure console-setup
# /etc/default/console-setup
ACTIVE_CONSOLES="/dev/tty[1-2]"
# 关闭所有日志,需要时直接执行ExecStart命令排错
# /etc/systemd/journald.conf
Storage=none
# 如果需要安装Liquorix内核,在这里装
curl -s 'https://liquorix.net/install-liquorix.sh' | bash
# 不安装内核,需要配置bbr
echo "net.core.default_qdisc=fq" >> /etc/sysctl.d/99-custom.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.d/99-custom.conf
update-grub2
reboot
服务部署方案
如果装了第三方内核,第一次重启后网卡名称可能又会变,注意检查。之后所有操作都通过SSH进行。
Caddy
现在我要强烈推荐使用Caddy作为Web服务器。只需要在配置文件里写域名,就能自动完成证书申请的所有工作,直接HTTPS上线。而且单个Caddy配置就能实现NaiveProxy加反向代理加静态文件服务器加WebDAV的所有功能。NaiveProxy已经原生支持SOCKS upstream了,如果需要从落地转发,用Tailscale、sing-box或FRP,如果端口只能绑定在0.0.0.0,使用ufw防火墙。
Writefreely
本站用Writefreely作为博客CMS,它是Go写的,可以用SQLite做数据库,界面简约,支持自定义CSS,不需要JavaScript,所有页面渲染都用模板,可以自己改。
落地中转
所有分流都在落地机实现。geosite:google的流量分给Cloudflare WARP Teams,用warp-cli跑,这样能避免被送中,因为落地机可以不在东京。
其他说明
- 如果sudo不是必要依赖就不装。要装的话优先选doas,然后软链接到sudo
- Systemd Unit文件装到/lib/systemd/system/
- 服务器可选装XRDP加手动最小化安装的Gnome Flashback或者IceWM
- 服务器是Windows的话不用Administrator账户,移除Windows Defender,常装的软件:7-zip、Chrome、Geek Uninstaller、Telegram Desktop
以上就是我这些年摸索出来的一套配置流程。虽然看起来挺折腾,但习惯了之后每次配新服务器基本就是走流程,反而比用各种一键脚本更可控。毕竟自己配的每个环节都清楚是干什么的,出问题也好排查。