Compare commits

..

1 Commits

Author SHA1 Message Date
b6bb0ad744 feat: switch fork branch to drop-multi-memory (removes 825-line multi-memory patch)
The feat/drop-multi-memory branch on gortium/hermes-agent drops commits:
- 7f3092e feat(agent): support multiple simultaneous memory providers
- 5ff3223 test(agent): update memory tests for multi-provider support
- d10c19f docs: update memory-providers.md for multi-provider support
- d0627af fix(test): remove test_memory_plugin_e2e.py

Configs already use memory.provider: honcho (single provider),
so multi-memory code path was dead code. Piper TTS patch kept.
2026-05-25 00:04:08 -04:00
10 changed files with 137 additions and 452 deletions

View File

@@ -1,3 +1,4 @@
version: "3.8"
services: services:
# webui: # webui:
@@ -30,7 +31,6 @@ services:
ssh: ssh:
- default - default
container_name: hermes container_name: hermes
user: "10000:10000"
entrypoint: ["/bin/bash", "-c", entrypoint: ["/bin/bash", "-c",
"bash /opt/data/hermes-tools/install.sh && bash /usr/local/bin/run-multi-gateways.sh && exec /usr/bin/tini -g -- /opt/hermes/docker/entrypoint.sh \"$@\"", "bash /opt/data/hermes-tools/install.sh && bash /usr/local/bin/run-multi-gateways.sh && exec /usr/bin/tini -g -- /opt/hermes/docker/entrypoint.sh \"$@\"",
"hermes-entrypoint"] "hermes-entrypoint"]
@@ -50,7 +50,6 @@ services:
- API_SERVER_KEY=hermes_local_key - API_SERVER_KEY=hermes_local_key
- GATEWAY_ALLOW_ALL_USERS=true - GATEWAY_ALLOW_ALL_USERS=true
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
- OPENCODE_API_KEY=${OPENCODE_API_KEY}
# ROCm for GPU-accelerated faster-whisper STT # ROCm for GPU-accelerated faster-whisper STT
- HSA_OVERRIDE_GFX_VERSION=9.0.6 - HSA_OVERRIDE_GFX_VERSION=9.0.6
- HCC_AMDGPU_TARGET=gfx906 - HCC_AMDGPU_TARGET=gfx906
@@ -73,8 +72,6 @@ services:
networks: networks:
- ai_backend - ai_backend
- ai_net - ai_net
depends_on:
- honcho
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.docker.network=ai_net" - "traefik.docker.network=ai_net"
@@ -128,7 +125,6 @@ services:
- "traefik.http.routers.syncthing-https.tls.certresolver=njalla" - "traefik.http.routers.syncthing-https.tls.certresolver=njalla"
- "traefik.http.services.syncthing.loadbalancer.server.port=8384" - "traefik.http.services.syncthing.loadbalancer.server.port=8384"
ollama: ollama:
build: build:
context: ./ollama context: ./ollama
@@ -145,93 +141,22 @@ services:
- /mnt/HoardingCow_docker_data/Ollama/ollama:/root/.ollama - /mnt/HoardingCow_docker_data/Ollama/ollama:/root/.ollama
environment: environment:
- OLLAMA_VULKAN=0 - OLLAMA_VULKAN=0
- HSA_OVERRIDE_GFX_VERSION=9.0.6
- HCC_AMDGPU_TARGET=gfx906
- HIP_VISIBLE_DEVICES=0,1
- ROCR_VISIBLE_DEVICES=0,1
- HSA_ENABLE_SDMA=0
- OLLAMA_HOST=0.0.0.0 - OLLAMA_HOST=0.0.0.0
- OLLAMA_DEBUG=1
# --- Honcho + OpenConcho combiné: API + Web UI nginx/FastAPI --- - OLLAMA_FLASH_ATTENTION=1
honcho: - OLLAMA_NUM_PARALLEL=2
build: devices:
context: ./honcho # Map the render nodes and KFD for ROCm to work inside the container
ssh: - /dev/kfd:/dev/kfd
- default - /dev/dri:/dev/dri
container_name: honcho group_add:
restart: unless-stopped - "303"
environment: - "26"
- DB_CONNECTION_URI=postgresql+psycopg://honcho:honcho_pass@honcho-db:5432/honcho
- CACHE_URL=redis://honcho-redis:6379/0
- CACHE_ENABLED=true
- EMBEDDING_VECTOR_DIMENSIONS=1024
- AUTH_USE_AUTH=true
- AUTH_JWT_SECRET=${HONCHO_AUTH_JWT_SECRET}
# Needed by deriver/dream to make LLM calls (api_key_env = "HONCHO_OPENAI_API_KEY" in config.toml)
- HONCHO_OPENAI_API_KEY=${HONCHO_OPENAI_API_KEY}
volumes:
- /mnt/HoardingCow_docker_data/Honcho/data:/app/data
- /mnt/HoardingCow_docker_data/Honcho/config.toml:/app/config.toml:ro
networks:
- ai_backend
- ai_net
labels:
- "traefik.enable=true"
- "traefik.docker.network=ai_net"
# Router for HTTP + redirect to HTTPS
- "traefik.http.routers.honcho-http.rule=Host(`honcho.lazyworkhorse.net`)"
- "traefik.http.routers.honcho-http.entrypoints=web"
- "traefik.http.routers.honcho-http.middlewares=redirect-to-https"
# Router for HTTPS with TLS — protected by Authelia
- "traefik.http.routers.honcho-https.rule=Host(`honcho.lazyworkhorse.net`)"
- "traefik.http.routers.honcho-https.entrypoints=websecure"
- "traefik.http.routers.honcho-https.tls=true"
- "traefik.http.routers.honcho-https.tls.certresolver=njalla"
- "traefik.http.routers.honcho-https.middlewares=hermes-auth"
# Service Loadbalancer (nginx port)
- "traefik.http.services.honcho.loadbalancer.server.port=80"
depends_on:
honcho-db:
condition: service_healthy
honcho-redis:
condition: service_healthy
honcho-db:
image: pgvector/pgvector:pg15
container_name: honcho-db
restart: unless-stopped
ports:
- "127.0.0.1:5432:5432"
command: ["postgres", "-c", "max_connections=200"]
environment:
- POSTGRES_DB=honcho
- POSTGRES_USER=honcho
- POSTGRES_PASSWORD=honcho_pass
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- /mnt/HoardingCow_docker_data/Honcho/postgres:/var/lib/postgresql/data
- ./honcho/init-db.sql:/docker-entrypoint-initdb.d/init.sql:ro
networks:
- ai_backend
healthcheck:
test: ["CMD-SHELL", "pg_isready -U honcho -d honcho"]
interval: 5s
timeout: 5s
retries: 5
honcho-redis:
image: redis:8
container_name: honcho-redis
restart: unless-stopped
ports:
- "127.0.0.1:6379:6379"
volumes:
- /mnt/HoardingCow_docker_data/Honcho/redis:/data
networks:
- ai_backend
healthcheck:
test: ["CMD-SHELL", "redis-cli ping"]
interval: 5s
timeout: 5s
retries: 5
networks: networks:
ai_net: ai_net:
@@ -240,46 +165,48 @@ networks:
ai_backend: ai_backend:
driver: bridge driver: bridge
name: ai_backend name: ai_backend
volumes:
honcho_data:
external: true
name: honcho_data
llama-cpp-hermes: # llama_cpp_devstral:
image: llama-cpp:rocm-gfx906 # image: ghcr.io/ggml-org/llama.cpp:server-rocm
container_name: llama-cpp-hermes # container_name: llama_cpp_devstral
restart: unless-stopped # restart: unless-stopped
networks: # networks:
- ai_backend # - ai_backend
ports: # ports:
- "127.0.0.1:8300:8080" # - "8300:8080"
ipc: host # ipc: host
devices: # devices:
- /dev/kfd:/dev/kfd # - "/dev/kfd:/dev/kfd"
- /dev/dri:/dev/dri # - "/dev/dri:/dev/dri"
group_add: # group_add:
- "303" # - "303" # video
- "26" # - "26" # render
environment: # environment:
- HSA_OVERRIDE_GFX_VERSION=9.0.6 # HSA_OVERRIDE_GFX_VERSION: 9.0.6
- HSA_ENABLE_SDMA=0 # HIP_VISIBLE_DEVICES: 0,1
- HIP_VISIBLE_DEVICES=0,1 # LLAMA_CACHE: /models
- LLAMA_CACHE=/models # volumes:
volumes: # - /mnt/HoardingCow_docker_data/Llama_cpp/models:/models
- /mnt/HoardingCow_docker_data/Llama_cpp/models:/models # - /mnt/HoardingCow_docker_data/Llama_cpp/devstral-agent.jinja:/template.jinja
- /mnt/HoardingCow_docker_data/Ollama/ollama/models/blobs/sha256-17823599694fa3503ef54bf748d5078c6ce881f4d01616cafa255dc05d215a08:/model.gguf:ro # command: >
command: > # -hf unsloth/Devstral-Small-2-24B-Instruct-2512-GGUF:Devstral-Small-2-24B-Instruct-2512-Q8_0.gguf
-m /model.gguf # -a devstral-2-small-llama_cpp
--host 0.0.0.0 # --chat-template-file /template.jinja
--port 8080 # --host 0.0.0.0
--gpu-layers 99 # --port 8080
--ctx-size 163840 # --n-gpu-layers 99
-ctk f16 -ctv f16 # --ctx-size 163840
--flash-attn on # --batch-size 4096
--split-mode layer # --ubatch-size 4096
--no-mmap # --cache-type-k f16
--n-predict -1 # --cache-type-v f16
# --cache-reuse 256
# --flash-attn on
# --context-shift
# --split-mode layer
# --no-mmap
# --n-predict -1
# --parallel 2
# vllm: # vllm:
# image: nalanzeyu/vllm-gfx906:v0.9.0-rocm6.3 # image: nalanzeyu/vllm-gfx906:v0.9.0-rocm6.3

View File

@@ -18,7 +18,8 @@ RUN --mount=type=ssh \
ssh-keyscan -p 2222 code.lazyworkhorse.net >> /root/.ssh/known_hosts 2>/dev/null && \ ssh-keyscan -p 2222 code.lazyworkhorse.net >> /root/.ssh/known_hosts 2>/dev/null && \
cd /tmp && \ cd /tmp && \
GIT_SSH_COMMAND='ssh -p 2222 -o StrictHostKeyChecking=no' \ GIT_SSH_COMMAND='ssh -p 2222 -o StrictHostKeyChecking=no' \
git clone --depth 1 --branch main \ # Branch feat/drop-multi-memory: upstream + Piper TTS patch only (no multi-memory patch)
git clone --depth 1 --branch feat/drop-multi-memory \
git@code.lazyworkhorse.net:gortium/hermes-agent.git fork && \ git@code.lazyworkhorse.net:gortium/hermes-agent.git fork && \
rm -rf fork/node_modules fork/.venv fork/.git && \ rm -rf fork/node_modules fork/.venv fork/.git && \
cp -a fork/. /opt/hermes/ && \ cp -a fork/. /opt/hermes/ && \
@@ -43,14 +44,6 @@ RUN apt-get update && \
# ---------- UV ---------- # ---------- UV ----------
COPY --chmod=0755 --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/ COPY --chmod=0755 --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/
# ---------- Matrix bridge + extra pip deps ----------
# Previously installed inline at container startup and persisted via volume mount.
# Now baked into the image so the fragile venv volume mount can be removed.
RUN . /opt/hermes/.venv/bin/activate && \
uv pip install --no-cache-dir 'mautrix[encryption]' openai
WORKDIR /opt/hermes
# ---------- Matrix bridge + extra pip deps ---------- # ---------- Matrix bridge + extra pip deps ----------
# Previously installed inline at container startup and persisted via volume mount. # Previously installed inline at container startup and persisted via volume mount.
# Now baked into the image so the fragile venv volume mount can be removed. # Now baked into the image so the fragile venv volume mount can be removed.

View File

@@ -1,75 +0,0 @@
# build stage — fetches and builds Honcho from source
FROM python:3.13-slim-bookworm AS honcho-builder
RUN apt-get update && \
apt-get install -y --no-install-recommends git openssh-client && \
rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/astral-sh/uv:0.9.24 /uv /bin/uv
ARG HONCHO_REPO=ssh://git@code.lazyworkhorse.net:2222/Hermes/honcho.git
ARG HONCHO_REF=main
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan -p 2222 code.lazyworkhorse.net >> ~/.ssh/known_hosts 2>/dev/null
RUN --mount=type=ssh git clone --depth 1 --branch ${HONCHO_REF} ${HONCHO_REPO} /app
WORKDIR /app
ENV UV_COMPILE_BYTECODE=1
ENV UV_LINK_MODE=copy
ENV UV_PYTHON=/usr/local/bin/python3.13
RUN uv sync --frozen
# build stage — builds OpenConcho SPA
FROM node:22-bookworm AS openconcho-builder
ENV PNPM_HOME=/pnpm
ENV PATH=$PNPM_HOME:$PATH
RUN corepack enable && corepack prepare pnpm@latest --activate
WORKDIR /app
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
ARG OPENCONCHO_SHA=3b5c3293fc18d768dbe85285264a8d66c896bd81
RUN --mount=type=ssh git clone --depth 1 ssh://git@code.lazyworkhorse.net:2222/gortium/openconcho.git /app && \
git -C /app fetch --depth 1 origin ${OPENCONCHO_SHA} && \
git -C /app checkout ${OPENCONCHO_SHA}
RUN pnpm install --frozen-lockfile
RUN pnpm --filter @openconcho/web build
# runtime stage — nginx + Honcho FastAPI
FROM python:3.13-slim-bookworm
# Install nginx and create runtime dirs before dropping permissions
RUN apt-get update && apt-get install -y --no-install-recommends nginx && \
rm -rf /var/log/nginx/* && \
rm -rf /var/lib/apt/lists/* && \
rm -f /etc/nginx/sites-enabled/default
# Patch nginx.conf: comment out "user www-data;" so nginx master stays as root
# (workers inherit root inside a container — fine for single-service isolation)
RUN sed -i 's/^user /# user /' /etc/nginx/nginx.conf
# Pre-create nginx runtime directories with proper ownership
RUN mkdir -p /var/lib/nginx/body /var/lib/nginx/proxy /var/lib/nginx/fastcgi \
/var/lib/nginx/uwsgi /var/lib/nginx/scgi /var/lib/nginx/proxy_temp \
/var/cache/nginx && \
chown -R root:root /var/lib/nginx /var/cache/nginx
# Honcho
COPY --from=honcho-builder /app /app
WORKDIR /app
ENV PATH="/app/.venv/bin:$PATH"
ENV HOME=/app
COPY config.toml /app/config.toml
# OpenConcho SPA
COPY --from=openconcho-builder /app/packages/web/dist /usr/share/nginx/html
# nginx config (proxies /v3/, /v2/ to Honcho on localhost:8000)
COPY honcho-nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["bash", "-c", "nginx -g 'daemon off;' & fastapi run --host 127.0.0.1 --port 8000 src/main.py & python3 -m src.deriver & wait -n"]

View File

@@ -1,132 +0,0 @@
[app]
LOG_LEVEL = "INFO"
MAX_MESSAGE_SIZE = 25000
EMBED_MESSAGES = true
NAMESPACE = "honcho"
[db]
CONNECTION_URI = "postgresql+psycopg://honcho:honcho_pass@honcho-db:5432/honcho"
SCHEMA = "public"
POOL_SIZE = 10
MAX_OVERFLOW = 20
[auth]
USE_AUTH = false
[sentry]
ENABLED = false
[telemetry]
ENABLED = false
[webhook]
ENABLED = false
[cache]
ENABLED = true
URL = "redis://honcho-redis:6379/0"
[llm]
DEFAULT_MAX_TOKENS = 4096
# Embeddings via Ollama — bge-m3 provides 1024-dim
[embedding]
VECTOR_DIMENSIONS = 1024
MAX_INPUT_TOKENS = 8192
[embedding.model_config]
transport = "openai"
model = "bge-m3"
overrides = {base_url = "http://ollama:11434/v1", api_key = "ollama"}
# --- Deriver ---
[deriver]
ENABLED = true
WORKERS = 1
POLLING_SLEEP_INTERVAL_SECONDS = 5.0
FLUSH_ENABLED = true
[deriver.model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
# --- Dialectic ---
[dialectic]
MAX_INPUT_TOKENS = 4096
SESSION_HISTORY_MAX_TOKENS = 8192
[dialectic.levels.minimal]
MAX_TOOL_ITERATIONS = 1
MAX_OUTPUT_TOKENS = 512
[dialectic.levels.minimal.model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
[dialectic.levels.low]
MAX_TOOL_ITERATIONS = 3
[dialectic.levels.low.model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
[dialectic.levels.medium]
MAX_TOOL_ITERATIONS = 2
[dialectic.levels.medium.model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
[dialectic.levels.high]
MAX_TOOL_ITERATIONS = 4
[dialectic.levels.high.model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
[dialectic.levels.max]
MAX_TOOL_ITERATIONS = 10
[dialectic.levels.max.model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
# --- Summary ---
[summary]
ENABLED = true
MESSAGES_PER_SHORT_SUMMARY = 20
MESSAGES_PER_LONG_SUMMARY = 60
[summary.model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
# --- Dream ---
[dream]
ENABLED = true
[dream.model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
[dream.deduction_model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
[dream.induction_model_config]
overrides = {base_url = "https://opencode.ai/zen/go/v1", api_key_env = "HONCHO_OPENAI_API_KEY"}
transport = "openai"
model = "deepseek-v4-flash"
# --- Peer Card ---
[peer_card]
ENABLED = true
# --- Vector Store ---
[vector_store]
TYPE = "pgvector"
# DIMENSIONS is deprecated — EMBEDDING.VECTOR_DIMENSIONS is authoritative

View File

@@ -1,52 +0,0 @@
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
index index.html;
# Honcho API proxy
location /v3/ {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /v2/ {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Honcho health
location /health {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# OpenAPI docs
location /openapi.json {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# SPA: fallback to index.html for client-side routing
location / {
try_files $uri $uri/ /index.html;
}
}

View File

@@ -1 +0,0 @@
CREATE EXTENSION IF NOT EXISTS vector;

View File

@@ -1,30 +0,0 @@
# llama-cpp-rocm6/Dockerfile
# Custom llama.cpp server with ROCm 6.1 + gfx906 (MI50) support.
# Build: docker build -t llama-cpp:rocm-gfx906 .
FROM rocm/dev-ubuntu-22.04:6.1.2-complete AS builder
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y curl git build-essential pkg-config cmake make && rm -rf /var/lib/apt/lists/*
ARG LLAMACPP_VERSION=b9596
RUN git clone --depth 1 --branch ${LLAMACPP_VERSION} https://github.com/ggml-org/llama.cpp.git /build
WORKDIR /build
ENV HIP_PATH=/opt/rocm ROCM_PATH=/opt/rocm PATH=/opt/rocm/bin:/opt/rocm/llvm/bin:${PATH} CMAKE_PREFIX_PATH=/opt/rocm
RUN mkdir build && cd build && \
cmake .. -DGGML_HIP=ON -DCMAKE_BUILD_TYPE=Release \
-DAMDGPU_TARGETS="gfx906:xnack-" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DGGML_CUDA=OFF -DGGML_VULKAN=OFF -DGGML_METAL=OFF \
-DBUILD_SHARED_LIBS=OFF && \
cmake --build . --target llama-server -- -j $(nproc)
FROM ubuntu:24.04
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
ca-certificates curl libstdc++6 libgomp1 libopenblas0 \
libnuma1 libelf1 libdrm2 libdrm-amdgpu1 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /opt/rocm/lib/ /opt/rocm/lib/
COPY --from=builder /opt/rocm/share/ /opt/rocm/share/
COPY --from=builder /build/build/bin/llama-server /usr/local/bin/llama-server
RUN echo /opt/rocm/lib > /etc/ld.so.conf.d/rocm.conf && ldconfig
ENV HSA_OVERRIDE_GFX_VERSION=9.0.6 HCC_AMDGPU_TARGET=gfx906 HSA_ENABLE_SDMA=0
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/llama-server"]

View File

@@ -1 +0,0 @@
RESTIC_PASSWORD=CVvxpEKWSydmsZ5bW9lb_UZ2NR3KAKibv00tYbyZ9-E

View File

@@ -1,42 +1,98 @@
version: "3.8"
services: services:
# kopia:
# image: kopia/kopia:latest
# container_name: kopia
# restart: unless-stopped
# # We explicitly run as root (0:0) to solve the CHDIR issue,
# # OR we make sure the host folders match UID 1000.
# user: "0:0"
# command:
# - server
# - start
# - --address=0.0.0.0:51515
# - --server-username=${KOPIA_SERVER_USER}
# - --server-password=${KOPIA_SERVER_PASSWORD}
# - --config-file=/app/config/repository.config
# - --disable-csrf-token-checks
# - --insecure
# environment:
# - TZ=America/Montreal
# - KOPIA_PASSWORD=${KOPIA_PASSWORD}
# - USER=${KOPIA_USER}
# volumes:
# - /mnt/HoardingCow_docker_data/Kopia/config:/app/config
# - /mnt/HoardingCow_docker_data/Kopia/cache:/app/cache
# - /mnt/HoardingCow_docker_data/Kopia/repository:/repository
# # Required if you want to use the 'Mount' feature later
# - /tmp:/tmp:shared
# # Required for mounting backups as drives
# cap_add:
# - SYS_ADMIN
# devices:
# - /dev/fuse:/dev/fuse
# networks:
# - traefik-net
# labels:
# - "traefik.enable=true"
# # 1. HTTP to HTTPS Redirect
# - "traefik.http.routers.kopia-http.rule=Host(`backup.lazyworkhorse.net`)"
# - "traefik.http.routers.kopia-http.entrypoints=web"
# - "traefik.http.routers.kopia-http.middlewares=redirect-to-https@docker"
#
# # 2. HTTPS Configuration
# - "traefik.http.routers.kopia.rule=Host(`backup.lazyworkhorse.net`)"
# - "traefik.http.routers.kopia.entrypoints=websecure"
# - "traefik.http.routers.kopia.tls=true"
# - "traefik.http.routers.kopia.tls.certresolver=njalla"
#
# # 3. Backend Service Config
# - "traefik.http.services.kopia.loadbalancer.server.port=51515"
restic-server: restic-server:
image: restic/rest-server:latest image: restic/restic:latest
container_name: restic-server container_name: restic-server
restart: always restart: always
user: "0:0" user: "0:0"
command: ["rest-server", "--listen", ":8080", "--path", "/data", "--no-auth"] command: ["server", "--listen", ":8080", "--repo", "/data", "--tls-cert", "", "--tls-key", ""]
environment: environment:
- TZ=America/Montreal - TZ=America/Montreal
- RESTIC_PASSWORD=${RESTIC_PASSWORD}
volumes: volumes:
- /mnt/HoardingCow_docker_data/Restic/data:/data - /mnt/HoardingCow_docker_data/Restic/data:/data
# Mount paths to backup (adjust as needed)
- /mnt/HoardingCow_docker_data:/source:ro
networks: networks:
- backup_net - backup_net
labels: labels:
- "traefik.enable=false" - "traefik.enable=false" # Internal only, accessed by restic-browser
restic-browser: restic-browser:
image: floibach/restic-browser:latest image: embergarage/restic-browser:latest
container_name: restic-browser container_name: restic-browser
restart: always restart: always
ports:
- "8081:8080"
environment: environment:
- TZ=America/Montreal - TZ=America/Montreal
volumes: - RESTIC_REPOSITORY=http://restic-server:8080
- /mnt/HoardingCow_docker_data/Restic:/repo:ro - RESTIC_PASSWORD=${RESTIC_PASSWORD}
- /mnt/HoardingCow_docker_data/Restic/browser-data:/data
networks: networks:
- backup_net - backup_net
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
# 1. HTTP to HTTPS Redirect
- "traefik.http.routers.restic-browser-http.rule=Host(`backup.lazyworkhorse.net`)" - "traefik.http.routers.restic-browser-http.rule=Host(`backup.lazyworkhorse.net`)"
- "traefik.http.routers.restic-browser-http.entrypoints=web" - "traefik.http.routers.restic-browser-http.entrypoints=web"
- "traefik.http.routers.restic-browser-http.middlewares=redirect-to-https@docker" - "traefik.http.routers.restic-browser-http.middlewares=redirect-to-https@docker"
# 2. HTTPS Configuration
- "traefik.http.routers.restic-browser.rule=Host(`backup.lazyworkhorse.net`)" - "traefik.http.routers.restic-browser.rule=Host(`backup.lazyworkhorse.net`)"
- "traefik.http.routers.restic-browser.entrypoints=websecure" - "traefik.http.routers.restic-browser.entrypoints=websecure"
- "traefik.http.routers.restic-browser.tls=true" - "traefik.http.routers.restic-browser.tls=true"
- "traefik.http.routers.restic-browser.tls.certresolver=njalla" - "traefik.http.routers.restic-browser.tls.certresolver=njalla"
- "traefik.http.services.restic-browser.loadbalancer.server.port=8080"
# 3. Backend Service Config
- "traefik.http.services.restic-browser.loadbalancer.server.port=8000"
networks: networks:
backup_net: backup_net:

View File

@@ -82,37 +82,37 @@ networks:
driver: bridge driver: bridge
name: traefik_backend name: traefik_backend
ai_net: ai_net:
driver: bridge external: true
name: ai_net name: ai_net
auth_net: auth_net:
driver: bridge external: true
name: auth_net name: auth_net
backup_net: backup_net:
driver: bridge external: true
name: backup_net name: backup_net
cloud_net: cloud_net:
driver: bridge external: true
name: cloud_net name: cloud_net
coms_net: coms_net:
driver: bridge external: true
name: coms_net name: coms_net
finance_net: finance_net:
driver: bridge external: true
name: finance_net name: finance_net
home_auto_net: home_auto_net:
driver: bridge external: true
name: home_auto_net name: home_auto_net
homepage_net: homepage_net:
driver: bridge external: true
name: homepage_net name: homepage_net
passman_net: passman_net:
driver: bridge external: true
name: passman_net name: passman_net
tak_net: tak_net:
driver: bridge external: true
name: tak_net name: tak_net
vc_net: vc_net:
driver: bridge external: true
name: vc_net name: vc_net
# duckdns: # duckdns: