refactor: move stack into hermes-stack/ subdir, clean root
This commit is contained in:
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
+1
-1
@@ -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/"
|
||||
Reference in New Issue
Block a user