{"id":49693984,"url":"https://github.com/ngrsoftlab/astra-apache-httpd","last_synced_at":"2026-05-07T21:02:47.862Z","repository":{"id":350503160,"uuid":"1144329593","full_name":"NGRsoftlab/Astra-apache-httpd","owner":"NGRsoftlab","description":"Проект по сборке Apache HTTP Server на базе Astra Linux","archived":false,"fork":false,"pushed_at":"2026-01-28T15:29:54.000Z","size":70,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-10T17:37:26.740Z","etag":null,"topics":["apache2","astralinux","best-practices","devops","docker","httpd","podman","pre-commit","security","shell"],"latest_commit_sha":null,"homepage":"https://www.ngrsoftlab.ru","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NGRsoftlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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":"2026-01-28T15:19:15.000Z","updated_at":"2026-01-30T07:31:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/NGRsoftlab/Astra-apache-httpd","commit_stats":null,"previous_names":["ngrsoftlab/astra-apache-httpd"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/NGRsoftlab/Astra-apache-httpd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NGRsoftlab%2FAstra-apache-httpd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NGRsoftlab%2FAstra-apache-httpd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NGRsoftlab%2FAstra-apache-httpd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NGRsoftlab%2FAstra-apache-httpd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NGRsoftlab","download_url":"https://codeload.github.com/NGRsoftlab/Astra-apache-httpd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NGRsoftlab%2FAstra-apache-httpd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32755926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["apache2","astralinux","best-practices","devops","docker","httpd","podman","pre-commit","security","shell"],"created_at":"2026-05-07T21:02:46.739Z","updated_at":"2026-05-07T21:02:47.838Z","avatar_url":"https://github.com/NGRsoftlab.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 MD041 MD044--\u003e\n\u003cp\u003e\u003cimg src=\"https://static.tildacdn.com/tild3733-3430-4331-a637-336233396534/logo.svg\" alt=\"NGRSOFTLAB logo\" title=\"NGR\" align=\"right\" height=\"60\" /\u003e\u003c/p\u003e\n\u003c!-- markdownlint-enable MD033 MD041 --\u003e\n\n# httpd\n\n\u003c!-- markdownlint-disable MD033 MD041 MD051 --\u003e\n\u003cdiv\u003e\n  \u003ch4 align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Dive%20efficiency-99%25-brightgreen.svg?logo=Docker\u0026style=plastic\" alt=\"Dive efficiency\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Made%20with-%E2%9D%A4%EF%B8%8F-9cf?style=plastic\" alt=\"Made with love\"/\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Powered%20by-Docker-blue?logo=Docker\u0026style=plastic\" alt=\"Powered by Docker\"/\u003e\n    \u003cimg src=\"https://shields.io/badge/NGR -Team-yellow?style=plastic\u0026logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjIyLjcgMCA1MS45IDUxLjciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzQuNSAwSDYzLjhsMy42IDMuNWMuNy43LjcgMS45IDAgMi43LS43LjctMS45LjctMi42IDBMNTguOSAwSDUzbDE0LjUgMTMuOWMuNy43LjcgMS45IDAgMi43LS43LjctMS45LjctMi42IDBMNDkgMGgtNi44bDI1LjMgMjQuM2MuNy43LjcgMS45IDAgMi43LS43LjctMS45LjctMi42IDBMMzkgMGgtNy43bDM2LjEgMzQuN2MuNy43LjcgMS45IDAgMi42cy0xLjkuNy0yLjYgMEwyOSAwYy0zLjUuNC02LjMgMy40LTYuMyA3djQ0LjdoMTAuNmwtMy42LTMuNGMtLjctLjctLjctMS45IDAtMi42czEuOS0uNyAyLjcgMGw1LjggNmg1LjlMMjkuNyAzNy45Yy0uNy0uNy0uNy0xLjkgMC0yLjcuNy0uNyAxLjktLjcgMi43IDBsMTUuOCAxNi40SDU1TDI5LjggMjcuNGMtLjctLjctLjctMS45IDAtMi43LjctLjcgMS45LS43IDIuNyAwbDI1LjggMjYuOEg2NkwyOS45IDE2LjljLS43LS43LS43LTEuOSAwLTIuNnMxLjktLjcgMi43IDBsMzUuNyAzNy4yYzMuNS0uMyA2LjMtMy4zIDYuMy03VjB6IiBmaWxsPSIjRjhBRDAwIi8+PC9zdmc+\" alt=\"NGR Team\" /\u003e\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n![httpd image](docs/images/logo.svg)\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e \u003csub\u003e Ascii svg art by \u003ca href=\"https://GitHub.com/martinthomson/aasvg\"\u003eaasvg\u003c/a\u003e. \u003c/sub\u003e \u003c/div\u003e\n\u003c!-- markdownlint-enable MD033 MD041 MD051 --\u003e\n\n## Description\n\nСреда для сборки контейнера с Apache HTTP Server на базе Astra Linux. Данный веб сервер относится к [сертифицируемой](https://wiki.astralinux.ru/pages/viewpage.action?pageId=302028564) сборке предлагаемой Astra Linux, т.к. поставка пакета происходит из основного репозитория (main).\n\nПрисоединяйтесь к нашим социальным сетям:\n\n\u003c!-- markdownlint-disable MD033 --\u003e\n\n\u003cdiv class=\"badges-row-public\"\u003e\n  \u003ch4 align=\"center\"\u003e\n    \u003ca href=\"https://t.me/NGR_Softlab\"\u003e\n      \u003cimg src=\"https://shields.io/badge/ngr-telegram-blue?logo=telegram\u0026style=for-the-badge\" alt=\"NGR Social Telegram\" height=\"40\" /\u003e\n    \u003c/a\u003e\n    \u0026emsp; \u0026emsp; \u0026emsp;\n    \u003ca href=\"https://www.ngrsoftlab.ru/?utm_source=tg\u0026utm_medium=start\" \u003e\n      \u003cimg src=\"https://shields.io/badge/ngr-web--page-yellow?style=for-the-badge\u0026logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjIyLjcgMCA1MS45IDUxLjciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzQuNSAwSDYzLjhsMy42IDMuNWMuNy43LjcgMS45IDAgMi43LS43LjctMS45LjctMi42IDBMNTguOSAwSDUzbDE0LjUgMTMuOWMuNy43LjcgMS45IDAgMi43LS43LjctMS45LjctMi42IDBMNDkgMGgtNi44bDI1LjMgMjQuM2MuNy43LjcgMS45IDAgMi43LS43LjctMS45LjctMi42IDBMMzkgMGgtNy43bDM2LjEgMzQuN2MuNy43LjcgMS45IDAgMi42cy0xLjkuNy0yLjYgMEwyOSAwYy0zLjUuNC02LjMgMy40LTYuMyA3djQ0LjdoMTAuNmwtMy42LTMuNGMtLjctLjctLjctMS45IDAtMi42czEuOS0uNyAyLjcgMGw1LjggNmg1LjlMMjkuNyAzNy45Yy0uNy0uNy0uNy0xLjkgMC0yLjcuNy0uNyAxLjktLjcgMi43IDBsMTUuOCAxNi40SDU1TDI5LjggMjcuNGMtLjctLjctLjctMS45IDAtMi43LjctLjcgMS45LS43IDIuNyAwbDI1LjggMjYuOEg2NkwyOS45IDE2LjljLS43LS43LS43LTEuOSAwLTIuNnMxLjktLjcgMi43IDBsMzUuNyAzNy4yYzMuNS0uMyA2LjMtMy4zIDYuMy03VjB6IiBmaWxsPSIjRjhBRDAwIi8+PC9zdmc+\" alt=\"NGR Social Media\" height=\"40\" /\u003e\n    \u003c/a\u003e\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003c!-- markdownlint-enable MD033 --\u003e\n\n## Contents\n\n- [httpd](#httpd)\n  - [Description](#description)\n  - [Contents](#contents)\n  - [Supported Technologies](#supported-technologies)\n  - [What is it](#what-is-it)\n  - [How to work with](#how-to-work-with)\n    - [Build variables](#build-variables)\n  - [How to use this image](#how-to-use-this-image)\n  - [How to test local](#how-to-test-local)\n  - [Configuration](#configuration)\n  - [SSL/HTTPS](#sslhttps)\n  - [Issues and solutions](#issues-and-solutions)\n  - [Miscellaneous](#miscellaneous)\n    - [Cya!](#cya)\n\n## [Supported Technologies](#contents)\n\n\u003c!-- markdownlint-disable MD033 --\u003e\n|                                                 OS                                                  |                                                      Apache2                                                      | Status             |\n| :-------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------: | :----------------- |\n| ![Astra 1.8](https://img.shields.io/badge/Astra-1.8.x-00ADD8?style=flat\u0026logo=astra\u0026logoColor=white) | ![Apache 2.4.65](https://img.shields.io/badge/apache-2.4.65-%23D42029.svg?style=flat\u0026logo=apache\u0026logoColor=white) | ✅ Fully supported |\n\n\u003cdiv align=\"center\"\u003e \u003csub\u003e Таблица 1. Поставляемые версии для контейнерных сред. \u003c/sub\u003e \u003c/div\u003e\n\n\u003c!-- markdownlint-enable MD033 --\u003e\n\n## [What is it](#contents)\n\nDockerfile для сборки Apache в Astra Linux\n\n## [How to work with](#contents)\n\nДля начала работы необходимо установить [pre-commit](https://pre-commit.com/) и хуки\n\n```console\n$ pip install pre-commit\n$ pre-commit --version\n\npre-commit 4.2.0\n\n$ pre-commit install\n\npre-commit installed at .git/hooks/pre-commit\npre-commit installed at .git/hooks/commit-msg\npre-commit installed at .git/hooks/pre-push\n```\n\n\u003e [!warning]\n\u003e Чтобы проверить свои изменения, воспользуйтесь командой `pre-commit run --all-files`.\n\u003e Чтобы проверить конкретную задачу, воспользуетесь командой `pre-commit run \u003ctarget\u003e --all-files`.\n\u003e Если Вы понимаете что творите и хотите пропустить проверку `pre-commit`-ом воспользуйтесь `--no-verify`, пример `git commit -m \"Добавил изменения и не хочу проверки\" --no-verify`\n\nСобрать образ `Astra Linux based`\n\n```shell\n## Image build\nexport ASTRA_VERSION='1.8.x-slim'\nexport APACHE_HTTPD_VERSION=\"2.4.65-astra${ASTRA_VERSION}\"\n\n## Apache image:\ndocker build \\\n    --progress=plain \\\n    --no-cache \\\n    -t httpd:\"${APACHE_HTTPD_VERSION}\" \\\n    .\n```\n\n### [Build variables](#contents)\n\n| Имя              | Значение по умолчанию |  Тип   |                                                                                    Описание |\n| :--------------- | :-------------------: | :----: | ------------------------------------------------------------------------------------------: |\n| `image_name`     |         astra         | string |                                                                                 Имя образа. |\n| `image_registry` |          ''           | string | Адрес до реестра образа. Например: `--build-arg image_registry=my-container-registry:1111/` |\n| `image_version`  |      1.8.x-slim       | string |                                                                              Версия образа. |\n| `httpd_identity` |        2.4.65         | string |                                                                 Ожидаемая версия httpd[^1]. |\n| `version`        |         1.0.0         | float  |                                                     Версия выпуска минимального контейнера. |\n\n\u003c!-- markdownlint-disable MD033 --\u003e\n\u003cdiv align=\"center\"\u003e \u003csub\u003e Таблица 2. Переопределяемые аргументы для Dockerfile. \u003c/sub\u003e \u003c/div\u003e\n\u003c!-- markdownlint-enable MD033 --\u003e\n\n\u003e [!tip]\n\u003e Проверка доступных версий приложения -\n\u003e `apt show apache2`,\n\u003e `apt-cache policy apache2`,\n\u003e `apt-cache show apache2`\n\n## [How to use this image](#contents)\n\nДля того чтобы начать использовать данный образ, создайте `Dockerfile` с простыми настройками\n\n```Dockerfile\nFROM httpd:2.4.65-astra1.8.x-slim\nCOPY static-html-directory /var/www/html\n```\n\nЗатем соберите и запустите полученный образ\n\n```console\n$ docker build -t some-content-httpd .\n$ docker run --name some-httpd -d some-content-httpd\n\n...run logic...\n```\n\n## [How to test local](#contents)\n\nПростой тест:\n\n```shell\n$ docker run --rm -p 80:80 httpd:2.4.65-astra1.8.x-slim\n\n$ curl -s -i -w \"\\nStatus code: %{http_code}\\n\" http://localhost\n\n...\nhttpd header\nhttpd body\nhttpd status code\n```\n\nХостинг простой статики:\n\n```shell\ndocker run --rm -d --name some-httpd -p 8080:80 -v /some/content:/var/www/html:ro httpd:2.4.65-astra1.8.x-slim\n```\n\n## [Configuration](#contents)\n\nДля создания своего пользовательского конфига httpd сервера воспользуйтесь командой ниже и получите конфигурационный файл, который используется по умолчанию\n\n```shell\ndocker run --rm httpd:2.4.65-astra1.8.x-slim cat /etc/apache2/apache2.conf \u003emy-httpd.conf\n```\n\nПосле модификаций просто **скопируйте** его в свой образ\n\n```Dockerfile\nFROM httpd:2.4.65-astra1.8.x-slim\nCOPY ./my-httpd.conf /etc/apache2/apache2.conf\n```\n\n## [SSL/HTTPS](#contents)\n\nПри необходимости передачи веб-трафика по SSL, простейший способ настройки - это **скопировать** или **монтировать** пользовательские **server.crt**, **server.key** и [файл конфигурации](configuration/httpd-ssl.conf) внутрь образа\n\n- Создать пользовательские самоподписанные сертификаты\n\n    ```shell\n    mkdir -p ./certs\n\n    openssl req -x509 -nodes -days 365 \\\n      -newkey rsa:2048 \\\n      -keyout ./certs/server.key \\\n      -out ./certs/server.crt \\\n      -subj \"/C=RU/ST=Test/L=Test/O=TestOrg/CN=localhost\" \\\n      -addext \"basicConstraints=critical,CA:FALSE\" \\\n      -addext \"keyUsage=digitalSignature,keyEncipherment\" \\\n      -addext \"extendedKeyUsage=serverAuth\"\n\n    chmod 600 ./certs/server.key\n    chmod 644 ./certs/server.crt\n    sudo chown -R 999:999 certs/\n    ```\n\n- Собрать образ\n\n    ```shell\n    docker build \\\n      --progress=plain \\\n      --no-cache \\\n      -f Dockerfile.ssl \\\n      -t httpd:ssl \\\n      .\n    ```\n\n- Запустить проверку\n\n    ```shell\n    docker run -d \\\n      --name httpd-ssl \\\n      -p 8080:8080 \\\n      -p 8443:8443 \\\n      -v $(pwd)/certs:/certs:ro \\\n      httpd:ssl\n    ```\n\n- Проверить из консоли\n\n    ```shell\n    ## Проверить HTTPS\n    curl -k https://localhost:8443\n\n    ## Проверить сертификат\n    openssl s_client -connect localhost:8443 -servername localhost 2\u003e/dev/null | openssl x509 -noout -subject -issuer\n\n    ## Проверить на защиту от XST атак - должен вернуть 405 или 403\n    curl -k -X TRACE https://localhost:8443/\n\n    ## Проверить на посторонние методы - должен вернуть 405 или 403\n    curl -k -X PUT https://localhost:8443/\n\n    ## Проверить сервер - должен показать 'Server: Apache'\n    curl -I http://localhost:8080/\n    ```\n\n\u003e [!tip]\n\u003e Рекомендую более подробно ознакомиться с [конфигурационным файлом](configuration/httpd-ssl.conf). В нём отражены неплохие практики оформления ssl/secure для веб-сервера\n\n## [Issues and solutions](#contents)\n\n- При необходимости включить логи отладки запросов, например отладки websocket, стоит использовать следующую конструкцию:\n\n    ```conf\n    # apache2.conf\n    LogLevel alert proxy:trace4 ssl:info\n    ```\n\n- При необходимости аудита подключения, можно воспользоваться `tcpdump`-ом\n\n    ```shell\n    tcpdump -i any -nn port 8080\n    tcpdump -i lo -nn port 8443\n    ```\n\n- Для того чтобы обновить конфигурационный файл внутри контейнера необходимо воспользоваться командой\n\n    ```shell\n    docker exec -it \u003cmy-httpd-container\u003e kill -USR1 1\n    ```\n\n## [Miscellaneous](#contents)\n\nЛого для проекта создано при помощи [`aasvg`](https://github.com/martinthomson/aasvg) проекта. Вы можете создать такое же и/или модифицировать имеющееся. Для этого воспользуйтесь [сайтом](https://patorjk.com/software/taag/#p=display\u0026f=Doom) или установите `figlet`. Если Вы используете способ с установкой `figlet`, то вдобавок необходимо сказать необходимый шрифт, например я использую `Doom`. Далее, необходимо воспользоваться `aasvg` и конвертировать `ascii` арт в `svg`. Обратите внимание - по умолчанию будет svg в красном цвете, чтобы изменить цвет, необходимо изменить его определение [тут](docs/images/logo.svg#L128). Конвертация цвета происходит по следующему принципу - `%23D42029`, где `%23` это закодированный URL символ #, итоговое получаемое значение `#D42029`\n\n```console\n$ curl 'http://www.figlet.org/fonts/doom.flf' -o /usr/share/figlet/doom.flf\n$ curl 'http://www.figlet.org/fonts/larry3d.flf' -o /usr/share/figlet/larry3d.flf\n$ figlet -f doom 'Apache2-HTTPd'\n\n  ___                   _          _____       _   _ _____ ___________   _\n / _ \\                 | |        / __  \\     | | | |_   _|_   _| ___ \\ | |\n/ /_\\ \\_ __   __ _  ___| |__   ___`' / /______| |_| | | |   | | | |_/ __| |\n|  _  | '_ \\ / _` |/ __| '_ \\ / _ \\ / /|______|  _  | | |   | | |  __/ _` |\n| | | | |_) | (_| | (__| | | |  __./ /___     | | | | | |   | | | | | (_| |\n\\_| |_| .__/ \\__,_|\\___|_| |_|\\___\\_____/     \\_| |_/ \\_/   \\_/ \\_|  \\__,_|\n      | |\n      |_|\n\n$ aasvg --source --embed \u003c ./docs/ascii.txt \u003e docs/images/logo.svg\n```\n\n\u003c!-- markdownlint-disable MD033 MD041 MD051 --\u003e\n\u003ctable align=\"center\"\u003e\u003ctr\u003e\u003ctd align=\"center\" width=\"9999\"\u003e\n\n![Apache feather logo](docs/images/cya.svg)\n\n\u003cdiv align=\"center\"\u003e \u003csub\u003e Apache feather logo, symbolizing the Apache Software Foundation's focus on distributed systems, open collaboration, and the \"Apache Way\". \u003c/sub\u003e \u003c/div\u003e\n\n### [Cya!](#contents)\n\n\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c!-- markdownlint-enable MD033 MD041 MD051 --\u003e\n\n---\n\n[^1]: 🛠️ За счёт скрипта [`httpd-install-approximately.sh`](scripts/httpd-install-approximately.sh) нас может не волновать полная версия httpd, мы можем передавать лишь приблизительно желаемую версию, а скрипт позаботится чтобы была выбрана последняя и актуальная из списка\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngrsoftlab%2Fastra-apache-httpd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fngrsoftlab%2Fastra-apache-httpd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngrsoftlab%2Fastra-apache-httpd/lists"}