Skip to content
Open
33 changes: 33 additions & 0 deletions containers/loki/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
auth_enabled: false

server:
http_listen_port: 3100
grpc_listen_port: 9096

common:
instance_addr: 127.0.0.1
path_prefix: /data/loki
storage:
filesystem:
chunks_directory: /data/loki/chunks
replication_factor: 1
ring:
kvstore:
store: inmemory

ruler:
storage:
type: local
local:
directory: /tmp/loki-rules

schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h

26 changes: 26 additions & 0 deletions containers/mimir/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
target: all

server:
http_listen_port: 9009
grpc_listen_port: 9095

ingester:
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
replication_factor: 1

blocks_storage:
backend: filesystem
filesystem:
dir: /data/mimir/blocks
tsdb:
dir: /data/mimir/tsdb

compactor:
data_dir: /data/mimir/compactor

store_gateway:
sharding_ring:
replication_factor: 1
1 change: 1 addition & 0 deletions containers/nginx/auth/metrics.htpasswd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
remote_writer:$apr1$baokJMMP$NH1P3Xbin2H9GqtJ8IZL2/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add .htpasswd to .gitignore and document how to generate it in the README.

101 changes: 101 additions & 0 deletions containers/nginx/default.conf
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,107 @@ upstream backend {
server ${PROXY_PASS};
}

server {
listen 80;
server_name grafana.metrics.sctomega.com;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider moving metrics.sctomega.com to a .env variable

return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name grafana.metrics.sctomega.com;

ssl_certificate /etc/letsencrypt/live/grafana.metrics.sctomega.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/grafana.metrics.sctomega.com/privkey.pem;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;

add_header Strict-Transport-Security "max-age=31536000" always;

location ^~ /.well-known/acme-challenge/ {
alias /var/www/certbot/.well-known/acme-challenge/;
}

location / {
proxy_pass http://grafana:3000/;
proxy_http_version 1.1;
proxy_set_header Connection 'upgrade';
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

server {
listen 80;
server_name mimir.metrics.sctomega.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name mimir.metrics.sctomega.com;

ssl_certificate /etc/letsencrypt/live/mimir.metrics.sctomega.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mimir.metrics.sctomega.com/privkey.pem;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;

add_header Strict-Transport-Security "max-age=31536000" always;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/auth/metrics.htpasswd;

location ^~ /.well-known/acme-challenge/ {
alias /var/www/certbot/.well-known/acme-challenge/;
}

location / {
proxy_pass http://mimir:9009;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}

server {
listen 80;
server_name loki.metrics.sctomega.com;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name loki.metrics.sctomega.com;

ssl_certificate /etc/letsencrypt/live/loki.metrics.sctomega.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/loki.metrics.sctomega.com/privkey.pem;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5;

add_header Strict-Transport-Security "max-age=31536000" always;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/auth/metrics.htpasswd;

location ^~ /.well-known/acme-challenge/ {
alias /var/www/certbot/.well-known/acme-challenge/;
}

location / {
proxy_pass http://loki:3100;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}

server {
listen 80;
server_name ${DOMAIN};
Expand Down
39 changes: 35 additions & 4 deletions docker-compose.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,11 @@ services:
- 443:443
environment:
DOMAIN: ${DOMAIN}
PROXY_PASS: 'projectnext:3000'
PROXY_PASS: "projectnext:3000"
volumes:
- ./containers/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./containers/nginx/default.conf:/etc/nginx/templates/default.conf.template:ro
- ./containers/nginx/auth:/etc/nginx/auth:ro
- store:/usr/store:ro
- ./certs/conf:/etc/letsencrypt:ro
- ./certs/www/:/var/www/certbot:ro
Expand All @@ -46,13 +47,37 @@ services:
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 14d & wait $${!}; done;'"
restart: always

grafana:
image: grafana/grafana:latest
volumes:
- grafana_data:/var/lib/grafana
- ./containers/grafana/provisioning:/etc/grafana/provisioning:ro
restart: unless-stopped

loki:
image: grafana/loki:latest
user: root
volumes:
- ./containers/loki/config.yml:/etc/loki/config.yml:ro
- loki_data:/data/loki
command: -config.file=/etc/loki/config.yml
restart: unless-stopped

mimir:
image: grafana/mimir:latest
volumes:
- ./containers/mimir/config.yml:/etc/mimir/config.yml:ro
- mimir_data:/data/mimir
command: -config.file=/etc/mimir/config.yml
restart: unless-stopped

postfix:
build: ${PROJECT_ROOT:-.}/containers/postfix/
ports:
- '587:587'
- '25:25'
- "587:587"
- "25:25"
environment:
POSTGRES_HOST: 'db'
POSTGRES_HOST: "db"
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
Expand All @@ -76,3 +101,9 @@ volumes:
driver: local
dobbelOmegaManifest:
driver: local
grafana_data:
driver: local
loki_data:
driver: local
mimir_data:
driver: local
Loading