Files
Haven/docker-compose.yml
T
Matt 580b67e450 GIF search supports KLIPY, with a preferred provider setting (#5629)
KLIPY joins GIPHY and Tenor as a GIF provider. Set KLIPY_API_KEY to enable it, and PREFERRED_GIF_SEARCH (klipy, giphy or tenor) to pick which provider serves the picker when more than one key is set. With no preference the server tries GIPHY first, then KLIPY, then Tenor. Existing GIPHY and Tenor setups are unchanged. The picker footer credits whichever provider served the batch.
2026-09-10 22:54:03 -04:00

51 lines
2.8 KiB
YAML

# ── Haven Docker Compose ─────────────────────────────────
# Quick start: docker compose up -d
# Stop: docker compose down
# View logs: docker compose logs -f haven
# Update: docker compose pull && docker compose up -d --force-recreate
# Shell: docker compose exec haven sh
# ─────────────────────────────────────────────────────────
services:
haven:
image: ghcr.io/ancsemi/haven:latest
# build: . # Uncomment to build from source instead of using the pre-built image
container_name: haven
ports:
- "${PORT:-3000}:${PORT:-3000}" # Main HTTPS port
- "${REDIRECT_PORT:-3001}:${REDIRECT_PORT:-3001}" # HTTP → HTTPS redirect
volumes:
- haven_data:/data
# ── Or use a local folder instead (good for NAS / Synology): ──
# - ./haven-data:/data
environment:
- PORT=${PORT:-3000}
- HOST=0.0.0.0
# - SERVER_NAME=My Haven # Name shown in the UI
# - ADMIN_USERNAME=admin # First account to register becomes admin
# - GIPHY_API_KEY= # Optional: enable GIF search (GIPHY)
# - KLIPY_API_KEY= # Optional: enable GIF search (KLIPY)
# - PREFERRED_GIF_SEARCH= # Optional: klipy, giphy, or tenor
# - VAPID_EMAIL=mailto:you@example # Optional: email for push notifications
# - TURN_URL=turn:your-server:3478 # Optional: TURN relay for voice over internet
# - TURN_SECRET=your-secret # Shared secret (coturn --use-auth-secret)
# - OIDC_CLIENT_SECRET=client-secret # The client secret as defined by your OIDC provider.
# Full text search tokenizer. Controls how message text is matched.
# Takes effect on restart; changing it triggers a one time reindex.
# trigram Matches text anywhere inside words, so apple finds apple,
# applesauce and pineapple. Most flexible for partial matches.
# Largest index (about 3 to 4x the message text) and needs
# queries of at least 3 characters.
# unicode61 Whole word and prefix matching, so apple finds apple and
# apple* but not applesauce. Smallest and fastest, best ranking.
# porter Like unicode61 plus English stemming, so run also finds
# running and ran. Small index, English focused, no substrings.
# Default is unicode61, the closest match to how Discord search behaves.
# - HAVEN_SEARCH_TOKENIZER=unicode61
# Uncomment to load settings from a .env file:
# env_file: .env
restart: unless-stopped
volumes:
haven_data: