242 lines
6.1 KiB
YAML
242 lines
6.1 KiB
YAML
version: "3.8"
|
||
|
||
services:
|
||
minio:
|
||
image: quay.io/minio/minio:latest
|
||
command: server /data1 /data2 --console-address ":9001"
|
||
environment:
|
||
MINIO_ROOT_USER: *
|
||
MINIO_ROOT_PASSWORD: *
|
||
MINIO_PROMETHEUS_AUTH_TYPE: public
|
||
MINIO_REGION: ru-1
|
||
ports:
|
||
- "9000:9000"
|
||
- "9110:9001"
|
||
volumes:
|
||
- /mnt/disk2/minio1:/data1
|
||
- /mnt/disk1/minio2:/data2
|
||
restart: unless-stopped
|
||
|
||
minio-init:
|
||
image: quay.io/minio/mc:latest
|
||
depends_on: [minio]
|
||
environment:
|
||
MC_HOST_minio: "http://minio-root:minio-root-pass@minio:9000"
|
||
entrypoint: >
|
||
/bin/sh -c "
|
||
mc alias set minio http://minio:9000 minio-root minio-root-pass &&
|
||
mc mb -p minio/nextcloud || true &&
|
||
mc admin user add minio nextcloud nextcloud-secret &&
|
||
mc admin policy attach minio readwrite --user nextcloud || true &&
|
||
exit 0
|
||
"
|
||
restart: "no"
|
||
|
||
postgres:
|
||
image: postgres:16
|
||
environment:
|
||
POSTGRES_DB: nextcloud
|
||
POSTGRES_USER: *
|
||
POSTGRES_PASSWORD: *
|
||
volumes:
|
||
- /data/postgres:/var/lib/postgresql/data
|
||
restart: unless-stopped
|
||
|
||
redis:
|
||
image: redis:7
|
||
command: ["redis-server", "--save", "", "--appendonly", "no"]
|
||
restart: unless-stopped
|
||
|
||
nextcloud:
|
||
build: ./nextcloud
|
||
image: nextcloud:30-apache-ffmpeg
|
||
depends_on: [postgres, redis, minio, minio-init]
|
||
ports:
|
||
- "80:80"
|
||
dns:
|
||
- 1.1.1.1
|
||
- 8.8.8.8
|
||
dns_opt:
|
||
- use-vc
|
||
environment:
|
||
POSTGRES_HOST: postgres
|
||
POSTGRES_DB: nextcloud
|
||
POSTGRES_USER: *
|
||
POSTGRES_PASSWORD: *
|
||
NEXTCLOUD_TRUSTED_DOMAINS: *
|
||
NEXTCLOUD_ADMIN_USER: *
|
||
NEXTCLOUD_ADMIN_PASSWORD: *
|
||
OVERWRITEHOST: *
|
||
OVERWRITEPROTOCOL: *
|
||
TRUSTED_PROXIES: *
|
||
MAGICK_THREAD_LIMIT: *
|
||
OMP_NUM_THREADS: *
|
||
volumes:
|
||
- /data/nextcloud/html:/var/www/html
|
||
|
||
nextcloud-cron:
|
||
image: nextcloud:30-apache
|
||
restart: unless-stopped
|
||
volumes:
|
||
- /data/nextcloud/html:/var/www/html
|
||
entrypoint: /cron.sh
|
||
depends_on:
|
||
- nextcloud
|
||
|
||
# --- IMMICH AND REQ-S ---
|
||
|
||
immich-server:
|
||
image: ghcr.io/immich-app/immich-server:release
|
||
container_name: immich-server
|
||
environment:
|
||
# URL, по которому клиенты будут подключаться
|
||
PUBLIC_URL: https://photos.g4st3r.ru
|
||
UPLOAD_LOCATION: /usr/src/app/upload
|
||
|
||
# база данных
|
||
DB_HOSTNAME: immich-db
|
||
DB_PORT: 5432
|
||
DB_USERNAME: *
|
||
DB_PASSWORD: *
|
||
DB_DATABASE_NAME: *
|
||
|
||
# Redis
|
||
REDIS_HOSTNAME: immich-redis
|
||
REDIS_PORT: 6379
|
||
|
||
# ML сервис
|
||
MACHINE_LEARNING_URL: http://immich-ml:3003
|
||
volumes:
|
||
- /mnt/disk3/immich/uploads:/usr/src/app/upload
|
||
depends_on:
|
||
- immich-db
|
||
- immich-redis
|
||
- immich-ml
|
||
ports:
|
||
- 2283:2283
|
||
restart: unless-stopped
|
||
|
||
immich-ml:
|
||
image: ghcr.io/immich-app/immich-machine-learning:release
|
||
container_name: immich-ml
|
||
ports:
|
||
- "3003:3003"
|
||
environment:
|
||
- TRANSFORMERS_CACHE=/cache
|
||
volumes:
|
||
- /mnt/disk2/immich/ml-cache:/cache
|
||
restart: unless-stopped
|
||
|
||
immich-db:
|
||
image: pgvector/pgvector:pg16
|
||
container_name: immich-db
|
||
environment:
|
||
- POSTGRES_USER=${DB_USERNAME:-immich}
|
||
- POSTGRES_PASSWORD=${DB_PASSWORD:-immich_strong_pass}
|
||
- POSTGRES_DB=${DB_DATABASE_NAME:-immich}
|
||
volumes:
|
||
- /mnt/disk2/immich/db:/var/lib/postgresql/data
|
||
restart: unless-stopped
|
||
|
||
immich-redis:
|
||
image: redis:7-alpine
|
||
container_name: immich-redis
|
||
command: ["redis-server", "--save", "60", "1"]
|
||
volumes:
|
||
- /mnt/disk2/immich/redis:/data
|
||
restart: unless-stopped
|
||
|
||
|
||
# --- EXPORTERS & MONITORING ---
|
||
|
||
node-exporter:
|
||
image: prom/node-exporter:latest
|
||
container_name: node-exporter
|
||
restart: unless-stopped
|
||
ports:
|
||
- "9100:9100"
|
||
command:
|
||
- '--path.rootfs=/host'
|
||
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($|/)'
|
||
volumes:
|
||
- '/:/host:ro,rslave'
|
||
|
||
postgres-exporter:
|
||
image: quay.io/prometheuscommunity/postgres-exporter:latest
|
||
container_name: postgres-exporter
|
||
restart: unless-stopped
|
||
environment:
|
||
# у тебя Postgres с юзером nc и БД nextcloud
|
||
DATA_SOURCE_NAME: "postgresql://nc:*@postgres:5432/nextcloud?sslmode=disable"
|
||
ports:
|
||
- "9187:9187"
|
||
depends_on:
|
||
- postgres
|
||
|
||
prometheus:
|
||
image: prom/prometheus:latest
|
||
container_name: prometheus
|
||
restart: unless-stopped
|
||
command:
|
||
- '--config.file=/etc/prometheus/prometheus.yml'
|
||
volumes:
|
||
- /srv/monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||
- prometheus-data:/prometheus
|
||
ports:
|
||
- "9090:9090"
|
||
depends_on:
|
||
- node-exporter
|
||
- cadvisor
|
||
- postgres-exporter
|
||
- minio
|
||
|
||
smartctl-exporter:
|
||
image: prometheuscommunity/smartctl-exporter:v0.9.1
|
||
container_name: smartctl-exporter
|
||
privileged: true # нужно, чтобы читать SMART с устройств
|
||
volumes:
|
||
- /dev:/dev:ro
|
||
- /run/udev:/run/udev:ro
|
||
environment:
|
||
- SMARTCTL_INTERVAL=300 # каждые 5 минут
|
||
ports:
|
||
- "9633:9633"
|
||
restart: unless-stopped
|
||
|
||
grafana:
|
||
image: grafana/grafana:latest
|
||
container_name: grafana
|
||
restart: unless-stopped
|
||
environment:
|
||
- GF_SECURITY_ADMIN_USER=admin
|
||
- GF_SECURITY_ADMIN_PASSWORD=*
|
||
- GF_SERVER_DOMAIN=*
|
||
- GF_SERVER_ROOT_URL=*
|
||
volumes:
|
||
- /srv/monitoring/grafana:/var/lib/grafana
|
||
- /srv/monitoring/grafana/provisioning:/etc/grafana/provisioning:ro
|
||
ports:
|
||
- "3000:3000"
|
||
depends_on:
|
||
- prometheus
|
||
|
||
alertmanager:
|
||
image: prom/alertmanager:latest
|
||
container_name: alertmanager
|
||
command:
|
||
- --config.file=/etc/alertmanager/alertmanager.yml
|
||
- --web.external-url=https://alert.g4st3r.ru
|
||
volumes:
|
||
- ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
|
||
- ./alertmanager/templates:/etc/alertmanager/templates:ro
|
||
ports:
|
||
- "9093:9093"
|
||
restart: unless-stopped
|
||
environment:
|
||
- TELEGRAM_BOT_TOKEN=*
|
||
- TELEGRAM_CHAT_ID=*
|
||
|
||
|
||
volumes:
|
||
prometheus-data:
|