V2Ray

From ArchWiki

V2Ray is the core tool of Project V, which is mainly responsible for the realization of network protocols and functions, and communicates with other Project V.

Installation

Install the v2ray package. For the development version, install the v2ray-gitAUR package. For GUI client, please see Qv2ray.

Configuration

V2Ray configuration is done with a JSON formatted file. See Config Reference. There are several methods of configuration, a good practice is to use WebSocket+TLS+Web.

Tip: It's typically easier to configure TLS by Caddy.

Usage

From the command line

V2Ray is started with the v2ray command. Run v2ray help and v2ray help run to see its command line help.

Service management

Start/enable v2ray.service.

Tips and tricks

Routing rules

See Routing of V2Ray.

The preset routing rule files are geosite.dat and geoip.dat in /usr/share/v2ray. They are provided by the v2ray-domain-list-community and v2ray-geoip packages respectively. These two packages are installed by default as dependencies of v2ray.

Replacing the preset routing rule files

There are ready-made packages for some routing rule files. For example, you can install the v2ray-rules-dat-gitAUR package for @Loyalsoldier/v2ray-rules-dat.

For routing rule files without ready-made packages, you can create packages and install or remove v2ray-domain-list-community and v2ray-geoip without removing the dependent package and put the routing rule files in the /usr/share/v2ray directory.

Warning: Replacing geosite.dat and geoip.dat directly may cause file conflicts.

Multiple configs

With multiple configs, it's convenient to achieve things like dropping new inbounds to the config directory without having to touch the master config.

Rules of multiple configs

  • For top-level objects, objects in the latter config file override or supplement the former.
  • Inbounds and outbounds are array structures, they have special rules:
    • If arrays in the latter config file have 2 or more elements, arrays in the latter config file overwrite the former config file.
    • If arrays in the latter config file have only 1 element, overwrite the original element with the same tag; if the element cannot be found:
      • For inbounds, add them to the end.
      • For outbounds, add them to the front; if the name of config file contains tail, add the outbounds to the end.

Enable multiple configs with systemd

To enable multiple configs with systemd, you can create the following drop-in file:

# systemctl edit --drop-in=multi_config v2ray.service
ExecStart=
ExecStart=/usr/bin/v2ray run -confdir /absolute/path/to/dir/

Troubleshooting

Failed with result 'exit-code'

If you see this error in the log: Failed with result 'exit-code', it is because V2Ray does not have write permission to /var/log/v2ray/access.log. Use the following command to solve the problem.

chown -R nobody /var/log/v2ray

See also