最后更新:2024-02-08
自己的VPS :Ubuntu 2022 x64 ,写篇手记,方便经常折腾。
1、更新内核并开启 TCP BBR ,参考
此博文
查看是否开启 tcp_ bbr
返回值有 tcp_bbr 模块即说明 bbr 已启动,则跳过以下。
使用root用户登录,运行以下命令:
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装新内核
uname -r
2、创建swap分区
运行free -h 命令查看是否启用了swap,若启用,跳过以下。
创建swap分区
dd if=/dev/zero of=/var/swapfile bs=1024 count=2048k
执行完毕,对交换文件格式化并转换为swap分区:
mkswap /var/swapfile
挂载并激活分区:
swapon /var/swapfile
执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限:
chmod -R 0600 /var/swapfile
修改 fstab 配置,设置开机自动挂载该分区:
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
这时候可以用 free –h 或 swapon –s命令查看新swap分区是否正常添加并激活使用。
4、docker安装ipsec vpn,以备
应急使用,
镜像在此
首先编辑 配置文件
vi ~/vpn/vpn.env
加入以下内容:替换自己的密钥、用户名、密码
VPN_IPSEC_PSK=your_ipsec_pre_shared_key
VPN_USER=your_vpn_username
VPN_PASSWORD=your_vpn_password
然后运行
docker run \
--name ipsec-vpn-server \
--env-file ~/vpn/vpn.env \
--restart=always \
-v ikev2-vpn-data:/etc/ipsec.d \
-v /lib/modules:/lib/modules:ro \
-p 500:500/udp \
-p 4500:4500/udp \
-d --privileged \
hwdsl2/ipsec-vpn-server
以下命令可查看日志及相关帐号密码等信息,输出中也会包含 IKEv2 配置信息。
docker logs ipsec-vpn-server
将一个客户端配置文件从容器复制到 Docker 主机 ~/vpn 目录(不使用 IKEv2 模式连接的话此步可选)
docker cp ipsec-vpn-server:/etc/ipsec.d/vpnclient.p12 ~/vpn
以下命令查看当前已建立的 VPN 连接情况
docker exec -it ipsec-vpn-server ipsec whack --trafficstatus
5、申请证书
通过acme.ch方式申请证书。首先安装acme.ch( 安装目录:~/.acme.sh/)。
参考此处。curl https://get.acme.sh | sh
创建 一个 bash 的 alias, 方便使用:alias acme.sh=~/.acme.sh/acme.sh
以下使用DNS API方式申请泛域名证书(这种方式的好处是, 不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证,并可自动更新证书)。现在主流的域名提供商都支持DNS API,如cloudflare等。若自己的域名提供商不支持的话,可以把域名提供商提供的 Namesever 修改为 Cloudflare 所提供的Namesevers地址,就可以使用clouddflare提供的API了
获取Cloudflare API 令牌,在cloudflare域名管理首页(右下角)获取 API 密钥-"Get your API token"-"API Tokens"-"API Keys"-"Global API Key"-"view"
设置 Cloudflare API 令牌,将下面的key换成你的,email换成cloudflare的登录email
export CF_Key="xyffe1f9edb9d7e41cc8b336a8373e25a810z"
export CF_Email="xyz@gmail.com"
选择安装证书的类型:由于acme.sh将默认安装的证书类型从letsencrypt换成了zerossl,想要继续使用 letsencryp 证书,有两种解决方案。
第一种是签发证书时指定 CA
acme.sh --issue --dns dns_cf -d mydomain.com --server letsencrypt
另一种是直接更改默认 CA,如下,本博文使用这种方式。
acme.sh --set-default-ca --server letsencrypt
如果设置了默认的 CA,以后就算版本升级也将一直默认使用指定的 CA。
验证 DNS 并申请证书(以下参数带有 ec 或ecc表示生成的是 ECC 证书,没有则是 RSA 证书。在安全性上 256 位的 ECC 证书等同于 3072 位的RSA 证书。)
acme.sh --issue --dns dns_cf -d mydomain.com -d *.mydomain.com -k ec-256
证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方
mkdir -p /root/cert
acme.sh --installcert -d mydomain.com --key-file /root/cert/private.key --fullchain-file /root/cert/cert.crt --ecc
查看已经安装的证书、申请日期、更新日期等
撤销证书
acme.sh --revoke -d mydomain.com --ecc
删除证书
acme.sh --remove -d mydomain.com --ecc
强制更新所有证书
acme.sh --renew-all --force
自动更新acme程序
acme.sh --upgrade --auto-upgrade
6、FreshRSS、RSS-Bridge、Readability API安装参考这里,RSSHub安装参考这里。
7、V2ray,Xray安装及配置,分别
参考这里 第一、二点,Naiveproxy安装及配置、共用443端口,
参考这里 第六点
8、编译安装nginx,参考这里 第四点。
编辑nginx配置文件 vi /usr/local/nginx/conf/nginx.conf
以下配置中 mydomain.com用于v2ray,同时指向FreshRSS网站,www.mydomain.com指向RSSHub网站,api.mydomain.com指向Readability API, hub.mydomain.com指向RSS-Bridge网站,free.mydomain.com用于xray,nas.mydomain.com用于 naiveproxy 。
#user www-data;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 2048;
}
stream {
# 这里就是 SNI 识别,将域名映射成一个配置名
map $ssl_preread_server_name $backend_name {
www.mydomain.com web;
mydomain.com vmess;
free.mydomain.com vless;
api.mydomain.com api;
hub.mydomain.com hub;
nas.mydomain.com naive;
# 域名都不匹配情况下的默认值
default web;
}
upstream web {
server 127.0.0.1:10240;
}
# naive,配置转发详情,端口与naiveproxy中Caddyfile配置文件中的端口一致
upstream naive {
server 127.0.0.1:10248;
}
# vmess,配置转发详情,端口与下面server字段中mydomain.com监听端口一致
upstream vmess {
server 127.0.0.1:10249;
}
# vless,配置转发详情,与xray配置文件中的端口一致
upstream vless {
server 127.0.0.1:10247;
}
# api,配置转发详情
upstream api {
server 127.0.0.1:10246;
}
# hub,配置转发详情
upstream hub {
server 127.0.0.1:10245;
}
# 监听 443 并开启 ssl_preread
server {
listen 443 reuseport;
# listen [::]:443 reuseport;
proxy_pass $backend_name;
ssl_preread on;
}
}
http {
server_tokens off;
include mime.types;
default_type application/octet-stream;
access_log off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
gzip on;
client_max_body_size 10m;
client_body_buffer_size 128k;
server {
listen 80 default_server;
server_name www.mydomain.com;
root /usr/share/nginx/html;
return 301 https://$server_name$request_uri;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
server {
listen 10240 ssl;
server_name www.mydomain.com;
ssl_certificate /root/cert/cert.crt;
ssl_certificate_key /root/cert/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:1200;
}
}
server {
listen 10249 ssl;
server_name mydomain.com;
ssl_certificate /root/cert/cert.crt;
ssl_certificate_key /root/cert/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location /rawxyz {
proxy_redirect off;
proxy_pass http://127.0.0.1:10000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
location / {
proxy_pass http://127.0.0.1:8080;
}
}
server {
listen 10246 ssl;
server_name api.mydomain.com;
ssl_certificate /root/cert/cert.crt;
ssl_certificate_key /root/cert/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 10245 ssl;
server_name hub.mydomain.com;
ssl_certificate /root/cert/cert.crt;
ssl_certificate_key /root/cert/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:4000;
}
}
}
测试配置文件是否正确
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
重新加载nginx配置文件使之生效(无需重启服务器)
/usr/local/nginx/sbin/nginx -s reload
9、用sing-box安装Hyeteria V2及TUIC V5,参考这里
域名sing.mydomain.com专门用于Hysteria和TUIC,申请的证书地址在 /root/sing
bash <(curl -fsSL https://sing-box.app/deb-install.sh)
systemctl enable --now sing-box
编辑服务器端配置文件
vi /etc/sing-box/config.json
{
"log": {
"disabled": false,
"level": "info",
"timestamp": true
},
"inbounds": [
{
"type": "hysteria2",
"sniff": true,
"sniff_override_destination": true,
"tag": "hy2",
"listen": "::",
"listen_port": 16789,
"users": [
{
"password": "yourpassword"
}
],
"up_mbps": 100,
"down_mbps": 20,
"tls": {
"enabled": true,
"alpn": [
"h3"
],
"min_version":"1.2",
"max_version":"1.3",
"certificate_path": "/root/sing/cert.crt",
"key_path": "/root/sing/private.key"
}
},
{
"type":"tuic",
"sniff": true,
"sniff_override_destination": true,
"tag": "tuic5",
"listen": "::",
"listen_port": 16799,
"users": [
{
"uuid": "f8b8c801-3894-45a2-b1f6-d26a04189a70",
"password": "yourpassword"
}
],
"congestion_control": "bbr",
"tls":{
"enabled": true,
"alpn": [
"h3"
],
"certificate_path": "/root/sing/cert.crt",
"key_path": "/root/sing/private.key"
}
}
],
"outbounds": [
{
"type":"direct"
}
]
}
10、通过docker安装calibre,实现电子杂志的自动抓取和投递,镜像在此。
calibre是一个自由开源的电子书软件套装,可以用来组织、存放、以及管理电子书,支持大多数的电子书格式。
docker run -d \
--name=calibre \
-e TZ=Etc/UTC \
-p 9080:8080 \
-p 9181:8181 \
-p 9081:8081 \
-v ~/calibre/config:/config \
--restart unless-stopped \
lscr.io/linuxserver/calibre:latest
~/calibre/config是VPS服务器上新建的文件夹以保存相关配置。
部署成功后,通过ip:9080即可以访问。
说明:此服务占用资源,请确保你的VPS足够强大。
11、通过docker安装
photopea,一款功能与photoshop接近的在线软件,其界面几乎与ps相同,只不过它是在线的网页,是ps的最佳替代品之一,
镜像在此 或
这里docker run -d --restart unless-stopped --name photopea -p 8887:8887 eorendel/photopea:latest
12、通过docker安装Watchtower自动更新 Docker 镜像与容器,
镜像在此
手动更新所有的 Docker 镜像与容器
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
--run-once
设定于每月1日凌晨2点更新自动更新所有的 Docker 镜像与容器
docker run -d \
--name watchtower \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
-s "0 0 2 1 * ? "
说明:
防火墙放行相关的端口,如443,16789等。
sudo ufw allow 443
检查防火墙状态
评论
发表评论