Initial commit: all siklos docker-compose files
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
# Homelab Configs
|
||||
|
||||
Docker Compose files and configuration for homelab infrastructure.
|
||||
|
||||
## Structure
|
||||
- `siklos/` — Docker services on VM112 (192.168.88.27)
|
||||
|
||||
## Hosts
|
||||
| Host | IP | Role |
|
||||
|---|---|---|
|
||||
| siklos | 192.168.88.27 | Main Docker server |
|
||||
| jellyfin | 192.168.88.10 | Media server |
|
||||
| thinkstation | 192.168.88.41 | Workstation / Ollama |
|
||||
@@ -0,0 +1,16 @@
|
||||
services:
|
||||
actual-budget:
|
||||
image: actualbudget/actual-server:latest
|
||||
container_name: actual-budget
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5006:5006"
|
||||
volumes:
|
||||
- ./data:/data
|
||||
networks:
|
||||
- default
|
||||
- pihole_default
|
||||
|
||||
networks:
|
||||
pihole_default:
|
||||
external: true
|
||||
@@ -0,0 +1,13 @@
|
||||
services:
|
||||
dashboard:
|
||||
build: .
|
||||
container_name: dashboard
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8096:8080"
|
||||
environment:
|
||||
- ENVIRONMENT=production
|
||||
volumes:
|
||||
- /srv/docker/dashboard/app:/app
|
||||
labels:
|
||||
com.centurylinklabs.watchtower: "false"
|
||||
@@ -0,0 +1,14 @@
|
||||
services:
|
||||
glances:
|
||||
image: nicolargo/glances:latest
|
||||
container_name: glances
|
||||
restart: unless-stopped
|
||||
pid: host
|
||||
privileged: true
|
||||
ports:
|
||||
- "61208:61208"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- /etc/os-release:/etc/os-release:ro
|
||||
environment:
|
||||
- GLANCES_OPT=-w
|
||||
@@ -0,0 +1,17 @@
|
||||
services:
|
||||
goldengames:
|
||||
build: .
|
||||
container_name: goldengames
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3030:3000"
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- DATA_DIR=/app/data
|
||||
- SMTP_HOST=smtp.fastmail.com
|
||||
- SMTP_USER=jgitta@jgitta.com
|
||||
- SMTP_PASS=5a2p6f46238v332z
|
||||
labels:
|
||||
com.centurylinklabs.watchtower: "false"
|
||||
@@ -0,0 +1,13 @@
|
||||
services:
|
||||
grav:
|
||||
image: lscr.io/linuxserver/grav:latest
|
||||
container_name: grav
|
||||
environment:
|
||||
- PUID=1000 # Use 'id $USER' to check your ID
|
||||
- PGID=1000
|
||||
- TZ=America/Chicago # Change to your timezone
|
||||
volumes:
|
||||
- ./config:/config # All your site data stays here
|
||||
ports:
|
||||
- 8585:80
|
||||
restart: unless-stopped
|
||||
@@ -0,0 +1,24 @@
|
||||
#---------------------------------------------------------------------#
|
||||
# Homarr - A simple, yet powerful dashboard for your server. #
|
||||
#---------------------------------------------------------------------#
|
||||
services:
|
||||
homarr:
|
||||
container_name: homarr
|
||||
image: ghcr.io/homarr-labs/homarr:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
# Optional: Allows Homarr to show container status/controls
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
# Use relative paths (./) so the folder moves with the YAML file
|
||||
- .homarr/appdata:/appdata
|
||||
# - .homarr/icons:/app/apps/nextjs/public/images/apps
|
||||
|
||||
environment:
|
||||
- SECRET_ENCRYPTION_KEY=d1478a30f89d49cfe0599c38dcf061672b3e24e519957a83a1122768002d0357
|
||||
- BASE_URL=http://192.168.88.111:7575
|
||||
- TZ=America/Chicago
|
||||
- FORCE_HTTPS=false
|
||||
- APP_URL=https://homarr.jgitta.com
|
||||
ports:
|
||||
- '7575:7575'
|
||||
@@ -0,0 +1,44 @@
|
||||
services:
|
||||
web:
|
||||
image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
# By default, the data is stored in a docker volume called "data".
|
||||
# If you want to mount a custom directory, change the volume mapping to:
|
||||
# - /path/to/your/directory:/data
|
||||
- data:/data
|
||||
ports:
|
||||
- 3010:3000
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
MEILI_ADDR: http://meilisearch:7700
|
||||
BROWSER_WEB_URL: http://chrome:9222
|
||||
# OPENAI_API_KEY: ...
|
||||
|
||||
# You almost never want to change the value of the DATA_DIR variable.
|
||||
# If you want to mount a custom directory, change the volume mapping above instead.
|
||||
DATA_DIR: /data # DON'T CHANGE THIS
|
||||
chrome:
|
||||
image: gcr.io/zenika-hub/alpine-chrome:124
|
||||
restart: unless-stopped
|
||||
command:
|
||||
- --no-sandbox
|
||||
- --disable-gpu
|
||||
- --disable-dev-shm-usage
|
||||
- --remote-debugging-address=0.0.0.0
|
||||
- --remote-debugging-port=9222
|
||||
- --hide-scrollbars
|
||||
meilisearch:
|
||||
image: getmeili/meilisearch:v1.13.3
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
MEILI_NO_ANALYTICS: "true"
|
||||
volumes:
|
||||
- meilisearch:/meili_data
|
||||
|
||||
volumes:
|
||||
meilisearch:
|
||||
data:
|
||||
@@ -0,0 +1,22 @@
|
||||
version: "3.7"
|
||||
services:
|
||||
kopia:
|
||||
image: kopia/kopia:latest
|
||||
container_name: kopia
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "51515:51515"
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
- ./cache:/app/cache
|
||||
- /mnt/nextcloud:/data:ro
|
||||
environment:
|
||||
- KOPIA_PASSWORD=kopia123
|
||||
command:
|
||||
- server
|
||||
- start
|
||||
- --address=0.0.0.0:51515
|
||||
- --insecure
|
||||
- --ui
|
||||
- --server-username=admin
|
||||
- --server-password=Jogiocsi1211+
|
||||
@@ -0,0 +1,28 @@
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:16-alpine
|
||||
ports:
|
||||
- "5432:5432"
|
||||
restart: always
|
||||
environment:
|
||||
POSTGRES_PASSWORD: mysecretpassword
|
||||
volumes:
|
||||
- ./pgdata:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
linkwarden:
|
||||
image: ghcr.io/linkwarden/linkwarden:latest
|
||||
restart: always
|
||||
ports:
|
||||
- "3015:3000"
|
||||
environment:
|
||||
- DATABASE_URL=postgresql://postgres:mysecretpassword@postgres:5432/postgres
|
||||
- NEXTAUTH_URL=http://localhost:3000
|
||||
- NEXTAUTH_SECRET=super-secret-random-string-12345
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
@@ -0,0 +1,55 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
sonarr:
|
||||
image: lscr.io/linuxserver/sonarr:latest
|
||||
container_name: sonarr
|
||||
restart: always
|
||||
ports:
|
||||
- "8989:8989"
|
||||
volumes:
|
||||
- /srv/docker/sonarr/config:/config
|
||||
- /mnt/media/tv:/tv
|
||||
- /mnt/media/torrents:/downloads
|
||||
environment:
|
||||
- TZ=America/Chicago
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
|
||||
radarr:
|
||||
image: lscr.io/linuxserver/radarr:latest
|
||||
container_name: radarr
|
||||
restart: always
|
||||
ports:
|
||||
- "7878:7878"
|
||||
volumes:
|
||||
- /srv/docker/radarr/config:/config
|
||||
- /mnt/media/movies:/movies
|
||||
- /mnt/media/torrents:/downloads
|
||||
environment:
|
||||
- TZ=America/Chicago
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
|
||||
prowlarr:
|
||||
image: lscr.io/linuxserver/prowlarr:latest
|
||||
container_name: prowlarr
|
||||
restart: always
|
||||
ports:
|
||||
- "9696:9696"
|
||||
volumes:
|
||||
- /srv/docker/prowlarr/config:/config
|
||||
environment:
|
||||
- TZ=America/Chicago
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
|
||||
flaresolverr:
|
||||
image: ghcr.io/flaresolverr/flaresolverr:latest
|
||||
container_name: flaresolverr
|
||||
restart: always
|
||||
ports:
|
||||
- "8191:8191"
|
||||
environment:
|
||||
- TZ=America/Chicago
|
||||
- LOG_LEVEL=info
|
||||
@@ -0,0 +1,65 @@
|
||||
services:
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
container_name: prometheus
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9090:9090"
|
||||
volumes:
|
||||
- /srv/docker/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||
- prometheus_data:/prometheus
|
||||
command:
|
||||
- "--config.file=/etc/prometheus/prometheus.yml"
|
||||
- "--storage.tsdb.path=/prometheus"
|
||||
- "--storage.tsdb.retention.time=30d"
|
||||
- "--web.enable-lifecycle"
|
||||
- "--web.enable-admin-api"
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
container_name: grafana
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3020:3000"
|
||||
volumes:
|
||||
- grafana_data:/var/lib/grafana
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_USER=admin
|
||||
- GF_SECURITY_ADMIN_PASSWORD=Jogiocsi1211+
|
||||
- GF_USERS_ALLOW_SIGN_UP=false
|
||||
- FTLCONF_dns_maxConcurrentQueries=300
|
||||
depends_on:
|
||||
- prometheus
|
||||
|
||||
cadvisor:
|
||||
image: gcr.io/cadvisor/cadvisor:latest
|
||||
container_name: cadvisor
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
ports:
|
||||
- "8090:8080"
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
- /var/run:/var/run:ro
|
||||
- /sys:/sys:ro
|
||||
- /var/lib/docker:/var/lib/docker:ro
|
||||
- /dev/disk/:/dev/disk:ro
|
||||
|
||||
graphite-exporter:
|
||||
image: prom/graphite-exporter:latest
|
||||
container_name: graphite-exporter
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9109:9109"
|
||||
- "9109:9109/udp"
|
||||
- "9108:9108"
|
||||
volumes:
|
||||
- /srv/docker/monitoring/graphite/graphite_mapping.conf:/tmp/graphite_mapping.conf:ro
|
||||
command:
|
||||
- "--graphite.mapping-config=/tmp/graphite_mapping.conf"
|
||||
- "--graphite.listen-address=:9109"
|
||||
- "--web.listen-address=:9108"
|
||||
|
||||
volumes:
|
||||
prometheus_data:
|
||||
grafana_data:
|
||||
@@ -0,0 +1,17 @@
|
||||
services:
|
||||
onlyoffice:
|
||||
image: onlyoffice/documentserver
|
||||
container_name: onlyoffice
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8880:80"
|
||||
volumes:
|
||||
- /opt/onlyoffice/data:/var/www/onlyoffice/Data
|
||||
- /opt/onlyoffice/lib:/var/lib/onlyoffice
|
||||
- /opt/onlyoffice/logs:/var/log/onlyoffice
|
||||
environment:
|
||||
- JWT_ENABLED=true
|
||||
- JWT_SECRET=4f2b0c719af2de99befacfec9ca5e8373cbdeb76
|
||||
extra_hosts:
|
||||
# Route next.jgitta.com through Caddy (valid SSL cert) instead of direct to VM
|
||||
- "next.jgitta.com:192.168.88.110"
|
||||
@@ -0,0 +1,61 @@
|
||||
services:
|
||||
pihole:
|
||||
container_name: pihole
|
||||
image: pihole/pihole:latest
|
||||
restart: always
|
||||
network_mode: host
|
||||
labels:
|
||||
- "com.centurylinklabs.watchtower.enable=false"
|
||||
environment:
|
||||
TZ: "America/Chicago"
|
||||
FTLCONF_misc_dnsmasq_lines: "dns-forward-max=300"
|
||||
volumes:
|
||||
- ./pihole:/etc/pihole
|
||||
|
||||
# Wyoming Protocol for Home Assistant
|
||||
faster-whisper:
|
||||
image: lscr.io/linuxserver/faster-whisper:latest
|
||||
container_name: faster-whisper
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Chicago
|
||||
- WHISPER_MODEL=base
|
||||
- WHISPER_LAN=en
|
||||
volumes:
|
||||
- ./faster-whisper/config:/config
|
||||
ports:
|
||||
- 10300:10300
|
||||
restart: unless-stopped
|
||||
|
||||
# OpenAI-Compatible API for general use
|
||||
faster-whisper-server:
|
||||
image: fedirz/faster-whisper-server:latest-cpu
|
||||
container_name: faster-whisper-server
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- ./faster-whisper/models:/root/.cache/huggingface
|
||||
environment:
|
||||
- WHISPER_MODEL=base
|
||||
restart: unless-stopped
|
||||
|
||||
# Open WebUI with voice-to-text integration
|
||||
open-webui:
|
||||
image: ghcr.io/open-webui/open-webui:main
|
||||
container_name: open-webui
|
||||
ports:
|
||||
- "3000:8080"
|
||||
volumes:
|
||||
- ./open-webui/data:/app/backend/data
|
||||
environment:
|
||||
- TZ=America/Chicago
|
||||
- OLLAMA_BASE_URL=http://192.168.88.41:11434
|
||||
# Voice-to-Text (STT) Settings
|
||||
- WHISPER_API_BASE_URL=http://faster-whisper-server:8000/v1
|
||||
- AUDIO_STT_ENGINE=openai
|
||||
- AUDIO_STT_OPENAI_API_BASE_URL=http://faster-whisper-server:8000/v1
|
||||
- AUDIO_STT_OPENAI_API_KEY=not-needed
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
restart: unless-stopped
|
||||
@@ -0,0 +1,14 @@
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce:latest
|
||||
container_name: portainer
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "9443:9443"
|
||||
- "9000:9000"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer_data:/data
|
||||
|
||||
volumes:
|
||||
portainer_data:
|
||||
@@ -0,0 +1,9 @@
|
||||
services:
|
||||
uptime-kuma:
|
||||
image: louislam/uptime-kuma:2
|
||||
container_name: uptime-kuma
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3001:3001"
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
@@ -0,0 +1,24 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
watchtower:
|
||||
image: containrrr/watchtower
|
||||
container_name: watchtower
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
environment:
|
||||
- TZ=America/Chicago
|
||||
- WATCHTOWER_NOTIFICATIONS=email
|
||||
- WATCHTOWER_NOTIFICATION_EMAIL_FROM=jgitta@jgitta.com
|
||||
- WATCHTOWER_NOTIFICATION_EMAIL_TO=jgitta@jgitta.com
|
||||
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.fastmail.com
|
||||
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587
|
||||
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=jgitta@jgitta.com
|
||||
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=2l79229z6r4y8x8y
|
||||
- WATCHTOWER_NOTIFICATIONS_LEVEL=info
|
||||
- WATCHTOWER_CLEANUP=true
|
||||
- WATCHTOWER_SCHEDULE=0 0 3 * * *
|
||||
- WATCHTOWER_ROLLING_RESTART=true
|
||||
- WATCHTOWER_ROLLING_RESTART_TIMEOUT=30s
|
||||
- WATCHTOWER_LABEL_ENABLE=true
|
||||
@@ -0,0 +1,39 @@
|
||||
services:
|
||||
wordpress-db:
|
||||
image: mariadb:10.11
|
||||
container_name: wordpress-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: Jogiocsi1211+
|
||||
MYSQL_DATABASE: jgitta_wordpress
|
||||
MYSQL_USER: jgitta
|
||||
MYSQL_PASSWORD: Jogiocsi1211+
|
||||
volumes:
|
||||
- wordpress_db:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
wordpress:
|
||||
image: wordpress:php8.3-apache
|
||||
container_name: wordpress
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8095:80"
|
||||
environment:
|
||||
WORDPRESS_DB_HOST: wordpress-db
|
||||
WORDPRESS_DB_NAME: jgitta_wordpress
|
||||
WORDPRESS_DB_USER: jgitta
|
||||
WORDPRESS_DB_PASSWORD: Jogiocsi1211+
|
||||
WORDPRESS_TABLE_PREFIX: wp_
|
||||
volumes:
|
||||
- wordpress_files:/var/www/html
|
||||
depends_on:
|
||||
wordpress-db:
|
||||
condition: service_healthy
|
||||
|
||||
volumes:
|
||||
wordpress_db:
|
||||
wordpress_files:
|
||||
Reference in New Issue
Block a user