add hetzner server infrastructure files

This commit is contained in:
2026-04-26 20:37:10 +03:00
parent fe29fc1878
commit 2ddbf409b5
9 changed files with 279 additions and 5 deletions
+93
View File
@@ -0,0 +1,93 @@
services:
# --- ЯДРО: Caddy с авто-лейблами ---
caddy:
image: lucaslorentz/caddy-docker-proxy:latest
container_name: caddy
ports:
- 80:80
- 443:443
environment:
- CADDY_INGRESS_NETWORKS=jambotron-net
networks:
- jambotron-net
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- caddy_data:/data
restart: always
# --- МОНИТОРИНГ: Prometheus ---
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus_data:/prometheus
networks:
- jambotron-net
restart: always
# --- МОНИТОРИНГ: Grafana ---
grafana:
image: grafana/grafana:latest
container_name: grafana
networks:
- jambotron-net
environment:
- GF_SECURITY_ADMIN_PASSWORD=monitorPWD
- GF_SERVER_ROOT_URL=%(protocol)s://%(domain)s:%(http_port)s/monitor/
- GF_SERVER_SERVE_FROM_SUB_PATH=true
labels:
caddy: jambotron.com
caddy.handle: /monitor/*
caddy.handle.reverse_proxy: "{{upstreams 3000}}"
volumes:
- grafana_data:/var/lib/grafana
restart: always
# --- ДАТЧИКИ ---
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
networks:
- jambotron-net
restart: always
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
- /dev/disk/:/dev/disk:ro
networks:
- jambotron-net
restart: always
# --- ТЕСТОВЫЙ ПОДДОМЕН (Wildcard DNS должен быть включен) ---
test-app1:
image: traefik/whoami
container_name: test-app1
networks:
- jambotron-net
labels:
caddy: test-app1.jambotron.com
caddy.reverse_proxy: "{{upstreams 80}}"
restart: always
networks:
jambotron-net:
name: jambotron-net
volumes:
caddy_data:
prometheus_data:
grafana_data:
+11
View File
@@ -0,0 +1,11 @@
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
+53
View File
@@ -0,0 +1,53 @@
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea_db_pass # Смени на свой
restart: always
networks:
- jambotron-net
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
labels:
caddy: gitea.jambotron.com
caddy.reverse_proxy: "{{upstreams 3000}}"
depends_on:
- db
db:
image: postgres:15-alpine
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea_db_pass # Должен совпадать с паролем выше
- POSTGRES_DB=gitea
networks:
- jambotron-net
volumes:
- ./db_data:/var/lib/postgresql/data
runner:
image: gitea/act_runner:latest
container_name: gitea-runner
restart: always
environment:
- GITEA_INSTANCE_URL=https://gitea.jambotron.com
- GITEA_RUNNER_REGISTRATION_TOKEN=ULMDH7DefxH0aafni90ud8My1EMtyi0ocz49MU0u
- GITEA_RUNNER_NAME=helsinki-runner
- GITEA_RUNNER_LABELS=ubuntu-latest:docker://catthehacker/ubuntu:act-latest
volumes:
- ./runner_data:/data
- /var/run/docker.sock:/var/run/docker.sock # Критически важно для управления контейнерами
networks:
- jambotron-net
networks:
jambotron-net:
external: true
@@ -0,0 +1,37 @@
version: '3.8'
services:
# Сервер базы данных
jambotron-db-server:
image: postgres:15-alpine
container_name: jambo-postgres
restart: always
environment:
- POSTGRES_DB=jambotron_prod
- POSTGRES_USER=jambotron_admin
- POSTGRES_PASSWORD=jambo_secret_pass
volumes:
- jambo_db_data:/var/lib/postgresql/data
networks:
- jambotron-net
# Панель управления базой
jambo-pgadmin:
image: dpage/pgadmin4
container_name: jambo-pgadmin
restart: always
environment:
- PGADMIN_DEFAULT_EMAIL=admin@jambotron.com
- PGADMIN_DEFAULT_PASSWORD=your_secure_password
networks:
- jambotron-net
labels:
- "caddy=pgadmin.jambotron.com"
- "caddy.reverse_proxy={{upstreams 80}}"
networks:
jambotron-net:
external: true # Указываем, что сеть уже создана (в ней же живет Caddy и Gitea)
volumes:
jambo_db_data:
+24
View File
@@ -0,0 +1,24 @@
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
security_opt:
- no-new-privileges:true
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- portainer_data:/data
networks:
- jambotron-net
labels:
# Меняем на отдельный поддомен
caddy: manage.jambotron.com
caddy.reverse_proxy: "{{upstreams 9000}}"
networks:
jambotron-net:
external: true
volumes:
portainer_data: