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