parent
628f37fa37
commit
8cc7d6e3c9
@ -0,0 +1,26 @@ |
||||
version: "3" |
||||
|
||||
services: |
||||
grafana: |
||||
image: grafana/grafana-oss:8.5.1 |
||||
user: "0:0" |
||||
environment: |
||||
GF_AUTH_GENERIC_OAUTH_ENABLED: 'True' |
||||
GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP: 'True' # otherwise no login is possible |
||||
#GF_AUTH_GENERIC_OAUTH_TEAM_IDS: '' |
||||
#GF_AUTH_GENERIC_OAUTH_ALLOWED_ORGANIZATIONS: '' |
||||
#GF_AUTH_GENERIC_OAUTH_ALLOWED_DOMAINS: '<domains>' |
||||
GF_AUTH_GENERIC_OAUTH_NAME: Keycloak |
||||
GF_AUTH_GENERIC_OAUTH_CLIENT_ID: grafana |
||||
GF_AUTH_GENERIC_OAUTH_SCOPES: openid profile email |
||||
# GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET is in env.secrets |
||||
# auth URLs are in the env.secrets since they have hostname expansion |
||||
volumes: |
||||
- ./data/grafana:/var/lib/grafana |
||||
restart: unless-stopped |
||||
ports: |
||||
- 8000:3000 |
||||
env_file: |
||||
- ../env.production |
||||
- env.production |
||||
- env.secrets |
@ -0,0 +1,46 @@ |
||||
#!/bin/bash |
||||
die() { echo >&2 "$@" ; exit 1 ; } |
||||
|
||||
DIRNAME="$(dirname $0)" |
||||
cd "$DIRNAME" |
||||
source ../env.production || die "no top level env?" |
||||
source env.production || die "no local env?" |
||||
|
||||
BASE="https://$KEYCLOAK_HOSTNAME/realms/$REALM/protocol/openid-connect" |
||||
|
||||
if [ ! -r "env.secrets" ]; then |
||||
GRAFANA_CLIENT_SECRET="$(openssl rand -hex 32)" |
||||
GRAFANA_ADMIN_PASSWORD="$(openssl rand -hex 4)" |
||||
|
||||
echo "Generating secrets: admin password $GRAFANA_ADMIN_PASSWORD" |
||||
cat <<EOF > env.secrets |
||||
# Do not check in! |
||||
GRAFANA_ADMIN_PASSWORD=$GRAFANA_ADMIN_PASSWORD |
||||
GF_SERVER_ROOT_URL=https://$GRAFANA_HOSTNAME/ |
||||
GF_SERVER_DOMAIN=$GRAFANA_HOSTNAME |
||||
GF_AUTH_GENERIC_OAUTH_AUTH_URL=$BASE/auth |
||||
GF_AUTH_GENERIC_OAUTH_TOKEN_URL=$BASE/token |
||||
GF_AUTH_GENERIC_OAUTH_API_URL=$BASE/userinfo |
||||
GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET=$GRAFANA_CLIENT_SECRET |
||||
EOF |
||||
else |
||||
source env.secrets || die "no secret env?" |
||||
fi |
||||
|
||||
docker-compose down |
||||
|
||||
../keycloak/client-delete 'grafana' || echo "client did not exist?" |
||||
|
||||
../keycloak/client-create << EOF || die "unable to create client id" |
||||
{ |
||||
"clientId": "grafana", |
||||
"rootUrl": "https://$GRAFANA_HOSTNAME/", |
||||
"adminUrl": "https://$GRAFANA_HOSTNAME/", |
||||
"redirectUris": [ "https://$GRAFANA_HOSTNAME/*" ], |
||||
"webOrigins": [ "https://$GRAFANA_HOSTNAME" ], |
||||
"clientAuthenticatorType": "client-secret", |
||||
"secret": "$GRAFANA_CLIENT_SECRET" |
||||
} |
||||
EOF |
||||
|
||||
docker-compose up -d || die "unable to bring up grafana" |
@ -0,0 +1,60 @@ |
||||
server { |
||||
listen 80; |
||||
server_name ${GRAFANA_HOSTNAME}; |
||||
location / { |
||||
return 301 https://$host$request_uri; |
||||
} |
||||
} |
||||
|
||||
map $http_upgrade $connection_upgrade { |
||||
default upgrade; |
||||
'' close; |
||||
} |
||||
|
||||
server { |
||||
server_name ${GRAFANA_HOSTNAME}; |
||||
client_max_body_size 128m; |
||||
|
||||
sendfile on; |
||||
tcp_nopush on; |
||||
tcp_nodelay on; |
||||
keepalive_timeout 65; |
||||
types_hash_max_size 2048; |
||||
#include /etc/nginx/mime.types; |
||||
#default_type application/octet-stream; |
||||
|
||||
gzip on; |
||||
gzip_disable "msie6"; |
||||
|
||||
proxy_read_timeout 1800s; |
||||
|
||||
# required to avoid HTTP 411: see Issue #1486 (https://github.com/dotcloud/docker/issues/1486) |
||||
chunked_transfer_encoding on; |
||||
|
||||
location / { |
||||
proxy_pass http://host.docker.internal:8000; |
||||
proxy_set_header Host $host; |
||||
proxy_set_header X-Real-IP $remote_addr; |
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||
proxy_set_header X-Forwarded-Proto $scheme; |
||||
} |
||||
|
||||
location /socket.io/ { |
||||
proxy_pass http://host.docker.internal:8000; |
||||
proxy_set_header Host $host; |
||||
proxy_set_header X-Real-IP $remote_addr; |
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||
proxy_set_header X-Forwarded-Proto $scheme; |
||||
proxy_set_header Upgrade $http_upgrade; |
||||
proxy_set_header Connection $connection_upgrade; |
||||
} |
||||
|
||||
listen 443 ssl; |
||||
ssl_certificate /etc/letsencrypt/live/${DOMAIN_NAME}/fullchain.pem; |
||||
ssl_certificate_key /etc/letsencrypt/live/${DOMAIN_NAME}/privkey.pem; |
||||
include /etc/nginx/includes/options-ssl-nginx.conf; |
||||
include /etc/nginx/includes/challenge.conf; |
||||
ssl_dhparam /etc/nginx/includes/ssl-dhparams.pem; |
||||
} |
||||
|
||||
|
Loading…
Reference in new issue