diff --git a/frontend/Readme.md b/frontend/Readme.md new file mode 100644 index 0000000..8ede456 --- /dev/null +++ b/frontend/Readme.md @@ -0,0 +1,41 @@ +# Traefik reverse proxy for analysis framework + +## Usage (default: http) + +1. `cd traefik` +2. `editor docker-compose.yml` + * Adjust the *traefik.frontend.rule* label for the traefik dashboard + * Default (match any): + * traefik.localhost + * traefik.potato.kinf.wiai.uni-bamberg.de + * Adjust port mapping + * Default: + * 80 → 80 + * Syntax: : +3. `docker-compose up -d` +4. `cd ../..` +5. `editor docker-compose.yml` + * adjust the *traefik.url.frontend.rule* labels for services *app* and *nginx* + * adjust the urls in *selector/config.py* accordingly +6. `docker-compose up -d` +7. You have a working analysis framework setup now + * Stop with `docker-compose down` + * Start with `docker-compose up -d` + +## Usage (https) + +1. Be on a host with port 80 available from the internet +2. Follw HTTP usage above up to step 2 +3. Add acme.json volume: + * Uncomment the line for the acme.json volume + * Adjust the host path + * Syntax: : +4. Create acme.json + * touch acme.json + * chmod 600 acme.json +5. Activate traefiks ACME module + * `mv config.toml config_http.toml` + * `mv config_acme.toml config.toml` + * `editor config.toml` + * Adjust the *acme.email* value +6. Continue with HTTP Usage steps 3 + diff --git a/frontend/traefik/config.toml b/frontend/traefik/config.toml new file mode 100644 index 0000000..8a974e9 --- /dev/null +++ b/frontend/traefik/config.toml @@ -0,0 +1,8 @@ +logLevel = "INFO" + +[web] +address = ":8080" + +[docker] +watch = true +exposedbydefault = false diff --git a/frontend/traefik/config_acme.toml b/frontend/traefik/config_acme.toml new file mode 100644 index 0000000..90ffaa0 --- /dev/null +++ b/frontend/traefik/config_acme.toml @@ -0,0 +1,26 @@ +logLevel = "INFO" +defaultEntryPoints = ["https", "http"] + +[web] +address = ":8080" + +[docker] +watch = true +exposedbydefault = false + +[entryPoints] + [entryPoints.http] + address = ":80" + [entryPoints.http.redirect] + entryPoint = "https" + [entryPoints.https] + address = ":443" + [entryPoints.https.tls] + +[acme] + email = "tls-admin@org.example" + storage = "acme.json" + entryPoint = "https" + OnHostRule = true + [acme.httpChallenge] + entryPoint = "http" \ No newline at end of file diff --git a/frontend/traefik/docker-compose.yml b/frontend/traefik/docker-compose.yml new file mode 100644 index 0000000..134095c --- /dev/null +++ b/frontend/traefik/docker-compose.yml @@ -0,0 +1,21 @@ +version: "3" +services: + traefik: + image: traefik:1.6 + command: --configFile=/traefik.toml + volumes: + - ./config.toml:/traefik.toml +# - ./acme.json:/acme.json + - /var/run/docker.sock:/var/run/docker.sock + ports: + - 80:80 + networks: + - net + labels: + - "traefik.enable=true" + - "traefik.port=8080" + - "traefik.frontend.rule=Host:traefik.localhost,traefik.potato.kinf.wiai.uni-bamberg.de" + restart: on-failure:5 +networks: + net: + driver: bridge diff --git a/selector/temp_config.py b/selector/config.py similarity index 100% rename from selector/temp_config.py rename to selector/config.py diff --git a/selector/webserver.py b/selector/webserver.py index 2d11542..30e3abe 100644 --- a/selector/webserver.py +++ b/selector/webserver.py @@ -10,7 +10,7 @@ from clients.webclients import Client, CLIENTS from flask import Flask, render_template, request, redirect, session from tasks import tasks -from selector.temp_config import CONFIGS, URLS, HOSTS, RESULT_HOST +from selector.config import CONFIGS, URLS, HOSTS, RESULT_HOST app = Flask(__name__) clients: typing.Dict[str, Client] = {}