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
|
||||||
!.env.example
|
!.env.example
|
||||||
|
|
||||||
# Volume data (persistent container state)
|
# Volume data
|
||||||
volumes/searxng/data/
|
volumes/searxng/data/
|
||||||
volumes/camofox/browser/
|
volumes/camofox/browser/
|
||||||
volumes/shared/
|
volumes/shared/
|
||||||
|
|
||||||
# Keep gitkeep files
|
|
||||||
!volumes/**/.gitkeep
|
!volumes/**/.gitkeep
|
||||||
|
|
||||||
# Python
|
# 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
|
case "${1:-status}" in
|
||||||
start)
|
start)
|
||||||
echo "🚀 Starting Hermes Docker Stack..."
|
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 "SearXNG: http://localhost:8964"
|
||||||
echo "Camofox: http://localhost:9377"
|
echo "Camofox: http://localhost:9377"
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
echo "🛑 Stopping..."
|
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)
|
restart)
|
||||||
docker compose -f docker-compose.yml down
|
docker compose -f compose/searxng/docker-compose.yml -f compose/camofox/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 up -d
|
||||||
;;
|
;;
|
||||||
status)
|
status)
|
||||||
echo "=== Hermes Docker Stack ==="
|
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 "---"
|
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")
|
code=$(curl -s -o /dev/null -w '%{http_code}' "$url" 2>/dev/null || echo "down")
|
||||||
echo "$url → $code"
|
echo "$url → $code"
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
logs)
|
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)
|
dev)
|
||||||
echo "🧪 Starting DEV stack..."
|
echo "🧪 Starting DEV stack..."
|
||||||
@@ -1,28 +1,10 @@
|
|||||||
FROM node:22-alpine
|
FROM node:22-alpine
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
# Playwright deps
|
nss freetype freetype-dev harfbuzz ca-certificates ttf-freefont \
|
||||||
nss \
|
libstdc++ dbus-glib xvfb xauth wget curl yt-dlp
|
||||||
freetype \
|
|
||||||
freetype-dev \
|
|
||||||
harfbuzz \
|
|
||||||
ca-certificates \
|
|
||||||
ttf-freefont \
|
|
||||||
# Firefox deps
|
|
||||||
libstdc++ \
|
|
||||||
dbus-glib \
|
|
||||||
# Xvfb for headless mode
|
|
||||||
xvfb \
|
|
||||||
xauth \
|
|
||||||
# General
|
|
||||||
wget \
|
|
||||||
curl \
|
|
||||||
yt-dlp
|
|
||||||
|
|
||||||
# Install Camofox browser globally
|
|
||||||
RUN npm install -g @askjo/camofox-browser@1.13.1
|
RUN npm install -g @askjo/camofox-browser@1.13.1
|
||||||
|
|
||||||
# Install Playwright Firefox
|
|
||||||
RUN npx playwright install firefox
|
RUN npx playwright install firefox
|
||||||
|
|
||||||
EXPOSE 9377
|
EXPOSE 9377
|
||||||
+1
-1
@@ -20,7 +20,7 @@ search:
|
|||||||
- json
|
- json
|
||||||
|
|
||||||
server:
|
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"
|
bind_address: "0.0.0.0"
|
||||||
port: 8080
|
port: 8080
|
||||||
base_url: "http://localhost:8964/"
|
base_url: "http://localhost:8964/"
|
||||||
Reference in New Issue
Block a user