{"id":22270830,"url":"https://github.com/nativu5/docker-xray-web","last_synced_at":"2025-07-28T13:32:27.890Z","repository":{"id":166863857,"uuid":"341413479","full_name":"Nativu5/docker-xray-web","owner":"Nativu5","description":"Docker-compose for Xray-core and a web service (Nginx + PostgreSQL + Typecho for example).","archived":false,"fork":false,"pushed_at":"2023-12-25T14:43:19.000Z","size":660,"stargazers_count":25,"open_issues_count":1,"forks_count":15,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-12-25T16:55:56.647Z","etag":null,"topics":["docker-compose","nginx","typecho","vless","xray"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nativu5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-02-23T03:16:49.000Z","updated_at":"2023-12-25T14:34:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"71f3a7ab-e711-4fae-85c4-5a355a4083a7","html_url":"https://github.com/Nativu5/docker-xray-web","commit_stats":null,"previous_names":["nativu5/docker-xray-web"],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nativu5%2Fdocker-xray-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nativu5%2Fdocker-xray-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nativu5%2Fdocker-xray-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nativu5%2Fdocker-xray-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nativu5","download_url":"https://codeload.github.com/Nativu5/docker-xray-web/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227914237,"owners_count":17839245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","nginx","typecho","vless","xray"],"created_at":"2024-12-03T12:09:37.154Z","updated_at":"2024-12-03T12:09:37.674Z","avatar_url":"https://github.com/Nativu5.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-xray-web\n\n\u003e 本项目已经有些过时，若您有意愿继续维护，欢迎 PR。\n\n通过 Docker-compose 简易部署 [Xray-core](https://github.com/XTLS/Xray-core) 和 Web 服务（**以 Nginx + PostgreSQL + Typecho 博客程序为例**）。\n\nDocker-compose for Xray-core and a web service (Nginx + PostgreSQL + Typecho for example).\n\n## 概述\n\n本项目参考 [小小白白话文 :: Project X (xtls.github.io)](https://xtls.github.io/documents/level-0/) ，通过 Docker-compose 在 Xray 安装的同时部署了 Web 服务，方便建立博客 + 搭建梯子。\n\n原理：Nginx 监听宿主机 80 端口，将流量重定向至 443 端口。而 Xray 监听宿主机 443 端口，识别出 Vless 协议的流量后按照 Xray 设置的规则处理，非 Vless 流量全部转发至 Nginx 容器的 8080 端口（即网站）。\n\n[回落 (fallbacks) 功能简析 :: Project X (xtls.github.io)](https://xtls.github.io/documents/level-1/fallbacks-lv1/)\n\n### 文件结构与说明\n\n* `./xray` 保存 Xray 的配置文件和日志。 \n* `./cert` 保存 XRay 所需证书；\n* `./nginx` 保存 Nginx 的配置文件、日志和网页内容；\n* `./dbdata` 保存 `pgsql` 的数据库配置与文件；（容器初次运行后自动生成）\n* `./docker-compose.yml` 控制容器挂载卷、环境变量等；\n\n### 容器组成\n\n* `php-fpm-pgsql` : 提供 PHP 支持;\n* `nginx` : 作为网页服务器;\n* `postgres` : 数据库;\n* `xray` : xray-core 程序。\n\n## 关于镜像\n\n### Xray\n\n感谢来自 [teddysun/xray](https://hub.docker.com/r/teddysun/xray) 的镜像。\n\n### PHP-FPM\n\n* 文档：https://github.com/docker-library/docs/blob/master/php/README.md\n* 为了连接 PgSQL 数据库，在官方镜像基础上使用 [docker-php-extension-installer](https://github.com/mlocati/docker-php-extension-installer) 添加了 `pgsql` 拓展。\n\n### Nginx\n\n直接使用了原版镜像。\n\n### PostgresSQL\n\n* 文档：https://hub.docker.com/_/postgres\n\n* ”Environment Variables“ 一节中详细说明了容器运行所需提供的环境变量。\n\n  本项目用到了以下环境变量:\n\n  * `POSTGRES_PASSWORD` 数据库 `superuser` 密码； （必需）\n  * `POSTGRES_USER` 指定 `superuser` 用户名；（可选，默认值为 `postgres`）\n  * `POSTGRES_DB` 指定数据库名称；（可选）\n\n## 部署指南\n\n**本部分以部署 Typecho 博客程序为例。**\n\n0. 宿主机必须安装 docker, docker-compose，您必须拥有正确解析的域名和相应的证书; \n\n1. 克隆本仓库，并拉取子模块：\n\n   ```bash\n   git clone --recursive --depth=1 https://github.com/Nativu5/docker-xray-web.git\n   ```\n\n2. 切换到 `docker-xray-web` 目录下，共有 3 处配置文件需要用户自行修改：\n\n   * `./docker-compose.yml` : \n   * `db` 一节中的数据库用户名、数据库用户密码、数据库名都可以由用户自定义；\n     * 每一节都有环境变量 `TZ` ，可供设置容器时区；\n   * `./nginx/conf.d` : 需要将文件中所有 `yourdomain.com` 替换为用户自己的域名；\n   * `./xray/config/config.json` : 需要自行填写 UUID 和邮箱。\n\n3. 将域名对应的证书放入 `./cert`，fullchain 文件保存为 `xray.crt`，key 文件保存为 `xray.key`；\n\n4. 在 `docker-xray-web` 下执行\n\n   ```bash\n   docker-compose up\n   ```\n\n   正常情况下，所有容器都应能正常运行；\n\n5. 使用 `Ctrl-C` 停止所有容器，然后执行：\n\n   ```bash\n   sudo chmod -R 777 ./nginx/www/typecho\n   ```\n\n   更改权限以便稍后 `Typecho` 存取文件；\n\n6. 然后执行：\n\n   ```bash\n   docker-compose start\n   ```\n\n   重启容器，启动成功后打开浏览器访问预先设置的域名，即可安装 `Typecho` 。\n\n7. 选择任意支持 Xray 的客户端，根据 `./xray/config/config.json` 的内容生成客户端配置文件即可。\n\n## 注意事项\n\n* `php-fpm-pgsql` 镜像已经上传 Docker Hub,  `dockerfile` 见 [docker-typecho/dockerfile](https://github.com/Nativu5/docker-typecho/blob/master/php-fpm-pgsql/dockerfile), 读者可以此自行构建；\n\n* 由于 Xtls 需要证书方可使用，故请先获取证书再部署，推荐使用 [acmesh-official/acme.sh](https://github.com/acmesh-official/acme.sh) 自动维护证书。\n\n* 本项目内置的 `default.conf` 已经配置为支持 Typecho 伪静态，但您可能需要在 Typecho 安装后，到网站后台中启用相关设置。\n\n* Typecho 安装后可能需要在程序自动生成的 `./nginx/www/typecho/config.inc.php` 中加入一行：\n\n  ```php\n  define('__TYPECHO_SECURE__',true);\n  ```\n\n  以启用全站 HTTPS 加密。\n  \n* Xray 的日志默认是输出在容器内的控制台中的，您可以按照 Xray 的文档要求，将 Xray 配置文件的 `log` 一节设置为\n\n```json\n\"log\": {\n        \"loglevel\": \"warning\",\n        \"access\":\"/var/log/xray/access.log\",\n        \"error\":\"/var/log/xray/error.log\"\n}\n```\n\n* ~~目前 Xray 不会判断访问的域名，即不能实现用户访问 yourdomain.com 和 sub.yourdomain.com 时进入两个不同的站点。~~ 貌似有办法解决 SNI 分流，但有些麻烦：[integrated-examples/v2ray](https://github.com/lxhao61/integrated-examples/tree/master/v2ray(other%20configuration))\n\n* 默认的 Xray 配置不能通过 CDN，但您可以自定义 Xray 配置文件来实现这一功能。\n\n## 免责声明\n\n\u003e 本项目仅用于研究 Docker-compose、Xray、Nginx 等软件的使用。\n\u003e \n\u003e 使用者在使用该项目时应当遵守相关法律法规的约束，本项目作者不因使用者的违法使用承担任何责任。\n\u003e 本项目的其他副本（包括但不仅限于离线储存、fork 项目）在保持代码完全相同情况下，享有和本免责声明相同的免责条款；反之不然。因不当储存、复制和扩散导致的、无限的风险与责任由相关使用者承担，与本项目无关。\n\n\n## Infrastructure Model\n\n![Infrastructure model](.infragenie/infrastructure_model.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnativu5%2Fdocker-xray-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnativu5%2Fdocker-xray-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnativu5%2Fdocker-xray-web/lists"}