refactor: move stack into hermes-stack/ subdir, clean root

This commit is contained in:
Sivarius
2026-08-07 08:14:14 +08:00
parent 00aa4bf6cb
commit 2f891853d5
12 changed files with 75 additions and 110 deletions
-64
View File
@@ -1,64 +0,0 @@
# Hermes Docker Stack
Self-hosted SearXNG (metasearch) + Camofox (browser) for Hermes Agent.
## Структура
```
docker/
├── compose/ # Production compose-файлы (по одному на сервис)
│ ├── searxng/ # SearXNG — self-hosted metasearch
│ └── camofox/ # Camofox — anti-detection browser (Firefox)
├── dev/ # Dev-версии (другие порты)
│ ├── searxng/
│ └── camofox/
├── volumes/ # Persistent volume data
│ ├── searxng/config/ # settings.yml
│ ├── searxng/data/ # Search engine data
│ ├── camofox/browser/ # Firefox profiles
│ └── shared/ # Shared downloads
├── scripts/ # Утилиты
│ └── manage.sh
├── tests/ # Тесты
├── docker-compose.yml # Главный стек (extends compose/*)
├── .env # Секреты (gitignored)
├── .env.example # Шаблон .env
└── .gitignore
```
## Порты
| Сервис | Prod | Dev |
|----------|------|------|
| SearXNG | 8964 | 8965 |
| Camofox | 9377 | 9378 |
## Использование
```bash
./scripts/manage.sh start # Запустить стек
./scripts/manage.sh status # Статус
./scripts/manage.sh logs # Логи
./scripts/manage.sh stop # Остановить
./scripts/manage.sh dev # Dev-режим
./scripts/manage.sh dev-stop # Остановить dev
```
## Интеграция с Hermes
В `~/.hermes/.env`:
```
SEARXNG_URL=http://localhost:8964
CAMOFOX_URL=http://localhost:9377
```
В `~/.hermes/config.yaml`:
```yaml
web:
search_backend: searxng
browser:
backend: camofox
camofox:
rewrite_loopback_urls: true
loopback_host_alias: host.docker.internal
```
-15
View File
@@ -1,15 +0,0 @@
services:
searxng:
extends:
file: ./compose/searxng/docker-compose.yml
service: searxng
camofox:
extends:
file: ./compose/camofox/docker-compose.yml
service: camofox
networks:
hermes-net:
name: hermes-net
driver: bridge
+1 -3
View File
@@ -2,12 +2,10 @@
.env
!.env.example
# Volume data (persistent container state)
# Volume data
volumes/searxng/data/
volumes/camofox/browser/
volumes/shared/
# Keep gitkeep files
!volumes/**/.gitkeep
# Python
+64
View File
@@ -0,0 +1,64 @@
# Hermes Docker Stack
Self-hosted SearXNG (metasearch) + Camofox (browser) для Hermes Agent.
## Структура
```
hermes-stack/ # ← самодостаточный проект
├── compose/ # Production compose-файлы
│ ├── searxng/ # SearXNG — self-hosted metasearch
│ └── camofox/ # Camofox — anti-detection browser (Firefox)
├── dev/ # Dev-версии (другие порты)
│ ├── searxng/
│ └── camofox/
├── volumes/ # Persistent volume data
│ ├── searxng/config/ # settings.yml
│ ├── searxng/data/
│ ├── camofox/browser/ # Firefox profiles
│ └── shared/
├── src/camofox/ # Dockerfile для сборки Camofox
├── scripts/manage.sh # Управление стеком
├── tests/
├── .env # Секреты (gitignored)
├── .env.example
├── .gitignore
└── README.md
```
## Порты
| Сервис | Prod | Dev |
|----------|------|------|
| SearXNG | 8964 | 8965 |
| Camofox | 9377 | 9378 |
## Использование
```bash
cd hermes-stack
./scripts/manage.sh start # Запустить
./scripts/manage.sh status # Статус
./scripts/manage.sh logs # Логи
./scripts/manage.sh stop # Остановить
./scripts/manage.sh dev # Dev-режим
```
## Интеграция с Hermes
В `~/.hermes/.env`:
```
SEARXNG_URL=http://localhost:8964
CAMOFOX_URL=http://localhost:9377
```
В `~/.hermes/config.yaml`:
```yaml
web:
search_backend: searxng
browser:
backend: camofox
camofox:
rewrite_loopback_urls: true
loopback_host_alias: host.docker.internal
```
@@ -7,29 +7,29 @@ cd "$DIR"
case "${1:-status}" in
start)
echo "🚀 Starting Hermes Docker Stack..."
docker compose -f docker-compose.yml up -d
docker compose -f compose/searxng/docker-compose.yml -f compose/camofox/docker-compose.yml up -d
echo "SearXNG: http://localhost:8964"
echo "Camofox: http://localhost:9377"
;;
stop)
echo "🛑 Stopping..."
docker compose -f docker-compose.yml down
docker compose -f compose/searxng/docker-compose.yml -f compose/camofox/docker-compose.yml down
;;
restart)
docker compose -f docker-compose.yml down
docker compose -f docker-compose.yml up -d
docker compose -f compose/searxng/docker-compose.yml -f compose/camofox/docker-compose.yml down
docker compose -f compose/searxng/docker-compose.yml -f compose/camofox/docker-compose.yml up -d
;;
status)
echo "=== Hermes Docker Stack ==="
docker compose -f docker-compose.yml ps
docker compose -f compose/searxng/docker-compose.yml -f compose/camofox/docker-compose.yml ps
echo "---"
for url in http://localhost:8964/health http://localhost:9377/health; do
for url in http://localhost:8964/ http://localhost:9377/health; do
code=$(curl -s -o /dev/null -w '%{http_code}' "$url" 2>/dev/null || echo "down")
echo "$url → $code"
done
;;
logs)
docker compose -f docker-compose.yml logs --tail=50 -f
docker compose -f compose/searxng/docker-compose.yml -f compose/camofox/docker-compose.yml logs --tail=50 -f
;;
dev)
echo "🧪 Starting DEV stack..."
@@ -1,28 +1,10 @@
FROM node:22-alpine
RUN apk add --no-cache \
# Playwright deps
nss \
freetype \
freetype-dev \
harfbuzz \
ca-certificates \
ttf-freefont \
# Firefox deps
libstdc++ \
dbus-glib \
# Xvfb for headless mode
xvfb \
xauth \
# General
wget \
curl \
yt-dlp
nss freetype freetype-dev harfbuzz ca-certificates ttf-freefont \
libstdc++ dbus-glib xvfb xauth wget curl yt-dlp
# Install Camofox browser globally
RUN npm install -g @askjo/camofox-browser@1.13.1
# Install Playwright Firefox
RUN npx playwright install firefox
EXPOSE 9377
@@ -20,7 +20,7 @@ search:
- json
server:
secret_key: "" # will be overridden by SEARXNG_SECRET_KEY env
secret_key: "" # overridden by SEARXNG_SECRET_KEY env
bind_address: "0.0.0.0"
port: 8080
base_url: "http://localhost:8964/"