add too many things
This commit is contained in:
@@ -1,20 +1,4 @@
|
|||||||
services:
|
services:
|
||||||
caddy:
|
|
||||||
image: caddy:latest
|
|
||||||
ports:
|
|
||||||
# - "80:80"
|
|
||||||
- "443:443"
|
|
||||||
volumes:
|
|
||||||
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
||||||
- caddy_data:/data
|
|
||||||
- caddy_config:/config
|
|
||||||
depends_on:
|
|
||||||
- flask
|
|
||||||
- wekan
|
|
||||||
- mattermost
|
|
||||||
networks:
|
|
||||||
- gesthub
|
|
||||||
|
|
||||||
flask:
|
flask:
|
||||||
build: ./web
|
build: ./web
|
||||||
environment:
|
environment:
|
||||||
@@ -26,6 +10,8 @@ services:
|
|||||||
- mariadb
|
- mariadb
|
||||||
volumes:
|
volumes:
|
||||||
- ./web:/app
|
- ./web:/app
|
||||||
|
ports:
|
||||||
|
- "5000:5000"
|
||||||
networks:
|
networks:
|
||||||
- gesthub
|
- gesthub
|
||||||
|
|
||||||
@@ -41,51 +27,21 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- gesthub
|
- gesthub
|
||||||
|
|
||||||
wekan:
|
|
||||||
image: wekanteam/wekan
|
|
||||||
environment:
|
|
||||||
- MONGO_URL=mongodb://mongo:27017/wekan
|
|
||||||
- ROOT_URL=https://wekan.gesthub
|
|
||||||
depends_on:
|
|
||||||
- mongo
|
|
||||||
networks:
|
|
||||||
- gesthub
|
|
||||||
|
|
||||||
mongo:
|
mongo:
|
||||||
image: mongo:latest
|
image: arm64v8/mongo:4.4
|
||||||
volumes:
|
volumes:
|
||||||
- mongo_data:/data/db
|
- mongo_data:/data/db
|
||||||
networks:
|
networks:
|
||||||
- gesthub
|
- gesthub
|
||||||
|
|
||||||
mattermost:
|
|
||||||
image: mattermost/mattermost-team-edition:latest
|
|
||||||
ports:
|
|
||||||
- "8065:8065"
|
|
||||||
environment:
|
|
||||||
- MM_SQLSETTINGS_DRIVERNAME=postgres
|
|
||||||
- MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:mmuserpass@db:5432/mattermost?sslmode=disable
|
|
||||||
- MM_SERVICESETTINGS_SITEURL=http://chat.gesthub
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
volumes:
|
|
||||||
- mattermost_data:/mattermost/data
|
|
||||||
networks:
|
|
||||||
- gesthub
|
|
||||||
|
|
||||||
db:
|
|
||||||
image: postgres:13
|
|
||||||
environment:
|
|
||||||
- POSTGRES_DB=mattermost
|
|
||||||
- POSTGRES_USER=mmuser
|
|
||||||
- POSTGRES_PASSWORD=mmuserpass
|
|
||||||
volumes:
|
|
||||||
- postgres_data:/var/lib/postgresql/data
|
|
||||||
networks:
|
|
||||||
- gesthub
|
|
||||||
keycloak:
|
keycloak:
|
||||||
image: quay.io/keycloak/keycloak:22.0.5
|
image: quay.io/keycloak/keycloak:22.0.5
|
||||||
command: start-dev
|
command:
|
||||||
|
- start-dev
|
||||||
|
- --hostname=keycloak.ninolbt.com
|
||||||
|
- --hostname-strict=false
|
||||||
|
- --hostname-strict-https=false
|
||||||
|
- --proxy=edge
|
||||||
environment:
|
environment:
|
||||||
- KEYCLOAK_ADMIN=admin
|
- KEYCLOAK_ADMIN=admin
|
||||||
- KEYCLOAK_ADMIN_PASSWORD=admin
|
- KEYCLOAK_ADMIN_PASSWORD=admin
|
||||||
@@ -102,6 +58,7 @@ services:
|
|||||||
- keycloak_data:/opt/keycloak/data
|
- keycloak_data:/opt/keycloak/data
|
||||||
networks:
|
networks:
|
||||||
- gesthub
|
- gesthub
|
||||||
|
|
||||||
keycloak-db:
|
keycloak-db:
|
||||||
image: postgres:13
|
image: postgres:13
|
||||||
environment:
|
environment:
|
||||||
@@ -112,6 +69,39 @@ services:
|
|||||||
- keycloakdb_data:/var/lib/postgresql/data
|
- keycloakdb_data:/var/lib/postgresql/data
|
||||||
networks:
|
networks:
|
||||||
- gesthub
|
- gesthub
|
||||||
|
|
||||||
|
# plane:
|
||||||
|
# image: planehq/plane:latest
|
||||||
|
# container_name: plane
|
||||||
|
# depends_on:
|
||||||
|
# - plane-db
|
||||||
|
# environment:
|
||||||
|
# DATABASE_URL: postgres://plane:plane@plane-db:5432/plane
|
||||||
|
# SECRET_KEY: supersecretkeyhere
|
||||||
|
# ENABLE_OPENID_CONNECT: "true"
|
||||||
|
# OIDC_RP_CLIENT_ID: plane-client
|
||||||
|
# OIDC_RP_CLIENT_SECRET: changeme
|
||||||
|
# OIDC_OP_AUTHORIZATION_ENDPOINT: https://keycloak.ninolbt.com/realms/gesthub/protocol/openid-connect/auth
|
||||||
|
# OIDC_OP_TOKEN_ENDPOINT: https://keycloak.ninolbt.com/realms/gesthub/protocol/openid-connect/token
|
||||||
|
# OIDC_OP_USER_ENDPOINT: https://keycloak.ninolbt.com/realms/gesthub/protocol/openid-connect/userinfo
|
||||||
|
# OIDC_OP_JWKS_ENDPOINT: https://keycloak.ninolbt.com/realms/gesthub/protocol/openid-connect/certs
|
||||||
|
# ports:
|
||||||
|
# - "3000:3000"
|
||||||
|
# networks:
|
||||||
|
# - gesthub
|
||||||
|
|
||||||
|
# plane-db:
|
||||||
|
# image: postgres:15
|
||||||
|
# container_name: plane-db
|
||||||
|
# environment:
|
||||||
|
# POSTGRES_DB: plane
|
||||||
|
# POSTGRES_USER: plane
|
||||||
|
# POSTGRES_PASSWORD: plane
|
||||||
|
# volumes:
|
||||||
|
# - plane_db_data:/var/lib/postgresql/data
|
||||||
|
# networks:
|
||||||
|
# - gesthub
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
gesthub:
|
gesthub:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
@@ -121,7 +111,6 @@ volumes:
|
|||||||
caddy_config:
|
caddy_config:
|
||||||
mariadb_data:
|
mariadb_data:
|
||||||
mongo_data:
|
mongo_data:
|
||||||
mattermost_data:
|
|
||||||
postgres_data:
|
|
||||||
keycloak_data:
|
keycloak_data:
|
||||||
keycloakdb_data:
|
keycloakdb_data:
|
||||||
|
plane_db_data:
|
||||||
|
|||||||
13
web/app.py
13
web/app.py
@@ -1,4 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
import uuid
|
||||||
from flask import Flask, redirect, url_for, session, render_template
|
from flask import Flask, redirect, url_for, session, render_template
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
from authlib.integrations.flask_client import OAuth
|
from authlib.integrations.flask_client import OAuth
|
||||||
@@ -16,8 +17,8 @@ oauth = OAuth(app)
|
|||||||
keycloak = oauth.register(
|
keycloak = oauth.register(
|
||||||
name='keycloak',
|
name='keycloak',
|
||||||
client_id='flask-app',
|
client_id='flask-app',
|
||||||
client_secret='6R70kt1x9KjYpccZCMnPvJAGiJFzRHjE',
|
client_secret='IpVDkBPN6ya9oj8ZJPWNtW32bdaqv83Q',
|
||||||
server_metadata_url='http://keycloak.localhost/realms/gesthub/.well-known/openid-configuration',
|
server_metadata_url='https://keycloak.ninolbt.com/realms/gesthub/.well-known/openid-configuration',
|
||||||
client_kwargs={
|
client_kwargs={
|
||||||
'scope': 'openid profile email',
|
'scope': 'openid profile email',
|
||||||
}
|
}
|
||||||
@@ -27,21 +28,21 @@ keycloak = oauth.register(
|
|||||||
def index():
|
def index():
|
||||||
user = session.get('user')
|
user = session.get('user')
|
||||||
if user:
|
if user:
|
||||||
return render_template('/view/index.html', user=user)
|
return render_template('view/index.html', user=user)
|
||||||
return redirect(url_for('login'))
|
return redirect(url_for('login'))
|
||||||
|
|
||||||
@app.route('/login')
|
@app.route('/login')
|
||||||
def login():
|
def login():
|
||||||
nonce = uuid.uuid4().hex
|
nonce = uuid.uuid4().hex
|
||||||
session['nonce'] = nonce
|
session['nonce'] = nonce
|
||||||
redirect_uri = url_for('auth', _external=True)
|
redirect_uri = url_for('auth', _external=True, _scheme='https')
|
||||||
return keycloak.authorize_redirect(redirect_uri)
|
return keycloak.authorize_redirect(redirect_uri, nonce=nonce)
|
||||||
|
|
||||||
@app.route('/auth')
|
@app.route('/auth')
|
||||||
def auth():
|
def auth():
|
||||||
token = keycloak.authorize_access_token()
|
token = keycloak.authorize_access_token()
|
||||||
nonce = session.pop('nonce', None)
|
nonce = session.pop('nonce', None)
|
||||||
userinfo = keycloak.parse_id_token(token)
|
userinfo = keycloak.parse_id_token(token, nonce=nonce)
|
||||||
session['user'] = userinfo
|
session['user'] = userinfo
|
||||||
return redirect('/')
|
return redirect('/')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user