mirror of
				https://github.com/elyby/accounts.git
				synced 2025-05-31 14:11:46 +05:30 
			
		
		
		
	Readme
This commit is contained in:
		@@ -2,15 +2,13 @@
 | 
			
		||||
## Application environment
 | 
			
		||||
YII_DEBUG=true
 | 
			
		||||
YII_ENV=dev
 | 
			
		||||
DOMAIN=https://account.ely.by
 | 
			
		||||
DOMAIN=http://localhost
 | 
			
		||||
AUTHSERVER_HOST=authserver.ely.by
 | 
			
		||||
EMAILS_RENDERER_HOST=http://emails-renderer:3000
 | 
			
		||||
 | 
			
		||||
## Security params
 | 
			
		||||
JWT_USER_SECRET=
 | 
			
		||||
JWT_ENCRYPTION_KEY=
 | 
			
		||||
JWT_PUBLIC_KEY_PATH=
 | 
			
		||||
JWT_PRIVATE_KEY_PATH=
 | 
			
		||||
JWT_PRIVATE_KEY_PASS=
 | 
			
		||||
JWT_USER_SECRET=replace_me_for_production
 | 
			
		||||
JWT_ENCRYPTION_KEY=thisisadummyvalue32latterslength
 | 
			
		||||
 | 
			
		||||
## External services
 | 
			
		||||
RECAPTCHA_PUBLIC=
 | 
			
		||||
@@ -37,25 +35,13 @@ REDIS_DATABASE=0
 | 
			
		||||
REDIS_PASSWORD=
 | 
			
		||||
 | 
			
		||||
## StatsD metrics params
 | 
			
		||||
STATSD_HOST=statsd.ely.by
 | 
			
		||||
STATSD_HOST=
 | 
			
		||||
STATSD_PORT=8125
 | 
			
		||||
# This value can be blank
 | 
			
		||||
STATSD_NAMESPACE=
 | 
			
		||||
 | 
			
		||||
## Dev-only params
 | 
			
		||||
## Xdebug configuration params
 | 
			
		||||
XDEBUG_CONFIG=remote_host=10.254.254.254
 | 
			
		||||
PHP_IDE_CONFIG=serverName=docker
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Web
 | 
			
		||||
VIRTUAL_HOST=account.ely.by,authserver.ely.by
 | 
			
		||||
AUTHSERVER_HOST=authserver.ely.by
 | 
			
		||||
# LETSENCRYPT_HOST=account.ely.by
 | 
			
		||||
# LETSENCRYPT_EMAIL=erickskrauch@ely.by
 | 
			
		||||
 | 
			
		||||
# MariaDB
 | 
			
		||||
ALLOW_EMPTY_PASSWORD=yes
 | 
			
		||||
MARIADB_ROOT_PASSWORD=
 | 
			
		||||
MARIADB_DATABASE=ely_accounts
 | 
			
		||||
MARIADB_USER=ely_accounts_user
 | 
			
		||||
MARIADB_PASSWORD=ely_accounts_password
 | 
			
		||||
# Use the next line if you're using Docker on Windows or Mac:
 | 
			
		||||
# XDEBUG_CONFIG=remote_host=host.docker.internal
 | 
			
		||||
PHP_IDE_CONFIG=serverName=accounts-elyby
 | 
			
		||||
							
								
								
									
										118
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										118
									
								
								README.md
									
									
									
									
									
								
							@@ -1,97 +1,85 @@
 | 
			
		||||
# Accounts Ely.by
 | 
			
		||||
 | 
			
		||||
## Развёртывание dev [backend]
 | 
			
		||||
Сервис управления Аккаунтами Ely.by, предоставляющий единую точку входа для наших и внешних сервисов по протоколу
 | 
			
		||||
OAuth2, а также реализующий сервер авторизации для серверов Minecraft и частично реализующий совместимое с API Mojang
 | 
			
		||||
для получения информации об аккаунтах.
 | 
			
		||||
 | 
			
		||||
Предварительно нужно установить [git](https://git-scm.com/downloads),
 | 
			
		||||
[docker](https://docs.docker.com/engine/installation/) и его
 | 
			
		||||
[docker-compose](https://docs.docker.com/compose/install/).
 | 
			
		||||
**Предупреждение**: этот проект не предназначен для использования вне экосистемы сервисов Ely.by.
 | 
			
		||||
 | 
			
		||||
За тем нужно установить, настроить и запустить [nginx-proxy](https://gitlab.com/elyby/nginx-proxy)
 | 
			
		||||
контейнер. Это делается один раз в рамках системы и в дальнейшем используется и для других проектов.
 | 
			
		||||
## Разработка
 | 
			
		||||
 | 
			
		||||
Также необходимо иметь доступ к `registry.ely.by`. Для этого выполнить команду `docker login registry.ely.by`,
 | 
			
		||||
ввести свой логин и пароль. Если доступа нету, то нужно его попросить у кого-нибудь, кто может его выдать.
 | 
			
		||||
Проект ориентирован на работу в Docker окружении, так что для полноценной работы проекта запускать его следует именно в
 | 
			
		||||
окружении Docker-контейнера. Ссылки на установки:
 | 
			
		||||
- [Docker](https://docs.docker.com/install/)
 | 
			
		||||
- [docker-compose](https://docs.docker.com/compose/install/)
 | 
			
		||||
 | 
			
		||||
За тем сливаем репозиторий:
 | 
			
		||||
Далее необходимо создать форк репозитория, а после клонировать его:
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
git clone git@gitlab.ely.by:elyby/accounts.git account.ely.by
 | 
			
		||||
cd account.ely.by
 | 
			
		||||
git clone git@github.com:<your_username>/accounts.git
 | 
			
		||||
cd accounts
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Далее нужно создать `.env`, `docker-compose.yml` и `id_rsa` файлы:
 | 
			
		||||
Затем необходимо создать локальные файлы `.env` и `docker-compose.yml`:
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
cp .env-dist .env
 | 
			
		||||
cp docker-compose.dev.yml docker-compose.yml
 | 
			
		||||
cp ~/.ssh/id_rsa id_rsa # Использовать ссылку нельзя
 | 
			
		||||
cp .env.dist .env
 | 
			
		||||
cp docker-compose.dist.yml docker-compose.yml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Касательно файла id_rsa**: часть зависимостей находятся в наших приватных репозиториях, получить
 | 
			
		||||
доступ куда можно только в том случае, если в контейнере окажется ключ, который имеет доступ к этим
 | 
			
		||||
репозиториям.
 | 
			
		||||
Скопированные файлы можно изменить под условия локальной среды разработки, но в общем случае они пригодны для
 | 
			
		||||
использования без вашего вмешательства.
 | 
			
		||||
 | 
			
		||||
Все вышеперечисленные файлы находятся под gitignore, так что с конечными файлами можно произвести
 | 
			
		||||
все необходимые манипуляции под конкретную задачу разработки. **В файле `.env` обязательно следует
 | 
			
		||||
задать `JWT_USER_SECRET`, иначе авторизация на бекенде не заработает.**
 | 
			
		||||
Контейнеры не умеют автоматически устанавливать зависимости, так что их нужно установить самостоятельно. Если у вас в
 | 
			
		||||
системе установлен `php` и `composer`, то можно установить зависимости через команду `composer install`. Вы также всегда
 | 
			
		||||
можете установить зависимости с помощью контейнера:
 | 
			
		||||
 | 
			
		||||
После этого просто выполняем старт всех контейнеров:
 | 
			
		||||
```sh
 | 
			
		||||
docker-compose run --rm --no-deps app composer install
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
При первом запуске произойдёт процесс загрузки и построения необходимых образов, после чего все контейнеры начнут
 | 
			
		||||
свою работу, и вы сможете приступить к разработке.
 | 
			
		||||
 | 
			
		||||
Для запуска всех контейнеров, используйте следующую команду:
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
docker-compose up -d
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Контейнеры автоматически сбилдятся и начнут свою работу.
 | 
			
		||||
По умолчанию, в `docker-compose.yml` указан `80` порт для самого сервиса, а также `8080` порт для подключения
 | 
			
		||||
к phpMyAdmin. Если сервисы `web` и `phpmyadmin` выбросят ошибку, связанную с занятостью портов, то необходимо или
 | 
			
		||||
освободить необходимые порты (`80` и `8080`), или же изменить их, после чего заново выполнить команду
 | 
			
		||||
`docker-compose up -d`.
 | 
			
		||||
 | 
			
		||||
## Развёртывание dev [frontend]
 | 
			
		||||
### Пользовательский интерфейс
 | 
			
		||||
 | 
			
		||||
Чтобы поднять сборку frontend приложения, необходимо иметь установленный в системе [Node.js](https://nodejs.org)
 | 
			
		||||
версии 5.x или 6.x, а так же npm 3-ей версии (`npm i -g npm` для обновления).
 | 
			
		||||
Этот репозиторий содержит в себе только код для API бекенда, в то время как интерфейс находится в
 | 
			
		||||
[соседнем репозитории](https://github.com/elyby/accounts-frontend). Пользователи Linux и Mac могут использовать
 | 
			
		||||
следующий скрипт, чтобы получить последнюю версию пользовательского интерфейса:
 | 
			
		||||
 | 
			
		||||
За тем переходим в папку `frontend` и устанавливаем зависимости:
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
cd frontend
 | 
			
		||||
npm i
 | 
			
		||||
```bash
 | 
			
		||||
curl -s https://api.github.com/repos/elyby/accounts-frontend/releases/latest \
 | 
			
		||||
 | grep "browser_download_url.*tar.gz" \
 | 
			
		||||
 | cut -d : -f 2,3 \
 | 
			
		||||
 | tr -d \" \
 | 
			
		||||
 | xargs curl -sLo /tmp/accounts-frontend.tar.gz \
 | 
			
		||||
&& rm -rf frontend \
 | 
			
		||||
&& mkdir -p frontend \
 | 
			
		||||
&& tar -zxf /tmp/accounts-frontend.tar.gz -C frontend \
 | 
			
		||||
&& rm -f /tmp/accounts-frontend.tar.gz
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
После того, как все зависимости будут установлены, можно поднять dev-сервер. Здесь есть 2 пути: можно, следуя
 | 
			
		||||
инструкции выше, поднять backend на своей машине через Docker. Если же разработка не привязывается к специфичной
 | 
			
		||||
версии backend, то более быстрым и удобным способ будет использовать наш dev-сервер, расположенный под адресу
 | 
			
		||||
https://dev.account.ely.by.
 | 
			
		||||
Если этот скрипт не сработал для вас, то вы можете самостоятельно перейти на
 | 
			
		||||
[страницу релизов](https://github.com/elyby/accounts-frontend/releases), скачать подходящий `build`-архив и
 | 
			
		||||
разархивировать всё его содержимое в папку `frontend`. 
 | 
			
		||||
 | 
			
		||||
В любом из случаев необходимо в папке `frontend/config` скопировать файл `template.env.js` в `env.js` (находится
 | 
			
		||||
под .gitignore) и указать в параметре `apiHost` или свой локальный сервер (тот хост, что был указан в .env
 | 
			
		||||
как `VIRTUAL_HOST`), или указав просто `https://dev.account.ely.by`.
 | 
			
		||||
### Как войти в работающий контейнер
 | 
			
		||||
 | 
			
		||||
После того, как это будет сделано, запускаем dev-сервер (находясь в папке frontend):
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
npm start
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
dev-сервер поднимется на 8080 порту и будет доступен по адресу http://localhost:8080.
 | 
			
		||||
 | 
			
		||||
### Как влезть в работающий контейнер
 | 
			
		||||
 | 
			
		||||
Начиная с версии docker-compose 1.9.0, появилась команда `docker-compose exec`, которая позволяет выполнить
 | 
			
		||||
на работающем контейнере произвольную команду, основываясь на имени сервиса в compose файле.
 | 
			
		||||
Начиная с версии `docker-compose` 1.9.0, была добавлена команда `docker-compose exec`, которая позволяет выполнить
 | 
			
		||||
на работающем контейнере произвольную команду, основываясь на имени сервиса в compose-файле. Так, например, чтобы
 | 
			
		||||
войти в shell контейнера `app`, используйте следующую команду:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
docker-compose exec app bash
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
------------------------
 | 
			
		||||
 | 
			
		||||
_// Старый вариант_
 | 
			
		||||
 | 
			
		||||
Сперва, с помощью команды `docker ps` мы увидим все запущенные контейнеры. Нас интересуют значения
 | 
			
		||||
из первой колонки CONTAINER ID или NAMES. Узнать, чему они соответствуют можно прочитав название IMAGE
 | 
			
		||||
из 2 колонки. Чтобы выполнить команду внутри работабщего контейнера, нужно выполнить:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
docker exec -it accountelyby_app_1 bash
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Где `accountelyby_app_1` - одно из значений CONTAINER ID или NAMES. Для выхода из контейнера
 | 
			
		||||
используем `exit`.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
version: '3.4'
 | 
			
		||||
services:
 | 
			
		||||
  web:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts-nginx:latest
 | 
			
		||||
    image: elyby/accounts/nginx:local
 | 
			
		||||
    build:
 | 
			
		||||
      context: .
 | 
			
		||||
      target: web
 | 
			
		||||
@@ -11,14 +11,13 @@ services:
 | 
			
		||||
      - app
 | 
			
		||||
      - emails-renderer
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    ports:
 | 
			
		||||
      - 80:80
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./:/var/www/html
 | 
			
		||||
    networks:
 | 
			
		||||
      - default
 | 
			
		||||
      - nginx-proxy
 | 
			
		||||
 | 
			
		||||
  app:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts:dev
 | 
			
		||||
    image: elyby/accounts:local
 | 
			
		||||
    build:
 | 
			
		||||
      context: .
 | 
			
		||||
      target: app
 | 
			
		||||
@@ -36,7 +35,7 @@ services:
 | 
			
		||||
          - php
 | 
			
		||||
 | 
			
		||||
  worker:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts:dev
 | 
			
		||||
    image: elyby/accounts:local
 | 
			
		||||
    build:
 | 
			
		||||
      context: .
 | 
			
		||||
      target: app
 | 
			
		||||
@@ -51,7 +50,7 @@ services:
 | 
			
		||||
    env_file: .env
 | 
			
		||||
 | 
			
		||||
  cron:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts:dev
 | 
			
		||||
    image: elyby/accounts:local
 | 
			
		||||
    build:
 | 
			
		||||
      context: .
 | 
			
		||||
      target: app
 | 
			
		||||
@@ -70,17 +69,23 @@ services:
 | 
			
		||||
    image: elyby/emails-renderer:dev
 | 
			
		||||
 | 
			
		||||
  db:
 | 
			
		||||
    image: elyby/accounts/mariadb:local
 | 
			
		||||
    build:
 | 
			
		||||
      context: .
 | 
			
		||||
      target: db
 | 
			
		||||
      args:
 | 
			
		||||
        build_env: dev
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./data/mysql:/bitnami/mariadb
 | 
			
		||||
      - ./data/mariadb:/bitnami/mariadb
 | 
			
		||||
    environment:
 | 
			
		||||
      ALLOW_EMPTY_PASSWORD: "yes"
 | 
			
		||||
      MARIADB_ROOT_PASSWORD: ""
 | 
			
		||||
      MARIADB_DATABASE: ely_accounts
 | 
			
		||||
      MARIADB_USER: ely_accounts_user
 | 
			
		||||
      MARIADB_PASSWORD: ely_accounts_password
 | 
			
		||||
 | 
			
		||||
  redis:
 | 
			
		||||
    image: redis:3.0-alpine
 | 
			
		||||
    image: redis:5.0-alpine
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./data/redis:/data
 | 
			
		||||
 | 
			
		||||
@@ -113,33 +118,31 @@ services:
 | 
			
		||||
  #     ],
 | 
			
		||||
  # ];
 | 
			
		||||
  #
 | 
			
		||||
  # 2) Clone api/tests/functional.suite.dist.yml into api/test/functional.suite.yml
 | 
			
		||||
  #    and adjust Redis module host value to the "testredis".
 | 
			
		||||
  #
 | 
			
		||||
  # 3) Uncomment the next 2 services (testdb and testredis):
 | 
			
		||||
  # 2) Uncomment the next 2 services (testdb and testredis):
 | 
			
		||||
  #
 | 
			
		||||
  # testdb:
 | 
			
		||||
  #   image: elyby/accounts/mariadb:local
 | 
			
		||||
  #   build:
 | 
			
		||||
  #     context: .
 | 
			
		||||
  #     target: db
 | 
			
		||||
  #     args:
 | 
			
		||||
  #       build_env: dev
 | 
			
		||||
  #   volumes:
 | 
			
		||||
  #     - ./data/mysql-test:/var/lib/mysql
 | 
			
		||||
  #     - ./data/mariadb-test:/bitnami/mariadb
 | 
			
		||||
  #   environment:
 | 
			
		||||
  #     - MYSQL_ALLOW_EMPTY_PASSWORD=yes
 | 
			
		||||
  #     - MYSQL_ROOT_PASSWORD=
 | 
			
		||||
  #     - MYSQL_DATABASE=test
 | 
			
		||||
  #     - MYSQL_USER=test
 | 
			
		||||
  #     - MYSQL_PASSWORD=test
 | 
			
		||||
  #     ALLOW_EMPTY_PASSWORD: "yes"
 | 
			
		||||
  #     MARIADB_ROOT_PASSWORD: ""
 | 
			
		||||
  #     MARIADB_DATABASE: test
 | 
			
		||||
  #     MARIADB_USER: test
 | 
			
		||||
  #     MARIADB_PASSWORD: test
 | 
			
		||||
  #
 | 
			
		||||
  # testredis:
 | 
			
		||||
  #   image: redis:3.0-alpine
 | 
			
		||||
  #   image: redis:5.0-alpine
 | 
			
		||||
  #   volumes:
 | 
			
		||||
  #     - ./data/redis-test:/data
 | 
			
		||||
  #
 | 
			
		||||
  # 4) To run migrations on tests database you must execute slightly adjusted
 | 
			
		||||
  #    migrate command: env YII_ENV=test yii migrate
 | 
			
		||||
  # 4) To run migrations on tests' database you must execute slightly adjusted
 | 
			
		||||
  #    migrate command: "env YII_ENV=test yii migrate"
 | 
			
		||||
 | 
			
		||||
  phpmyadmin:
 | 
			
		||||
    build: ./docker/phpmyadmin
 | 
			
		||||
@@ -147,14 +150,7 @@ services:
 | 
			
		||||
      - PMA_ARBITRARY=1
 | 
			
		||||
      - PMA_USER=root
 | 
			
		||||
      - PMA_PASSWORD=
 | 
			
		||||
      - VIRTUAL_HOST=pma.account.ely.by.local # Feel free to adjust this domain
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - db
 | 
			
		||||
    networks:
 | 
			
		||||
      - default
 | 
			
		||||
      - nginx-proxy
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    external:
 | 
			
		||||
      name: nginx-proxy
 | 
			
		||||
    ports:
 | 
			
		||||
      - 8080:80
 | 
			
		||||
@@ -1,87 +0,0 @@
 | 
			
		||||
version: '3.4'
 | 
			
		||||
 | 
			
		||||
x-logging:
 | 
			
		||||
  &default-logging
 | 
			
		||||
  options:
 | 
			
		||||
    max-size: 50m
 | 
			
		||||
 | 
			
		||||
services:
 | 
			
		||||
  web:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts-nginx:latest
 | 
			
		||||
    restart: always
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - app
 | 
			
		||||
      - emails-renderer
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./frontend:/var/www/html/frontend
 | 
			
		||||
    networks:
 | 
			
		||||
      - default
 | 
			
		||||
      - nginx-proxy
 | 
			
		||||
    logging: *default-logging
 | 
			
		||||
 | 
			
		||||
  app:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts:latest
 | 
			
		||||
    restart: always
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - db
 | 
			
		||||
      - redis
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    volumes:
 | 
			
		||||
      - certs-storage:/var/www/html/data/certs
 | 
			
		||||
    networks:
 | 
			
		||||
      default:
 | 
			
		||||
        aliases:
 | 
			
		||||
          - php
 | 
			
		||||
    logging: *default-logging
 | 
			
		||||
 | 
			
		||||
  worker:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts:latest
 | 
			
		||||
    restart: always
 | 
			
		||||
    command: ['php', 'yii', 'queue/listen', '-v']
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - db
 | 
			
		||||
      - redis
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    logging: *default-logging
 | 
			
		||||
 | 
			
		||||
  cron:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts:latest
 | 
			
		||||
    restart: always
 | 
			
		||||
    command: ['crond', '-s', '/etc/cron.d', '-f', '-L', '/var/log/cron.log']
 | 
			
		||||
    stop_signal: SIGKILL
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - db
 | 
			
		||||
      - redis
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    logging: *default-logging
 | 
			
		||||
 | 
			
		||||
  emails-renderer:
 | 
			
		||||
    image: elyby/emails-renderer:dev
 | 
			
		||||
    logging: *default-logging
 | 
			
		||||
 | 
			
		||||
  db:
 | 
			
		||||
    image: registry.ely.by/elyby/accounts-mariadb:latest
 | 
			
		||||
    restart: always
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./data/mysql:/bitnami/mariadb
 | 
			
		||||
 | 
			
		||||
  redis:
 | 
			
		||||
    image: redis:3.0-alpine
 | 
			
		||||
    restart: always
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./data/redis:/data
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  certs-storage:
 | 
			
		||||
    driver: local
 | 
			
		||||
    driver_opts:
 | 
			
		||||
      type: none
 | 
			
		||||
      device: $PWD/data/certs
 | 
			
		||||
      o: bind
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  nginx-proxy:
 | 
			
		||||
    external:
 | 
			
		||||
      name: nginx-proxy
 | 
			
		||||
		Reference in New Issue
	
	Block a user