build-container / build (push) Successful in 13m20s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
82 lines
4.9 KiB
YAML
82 lines
4.9 KiB
YAML
services:
|
|
hub:
|
|
image: git.necloud.us/nate/hub:latest # built by the Gitea workflow; `docker compose build` builds locally instead
|
|
build: .
|
|
restart: unless-stopped
|
|
# The container looks names up through these. If necloud.us only exists on your home/LAN DNS
|
|
# (Pi-hole, router, AdGuard...), set DNS_1 to that server's IP instead.
|
|
dns:
|
|
- ${DNS_1:-1.1.1.1}
|
|
- ${DNS_2:-8.8.8.8}
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
# Edit the values here, or leave the ${...} placeholders and set them in a .env file / your stack's env UI.
|
|
SEAFILE_URL: ${SEAFILE_URL:-https://seafile.necloud.us}
|
|
ONLYOFFICE_URL: ${ONLYOFFICE_URL:-https://onlyoffice.necloud.us}
|
|
AUDIOBOOKS_URL: ${AUDIOBOOKS_URL:-https://audiobooks.necloud.us}
|
|
AUDIOBOOKS_LOGIN_LINK: ${AUDIOBOOKS_LOGIN_LINK:-}
|
|
AUDIOBOOKS_SSO_SECRET: ${AUDIOBOOKS_SSO_SECRET:-}
|
|
AUDIOBOOKS_SSO_URL: ${AUDIOBOOKS_SSO_URL:-}
|
|
VERSE_URL: ${VERSE_URL:-https://versebyversewithnate.us/admin}
|
|
MS_CLIENT_ID: ${MS_CLIENT_ID:-} # Outlook.com mail (Microsoft app registration, see README -> Mail); leave empty to switch Mail off
|
|
MS_CLIENT_SECRET: ${MS_CLIENT_SECRET:-}
|
|
LYRICS_API_URL: http://127.0.0.1:9999 # the bundled lyrics service (Lyrica, below, shares this container's network); remove this line and the service to skip it
|
|
TRANSCRIBE_API_URL: http://127.0.0.1:8000 # the bundled speech-to-text service (whisper, below): makes a transcript for a podcast or audiobook on request. Remove this line and the service to skip it
|
|
SIGNAL_API_URL: http://127.0.0.1:8085 # the bundled Signal bridge (below, shares this container's network); remove this line and the service to skip Signal
|
|
OPENAUDIBLE_URL: ${OPENAUDIBLE_URL:-} # audiobooks straight from OpenAudible (e.g. http://172.16.16.106:8000); the username and password in Settings -> Audiobooks sign-in are OpenAudible's. Leave empty to go through the audiobook player instead
|
|
PODCAST_URL: ${PODCAST_URL:-https://podcast.necloud.us/}
|
|
PODGRAB_PASSWORD: ${PODGRAB_PASSWORD:-} # Podgrab's PASSWORD setting, if it has one (the sign-in name is always podgrab); stays on the server
|
|
ONLYOFFICE_JWT_SECRET: ${ONLYOFFICE_JWT_SECRET:-} # same value as the OnlyOffice server's JWT secret
|
|
PUBLIC_URL: ${PUBLIC_URL:-} # e.g. https://hub.necloud.us (OnlyOffice posts saved edits here)
|
|
HUB_SETUP_CODE: ${HUB_SETUP_CODE:-} # first passkey; if empty, a code is printed in the log
|
|
SESSION_DAYS: ${SESSION_DAYS:-180} # how long you stay signed in when idle; using the app renews it
|
|
COOKIE_SECRET: ${COOKIE_SECRET:-} # optional; auto-generated and kept in /data if empty
|
|
volumes:
|
|
- hub-data:/data # passkeys, calendar links and the session secret live here
|
|
|
|
# Signal messages (the Signal tab). This links to your Signal account as one more linked device (like Signal Desktop) through the community
|
|
# signal-cli-rest-api bridge. Not an official Signal product; its link to your account (keys) is kept in the signal-data volume. See README -> Signal.
|
|
signal:
|
|
image: bbernhard/signal-cli-rest-api:0.101
|
|
restart: unless-stopped
|
|
network_mode: "service:hub" # reached by the hub at 127.0.0.1:8085 and by nothing else
|
|
depends_on:
|
|
- hub
|
|
environment:
|
|
MODE: json-rpc
|
|
PORT: "8085"
|
|
volumes:
|
|
- signal-data:/home/.local/share/signal-cli
|
|
|
|
# Speech to text (the "Transcribe" button on podcasts and audiobooks). faster-whisper behind an OpenAI-compatible API (the speaches project); the model
|
|
# is downloaded the first time it is used. CPU only: a one-hour episode takes roughly 5-15 minutes with the small model. Nothing leaves your server.
|
|
whisper:
|
|
image: ghcr.io/speaches-ai/speaches:latest-cpu
|
|
restart: unless-stopped
|
|
network_mode: "service:hub" # reached by the hub at 127.0.0.1:8000 and by nothing else
|
|
depends_on:
|
|
- hub
|
|
volumes:
|
|
- whisper-models:/home/ubuntu/.cache/huggingface/hub
|
|
|
|
# Lyrics and karaoke for the music player. Lyrica looks songs up on public lyrics sources (LRCLIB, Musixmatch via Lrcmux, NetEase, Megalobiz);
|
|
# the song's artist and title are sent to them. Plex's own lyrics are used first when the song has them. See README -> Music.
|
|
lyrica:
|
|
image: git.necloud.us/nate/hub-lyrica:latest # built by the Gitea workflow from ./lyrica (Lyrica pinned to one commit)
|
|
build: ./lyrica
|
|
restart: unless-stopped
|
|
network_mode: "service:hub" # reached by the hub at 127.0.0.1:9999 and by nothing else
|
|
depends_on:
|
|
- hub
|
|
environment:
|
|
PORT: "9999"
|
|
|
|
volumes:
|
|
hub-data:
|
|
name: nehub-data # fixed name so the data survives redeploys and renamed stacks
|
|
signal-data:
|
|
name: nehub-signal
|
|
whisper-models:
|
|
name: nehub-whisper
|