mirror of
https://github.com/EvgenyNerush/easy-xray.git
synced 2024-11-21 16:25:23 +03:00
add Docker
This commit is contained in:
parent
52c35cee6d
commit
20d02b8b10
3 changed files with 126 additions and 0 deletions
18
Dockerfile
Normal file
18
Dockerfile
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
FROM almalinux:latest
|
||||||
|
|
||||||
|
WORKDIR /easy-xray
|
||||||
|
|
||||||
|
COPY ex.sh .
|
||||||
|
RUN chmod +x ex.sh
|
||||||
|
COPY template_config_client.jsonc .
|
||||||
|
COPY template_config_server.jsonc .
|
||||||
|
COPY customgeo.dat .
|
||||||
|
|
||||||
|
RUN dnf update --assumeyes
|
||||||
|
RUN dnf install --assumeyes jq openssl
|
||||||
|
|
||||||
|
# Ports
|
||||||
|
EXPOSE 80
|
||||||
|
EXPOSE 443
|
||||||
|
|
||||||
|
ENTRYPOINT ["bash"]
|
51
README.md
51
README.md
|
@ -24,6 +24,8 @@ can
|
||||||
|
|
||||||
### How to use on VPS
|
### How to use on VPS
|
||||||
|
|
||||||
|
#### Linux
|
||||||
|
|
||||||
First you need a Linux server (VPS) with [jq](https://jqlang.github.io/jq/) and `openssl` installed, they can be found in repositories of
|
First you need a Linux server (VPS) with [jq](https://jqlang.github.io/jq/) and `openssl` installed, they can be found in repositories of
|
||||||
almost all popular Linux distributions. Then download whole `easy-xray` folder to the VPS, make the script `ex.sh` executable, and run a
|
almost all popular Linux distributions. Then download whole `easy-xray` folder to the VPS, make the script `ex.sh` executable, and run a
|
||||||
desired command with it. Use `./ex.sh help` to see the list of all available commands and `./ex.sh install` to start interactive prompt
|
desired command with it. Use `./ex.sh help` to see the list of all available commands and `./ex.sh install` to start interactive prompt
|
||||||
|
@ -38,6 +40,55 @@ sudo ./ex.sh install
|
||||||
Now you have `conf` folder with server and client configs and some user configs. Server config is properly installed and XRay is running.
|
Now you have `conf` folder with server and client configs and some user configs. Server config is properly installed and XRay is running.
|
||||||
Time to share configs or *links* with users! To generate config in the link form, use `./ex.sh link user_config_file.json`.
|
Time to share configs or *links* with users! To generate config in the link form, use `./ex.sh link user_config_file.json`.
|
||||||
|
|
||||||
|
#### Docker
|
||||||
|
|
||||||
|
Script `ex.sh` is written without Docker in mind, but can be used with Docker. Download `easy-xray` folder (main branch) and build the
|
||||||
|
Docker image from `Dockerfile` with some tag name (-t, say `ximage`):
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -L https://codeload.github.com/EvgenyNerush/easy-xray/tar.gz/main | tar -xz
|
||||||
|
cd easy-xray-main # note `-main` !!
|
||||||
|
docker build -t ximage ./
|
||||||
|
```
|
||||||
|
|
||||||
|
Usually user applications are not allowed to bind port 1024 and below, and to mimic a real website xray server should be on ports 80 and
|
||||||
|
443. Thus allow user applications to use ports from 80 and above:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo sysctl -w net.ipv4.ip_unprivileged_port_start=80
|
||||||
|
```
|
||||||
|
|
||||||
|
Enable *linger mode* that allows a not-logged user to run long-running services. Otherwise container can come to improper state after your
|
||||||
|
logout:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo loginctl enable-linger your_username
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run docker container in interactive mode (`-i -t`) exposing ports 80 and 443 to the ports of the host:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -it --name xcontainer -p 80:80 -p 443:443 ximage
|
||||||
|
```
|
||||||
|
|
||||||
|
In the shell of the container install and configure xray. Ignore all warnings about systemd and don't copy configs and don't restart xray.
|
||||||
|
Start xray with generated server config explicitly:
|
||||||
|
|
||||||
|
```
|
||||||
|
./ex.sh install
|
||||||
|
xray -c conf/config_server.json
|
||||||
|
```
|
||||||
|
|
||||||
|
Detach from the container with *Ctrl+p then Ctrl+q*. If you need to attach container again, use `docker attach xcontainer` with *Ctrl+c* to
|
||||||
|
stop xray running, or use `docker exec -it xcontainer bash`. To copy config files from the container to the host, first get container Id:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker ps -a
|
||||||
|
docker cp 123abc456def:/easy-xray/conf ./
|
||||||
|
```
|
||||||
|
|
||||||
|
Command `./ex.sh link conf_file` can be used on any conputer there config files are stored.
|
||||||
|
|
||||||
### Clients
|
### Clients
|
||||||
|
|
||||||
#### Linux
|
#### Linux
|
||||||
|
|
57
README.ru.md
57
README.ru.md
|
@ -25,6 +25,8 @@ VLESS-Reality) не шифрует уже зашифрованный https-тр
|
||||||
|
|
||||||
### Как использовать на VPS
|
### Как использовать на VPS
|
||||||
|
|
||||||
|
#### Linux
|
||||||
|
|
||||||
Для начала нужно арендовать VPS сервер вне региона с цензурой (или попросить друзей заграницей сделать это). После на сервер нужно
|
Для начала нужно арендовать VPS сервер вне региона с цензурой (или попросить друзей заграницей сделать это). После на сервер нужно
|
||||||
установить [jq](https://jqlang.github.io/jq/) и `openssl` - их можно найти в репозиторияx практически всех популярных Linux дистрибутивов.
|
установить [jq](https://jqlang.github.io/jq/) и `openssl` - их можно найти в репозиторияx практически всех популярных Linux дистрибутивов.
|
||||||
Затем скачайте `easy-xray` (всю директорию целиком), сделайте исполняемым файл `ex.sh` и запустите нужную команду. Используйте `./ex.sh
|
Затем скачайте `easy-xray` (всю директорию целиком), сделайте исполняемым файл `ex.sh` и запустите нужную команду. Используйте `./ex.sh
|
||||||
|
@ -41,6 +43,61 @@ sudo ./ex.sh install
|
||||||
будет должным образом установлен, а xray - запущен с ним. Настало время раздать конфиги пользователям! Для многих графических клиентов
|
будет должным образом установлен, а xray - запущен с ним. Настало время раздать конфиги пользователям! Для многих графических клиентов
|
||||||
удобно использовать конфиги в виде ссылок, которые можно сгенерировать командой `./ex.sh link user_config_file.json`.
|
удобно использовать конфиги в виде ссылок, которые можно сгенерировать командой `./ex.sh link user_config_file.json`.
|
||||||
|
|
||||||
|
#### Docker
|
||||||
|
|
||||||
|
Скрипт `ex.sh` написан прежде всего для использования в системе с systemd, однако может быть использован и в Docker. Для этого скачайте
|
||||||
|
директорию `easy-xray` (из ветки main) и соберите образ Docker, используя файл `Dockerfile`; ключ -t задаёт тег, например
|
||||||
|
`ximage`:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -L https://codeload.github.com/EvgenyNerush/easy-xray/tar.gz/main | tar -xz
|
||||||
|
cd easy-xray-main # обратите внимание на `-main` !!
|
||||||
|
docker build -t ximage ./
|
||||||
|
```
|
||||||
|
|
||||||
|
Обычно пользовательские приложения не могут использовать порты ниже 1024, однако для того, чтобы замаскировать xray сервер под обычный
|
||||||
|
вебсайт, мы должны использовать порты 80 и 443. Поэтому для начала на хосте нужно разрешить пользовательским приложениям использовать порты,
|
||||||
|
начиная с 80-го (эту команду, возможно, придётся выполнять после каждой перезагрузки системы):
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo sysctl -w net.ipv4.ip_unprivileged_port_start=80
|
||||||
|
```
|
||||||
|
|
||||||
|
Также нужно разрешить не-залогиненному пользователю выполнять долгоживущие сервисы. Иначе после выхода пользователя с сервера контейнер
|
||||||
|
может перестать работать:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo loginctl enable-linger your_username
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь можно запустить docker контейнер в интерактивном режиме (флаги `-i -t`), пробрасывая порты 80 и 443 от хоста к контейнеру:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -it --name xcontainer -p 80:80 -p 443:443 ximage
|
||||||
|
```
|
||||||
|
|
||||||
|
В интерактивном режиме можно установить и сконфигурировать xray так же, как и в обычной системе, кроме последнего шага - копировать
|
||||||
|
серверный конфиг в директорию xray и перезапускать xray через systemctl нет смысла. Сообщения об отсутствии systemd можно
|
||||||
|
просто проигнорировать. Xray можно запустить с серверным конфигом вручную:
|
||||||
|
|
||||||
|
```
|
||||||
|
./ex.sh install
|
||||||
|
xray -c conf/config_server.json
|
||||||
|
```
|
||||||
|
|
||||||
|
После запуска xray можно отсоединиться от контейнера, используя *Ctrl+p затем Ctrl+q*. Если нужно снова присоединиться к контейнеру, можно
|
||||||
|
использовать `docker attach xcontainer` (после этого нужно нажать *Ctrl+c*, чтобы завершить работающий xray), или можно воспользоваться
|
||||||
|
командой `docker exec -it xcontainer bash` для запуска ещё одной сессии. Для того, чтобы скопировать конфиг-файлы из контейнера на хост,
|
||||||
|
сначала нужно узнать Id контейнера:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker ps -a
|
||||||
|
docker cp 123abc456def:/easy-xray/conf ./
|
||||||
|
```
|
||||||
|
|
||||||
|
Команду `./ex.sh link conf_file` можно использовать на любом компьютере с Linux, если на нём хранятся конфиг-файлы. Работающий xray для этой
|
||||||
|
команды не нужен.
|
||||||
|
|
||||||
### Клиенты
|
### Клиенты
|
||||||
|
|
||||||
#### Linux
|
#### Linux
|
||||||
|
|
Loading…
Reference in a new issue