diff --git a/.github/workflows/robot.yml b/.github/workflows/robot.yml index 4a381be5..044d5e3a 100644 --- a/.github/workflows/robot.yml +++ b/.github/workflows/robot.yml @@ -26,7 +26,7 @@ jobs: - name: Start the service run: | - docker compose up -d back postgres ingress meilisearch # --wait Wait is not available on gha + docker compose up -d back postgres traefik meilisearch --wait - name: Perform healthchecks run: | diff --git a/INSTALLING.md b/INSTALLING.md index 0a86db31..bc8ca28b 100644 --- a/INSTALLING.md +++ b/INSTALLING.md @@ -2,8 +2,7 @@ 1. Install docker & docker-compose 2. Download the - [`docker-compose.yml`](https://github.com/zoriya/kyoo/releases/latest/download/docker-compose.yml), - [`nginx.conf.template`](https://raw.githubusercontent.com/zoriya/Kyoo/master/nginx.conf.template) and + [`docker-compose.yml`](https://github.com/zoriya/kyoo/releases/latest/download/docker-compose.yml) and [`.env`](https://raw.githubusercontent.com/zoriya/Kyoo/master/.env.example) files 3. Fill the `.env` file with your configuration options (and an API Key from [themoviedb.org](https://www.themoviedb.org/)) 4. Look at [Hardware Acceleration section](#Hardware-Acceleration) if you need it @@ -17,18 +16,16 @@ To install Kyoo, you need docker and docker-compose. Those can be installed from or [Windows](https://docs.docker.com/desktop/install/windows-install/). Docker is used to run each services of Kyoo in an isolated environment with all the dependencies they need. -Kyoo also needs 3 files to work properly. Two of them can simply be copy-pasted from this repository, the other needs to be filled in with your configurations. +Kyoo also needs 2 files to work properly. The first should be downloaded from the latest release artificat, the other needs to be filled in with your configurations. Those files can be put in any directory of your choice. -Those 3 files are: +Those files are: - A `docker-compose.yml` (simply download docker-compose.yml from [the latest release](https://github.com/zoriya/kyoo/releases/latest/download/docker-compose.yml)). -- A `nginx.conf.template` copied from [here](https://raw.githubusercontent.com/zoriya/Kyoo/master/nginx.conf.template). - A `.env` file that you will need to **fill**. Look at the example [.env.example](https://raw.githubusercontent.com/zoriya/Kyoo/master/.env.example) > If you want an explanation of what are those files, you can read the following: > The `docker-compose.yml` file describes the different services of Kyoo, where they should be downloaded and their start order. \ -> The `nignx.conf.template` file describes which service will be called when accessing the URL of Kyoo. \ > The `.env` file contains all the configuration options that the services in `docker-compose.yml` will read. To retrieve metadata, Kyoo will need to communicate with an external service. For now, that is `the movie database`. @@ -44,7 +41,7 @@ Congratulation, everything is now ready to use Kyoo. You can navigate to `http:/ # Updating -Updating Kyoo is exactly the same as installing it. Get an updated version of the `docker-compose.yml` and `nginx.conf.template` files and +Updating Kyoo is exactly the same as installing it. Get an updated version of the `docker-compose.yml` file and unsure that your `.env` contains all the options specified in the updated `.env.example` file. After that, you will need to update Kyoo's services. For that, open a terminal in the configuration's directory and run diff --git a/docker-compose.build.yml b/docker-compose.build.yml index 4ff0419e..47e9ed01 100644 --- a/docker-compose.build.yml +++ b/docker-compose.build.yml @@ -33,6 +33,12 @@ services: condition: service_completed_successfully volumes: - kyoo:/metadata + labels: + - "traefik.enable=true" + - "traefik.http.routers.api.rule=PathPrefix(`/api/`)" + - "traefik.http.routers.api.middlewares=api-sp" + - "traefik.http.middlewares.api-sp.stripprefix.prefixes=/api" + - "traefik.http.middlewares.api-sp.stripprefix.forceSlash=false" migrations: build: @@ -50,6 +56,9 @@ services: restart: on-failure environment: - KYOO_URL=${KYOO_URL:-http://back:5000} + labels: + - "traefik.enable=true" + - "traefik.http.routers.front.rule=PathPrefix(`/`)" scanner: build: ./scanner @@ -121,20 +130,17 @@ services: - GOCODER_VAAPI_RENDERER=${GOCODER_VAAPI_RENDERER:-/dev/dri/renderD128} profiles: ['qsv'] - ingress: - image: nginx - restart: on-failure - environment: - - PORT=8901 - - FRONT_URL=http://front:8901 - - BACK_URL=${KYOO_URL:-http://back:5000} - volumes: - - ./nginx.conf.template:/etc/nginx/templates/kyoo.conf.template:ro - depends_on: - - back - - front + traefik: + image: traefik:v2.11 + command: + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entryPoints.web.address=:8901" + - "--accesslog=true" ports: - "8901:8901" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" postgres: image: postgres:15 diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 6f2fa693..523496f5 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -45,6 +45,12 @@ services: - ./back:/app - /app/out/ - kyoo:/metadata + labels: + - "traefik.enable=true" + - "traefik.http.routers.api.rule=PathPrefix(`/api/`)" + - "traefik.http.routers.api.middlewares=api-sp" + - "traefik.http.middlewares.api-sp.stripprefix.prefixes=/api" + - "traefik.http.middlewares.api-sp.stripprefix.forceSlash=false" migrations: build: @@ -74,6 +80,9 @@ services: restart: on-failure environment: - KYOO_URL=${KYOO_URL:-http://back:5000} + labels: + - "traefik.enable=true" + - "traefik.http.routers.front.rule=PathPrefix(`/`)" scanner: build: ./scanner @@ -145,17 +154,17 @@ services: - GOCODER_VAAPI_RENDERER=${GOCODER_VAAPI_RENDERER:-/dev/dri/renderD128} profiles: ['qsv'] - ingress: - image: nginx - restart: on-failure - environment: - - PORT=8901 - - FRONT_URL=http://front:3000 - - BACK_URL=${KYOO_URL:-http://back:5000} - volumes: - - ./nginx.conf.template:/etc/nginx/templates/kyoo.conf.template:ro + traefik: + image: traefik:v2.11 + command: + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entryPoints.web.address=:8901" + - "--accesslog=true" ports: - "8901:8901" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" postgres: image: postgres:15 diff --git a/docker-compose.yml b/docker-compose.yml index 32e51611..ef92e184 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,6 +34,12 @@ services: condition: service_completed_successfully volumes: - kyoo:/metadata + labels: + - "traefik.enable=true" + - "traefik.http.routers.api.rule=PathPrefix(`/api/`)" + - "traefik.http.routers.api.middlewares=api-sp" + - "traefik.http.middlewares.api-sp.stripprefix.prefixes=/api" + - "traefik.http.middlewares.api-sp.stripprefix.forceSlash=false" migrations: image: ghcr.io/zoriya/kyoo_migrations:edge @@ -49,6 +55,9 @@ services: restart: unless-stopped environment: - KYOO_URL=${KYOO_URL:-http://back:5000} + labels: + - "traefik.enable=true" + - "traefik.http.routers.front.rule=PathPrefix(`/`)" scanner: image: ghcr.io/zoriya/kyoo_scanner:edge @@ -120,20 +129,17 @@ services: - GOCODER_VAAPI_RENDERER=${GOCODER_VAAPI_RENDERER:-/dev/dri/renderD128} profiles: ['qsv'] - ingress: - image: nginx - restart: unless-stopped - environment: - - PORT=8901 - - FRONT_URL=http://front:8901 - - BACK_URL=${KYOO_URL:-http://back:5000} - volumes: - - ./nginx.conf.template:/etc/nginx/templates/kyoo.conf.template:ro - depends_on: - - back - - front + traefik: + image: traefik:v2.11 + command: + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entryPoints.web.address=:8901" + - "--accesslog=true" ports: - "8901:8901" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" postgres: image: postgres:15 diff --git a/nginx.conf.template b/nginx.conf.template deleted file mode 100644 index 7d018741..00000000 --- a/nginx.conf.template +++ /dev/null @@ -1,18 +0,0 @@ -server { - listen ${PORT}; - root /usr/share/nginx/html; - - location / { - proxy_pass ${FRONT_URL}; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - - location /api/ { - proxy_pass ${BACK_URL}/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } -}