mirror of
https://github.com/AbdBarho/stable-diffusion-webui-docker.git
synced 2025-10-27 00:04:16 -04:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5af482ed8c | ||
|
|
ce4e190f8f | ||
|
|
bae3590980 | ||
|
|
1588d1eecf | ||
|
|
9cbd58b3f4 | ||
|
|
089fc524d8 | ||
|
|
0d8b7d4ac8 | ||
|
|
561664ea6e | ||
|
|
77c2b2d217 | ||
|
|
6c0c610f27 | ||
|
|
dc730b7f6b | ||
|
|
15952906a1 | ||
|
|
4aaf38970a | ||
|
|
61bd38dfe4 | ||
|
|
bec4997639 | ||
|
|
44903ca3aa | ||
|
|
af409daa0e |
9
.editorconfig
Normal file
9
.editorconfig
Normal file
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
charset = utf-8
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* text=auto eol=lf
|
||||
29
.github/ISSUE_TEMPLATE/bug.md
vendored
Normal file
29
.github/ISSUE_TEMPLATE/bug.md
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
name: Bug
|
||||
about: Report a bug
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Has this issue been opened before? Check the [FAQ](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Main), the [issues](https://github.com/AbdBarho/stable-diffusion-webui-docker/issues?q=is%3Aissue) and in [the issues in the WebUI repo](https://github.com/hlky/stable-diffusion-webui)**
|
||||
|
||||
|
||||
|
||||
**Describe the bug**
|
||||
|
||||
|
||||
**Steps to Reproduce**
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Hardware / Software:**
|
||||
- OS: [e.g. Windows / Ubuntu and version]
|
||||
- GPU: [Nvidia 1660 / No GPU]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Any other context about the problem here. If applicable, add screenshots to help explain your problem.
|
||||
144
README.md
144
README.md
@@ -1,62 +1,82 @@
|
||||
# Stable Diffusion WebUI Docker
|
||||
|
||||
Run Stable Diffusion on your machine with a nice UI without any hassle!
|
||||
|
||||
This repository provides the [WebUI](https://github.com/hlky/stable-diffusion-webui) as docker for easy setup and deployment. Please note that this repo delivers all cutting-edge unstable changes from the WebUI, so expect some bugs.
|
||||
|
||||
## Setup
|
||||
|
||||
make sure you have docker installed and up to date. Download this repo and run:
|
||||
|
||||
```
|
||||
docker compose build
|
||||
```
|
||||
|
||||
you can let it build in the background while you download the different models
|
||||
|
||||
- [Stable Diffusion v1.4 (4GB)](https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media), rename to `model.ckpt`
|
||||
- (Optional) [GFPGANv1.3.pth (333MB)](https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth) to improve generated faces.
|
||||
- (Optional) [RealESRGAN_x4plus.pth (64MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth) and [RealESRGAN_x4plus_anime_6B.pth (18MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth) for super-sampling.
|
||||
|
||||
Put all of the downloaded files in the `models` folder, it should look something like this:
|
||||
|
||||
```
|
||||
models/
|
||||
├── GFPGANv1.3.pth
|
||||
├── RealESRGAN_x4plus.pth
|
||||
├── RealESRGAN_x4plus_anime_6B.pth
|
||||
└── model.ckpt
|
||||
```
|
||||
|
||||
## Run
|
||||
|
||||
After the build is done, you can run the app with:
|
||||
|
||||
```
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
Will start the app on http://localhost:7860/
|
||||
|
||||
Note: the first start will take sometime as some other models will be downloaded, these will be cached in the `cache` folder, so next runs are faster.
|
||||
|
||||
## Config
|
||||
|
||||
in the `docker-compose.yml` you can change the `CLI_ARGS` variable contains all of the variables that will be passed to [the web ui](https://github.com/hlky/stable-diffusion-webui/blob/49e6178fd82ca736f9bbc621c6b12487c300e493/webui.py).
|
||||
|
||||
By default: `--gfpgan-gpu 0 --esrgan-cpu --optimized-turbo` are given, which allow you to use this model on a 6GB GPU.
|
||||
NOTE: GFPGAN does not work on the CPU [More info here](https://github.com/AbdBarho/stable-diffusion-webui-docker/issues/4)
|
||||
|
||||
# Disclaimer
|
||||
|
||||
The authors of this project are not responsible for any content generated using this interface.
|
||||
|
||||
This license of this software forbids you from sharing any content that violates any laws, produce any harm to a person, disseminate any personal information that would be meant for harm, spread misinformation and target vulnerable groups. For the full list of restrictions please read [the license](./LICENSE).
|
||||
|
||||
# Thanks
|
||||
|
||||
Special thanks to everyone behind these awesome projects, without them, none of this would have been possible:
|
||||
|
||||
- [hlky/stable-diffusion-webui](https://github.com/hlky/stable-diffusion-webui)
|
||||
- [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
|
||||
- [CompVis/stable-diffusion](https://github.com/CompVis/stable-diffusion)
|
||||
# Stable Diffusion WebUI Docker
|
||||
|
||||
Run Stable Diffusion on your machine with a nice UI without any hassle!
|
||||
|
||||
This repository provides the [WebUI](https://github.com/hlky/stable-diffusion-webui) as a docker image for easy setup and deployment. Please note that the WebUI is experimental and evolving quickly, so expect some bugs.
|
||||
|
||||
## Features
|
||||
|
||||
- Interactive UI with many features, and more on the way!
|
||||
- Support for 6GB GPU cards.
|
||||
- GFPGAN for face reconstruction, RealESRGAN for super-sampling.
|
||||
- Experimental:
|
||||
- [Textual Inversion](https://github.com/hlky/sd-enable-textual-inversion)
|
||||
- Latent Diffusion Super Resolution
|
||||
- GoBig
|
||||
- GoLatent
|
||||
- many more!
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure you have an **up to date** version of docker installed. Download this repo and run:
|
||||
|
||||
```
|
||||
docker compose build
|
||||
```
|
||||
|
||||
you can let it build in the background while you download the different models
|
||||
|
||||
- [Stable Diffusion v1.4 (4GB)](https://www.googleapis.com/storage/v1/b/aai-blog-files/o/sd-v1-4.ckpt?alt=media), rename to `model.ckpt`
|
||||
- (Optional) [GFPGANv1.3.pth (333MB)](https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth).
|
||||
- (Optional) [RealESRGAN_x4plus.pth (64MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth) and [RealESRGAN_x4plus_anime_6B.pth (18MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth).
|
||||
- (Optional) [LDSR (2GB)](https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1) and [its configuration](https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1), rename to `LDSR.ckpt` and `LDSR.yaml` respectively.
|
||||
<!-- - (Optional) [RealESRGAN_x2plus.pth (64MB)](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth)
|
||||
- TODO: (I still need to find the RealESRGAN_x2plus_6b.pth) -->
|
||||
|
||||
Put all of the downloaded files in the `models` folder, it should look something like this:
|
||||
|
||||
```
|
||||
models/
|
||||
├── model.ckpt
|
||||
├── GFPGANv1.3.pth
|
||||
├── RealESRGAN_x4plus.pth
|
||||
├── RealESRGAN_x4plus_anime_6B.pth
|
||||
├── LDSR.ckpt
|
||||
└── LDSR.yaml
|
||||
```
|
||||
|
||||
## Run
|
||||
|
||||
After the build is done, you can run the app with:
|
||||
|
||||
```
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
Will start the app on http://localhost:7860/
|
||||
|
||||
Note: the first start will take sometime as some other models will be downloaded, these will be cached in the `cache` folder, so next runs are faster.
|
||||
|
||||
## Config
|
||||
|
||||
in the `docker-compose.yml` you can change the `CLI_ARGS` variable, which contains the arguments that will be passed to the WebUI. By default: `--extra-models-cpu --optimized-turbo` are given, which allow you to use this model on a 6GB GPU. However, some features might not be available in the mode.
|
||||
|
||||
[You can find the full list of arguments here.](https://github.com/hlky/stable-diffusion/blob/d667ff52a36b4e79526f01555bfbf85428f334ce/scripts/webui.py)
|
||||
|
||||
### FAQ
|
||||
|
||||
You can find fixes to common issues [in the wiki page.](https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Main)
|
||||
|
||||
# Disclaimer
|
||||
|
||||
The authors of this project are not responsible for any content generated using this interface.
|
||||
|
||||
This license of this software forbids you from sharing any content that violates any laws, produce any harm to a person, disseminate any personal information that would be meant for harm, spread misinformation and target vulnerable groups. For the full list of restrictions please read [the license](./LICENSE).
|
||||
|
||||
# Thanks
|
||||
|
||||
Special thanks to everyone behind these awesome projects, without them, none of this would have been possible:
|
||||
|
||||
- [hlky/stable-diffusion-webui](https://github.com/hlky/stable-diffusion-webui)
|
||||
- [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
|
||||
- [CompVis/stable-diffusion](https://github.com/CompVis/stable-diffusion)
|
||||
|
||||
@@ -2,19 +2,22 @@
|
||||
|
||||
FROM continuumio/miniconda3:4.12.0
|
||||
|
||||
|
||||
RUN conda install python=3.8.5 && conda clean -a -y
|
||||
RUN conda install pytorch==1.11.0 torchvision==0.12.0 cudatoolkit=11.3 -c pytorch && conda clean -a -y
|
||||
RUN git clone https://github.com/hlky/stable-diffusion.git && cd stable-diffusion && git reset --hard 554bd068e6f2f6bc55449a67fe017ddd77090f28
|
||||
RUN git clone https://github.com/hlky/stable-diffusion.git && cd stable-diffusion && git reset --hard ff8c2d0b709f1e4180fb19fa5c27ec28c414cedd
|
||||
RUN conda env update --file stable-diffusion/environment.yaml --name base && conda clean -a -y
|
||||
|
||||
|
||||
SHELL ["/bin/bash", "-ceuxo", "pipefail"]
|
||||
|
||||
# fonts for generating the grid
|
||||
RUN apt-get update && apt install fonts-dejavu-core && apt-get clean
|
||||
RUN apt-get update && apt install fonts-dejavu-core rsync -y && apt-get clean
|
||||
|
||||
# Note: don't update the sha of previous versions because the install will take forever
|
||||
# instead, update the repo state in a later step
|
||||
RUN cd stable-diffusion && git pull && git reset --hard fe76828926653f979263b4c9d0bf7acc75f4aad2 && \
|
||||
conda env update --file environment.yaml --name base && conda clean -a -y
|
||||
RUN cd stable-diffusion && git pull && git reset --hard c84748aa6802c2f934687883a79bde745d2a58a6 && \
|
||||
conda env update --file environment.yaml --name base && conda clean -a -y \
|
||||
&& pip install -U --no-cache-dir pyperclip
|
||||
|
||||
# download dev UI version, update the sha below in case you want some other version
|
||||
# RUN <<EOF
|
||||
@@ -28,30 +31,32 @@ RUN cd stable-diffusion && git pull && git reset --hard fe76828926653f979263b4c9
|
||||
# cd / && rm -rf stable-diffusion-webui
|
||||
# EOF
|
||||
|
||||
# Textual-inversion:
|
||||
# RUN <<EOF
|
||||
# git clone https://github.com/hlky/sd-enable-textual-inversion.git
|
||||
# cp -rf sd-enable-textual-inversion /stable-diffusion
|
||||
# EOF
|
||||
# Textual inversion
|
||||
RUN <<EOF
|
||||
git clone https://github.com/hlky/sd-enable-textual-inversion.git &&
|
||||
cd /sd-enable-textual-inversion && git reset --hard 08f9b5046552d17cf7327b30a98410222741b070 &&
|
||||
rsync -a /sd-enable-textual-inversion/ /stable-diffusion/ &&
|
||||
rm -rf /sd-enable-textual-inversion
|
||||
EOF
|
||||
|
||||
# Latent diffusion
|
||||
RUN <<EOF
|
||||
git clone https://github.com/devilismyfriend/latent-diffusion &&
|
||||
cd /latent-diffusion &&
|
||||
git reset --hard 6d61fc03f15273a457950f2cdc10dddf53ba6809 &&
|
||||
# hacks all the way down
|
||||
mv ldm ldm_latent &&
|
||||
sed -i -- 's/from ldm/from ldm_latent/g' *.py
|
||||
# dont forget to update the yaml!!
|
||||
EOF
|
||||
|
||||
|
||||
# add info
|
||||
COPY info.py /info.py
|
||||
RUN python /info.py /stable-diffusion/frontend/frontend.py
|
||||
COPY . /docker/
|
||||
RUN python /docker/info.py /stable-diffusion/frontend/frontend.py
|
||||
|
||||
WORKDIR /stable-diffusion
|
||||
ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch CLI_ARGS="" \
|
||||
GFPGAN_PATH=/stable-diffusion/src/gfpgan/experiments/pretrained_models/GFPGANv1.3.pth \
|
||||
RealESRGAN_PATH=/stable-diffusion/src/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus.pth \
|
||||
RealESRGAN_ANIME_PATH=/stable-diffusion/src/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus_anime_6B.pth
|
||||
ENV TRANSFORMERS_CACHE=/cache/transformers TORCH_HOME=/cache/torch CLI_ARGS=""
|
||||
EXPOSE 7860
|
||||
CMD \
|
||||
for path in "${GFPGAN_PATH}" "${RealESRGAN_PATH}" "${RealESRGAN_ANIME_PATH}"; do \
|
||||
name=$(basename "${path}"); \
|
||||
base=$(dirname "${path}"); \
|
||||
test -f "/models/${name}" && mkdir -p "${base}" && ln -sf "/models/${name}" "${path}" && echo "Mounted ${name}";\
|
||||
done;\
|
||||
# force facexlib cache
|
||||
mkdir -p /cache/weights/ && rm -rf /stable-diffusion/src/facexlib/facexlib/weights && \
|
||||
ln -sf /cache/weights/ /stable-diffusion/src/facexlib/facexlib/ && \
|
||||
# run, -u to not buffer stdout / stderr
|
||||
python3 -u scripts/webui.py --outdir /output --ckpt /models/model.ckpt --save-metadata ${CLI_ARGS}
|
||||
# run, -u to not buffer stdout / stderr
|
||||
CMD /docker/mount.sh && python3 -u scripts/webui.py --outdir /output --ckpt /models/model.ckpt --ldsr-dir /latent-diffusion ${CLI_ARGS}
|
||||
|
||||
@@ -9,7 +9,5 @@ file.write_text(
|
||||
Created using <a href="https://github.com/AbdBarho/stable-diffusion-webui-docker">stable-diffusion-webui-docker</a>.
|
||||
</p>
|
||||
<p>For help and advanced usage guides,
|
||||
""", 1)\
|
||||
.replace('img2img_cfg = gr.Slider(minimum=1.0, maximum=30.0', 'img2img_cfg = gr.Slider(minimum=1.0, maximum=60.0')
|
||||
|
||||
)
|
||||
""", 1)
|
||||
)
|
||||
|
||||
31
build/mount.sh
Executable file
31
build/mount.sh
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
declare -A MODELS
|
||||
MODELS["/stable-diffusion/src/gfpgan/experiments/pretrained_models/GFPGANv1.3.pth"]=GFPGANv1.3.pth
|
||||
MODELS["/stable-diffusion/src/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus.pth"]=RealESRGAN_x4plus.pth
|
||||
MODELS["/stable-diffusion/src/realesrgan/experiments/pretrained_models/RealESRGAN_x4plus_anime_6B.pth"]=RealESRGAN_x4plus_anime_6B.pth
|
||||
MODELS["/latent-diffusion/experiments/pretrained_models/model.ckpt"]=LDSR.ckpt
|
||||
# MODELS["/latent-diffusion/experiments/pretrained_models/project.yaml"]=LDSR.yaml
|
||||
|
||||
for path in "${!MODELS[@]}"; do
|
||||
name=${MODELS[$path]}
|
||||
base=$(dirname "${path}")
|
||||
from_path="/models/${name}"
|
||||
if test -f "${from_path}"; then
|
||||
mkdir -p "${base}" && ln -sf "${from_path}" "${path}" && echo "Mounted ${name}"
|
||||
else
|
||||
echo "Skipping ${name}"
|
||||
fi
|
||||
done
|
||||
|
||||
# hack for latent-diffusion
|
||||
if test -f /models/LDSR.yaml; then
|
||||
sed 's/ldm\./ldm_latent\./g' /models/LDSR.yaml >/latent-diffusion/experiments/pretrained_models/project.yaml
|
||||
fi
|
||||
|
||||
# force facexlib cache
|
||||
mkdir -p /cache/weights/
|
||||
rm -rf /stable-diffusion/src/facexlib/facexlib/weights
|
||||
ln -sf /cache/weights/ /stable-diffusion/src/facexlib/facexlib/
|
||||
2
models/.gitignore
vendored
2
models/.gitignore
vendored
@@ -2,3 +2,5 @@
|
||||
/GFPGANv1.3.pth
|
||||
/RealESRGAN_x4plus.pth
|
||||
/RealESRGAN_x4plus_anime_6B.pth
|
||||
/LDSR.ckpt
|
||||
/LDSR.yaml
|
||||
|
||||
Reference in New Issue
Block a user