{"id":35693997,"url":"https://github.com/Falknat/vServer","last_synced_at":"2026-01-11T20:00:35.190Z","repository":{"id":324323351,"uuid":"1096135183","full_name":"Falknat/vServer","owner":"Falknat","description":"Разработка vServer на GO","archived":false,"fork":false,"pushed_at":"2025-11-22T20:55:37.000Z","size":102426,"stargazers_count":7,"open_issues_count":3,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-22T22:21:04.451Z","etag":null,"topics":["mysql","php","vserf","webserver"],"latest_commit_sha":null,"homepage":"https://vserf.ru","language":"Go","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/Falknat.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-14T01:42:47.000Z","updated_at":"2025-11-22T20:55:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Falknat/vServer","commit_stats":null,"previous_names":["falknat/vserver"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Falknat/vServer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Falknat%2FvServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Falknat%2FvServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Falknat%2FvServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Falknat%2FvServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Falknat","download_url":"https://codeload.github.com/Falknat/vServer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Falknat%2FvServer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28321260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T18:42:50.174Z","status":"ssl_error","status_checked_at":"2026-01-11T18:39:13.842Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["mysql","php","vserf","webserver"],"created_at":"2026-01-06T00:00:56.926Z","updated_at":"2026-01-11T20:00:35.185Z","avatar_url":"https://github.com/Falknat.png","language":"Go","funding_links":[],"categories":["Project Categories"],"sub_categories":[],"readme":"# 🚀 vServer - Функциональный веб-сервер на Go\n**🇺🇸 [English version](README_EN.md)**\n\u003e Функциональный веб-сервер с поддержкой HTTP/HTTPS, MySQL, PHP и GUI-админкой\n\n**👨‍💻 Автор:** Суманеев Роман  \n**🌐 Сайт:** [voxsel.ru](https://voxsel.ru)  \n**📞 Контакт:** [VK](https://vk.com/felias)\n\n## 🎯 Возможности\n\n\u003cimg src=\"https://vserf.ru/images/11.jpg\" alt=\"Главная страница\" width=\"600\"\u003e\n\u003cimg src=\"https://vserf.ru/images/12.jpg\" alt=\"Главная страница\" width=\"600\"\u003e\n\n### 🌐 Веб-сервер\n- ✅ **HTTP/HTTPS** сервер с поддержкой SSL сертификатов\n- ✅ **Proxy сервер** для проксирования запросов\n- ✅ **PHP сервер** со встроенной поддержкой PHP 8\n- ✅ **Статический контент** для размещения веб-сайтов\n- ✅ **vAccess** - система контроля доступа для сайтов и прокси\n\n### 🗄️ База данных\n- ✅ **MySQL сервер** с полной поддержкой\n\n### 🔧 Администрирование\n- ✅ **GUI Админка** - Wails desktop приложение с современным интерфейсом\n- ✅ **Управление сервисами** - запуск/остановка HTTP, HTTPS, MySQL, PHP, Proxy\n- ✅ **Редактор сайтов и прокси** - визуальное управление конфигурацией\n- ✅ **vAccess редактор** - настройка правил доступа через интерфейс\n\n## 🏗️ Архитектура\n\n```\nvServer/\n├── 🎯 main.go              # Точка входа основного сервера\n│\n├── 🔧 Backend/             # Основная логика\n│   │\n│   ├── admin/              # | 🎛️ GUI Админка (Wails) |\n│   │   ├── go/             # | Go backend для админки |\n│   │   └── frontend/       # | Современный UI |\n│   │\n│   ├── config/             # | 🔧 Конфигурационные файлы Go |\n│   ├── tools/              # | 🛠️ Утилиты и хелперы |\n│   └── WebServer/          # | 🌐 Модули веб-сервера |\n│\n├── 🌐 WebServer/           # Веб-контент и конфигурация\n│   │\n│   ├── cert/               # | 🔐 SSL сертификаты |\n│   ├── soft/               # | 📦 MySQL и PHP |\n│   ├── tools/              # | 📊 Логи и инструменты |\n│   └── www/                # | 🌍 Веб-контент |\n│\n├── 📄 go.mod               # Go модули\n├── 🔨 build_admin.ps1      # Сборка GUI админки\n└── 🚀 vSerf.exe            # GUI админка (после сборки)\n```\n\n## 🚀 Установка и запуск\n\n### 🔨 Сборка основного сервера\n```powershell\n./build_admin.ps1\n```\n\nСкрипт автоматически:\n- Проверит/создаст `go.mod`\n- Установит зависимости (`go mod tidy`)\n- Проверит/установит Wails CLI\n- Соберёт приложение → `vSerf.exe`\n\n### 📦 Подготовка компонентов\n1. Распакуйте архив `WebServer/soft/soft.rar` в папку `WebServer/soft/`\n2. Запустите `vServer.exe` - основной сервер\n3. Запустите `vSerf.exe` - GUI админка для управления\n\n\u003e 🔑 **Важно:** Пароль MySQL по умолчанию - `root`\n\n### 📦 Готовый проект для пользователя\nДля работы необходимы:\n- 📄 `vSerf.exe` - GUI админка (опционально)\n- 📁 `WebServer/` - конфигурация и ресурсы\n\n\u003e 💡 Папка `Backend/` и файлы `go.mod`, `main.go` нужны только для разработки\n\n## ⚙️ Конфигурация\n\nНастройка через `WebServer/config.json`:\n\n```json\n{\n  \"Site_www\": [\n    { \n      \"name\": \"Локальный сайт\", \n      \"host\": \"127.0.0.1\", \n      \"alias\": [\"localhost\"],\n      \"status\": \"active\",\n      \"root_file\": \"index.html\",\n      \"root_file_routing\": true\n    }\n  ],\n  \"Proxy_Service\": [\n    {\n      \"Enable\": true,\n      \"ExternalDomain\": \"git.example.ru\",\n      \"LocalAddress\": \"127.0.0.1\",\n      \"LocalPort\": \"3333\",\n      \"ServiceHTTPSuse\": false,\n      \"AutoHTTPS\": true\n    }\n  ],\n  \"Soft_Settings\": {\n    \"mysql_port\": 3306, \"mysql_host\": \"127.0.0.1\",\n    \"php_port\": 8000, \"php_host\": \"localhost\",\n    \"proxy_enabled\": true\n  }\n}\n```\n\n**Основные параметры:**\n- `Site_www` - настройки веб-сайтов\n- `Proxy_Service` - конфигурация прокси-сервисов\n- `Soft_Settings` - порты и хосты сервисов (MySQL, PHP, proxy_enabled)\n\n### 🌐 Alias с поддержкой Wildcard\n\nДля сайтов поддерживается wildcard (`*`) в алиасах:\n\n```json\n{\n  \"alias\": [\n    \"*.test.ru\",      // Все поддомены voxsel.ru\n    \"*.test.com\",     // Все поддомены voxsel.com\n    \"test.com\",       // Точное совпадение\n    \"api.*\"           // api с любой зоной\n  ],\n  \"host\": \"test.ru\"\n}\n```\n\n**Примеры работы wildcard:**\n- `*.example.com` → `api.example.com`, `admin.example.com`, `test.example.com` ✅\n- `example.*` → `example.com`, `example.ru`, `example.org` ✅\n- `*example.com` → `test-example.com`, `my-example.com` ✅\n- `*` → любой домен ✅ (осторожно!)\n- `example.com` → только `example.com` ✅ (без wildcard)\n\n### 🔄 Прокси-сервер\n\nПрокси-сервер позволяет перенаправлять внешние запросы на локальные сервисы.\n\n**Параметры Proxy_Service:**\n- `Enable` - включить/отключить прокси (true/false)\n- `ExternalDomain` - внешний домен для перехвата запросов\n- `LocalAddress` - локальный адрес сервиса\n- `LocalPort` - порт локального сервиса\n- `ServiceHTTPSuse` - использовать HTTPS для подключения к локальному сервису (true/false)\n- `AutoHTTPS` - автоматически перенаправлять HTTP → HTTPS (true/false)\n\n**Пример множественных прокси:**\n```json\n\"Proxy_Service\": [\n  {\n    \"Enable\": true,\n    \"ExternalDomain\": \"git.example.com\",\n    \"LocalAddress\": \"127.0.0.1\",\n    \"LocalPort\": \"3000\",\n    \"ServiceHTTPSuse\": false,\n    \"AutoHTTPS\": true\n  },\n  {\n    \"Enable\": false,\n    \"ExternalDomain\": \"api.example.com\",\n    \"LocalAddress\": \"127.0.0.1\",\n    \"LocalPort\": \"8080\",\n    \"ServiceHTTPSuse\": false,\n    \"AutoHTTPS\": false\n  }\n]\n```\n\n#### 📖 Подробное описание параметров:\n\n**`ServiceHTTPSuse`** - протокол подключения к локальному сервису:\n- `false` - vServer подключается к локальному сервису по HTTP (по умолчанию)\n- `true` - vServer подключается к локальному сервису по HTTPS\n\n**`AutoHTTPS`** - автоматический редирект на HTTPS:\n- `true` - все HTTP запросы автоматически перенаправляются на HTTPS (рекомендуется)\n- `false` - разрешены как HTTP, так и HTTPS запросы\n\n**Схема работы:**\n```\nКлиент (HTTP/HTTPS) → vServer (проверка AutoHTTPS) → Локальный сервис (ServiceHTTPSuse)\n```\n\n**Применение изменений:**\n- Введите команду `config_reload` в консоли для перезагрузки конфигурации\n- Изменения применятся к новым запросам без перезапуска сервера\n\n## 🔒 vAccess - Система контроля доступа\n\nvServer включает гибкую систему контроля доступа **vAccess** для сайтов и прокси-сервисов.\n\n### 📁 Расположение конфигураций\n\n**Для сайтов:**\n```\nWebServer/www/{host}/vAccess.conf\n```\n\n**Для прокси:**\n```\nWebServer/tools/Proxy_vAccess/{domain}_vAccess.conf\n```\n\n### ⚙️ Основные возможности\n\n- ✅ **IP-фильтрация** - разрешение/блокировка по IP адресам\n- ✅ **Контроль путей** - ограничение доступа к определённым директориям\n- ✅ **Фильтрация файлов** - блокировка по расширениям (*.php, *.exe)\n- ✅ **Исключения** - гибкие правила с exceptions_dir\n- ✅ **Кастомные ошибки** - редиректы или страницы ошибок\n\n### 📝 Пример конфигурации\n\n```conf\n# Разрешаем админку только с локальных IP\ntype: Allow\npath_access: /admin/*, /api/admin/*\nip_list: 127.0.0.1, 192.168.1.100\nurl_error: 404\n\n# Блокируем опасные файлы в uploads\ntype: Disable\ntype_file: *.php, *.exe, *.sh\npath_access: /uploads/*\nurl_error: 404\n```\n\n### 📚 Документация\n\nПодробная документация по vAccess:\n- **Для сайтов:** см. `WebServer/www/{host}/vAccess.conf` (примеры в файле)\n- **Для прокси:** см. `WebServer/tools/Proxy_vAccess/README.md`\n\n## 📝 Логирование\n\nВсе логи сохраняются в `WebServer/tools/logs/`:\n\n- 🌐 `logs_http.log` - HTTP запросы (включая прокси P-HTTP)\n- 🔒 `logs_https.log` - HTTPS запросы (включая прокси P-HTTPS)\n- 🔄 `logs_proxy.log` - Ошибки прокси-сервера\n- 🗄️ `logs_mysql.log` - MySQL операции\n- 🐘 `logs_php.log` - PHP ошибки\n- ⚙️ `logs_config.log` - Конфигурация\n- 🔐 `logs_vaccess.log` - Контроль доступа для сайтов\n- 🔐 `logs_vaccess_proxy.log` - Контроль доступа для прокси\n\n## 🔐 SSL Сертификаты\n\n### Установка сертификата\n\n1. Откройте каталог `WebServer/`\n2. Создайте папку `cert/` (если её нет)\n3. Создайте папку с именем вашего домена или IP-адреса\n4. Поместите в неё файлы сертификатов с **точными** именами:\n   ```\n   certificate.crt\n   private.key\n   ca_bundle.crt\n   ```\n5. Сертификат будет автоматически загружен при запуске сервера\n\n### 📁 Структура сертификатов\n\n```\nWebServer/\n└── cert/\n    ├── example.com/          # Основной домен\n    │   ├── certificate.crt\n    │   ├── private.key\n    │   └── ca_bundle.crt\n    │\n    └── sub.example.com/      # Поддомен (опционально)\n        ├── certificate.crt\n        ├── private.key\n        └── ca_bundle.crt\n```\n\n### 🎯 Работа с поддоменами\n\n**Важно:** Если для поддомена не создана отдельная папка в `cert/`, то автоматически будет использоваться сертификат родительского домена.\n\n**Примеры:**\n- ✅ Запрос к `example.com` → использует сертификат из `cert/example.com/`\n- ✅ Запрос к `sub.example.com` (папка существует) → использует `cert/sub.example.com/`\n- ✅ Запрос к `sub.example.com` (папка НЕ существует) → использует `cert/example.com/`\n\n**Это удобно для wildcard-сертификатов:** достаточно одного сертификата в папке основного домена для всех поддоменов! 🌟","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFalknat%2FvServer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFalknat%2FvServer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFalknat%2FvServer/lists"}