Проводя длительное время вне дома хотелось бы некоторго комфорта, в данном случае генерация картинок при помощи Fooocus с любых устройств. Все таки удаленный доступ с небольшого ноута к большому компу дома, через Moonlight или AnyDesk не то, чего бы хотелось. Поэтому реализовал доступ к локально запущенному серверу Fooocus.
Про установку Fooocus сейчас писать не буду перейду к описанию получения данной плюшки.
Ключи запуска Fooocus
В виндовом варианте есть три файла для запуска программы run.bat
run_anime.bat
run_realistic.bat
Для достижения нужного результата создать копии этих батников с дополнительными ключами запуска. Для примера взять содержимое run_anime.bat
скопировать в новый файл run_anime-online.bat
и добавить нужные заклинания:
.\python_embeded\python.exe -s Fooocus\entry_with_update.py --preset anime --listen --theme=dark --share
pause
-
--preset
- наборы предопределенных параметров, используемых для настройки Fooocus при его запуске.-
default
: конфигурация по умолчанию, используемая, если вы не указали предустановку при запуске. -
anime
: оптимизированная конфигурация для создания изображений аниме или манги с использованием модели animaPencilXL_v100. -
realistic
: конфигурация, выбранная для создания портретов и фотореалистичных изображений с использованием модели realityStockPhoto_v20, дополненной стилем пленочной фотографии LoRA SDXL. -
sai
: Базовая конфигурация, рекомендуемая Stability AI для использования базовой версии SDXL и ее Refiner. -
lcm
: оптимизированная конфигурация для сверхбыстрой генерации с использованием техники LCM и той же модели, что и параметры по умолчанию, JuggernautXL V8.
-
-
--listen
- какие адреса слушать (аналогично настройке веб сервера). Без указания конкретных адресов будет слушать все, что аналогично записи0.0.0.0
-
--port
- какой порт слушать. По умолчанию7865
-
--share
- дает доступ к API, регистрирует конечную точку в .gradio.live т.е получаем сгенерированную ссылку и без всякого гемора получаем доступ к своему серверу. В терминале будут такие строки после запуска батника:
Running on local URL: http://0.0.0.0:7865
Running on public URL: https://ab22ae794a7734893f.gradio.live
-
--theme=dark
- указывает на использование темной темы, по умолчанию светлая -
--always-high-vram
- автор рекомендует для лучшей производительности, переносит нагрузку с ОЗУ на гораздо более быструю видеопамять (еще не пользовался)
Есть еще ключи запуска, но сейчас не об них речь.
Файл запуска Fooocus
Теперь отредактируем файл run_anime-online.bat
под необходимые реалии, которые нужны на данный момент. Остальные файлы запуска с необходимыми пресетами создать по аналогии.
.\python_embeded\python.exe -s Fooocus\entry_with_update.py --preset anime --listen 192.168.30.63 --theme=dark
pause
Что изменилось: добавился конкретный адрес в локалке машины на которой запущен сервак. Удален ключ --share
ибо не маленькие и все сделаем по взрослому причем несколько вариантов.
Первый вариант доступа к серверу Fooocus
Что нужно:
- Открыть порт в фаерволе винды. По большому счету это телодвижение можно и не делать, винда сама спросит разрешение на открытия порта после запуска сервера Fooocus
Мой компьютер - Панель управления\Все элементы панели управления\Брандмауэр Защитника Windows
- Дополнительные параметры - Правила для входящих подключений - Создать правило - Для порта -Далее - Ввести порт - 7865
- Далее - Разрешить подключение - Далее - Выбрать сети - Далее - Ввести название правила - Готово
-
Поднять ВПН сервер на маршрутизаторе (есть уже давно, ничего сложного, лень писать)
-
Создать на устройствах ВПН подключение к своей домашней сетки (то же есть, капец лень описывать что делать)
-
Запустить сервер Fooocus одним из батников
Как подключаться:
-
Активировать ВПН на устройстве с которого будем заходить
-
В браузере набрать локальный адрес машины на которой запущен Fooocus
192.168.30.63:7865
Второй вариант доступа к серверу Fooocus
Этот вариант упростит жизнь пользователя (т.е. меня). Ибо все будет по красоте 😀
Что нужно:
Открыть порт в фаерволе винды.
Мой компьютер - Панель управления\Все элементы панели управления\Брандмауэр Защитника Windows
- Дополнительные параметры - Правила для входящих подключений - Создать правило - Для порта -Далее - Ввести порт - 7865
- Далее - Разрешить подключение - Далее - Выбрать сети - Далее - Ввести название правила - Готово
Создать у регистратора доменных имен еще один домен focus.wildserver.ru
Выбрать DNS - Выбрать домен wildserver.ru
- Создать подзону focus
- Сделать запись CNAME wildserver.ru
- Сохранить
Создать сертификат безопасности в Let’s Encrypt для домена focus.wildserver.ru
Зайти по SSH на сервер
Пробный прогон, нажать 1
sudo certbot certonly --dry-run -d focus.wildserver.ru -d www.focus.wildserver.ru
Если все холофо то создать сертификат
sudo certbot certonly -d focus.wildserver.ru -d www.focus.wildserver.ru
Поднять прокси сервер
Который будет посредником между сервером Fooocus запущенном на винде и внешним миром.
sudo nano /etc/apache2/sites-available/focus.wildserver.ru.80-443.conf
Вставить конфиг:
<VirtualHost *:80>
ServerName focus.wildserver.ru
ServerAlias www.focus.wildserver.ru
Redirect permanent / https://focus.wildserver.ru
</VirtualHost>
<VirtualHost *:443>
ServerName focus.wildserver.ru
ServerAdmin admin@wildserver.ru
ServerAlias www.focus.wildserver.ru
CustomLog ${APACHE_LOG_DIR}/focus.wildserver.ru.access.log combined
ErrorLog ${APACHE_LOG_DIR}/focus.wildserver.ru.error.log
SSLEngine On
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyVia full
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/focus.wildserver.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/focus.wildserver.ru/privkey.pem
<proxy *>
Require all granted
</proxy>
ProxyPass / http://192.168.30.63:7865/
ProxyPassReverse / http://192.168.30.63:7865/
</VirtualHost>
Сохранить файл Ctrl+O Enter, закрыть Ctrl+X
Проверка синтаксиса Apache
sudo apachectl configtest
Активировать виртуальный хост
sudo a2ensite focus.wildserver.ru.80-443.conf
Перезапустить веб сервер
sudo systemctl restart apache2
Error Connection errored out.
Как подключаться:
В браузере набрать focus.wildserver.ru
Третий вариант доступа к серверу Fooocus
Кто не имеет возможности или не хочет разбираться с первыми двумя вариантами. Убрать из строки запуска Fooocus ключ --listen 192.168.30.63
и добавить ключ --share
. Тогда доступ к серверу будет по сгенерированной ссылке вида https://ab22ae794a7734893f.gradio.live
. Тут я не даю никаких гарантий конфиденциальности, что там будет с запросами и сгенерированными картинками, будут они еще где то храниться или нет.
Авторизация на сервере Fooocus
Чтобы обезопаситься, хоть немного от случайных прохожих целесообразно закрыть доступ логином и паролем.
Для этого в папке fooocus
создать файл auth.json
для примера там же лежит файл auth-example.json
[
{
"user": "Логин",
"pass": "Бессмысленны-набор_символов"
}
]
После этого при входе на сервер будет запрашиваться логин и пароль.
Комментарии