Added Grafana & Prometheus
This commit is contained in:
82
compose.yml
82
compose.yml
@ -7,7 +7,8 @@ services:
|
|||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
networks:
|
networks:
|
||||||
- service_network
|
- service_network
|
||||||
portainer:
|
|
||||||
|
portainer: # Portainer (visualizes docker stack)
|
||||||
container_name: portainer
|
container_name: portainer
|
||||||
image: portainer/portainer-ce:latest
|
image: portainer/portainer-ce:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@ -18,6 +19,67 @@ services:
|
|||||||
- service_network
|
- service_network
|
||||||
expose:
|
expose:
|
||||||
- 9000
|
- 9000
|
||||||
|
|
||||||
|
node-exporter: # Node Exporter (collects metrics from the host)
|
||||||
|
container_name: node-exporter
|
||||||
|
image: quay.io/prometheus/node-exporter:latest
|
||||||
|
restart: always
|
||||||
|
command: --path.rootfs=/host
|
||||||
|
pid: host
|
||||||
|
volumes:
|
||||||
|
- /:/host:ro,rslave
|
||||||
|
networks:
|
||||||
|
- service_network
|
||||||
|
expose:
|
||||||
|
- 9100
|
||||||
|
|
||||||
|
cadvisor: # cAdvisor (collects metrics from docker)
|
||||||
|
container_name: cadvisor
|
||||||
|
image: gcr.io/cadvisor/cadvisor:latest
|
||||||
|
restart: always
|
||||||
|
command:
|
||||||
|
- --housekeeping_interval=30s
|
||||||
|
- --disable_metrics=disk,diskIO,network,tcp,udp,percpu,sched,process
|
||||||
|
- --docker_only=true
|
||||||
|
devices:
|
||||||
|
- /dev/kmsg
|
||||||
|
volumes:
|
||||||
|
- /:/rootfs:ro
|
||||||
|
- /var/run:/var/run:ro
|
||||||
|
- /sys:/sys:ro
|
||||||
|
- /var/lib/docker:/var/lib/docker:ro
|
||||||
|
- /dev/disk:/dev/disk:ro
|
||||||
|
networks:
|
||||||
|
- service_network
|
||||||
|
expose:
|
||||||
|
- 8080
|
||||||
|
|
||||||
|
prometheus: # Prometheus (collects logs & metrics)
|
||||||
|
container_name: prometheus
|
||||||
|
image: prom/prometheus:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
command: --config.file=/config/prometheus.yml
|
||||||
|
user: 1001:0
|
||||||
|
volumes:
|
||||||
|
- ./data/prometheus/config:/config
|
||||||
|
- ./data/prometheus/data:/prometheus
|
||||||
|
networks:
|
||||||
|
- service_network
|
||||||
|
expose:
|
||||||
|
- 9090
|
||||||
|
|
||||||
|
grafana: # Grafana (visualizes Prometheus logs & metrics)
|
||||||
|
container_name: grafana
|
||||||
|
image: grafana/grafana-oss:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
user: 1001:0
|
||||||
|
volumes:
|
||||||
|
- ./data/grafana:/var/lib/grafana
|
||||||
|
networks:
|
||||||
|
- service_network
|
||||||
|
expose:
|
||||||
|
- 3000
|
||||||
|
|
||||||
npm: # Nginx Proxy Manager (handles proxies)
|
npm: # Nginx Proxy Manager (handles proxies)
|
||||||
container_name: npm
|
container_name: npm
|
||||||
image: jc21/nginx-proxy-manager:latest
|
image: jc21/nginx-proxy-manager:latest
|
||||||
@ -33,10 +95,12 @@ services:
|
|||||||
- 80:80
|
- 80:80
|
||||||
- 81:81
|
- 81:81
|
||||||
- 443:443
|
- 443:443
|
||||||
|
|
||||||
nextcloud: # Nextcloud (hosts file server)
|
nextcloud: # Nextcloud (hosts file server)
|
||||||
container_name: nextcloud
|
container_name: nextcloud
|
||||||
image: nextcloud:latest
|
image: nextcloud:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
user: 1001:0
|
||||||
env_file: ./env/nextcloud.env
|
env_file: ./env/nextcloud.env
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/nextcloud:/var/www/html
|
- ./data/nextcloud:/var/www/html
|
||||||
@ -49,6 +113,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- nextcloud-db
|
- nextcloud-db
|
||||||
- nextcloud-cache
|
- nextcloud-cache
|
||||||
|
|
||||||
nextcloud-db:
|
nextcloud-db:
|
||||||
container_name: nextcloud-db
|
container_name: nextcloud-db
|
||||||
image: mariadb:10.6
|
image: mariadb:10.6
|
||||||
@ -59,12 +124,14 @@ services:
|
|||||||
- ./data/nextcloud-db:/var/lib/mysql
|
- ./data/nextcloud-db:/var/lib/mysql
|
||||||
networks:
|
networks:
|
||||||
- nextcloud_network
|
- nextcloud_network
|
||||||
|
|
||||||
nextcloud-cache:
|
nextcloud-cache:
|
||||||
container_name: nextcloud-cache
|
container_name: nextcloud-cache
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- nextcloud_network
|
- nextcloud_network
|
||||||
|
|
||||||
pterodactyl: # Pterodactyl (hosts game servers)
|
pterodactyl: # Pterodactyl (hosts game servers)
|
||||||
container_name: pterodactyl
|
container_name: pterodactyl
|
||||||
image: ghcr.io/pterodactyl/panel:latest
|
image: ghcr.io/pterodactyl/panel:latest
|
||||||
@ -80,6 +147,7 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- pterodactyl-db
|
- pterodactyl-db
|
||||||
- pterodactyl-cache
|
- pterodactyl-cache
|
||||||
|
|
||||||
pterodactyl-db:
|
pterodactyl-db:
|
||||||
container_name: pterodactyl-db
|
container_name: pterodactyl-db
|
||||||
image: mariadb:10.5
|
image: mariadb:10.5
|
||||||
@ -90,12 +158,14 @@ services:
|
|||||||
- ./data/pterodactyl-db:/var/lib/mysql
|
- ./data/pterodactyl-db:/var/lib/mysql
|
||||||
networks:
|
networks:
|
||||||
- pterodactyl_network
|
- pterodactyl_network
|
||||||
|
|
||||||
pterodactyl-cache:
|
pterodactyl-cache:
|
||||||
container_name: pterodactyl-cache
|
container_name: pterodactyl-cache
|
||||||
image: redis:alpine
|
image: redis:alpine
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- pterodactyl_network
|
- pterodactyl_network
|
||||||
|
|
||||||
photoprism: # Photoprism (manages photo and video library)
|
photoprism: # Photoprism (manages photo and video library)
|
||||||
container_name: photoprism
|
container_name: photoprism
|
||||||
image: photoprism/photoprism:latest
|
image: photoprism/photoprism:latest
|
||||||
@ -109,7 +179,7 @@ services:
|
|||||||
devices:
|
devices:
|
||||||
- /dev/dri/card0:/dev/dri/card0
|
- /dev/dri/card0:/dev/dri/card0
|
||||||
- /dev/dri/renderD128:/dev/dri/renderD128
|
- /dev/dri/renderD128:/dev/dri/renderD128
|
||||||
working_dir: "/photoprism"
|
working_dir: /photoprism
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/photoprism:/photoprism/storage
|
- ./data/photoprism:/photoprism/storage
|
||||||
- /mnt/storage/photoprism/import:/photoprism/import
|
- /mnt/storage/photoprism/import:/photoprism/import
|
||||||
@ -121,6 +191,7 @@ services:
|
|||||||
- 2342
|
- 2342
|
||||||
depends_on:
|
depends_on:
|
||||||
- photoprism-db
|
- photoprism-db
|
||||||
|
|
||||||
photoprism-db:
|
photoprism-db:
|
||||||
container_name: photoprism-db
|
container_name: photoprism-db
|
||||||
image: mariadb:10.10
|
image: mariadb:10.10
|
||||||
@ -131,6 +202,7 @@ services:
|
|||||||
- ./data/photoprism-db:/var/lib/mysql
|
- ./data/photoprism-db:/var/lib/mysql
|
||||||
networks:
|
networks:
|
||||||
- photoprism_network
|
- photoprism_network
|
||||||
|
|
||||||
jellyfin: # Jellyfin (manages movies, shows, & books)
|
jellyfin: # Jellyfin (manages movies, shows, & books)
|
||||||
container_name: jellyfin
|
container_name: jellyfin
|
||||||
image: jellyfin/jellyfin:latest
|
image: jellyfin/jellyfin:latest
|
||||||
@ -154,6 +226,7 @@ services:
|
|||||||
service_network:
|
service_network:
|
||||||
exposed_service_network:
|
exposed_service_network:
|
||||||
ipv4_address: 192.168.1.104
|
ipv4_address: 192.168.1.104
|
||||||
|
|
||||||
gitea: # Gitea (hosts git server)
|
gitea: # Gitea (hosts git server)
|
||||||
container_name: gitea
|
container_name: gitea
|
||||||
image: gitea/gitea:latest
|
image: gitea/gitea:latest
|
||||||
@ -168,6 +241,7 @@ services:
|
|||||||
- 3000
|
- 3000
|
||||||
depends_on:
|
depends_on:
|
||||||
- gitea-db
|
- gitea-db
|
||||||
|
|
||||||
gitea-db:
|
gitea-db:
|
||||||
container_name: gitea-db
|
container_name: gitea-db
|
||||||
image: mysql:8
|
image: mysql:8
|
||||||
@ -177,6 +251,7 @@ services:
|
|||||||
- ./data/gitea-db:/var/lib/mysql
|
- ./data/gitea-db:/var/lib/mysql
|
||||||
networks:
|
networks:
|
||||||
- gitea_network
|
- gitea_network
|
||||||
|
|
||||||
homer: # Homer (displays all self-hosted services)
|
homer: # Homer (displays all self-hosted services)
|
||||||
container_name: homer
|
container_name: homer
|
||||||
image: b4bz/homer:latest
|
image: b4bz/homer:latest
|
||||||
@ -189,6 +264,7 @@ services:
|
|||||||
- service_network
|
- service_network
|
||||||
expose:
|
expose:
|
||||||
- 8080
|
- 8080
|
||||||
|
|
||||||
uptime-kuma: # Uptime Kuma (displays uptime for all self-hosted services)
|
uptime-kuma: # Uptime Kuma (displays uptime for all self-hosted services)
|
||||||
container_name: uptime-kuma
|
container_name: uptime-kuma
|
||||||
image: louislam/uptime-kuma:latest
|
image: louislam/uptime-kuma:latest
|
||||||
@ -199,8 +275,6 @@ services:
|
|||||||
- service_network
|
- service_network
|
||||||
expose:
|
expose:
|
||||||
- 3001
|
- 3001
|
||||||
depends_on:
|
|
||||||
- npm
|
|
||||||
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
|
29
scripts/backup-db.sh
Executable file
29
scripts/backup-db.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
COMPOSE_PATH=/root/new-services
|
||||||
|
|
||||||
|
|
||||||
|
databases=$(docker compose -f ${COMPOSE_PATH}/compose.yml ps | grep '\-db' | awk '{print $1}' | tr '\n' ' ')
|
||||||
|
|
||||||
|
for db in $databases; do
|
||||||
|
db_env_path=${COMPOSE_PATH}/env/${db}.env
|
||||||
|
|
||||||
|
if [ ! -f $db_env_path ]; then
|
||||||
|
echo "Could not find the environment file for database '$db'"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
db_service=${db/\-db/}
|
||||||
|
db_passwd=$(cat $db_env_path | grep MYSQL_ROOT_PASSWORD | tr '=' ' ' | awk '{print $NF}' | tr -d '"')
|
||||||
|
db_dmp_cmd="mysqldump --password=${db_passwd} ${db_service} > /root/${db_service}.sql"
|
||||||
|
|
||||||
|
echo -e "\nDumping database '${db}'"
|
||||||
|
docker exec ${db} sh -c "$db_dmp_cmd" &> /dev/null
|
||||||
|
|
||||||
|
echo "Copying database dump '${db_service}.sql' to '${COMPOSE_PATH}/sql/${db_service}.sql'"
|
||||||
|
docker cp ${db}:/root/${db_service}.sql ${COMPOSE_PATH}/sql/${db_service}.sql &> /dev/null
|
||||||
|
|
||||||
|
chown -R root:root ${COMPOSE_PATH}/sql
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "\nDumping complete!"
|
Reference in New Issue
Block a user