自建 VPS 服务器的一些攻略

几种自建翻墙的方案(高级篇)

— 目录 —

介绍

本文介绍一些自建梯子翻墙的方式。和之前的《自建翻墙 - 新手篇》不同,

几种梯子的比较

翻墙的技术有很多种,其中也有很多种已经被封杀了。目前比较好用的,本文主要介绍 2 种。

本篇涉及的前置知识

如果采用 reality 方式翻墙,只需了解:

如果采用 Websocket 方式翻墙,还需了解:

使用 Reality 自建翻墙

推荐使用 wulabing 封装的 docker 容器,省略了手动设置配置文件的繁琐过程。

docker compose 目录结构

/DOCKERS/xray_reality_5507
└── docker-compose.yml # 配置文件

docker-compose.yml

“#” 下方的代码,是按照本站 docker 篇的设定,修复了 docker 暴露端口的问题后,专门添加的对外暴露端口的网络。如果你的 vps 没有进行这方面的设置,可以直接忽略 # 下面的代码。

services:
  xray_reality_5507:
    image: wulabing/xray_docker_reality:latest
    container_name: xray_reality_5507
    restart: always
    ports:
      - 5507:443
    environment:
      - EXTERNAL_PORT=5507
# --- 以下的代码,让容器处于可以向外暴露端口的 docker 网络 ---
    networks:
      - network_expose
networks:
  network_expose:
    external: true

启动 docker compose 后,允许下面的命令,就可以看到生成的 vless reality 翻墙账号了。

sudo docker exec -it xray_reality_5507 cat /config_info.txt

使用 WebSocket (WS) 自建翻墙

推荐使用 Project X 封装的 docker 容器,这个 docker 容器也可以用于 Reality 翻墙,但是配置过程更繁琐一些。本文参照了 Leohoo 的教程

docker compose 目录结构

/DOCKERS/xray_core_5508
├── config.json        # 账号配置文件
└── docker-compose.yml # docker 配置文件

首先,运行下面的命令,生成随机的用户账号(uuid:类似 12345678-1234-1234-1234-123456789012 的 32 位字符)。

# 生成 uuid
sudo docker run --rm ghcr.io/xtls/xray-core:latest uuid

创建 config.json 配置文件。注意替换下面代码里的:

config.json

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 5508,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "替换成你生成的 uuid"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "ws",
        "security": "none",
        "wsSettings": {
          "path": "/yourpath"
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ],
  "dns": {
    "servers": [
      "1.1.1.1",
      "8.8.8.8",
      "223.5.5.5"
    ]
  }
}

docker-compose.yml

“#” 下方的代码,是按照本站 docker 篇的设定,修复了 docker 暴露端口的问题后,专门添加的对外暴露端口的网络。如果你的 vps 没有进行这方面的设置,可以直接忽略 # 下面的代码。

services:
  xray_core_5508:
    image: ghcr.io/xtls/xray-core:latest
    container_name: xray_core_5508
    restart: unless-stopped
    command: ["run", "-c", "/usr/local/etc/xray/config.json"]
    volumes:
      - ./config.json:/usr/local/etc/xray/config.json:ro
    ports:
      - "5508:5508/tcp"
# --- 以下的代码,让容器处于可以向外暴露端口的 docker 网络 ---
    networks:
      - network_expose
networks:
  network_expose:
    external: true

在 Nginx 的任何已有域名(也可以新分配一个域名)的配置文件内部,添加

server {
    server_name any.example.com;
    
    listen 443 ssl;
    ssl_certificate /ADMIN/https-certs/all.example.com.public.pem;
    ssl_certificate_key /ADMIN/https-certs/all.example.com.private.key;
# ... 原有的 nginx 配置文件 ... 

# 添加的 Web Socket 配置
# 注意:和 config.json 里的 /your-path 一致

    location /yourpath {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:5508;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        # Show realip in v2ray access.log
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

启动 docker compose,重启 nginx,然后生成的 Web socket 翻墙地址,格式如下:

vless://12345678-1234-1234-1234-123456789012@any.example.com:443?encryption=none&security=tls&type=ws&path=%2Fyourpath#any-account-name

替换其中的

#Vps