Compare commits
56 Commits
7.3.0-test
...
main
Author | SHA1 | Date |
---|---|---|
|
f28b4946f8 | |
|
4c6c6da1b1 | |
|
fd09ef320f | |
|
ee7aa1292b | |
|
baa65fffb0 | |
|
b9945775e7 | |
|
3b6caca1a7 | |
|
7a7a121212 | |
|
23eb6c5a75 | |
|
da4e13ae70 | |
|
bc653726e0 | |
|
ec75c732b4 | |
|
ce1b9970dc | |
|
823ef65c52 | |
|
a51d16ae60 | |
|
0a21c307f7 | |
|
d64e20a836 | |
|
90c36902db | |
|
4400093481 | |
|
e30d96cbaa | |
|
380c3a0d0a | |
|
4d218e80d9 | |
|
36cdc5adc3 | |
|
7300fae964 | |
|
fc61b5b9b5 | |
|
391c8f7f77 | |
|
01e2213159 | |
|
5c498c346d | |
|
ef178cee04 | |
|
d58bf6e257 | |
|
915d067755 | |
|
4b112575e5 | |
|
282ceb54e8 | |
|
8fd849f799 | |
|
9ff84380ff | |
|
ce715647b0 | |
|
c19f88d8cc | |
|
4b39fbf83f | |
|
1c8af4a82f | |
|
38de98c5cd | |
|
cb7b3c2579 | |
|
eeb48a1b85 | |
|
3c75279ca5 | |
|
e6e379deb2 | |
|
800fe03c6c | |
|
8e29587369 | |
|
b21a1c374a | |
|
64afa33619 | |
|
7477361154 | |
|
feb8215424 | |
|
762faf2c5f | |
|
6979b9c1cd | |
|
23ce736cf0 | |
|
38db367f3d | |
|
20bd32b4ab | |
|
00719df3fe |
|
@ -1,22 +0,0 @@
|
||||||
DEB=mattermost_7.3.0_amd64.deb
|
|
||||||
|
|
||||||
all: md5sum create info
|
|
||||||
|
|
||||||
info:
|
|
||||||
dpkg-deb --info ${DEB}
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf control.tar.xz data.tar.xz *.deb DEBIAN/md5sums
|
|
||||||
# rm -rf files/opt
|
|
||||||
|
|
||||||
# debian stores the calcuated md5sum checksums for each file in the package
|
|
||||||
md5sum:
|
|
||||||
cd files/ && find -type f -exec md5sum '{}' \; >../DEBIAN/md5sums
|
|
||||||
|
|
||||||
create:
|
|
||||||
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz {post,pre}{inst,rm} md5sums control
|
|
||||||
cd files && tar -cvJf ../data.tar.xz .
|
|
||||||
ar rcs ${DEB} debian-binary control.tar.xz data.tar.xz
|
|
||||||
|
|
||||||
install:
|
|
||||||
dpkg --install ${DEB}
|
|
Binary file not shown.
|
@ -1,22 +0,0 @@
|
||||||
Copyright:
|
|
||||||
|
|
||||||
Copyright 2022 Jeff Carr <jcarr@wit.org>
|
|
||||||
|
|
||||||
License:
|
|
||||||
|
|
||||||
This package is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This package is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this package; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
On Debian systems, the complete text of the GNU General
|
|
||||||
Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'.
|
|
|
@ -1,6 +1,6 @@
|
||||||
.debian/mattermost*.deb
|
md5sums
|
||||||
.debian/control.tar.xz
|
/*.deb
|
||||||
.debian/data.tar.xz
|
/*.tgz
|
||||||
.debian/DEBIAN/md5sums
|
/*.tar.gz
|
||||||
.debian/files/opt/
|
/*.tar.xz
|
||||||
mattermost*tar.gz
|
/files
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
# https://github.com/invoke-ai/InvokeAI/releases # download the current version from here
|
||||||
|
|
||||||
|
# https://github.com/invoke-ai/InvokeAI/releases/tag/v2.2.5p2
|
||||||
|
# https://github.com/invoke-ai/InvokeAI/releases/download/v2.2.5p2/InvokeAI-installer-v2.2.5p2-linux.zip
|
||||||
|
|
||||||
|
VERSION=2.2.5p2
|
||||||
|
BASENAME=invokeai
|
||||||
|
|
||||||
|
all: clean extract DEBIAN build
|
||||||
|
cd .. && wit mirrors
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
update-keyring:
|
||||||
|
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
extract:
|
||||||
|
cp -r files ..
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
|
||||||
|
# make the md5sum file
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
# make the control there
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
echo Version: ${VERSION} >>DEBIAN/control
|
||||||
|
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
|
@ -0,0 +1 @@
|
||||||
|
10
|
|
@ -0,0 +1,7 @@
|
||||||
|
Source: invokeai
|
||||||
|
Build-Depends:
|
||||||
|
Package: invokeai
|
||||||
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
|
Architecture: amd64
|
||||||
|
Depends: python3-venv
|
||||||
|
Description: install the invokeai installer
|
|
@ -0,0 +1,45 @@
|
||||||
|
name: invokeai
|
||||||
|
channels:
|
||||||
|
- pytorch
|
||||||
|
- conda-forge
|
||||||
|
- defaults
|
||||||
|
dependencies:
|
||||||
|
- albumentations=0.4.3
|
||||||
|
- cudatoolkit
|
||||||
|
- einops=0.3.0
|
||||||
|
- eventlet
|
||||||
|
- flask-socketio=5.3.0
|
||||||
|
- flask=2.1.*
|
||||||
|
- flask_cors=3.0.10
|
||||||
|
- imageio-ffmpeg=0.4.2
|
||||||
|
- imageio=2.9.0
|
||||||
|
- kornia=0.6
|
||||||
|
- numpy=1.19
|
||||||
|
- opencv=4.6.0
|
||||||
|
- pillow=8.*
|
||||||
|
- pip>=22.2.2
|
||||||
|
- pudb=2019.2
|
||||||
|
- python=3.9.*
|
||||||
|
- pytorch
|
||||||
|
- pytorch-lightning=1.7.7
|
||||||
|
- send2trash=1.8.0
|
||||||
|
- streamlit
|
||||||
|
- tokenizers>=0.11.1,!=0.11.3,<0.13
|
||||||
|
- torch-fidelity=0.3.0
|
||||||
|
- torchmetrics=0.7.0
|
||||||
|
- torchvision
|
||||||
|
- transformers=4.21.3
|
||||||
|
- pip:
|
||||||
|
- getpass_asterisk
|
||||||
|
- omegaconf==2.1.1
|
||||||
|
- picklescan
|
||||||
|
- pyreadline3
|
||||||
|
- realesrgan
|
||||||
|
- taming-transformers-rom1504
|
||||||
|
- test-tube>=0.7.5
|
||||||
|
- git+https://github.com/openai/CLIP.git@main#egg=clip
|
||||||
|
- git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k_diffusion
|
||||||
|
- git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg
|
||||||
|
- git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan
|
||||||
|
- git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch
|
||||||
|
- -e .
|
|
@ -0,0 +1,47 @@
|
||||||
|
name: invokeai
|
||||||
|
channels:
|
||||||
|
- pytorch
|
||||||
|
- conda-forge
|
||||||
|
- defaults
|
||||||
|
dependencies:
|
||||||
|
- python=3.9.*
|
||||||
|
- pip=22.2.2
|
||||||
|
- numpy=1.23.3
|
||||||
|
- pip:
|
||||||
|
- --extra-index-url https://download.pytorch.org/whl/rocm5.2/
|
||||||
|
- albumentations==0.4.3
|
||||||
|
- diffusers==0.6.0
|
||||||
|
- einops==0.3.0
|
||||||
|
- eventlet
|
||||||
|
- flask==2.1.3
|
||||||
|
- flask_cors==3.0.10
|
||||||
|
- flask_socketio==5.3.0
|
||||||
|
- getpass_asterisk
|
||||||
|
- imageio-ffmpeg==0.4.2
|
||||||
|
- imageio==2.9.0
|
||||||
|
- kornia==0.6.0
|
||||||
|
- omegaconf==2.2.3
|
||||||
|
- opencv-python==4.5.5.64
|
||||||
|
- picklescan
|
||||||
|
- pillow==9.2.0
|
||||||
|
- pudb==2019.2
|
||||||
|
- pyreadline3
|
||||||
|
- pytorch-lightning==1.7.7
|
||||||
|
- realesrgan
|
||||||
|
- send2trash==1.8.0
|
||||||
|
- streamlit==1.12.0
|
||||||
|
- taming-transformers-rom1504
|
||||||
|
- test-tube>=0.7.5
|
||||||
|
- tqdm
|
||||||
|
- torch
|
||||||
|
- torch-fidelity==0.3.0
|
||||||
|
- torchaudio
|
||||||
|
- torchmetrics==0.7.0
|
||||||
|
- torchvision
|
||||||
|
- transformers==4.21.3
|
||||||
|
- git+https://github.com/openai/CLIP.git@main#egg=clip
|
||||||
|
- git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion
|
||||||
|
- git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg
|
||||||
|
- git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan
|
||||||
|
- git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch
|
||||||
|
- -e .
|
|
@ -0,0 +1,46 @@
|
||||||
|
name: invokeai
|
||||||
|
channels:
|
||||||
|
- pytorch
|
||||||
|
- conda-forge
|
||||||
|
- defaults
|
||||||
|
dependencies:
|
||||||
|
- python=3.9.*
|
||||||
|
- pip=22.2.2
|
||||||
|
- numpy=1.23.3
|
||||||
|
- torchvision=0.13.1
|
||||||
|
- torchaudio=0.12.1
|
||||||
|
- pytorch=1.12.1
|
||||||
|
- cudatoolkit=11.6
|
||||||
|
- pip:
|
||||||
|
- albumentations==0.4.3
|
||||||
|
- diffusers==0.6.0
|
||||||
|
- einops==0.3.0
|
||||||
|
- eventlet
|
||||||
|
- flask==2.1.3
|
||||||
|
- flask_cors==3.0.10
|
||||||
|
- flask_socketio==5.3.0
|
||||||
|
- getpass_asterisk
|
||||||
|
- imageio-ffmpeg==0.4.2
|
||||||
|
- imageio==2.9.0
|
||||||
|
- kornia==0.6.0
|
||||||
|
- omegaconf==2.2.3
|
||||||
|
- opencv-python==4.5.5.64
|
||||||
|
- picklescan
|
||||||
|
- pillow==9.2.0
|
||||||
|
- pudb==2019.2
|
||||||
|
- pyreadline3
|
||||||
|
- pytorch-lightning==1.7.7
|
||||||
|
- realesrgan
|
||||||
|
- send2trash==1.8.0
|
||||||
|
- streamlit==1.12.0
|
||||||
|
- taming-transformers-rom1504
|
||||||
|
- test-tube>=0.7.5
|
||||||
|
- torch-fidelity==0.3.0
|
||||||
|
- torchmetrics==0.7.0
|
||||||
|
- transformers==4.21.3
|
||||||
|
- git+https://github.com/openai/CLIP.git@main#egg=clip
|
||||||
|
- git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion
|
||||||
|
- git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg
|
||||||
|
- git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan
|
||||||
|
- git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch
|
||||||
|
- -e .
|
|
@ -0,0 +1,65 @@
|
||||||
|
name: invokeai
|
||||||
|
channels:
|
||||||
|
- pytorch
|
||||||
|
- conda-forge
|
||||||
|
- defaults
|
||||||
|
dependencies:
|
||||||
|
- python=3.10
|
||||||
|
- pip>=22.2
|
||||||
|
- pytorch=1.12
|
||||||
|
- pytorch-lightning=1.7
|
||||||
|
- torchvision=0.13
|
||||||
|
- torchmetrics=0.10
|
||||||
|
- torch-fidelity=0.3
|
||||||
|
|
||||||
|
# I suggest to keep the other deps sorted for convenience.
|
||||||
|
# To determine what the latest versions should be, run:
|
||||||
|
#
|
||||||
|
# ```shell
|
||||||
|
# sed -E 's/invokeai/invokeai-updated/;20,99s/- ([^=]+)==.+/- \1/' environment-mac.yml > environment-mac-updated.yml
|
||||||
|
# CONDA_SUBDIR=osx-arm64 conda env create -f environment-mac-updated.yml && conda list -n invokeai-updated | awk ' {print " - " $1 "==" $2;} '
|
||||||
|
# ```
|
||||||
|
|
||||||
|
- albumentations=1.2
|
||||||
|
- coloredlogs=15.0
|
||||||
|
- diffusers=0.6
|
||||||
|
- einops=0.3
|
||||||
|
- eventlet
|
||||||
|
- grpcio=1.46
|
||||||
|
- flask=2.1
|
||||||
|
- flask-socketio=5.3
|
||||||
|
- flask-cors=3.0
|
||||||
|
- humanfriendly=10.0
|
||||||
|
- imageio=2.21
|
||||||
|
- imageio-ffmpeg=0.4
|
||||||
|
- imgaug=0.4
|
||||||
|
- kornia=0.6
|
||||||
|
- mpmath=1.2
|
||||||
|
- nomkl=3
|
||||||
|
- numpy=1.23
|
||||||
|
- omegaconf=2.1
|
||||||
|
- openh264=2.3
|
||||||
|
- onnx=1.12
|
||||||
|
- onnxruntime=1.12
|
||||||
|
- pudb=2019.2
|
||||||
|
- protobuf=3.20
|
||||||
|
- py-opencv=4.6
|
||||||
|
- scipy=1.9
|
||||||
|
- streamlit=1.12
|
||||||
|
- sympy=1.10
|
||||||
|
- send2trash=1.8
|
||||||
|
- tensorboard=2.10
|
||||||
|
- transformers=4.23
|
||||||
|
- pip:
|
||||||
|
- getpass_asterisk
|
||||||
|
- picklescan
|
||||||
|
- taming-transformers-rom1504
|
||||||
|
- test-tube==0.7.5
|
||||||
|
- git+https://github.com/openai/CLIP.git@main#egg=clip
|
||||||
|
- git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion
|
||||||
|
- git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg
|
||||||
|
- git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan
|
||||||
|
- git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch
|
||||||
|
- -e .
|
||||||
|
variables:
|
||||||
|
PYTORCH_ENABLE_MPS_FALLBACK: 1
|
|
@ -0,0 +1,46 @@
|
||||||
|
name: invokeai
|
||||||
|
channels:
|
||||||
|
- pytorch
|
||||||
|
- conda-forge
|
||||||
|
- defaults
|
||||||
|
dependencies:
|
||||||
|
- python=3.10.*
|
||||||
|
- pip=22.2.2
|
||||||
|
- numpy=1.23.3
|
||||||
|
- torchvision=0.13.1
|
||||||
|
- torchaudio=0.12.1
|
||||||
|
- pytorch=1.12.1
|
||||||
|
- cudatoolkit=11.6
|
||||||
|
- pip:
|
||||||
|
- albumentations==0.4.3
|
||||||
|
- diffusers==0.6.0
|
||||||
|
- einops==0.3.0
|
||||||
|
- eventlet
|
||||||
|
- flask==2.1.3
|
||||||
|
- flask_cors==3.0.10
|
||||||
|
- flask_socketio==5.3.0
|
||||||
|
- getpass_asterisk
|
||||||
|
- imageio-ffmpeg==0.4.2
|
||||||
|
- imageio==2.9.0
|
||||||
|
- kornia==0.6.0
|
||||||
|
- omegaconf==2.2.3
|
||||||
|
- opencv-python==4.5.5.64
|
||||||
|
- picklescan
|
||||||
|
- pillow==9.2.0
|
||||||
|
- pudb==2019.2
|
||||||
|
- pyreadline3
|
||||||
|
- pytorch-lightning==1.7.7
|
||||||
|
- realesrgan
|
||||||
|
- send2trash==1.8.0
|
||||||
|
- streamlit==1.12.0
|
||||||
|
- taming-transformers-rom1504
|
||||||
|
- test-tube>=0.7.5
|
||||||
|
- torch-fidelity==0.3.0
|
||||||
|
- torchmetrics==0.7.0
|
||||||
|
- transformers==4.21.3
|
||||||
|
- git+https://github.com/openai/CLIP.git@main#egg=clip
|
||||||
|
- git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k_diffusion
|
||||||
|
- git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg
|
||||||
|
- git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.1#egg=gfpgan
|
||||||
|
- git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch
|
||||||
|
- -e .
|
|
@ -0,0 +1,40 @@
|
||||||
|
# pip will resolve the version which matches torch
|
||||||
|
albumentations
|
||||||
|
diffusers==0.10.*
|
||||||
|
dnspython==2.2.1
|
||||||
|
einops
|
||||||
|
eventlet
|
||||||
|
facexlib
|
||||||
|
flask==2.1.3
|
||||||
|
flask_cors==3.0.10
|
||||||
|
flask_socketio==5.3.0
|
||||||
|
flaskwebgui==1.0.3
|
||||||
|
getpass_asterisk
|
||||||
|
gfpgan==1.3.8
|
||||||
|
huggingface-hub
|
||||||
|
imageio
|
||||||
|
imageio-ffmpeg
|
||||||
|
kornia
|
||||||
|
numpy==1.23.*
|
||||||
|
omegaconf
|
||||||
|
opencv-python
|
||||||
|
picklescan
|
||||||
|
pillow
|
||||||
|
pip>=22
|
||||||
|
pudb
|
||||||
|
pyreadline3
|
||||||
|
pytorch-lightning==1.7.7
|
||||||
|
realesrgan
|
||||||
|
requests==2.25.1
|
||||||
|
scikit-image>=0.19
|
||||||
|
send2trash
|
||||||
|
streamlit
|
||||||
|
taming-transformers-rom1504
|
||||||
|
test-tube>=0.7.5
|
||||||
|
torch-fidelity
|
||||||
|
torchmetrics
|
||||||
|
transformers==4.25.*
|
||||||
|
https://github.com/Birch-san/k-diffusion/archive/refs/heads/mps.zip#egg=k-diffusion
|
||||||
|
https://github.com/invoke-ai/PyPatchMatch/archive/refs/tags/0.1.5.zip#egg=pypatchmatch
|
||||||
|
https://github.com/openai/CLIP/archive/eaa22acb90a5876642d0507623e859909230a52d.zip#egg=clip
|
||||||
|
https://github.com/invoke-ai/clipseg/archive/relaxed-python-requirement.zip#egg=clipseg
|
|
@ -0,0 +1,6 @@
|
||||||
|
-r environments-and-requirements/requirements-base.txt
|
||||||
|
# Get hardware-appropriate torch/torchvision
|
||||||
|
--extra-index-url https://download.pytorch.org/whl/rocm5.1.1 --trusted-host https://download.pytorch.org
|
||||||
|
torch
|
||||||
|
torchvision
|
||||||
|
-e .
|
|
@ -0,0 +1,3 @@
|
||||||
|
--pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
|
||||||
|
-r environments-and-requirements/requirements-base.txt
|
||||||
|
-e .
|
|
@ -0,0 +1,5 @@
|
||||||
|
--extra-index-url https://download.pytorch.org/whl/cu116 --trusted-host https://download.pytorch.org
|
||||||
|
-r environments-and-requirements/requirements-base.txt
|
||||||
|
torch
|
||||||
|
torchvision
|
||||||
|
-e .
|
|
@ -0,0 +1,6 @@
|
||||||
|
-r environments-and-requirements/requirements-base.txt
|
||||||
|
grpcio<1.51.0
|
||||||
|
protobuf==3.19.6
|
||||||
|
torch<1.13.0
|
||||||
|
torchvision<0.14.0
|
||||||
|
-e .
|
|
@ -0,0 +1,6 @@
|
||||||
|
-r environments-and-requirements/requirements-base.txt
|
||||||
|
# Get hardware-appropriate torch/torchvision
|
||||||
|
--extra-index-url https://download.pytorch.org/whl/cu116 --trusted-host https://download.pytorch.org
|
||||||
|
torch==1.12.1
|
||||||
|
torchvision==0.13.1
|
||||||
|
-e .
|
|
@ -0,0 +1,234 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# ensure we're in the correct folder in case user's CWD is somewhere else
|
||||||
|
scriptdir=$(dirname "$0")
|
||||||
|
cd "$scriptdir"
|
||||||
|
|
||||||
|
# This version number will be replaced by the one supplied to create_installers.sh.
|
||||||
|
# Do not change it here - change it in create_installers.sh.
|
||||||
|
INVOKEAI_VERSION="v2.2.5p2"
|
||||||
|
|
||||||
|
# make sure we are not already in a venv
|
||||||
|
# (don't need to check status)
|
||||||
|
deactivate >/dev/null 2>&1
|
||||||
|
|
||||||
|
INVOKE_AI_SRC=https://github.com/invoke-ai/InvokeAI/archive/refs/tags/${INVOKEAI_VERSION}.zip
|
||||||
|
INSTRUCTIONS=https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/
|
||||||
|
TROUBLESHOOTING=https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/#troubleshooting
|
||||||
|
MINIMUM_PYTHON_VERSION=3.9.0
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
|
||||||
|
function _err_exit {
|
||||||
|
if test "$1" -ne 0
|
||||||
|
then
|
||||||
|
echo -e "Error code $1; Error caught was '$2'"
|
||||||
|
if [ "$OS_NAME" == "osx" ]; then
|
||||||
|
echo "Something went wrong while installing InvokeAI and/or its requirements."
|
||||||
|
echo "You may need to use the Xcode command line tools to proceed. See step number 3 of"
|
||||||
|
echo "https://invoke-ai.github.io/InvokeAI/INSTALL_SOURCE#walk_through for"
|
||||||
|
echo "installation instructions and then run this script again."
|
||||||
|
else
|
||||||
|
echo "Something went wrong while installing InvokeAI and/or its requirements."
|
||||||
|
echo "See https://invoke-ai.github.io/InvokeAI/INSTALL_SOURCE#troubleshooting for troubleshooting"
|
||||||
|
echo "tips, or visit https://invoke-ai.github.io/InvokeAI/#installation for alternative"
|
||||||
|
echo "installation methods"
|
||||||
|
fi
|
||||||
|
read -p "Press any key to exit..."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function readinput() {
|
||||||
|
local CLEAN_ARGS=""
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
local i="$1"
|
||||||
|
case "$i" in
|
||||||
|
"-i")
|
||||||
|
if read -i "default" 2>/dev/null <<< "test"; then
|
||||||
|
CLEAN_ARGS="$CLEAN_ARGS -i \"$2\""
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
"-p")
|
||||||
|
CLEAN_ARGS="$CLEAN_ARGS -p \"$2\""
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
CLEAN_ARGS="$CLEAN_ARGS $1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
eval read $CLEAN_ARGS
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
|
||||||
|
|
||||||
|
echo "InvokeAI simple installer..."
|
||||||
|
echo ""
|
||||||
|
echo "Some of the installation steps take a long time to run. Please be patient."
|
||||||
|
echo "If the script appears to hang for more than 10 minutes, please interrupt with control-C and retry."
|
||||||
|
read -n 1 -s -r -p "<Press any key to start the install>"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
OS_NAME=$(uname -s)
|
||||||
|
case "${OS_NAME}" in
|
||||||
|
Linux*) OS_NAME="linux";;
|
||||||
|
Darwin*) OS_NAME="osx";;
|
||||||
|
*) echo "Unknown OS: $OS_NAME! This script runs only on Linux or Mac" && exit
|
||||||
|
esac
|
||||||
|
|
||||||
|
OS_ARCH=$(uname -m)
|
||||||
|
case "${OS_ARCH}" in
|
||||||
|
x86_64*) OS_ARCH="64";;
|
||||||
|
arm64*) OS_ARCH="arm64";;
|
||||||
|
*) echo "Unknown system architecture: $OS_ARCH! This script runs only on x86_64 or arm64" && exit
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "Installing for $OS_NAME-$OS_ARCH"
|
||||||
|
# confirm that python is installed and is up to date
|
||||||
|
|
||||||
|
PYTHON=""
|
||||||
|
for candidate in python3.10 python3.9 python3 python python3.11 ; do
|
||||||
|
if ppath=`which $candidate`; then
|
||||||
|
python_version=$($ppath -V | awk '{ print $2 }')
|
||||||
|
if [ $(version $python_version) -ge $(version "$MINIMUM_PYTHON_VERSION") ]; then
|
||||||
|
PYTHON=$ppath
|
||||||
|
echo Python $python_version found at $PYTHON
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "$PYTHON" ]; then
|
||||||
|
echo "A suitable Python interpreter could not be found"
|
||||||
|
echo "Please install Python 3.9 or higher before running this script. See instructions at $INSTRUCTIONS for help."
|
||||||
|
read -p "Press any key to exit"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ROOTDIR=""
|
||||||
|
while [ "$ROOTDIR" == "" ]
|
||||||
|
do
|
||||||
|
echo
|
||||||
|
readinput -e -p "Select your preferred location for the 'invokeai' directory [$HOME]: " -i $HOME input
|
||||||
|
ROOTDIR=${input:=$HOME}/invokeai
|
||||||
|
|
||||||
|
# This is surprisingly hard to do in plain Bash; easier in ZSH. Just running python in subshell is easiest.
|
||||||
|
ROOTDIR=$(python -c "from pathlib import Path; print(Path('${ROOTDIR}').expanduser().resolve())")
|
||||||
|
|
||||||
|
read -e -p "InvokeAI will be installed into $ROOTDIR. OK? [y]: " input
|
||||||
|
RESPONSE=${input:='y'}
|
||||||
|
if [ "$RESPONSE" == 'y' ]; then
|
||||||
|
if [ -e "$ROOTDIR" ]; then
|
||||||
|
echo
|
||||||
|
read -e -p "Directory "$ROOTDIR" already exists. Do you want to resume an interrupted install? [y]: " input
|
||||||
|
RESPONSE=${input:='y'}
|
||||||
|
if [ "$RESPONSE" != 'y' ]; then
|
||||||
|
ROOTDIR=""
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
mkdir -p "$ROOTDIR"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Could not create "$ROOTDIR". Try again with a different install location."
|
||||||
|
ROOTDIR=""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ROOTDIR=""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
echo
|
||||||
|
echo "** Creating Virtual Environment for InvokeAI **"
|
||||||
|
|
||||||
|
$PYTHON -mvenv "$ROOTDIR"/.venv
|
||||||
|
_err_exit $? "Python failed to create virtual environment "$ROOTDIR"/.venv. Please see $TROUBLESHOOTING for help."
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
echo
|
||||||
|
echo "** Activating Virtual Environment for InvokeAI **"
|
||||||
|
|
||||||
|
source "$ROOTDIR"/.venv/bin/activate
|
||||||
|
_err_exit $? "Failed to activate virtual evironment "$ROOTDIR"/.venv. Please see $TROUBLESHOOTING for help."
|
||||||
|
|
||||||
|
PYTHON="$ROOTDIR"/.venv/bin/python
|
||||||
|
$PYTHON -mensurepip --upgrade
|
||||||
|
$PYTHON -mpip install --upgrade pip
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
echo
|
||||||
|
echo "*** Installing InvokeAI Dependencies ***"
|
||||||
|
|
||||||
|
if [ "$OS_NAME" == "osx" ]; then
|
||||||
|
echo "macOS detected. Installing MPS and CPU support."
|
||||||
|
egrep -v '^-e .' environments-and-requirements/requirements-mac-mps-cpu.txt >requirements.txt
|
||||||
|
else
|
||||||
|
if (lsmod | grep amdgpu) &>/dev/null ; then
|
||||||
|
readinput -e -p "Linux system with AMD GPU driver detected. Install ROCm AMD accelerated support? (Otherwise, CUDA support will be installed) [n]: " input
|
||||||
|
RESPONSE=${input:='n'}
|
||||||
|
if [ "$RESPONSE" != "n" ]; then
|
||||||
|
echo "Installing ROCm (AMD) support"
|
||||||
|
egrep -v '^-e .' environments-and-requirements/requirements-lin-amd.txt >requirements.txt
|
||||||
|
else
|
||||||
|
echo "Installing CUDA support"
|
||||||
|
egrep -v '^-e .' environments-and-requirements/requirements-lin-cuda.txt >requirements.txt
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Linux system detected. Installing CUDA and CPU support."
|
||||||
|
egrep -v '^-e .' environments-and-requirements/requirements-lin-cuda.txt >requirements.txt
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
$PYTHON -mpip install --prefer-binary -r requirements.txt
|
||||||
|
_err_exit $? "Failed to install InvokeAI's dependencies."
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
echo
|
||||||
|
echo "*** Installing InvokeAI Modules and Executables ***"
|
||||||
|
$PYTHON -mpip install $INVOKE_AI_SRC
|
||||||
|
_err_exit $? "Installation of InvokeAI failed."
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
echo " *** Setting Up Root Directory "$ROOTDIR" *** "
|
||||||
|
cp -pr templates/rootdir/* "$ROOTDIR"/
|
||||||
|
cp templates/invoke.sh.in "$ROOTDIR"/invoke.sh
|
||||||
|
chmod a+rx "$ROOTDIR"/invoke.sh
|
||||||
|
cp templates/update.sh.in "$ROOTDIR"/update.sh
|
||||||
|
chmod a+rx "$ROOTDIR"/update.sh
|
||||||
|
|
||||||
|
# This allows the updater to work!
|
||||||
|
cp -pr environments-and-requirements requirements.txt "$ROOTDIR/"
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
echo
|
||||||
|
echo "*** Confguring InvokeAI ***"
|
||||||
|
pushd "$ROOTDIR" >/dev/null
|
||||||
|
$PYTHON ./.venv/bin/configure_invokeai.py --root="$ROOTDIR"
|
||||||
|
_err_exit $? "Initial configuration failed. Please see above error messages and $TROUBLESHOOTING for help."
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
popd
|
||||||
|
cp templates/invoke.sh.in "$ROOTDIR"/invoke.sh
|
||||||
|
chmod a+rx "$ROOTDIR"/invoke.sh
|
||||||
|
|
||||||
|
cp templates/update.sh.in "$ROOTDIR"/update.sh
|
||||||
|
chmod a+rx "$ROOTDIR"/update.sh
|
||||||
|
|
||||||
|
echo "You may now run InvokeAI by entering the directory $ROOTDIR and running invoke.sh:"
|
||||||
|
echo
|
||||||
|
echo " ${ROOTDIR}/invoke.sh"
|
||||||
|
echo
|
||||||
|
|
||||||
|
read -e -p "Run InvokeAI now? [y]:" input
|
||||||
|
RESPONSE=${input:='y'}
|
||||||
|
if [ "$RESPONSE" == 'y' ]; then
|
||||||
|
exec ${ROOTDIR}/invoke.sh
|
||||||
|
fi
|
|
@ -0,0 +1,52 @@
|
||||||
|
InvokeAI
|
||||||
|
|
||||||
|
Project homepage: https://github.com/invoke-ai/InvokeAI
|
||||||
|
|
||||||
|
Preparations:
|
||||||
|
|
||||||
|
You will need to install Python 3.9 or higher for this installer
|
||||||
|
to work. Instructions are given here:
|
||||||
|
https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/
|
||||||
|
|
||||||
|
Before you start the installer, please open up your system's command
|
||||||
|
line window (Terminal or Command) and type the commands:
|
||||||
|
|
||||||
|
python --version
|
||||||
|
|
||||||
|
If all is well, it will print "Python 3.X.X", where the version number
|
||||||
|
is at least 3.9.1
|
||||||
|
|
||||||
|
If this works, check the version of the Python package manager, pip:
|
||||||
|
|
||||||
|
pip --version
|
||||||
|
|
||||||
|
You should get a message that indicates that the pip package
|
||||||
|
installer was derived from Python 3.9 or 3.10. For example:
|
||||||
|
"pip 22.3.1 from /usr/bin/pip (python 3.9)"
|
||||||
|
|
||||||
|
Long Paths on Windows:
|
||||||
|
|
||||||
|
If you are on Windows, you will need to enable Windows Long Paths to
|
||||||
|
run InvokeAI successfully. If you're not sure what this is, you
|
||||||
|
almost certainly need to do this.
|
||||||
|
|
||||||
|
Simply double-click the "WinLongPathsEnabled.reg" file located in
|
||||||
|
this directory, and approve the Windows warnings. Note that you will
|
||||||
|
need to have admin privileges in order to do this.
|
||||||
|
|
||||||
|
Launching the installer:
|
||||||
|
|
||||||
|
Windows: double-click the 'install.bat' file (while keeping it inside
|
||||||
|
the InvokeAI-Installer folder).
|
||||||
|
|
||||||
|
Linux and Mac: Please open the terminal application and run
|
||||||
|
'./install.sh' (while keeping it inside the InvokeAI-Installer
|
||||||
|
folder).
|
||||||
|
|
||||||
|
The installer will create a directory named "invokeai" in the folder
|
||||||
|
of your choice. This directory contains everything you need to run
|
||||||
|
invokeai. Once InvokeAI is up and running, you may delete the
|
||||||
|
InvokeAI-Installer folder at your convenience.
|
||||||
|
|
||||||
|
For more information, please see
|
||||||
|
https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/
|
|
@ -0,0 +1,5 @@
|
||||||
|
-r environments-and-requirements/requirements-base.txt
|
||||||
|
# Get hardware-appropriate torch/torchvision
|
||||||
|
--extra-index-url https://download.pytorch.org/whl/rocm5.1.1 --trusted-host https://download.pytorch.org
|
||||||
|
torch
|
||||||
|
torchvision
|
|
@ -0,0 +1,37 @@
|
||||||
|
@echo off
|
||||||
|
|
||||||
|
PUSHD "%~dp0"
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
call .venv\Scripts\activate.bat
|
||||||
|
set INVOKEAI_ROOT=.
|
||||||
|
|
||||||
|
echo Do you want to generate images using the
|
||||||
|
echo 1. command-line
|
||||||
|
echo 2. browser-based UI
|
||||||
|
echo 3. open the developer console
|
||||||
|
set /P restore="Please enter 1, 2 or 3: "
|
||||||
|
IF /I "%restore%" == "1" (
|
||||||
|
echo Starting the InvokeAI command-line..
|
||||||
|
python .venv\Scripts\invoke.py %*
|
||||||
|
) ELSE IF /I "%restore%" == "2" (
|
||||||
|
echo Starting the InvokeAI browser-based UI..
|
||||||
|
python .venv\Scripts\invoke.py --web %*
|
||||||
|
) ELSE IF /I "%restore%" == "3" (
|
||||||
|
echo Developer Console
|
||||||
|
echo Python command is:
|
||||||
|
where python
|
||||||
|
echo Python version is:
|
||||||
|
python --version
|
||||||
|
echo *************************
|
||||||
|
echo You are now in the system shell, with the local InvokeAI Python virtual environment activated,
|
||||||
|
echo so that you can troubleshoot this InvokeAI installation as necessary.
|
||||||
|
echo *************************
|
||||||
|
echo *** Type `exit` to quit this shell and deactivate the Python virtual environment ***
|
||||||
|
call cmd /k
|
||||||
|
) ELSE (
|
||||||
|
echo Invalid selection
|
||||||
|
pause
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
endlocal
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# ensure we're in the correct folder in case user's CWD is somewhere else
|
||||||
|
scriptdir=$(dirname "$0")
|
||||||
|
cd "$scriptdir"
|
||||||
|
|
||||||
|
. .venv/bin/activate
|
||||||
|
|
||||||
|
export INVOKEAI_ROOT="$scriptdir"
|
||||||
|
|
||||||
|
# set required env var for torch on mac MPS
|
||||||
|
if [ "$(uname -s)" == "Darwin" ]; then
|
||||||
|
export PYTORCH_ENABLE_MPS_FALLBACK=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$0" != "bash" ]; then
|
||||||
|
echo "Do you want to generate images using the"
|
||||||
|
echo "1. command-line"
|
||||||
|
echo "2. browser-based UI"
|
||||||
|
echo "3. open the developer console"
|
||||||
|
read -p "Please enter 1, 2, or 3: " yn
|
||||||
|
case $yn in
|
||||||
|
1 ) printf "\nStarting the InvokeAI command-line..\n"; .venv/bin/python .venv/bin/invoke.py $*;;
|
||||||
|
2 ) printf "\nStarting the InvokeAI browser-based UI..\n"; .venv/bin/python .venv/bin/invoke.py --web $*;;
|
||||||
|
3 ) printf "\nDeveloper Console:\n"; file_name=$(basename "${BASH_SOURCE[0]}"); bash --init-file "$file_name";;
|
||||||
|
* ) echo "Invalid selection"; exit;;
|
||||||
|
esac
|
||||||
|
else # in developer console
|
||||||
|
python --version
|
||||||
|
echo "Press ^D to exit"
|
||||||
|
export PS1="(InvokeAI) \u@\h \w> "
|
||||||
|
fi
|
|
@ -0,0 +1,80 @@
|
||||||
|
stable-diffusion-1.5:
|
||||||
|
description: The newest Stable Diffusion version 1.5 weight file (4.27 GB)
|
||||||
|
repo_id: runwayml/stable-diffusion-v1-5
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: v1-5-pruned-emaonly.ckpt
|
||||||
|
recommended: true
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
inpainting-1.5:
|
||||||
|
description: RunwayML SD 1.5 model optimized for inpainting (4.27 GB)
|
||||||
|
repo_id: runwayml/stable-diffusion-inpainting
|
||||||
|
config: v1-inpainting-inference.yaml
|
||||||
|
file: sd-v1-5-inpainting.ckpt
|
||||||
|
recommended: True
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
ft-mse-improved-autoencoder-840000:
|
||||||
|
description: StabilityAI improved autoencoder fine-tuned for human faces (recommended; 335 MB)
|
||||||
|
repo_id: stabilityai/sd-vae-ft-mse-original
|
||||||
|
config: VAE/default
|
||||||
|
file: vae-ft-mse-840000-ema-pruned.ckpt
|
||||||
|
recommended: True
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
stable-diffusion-1.4:
|
||||||
|
description: The original Stable Diffusion version 1.4 weight file (4.27 GB)
|
||||||
|
repo_id: CompVis/stable-diffusion-v-1-4-original
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: sd-v1-4.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
waifu-diffusion-1.3:
|
||||||
|
description: Stable Diffusion 1.4 fine tuned on anime-styled images (4.27 GB)
|
||||||
|
repo_id: hakurei/waifu-diffusion-v1-3
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: model-epoch09-float32.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
trinart-2.0:
|
||||||
|
description: An SD model finetuned with ~40,000 assorted high resolution manga/anime-style pictures (2.13 GB)
|
||||||
|
repo_id: naclbit/trinart_stable_diffusion_v2
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: trinart2_step95000.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
trinart_characters-1.0:
|
||||||
|
description: An SD model finetuned with 19.2M anime/manga style images (2.13 GB)
|
||||||
|
repo_id: naclbit/trinart_characters_19.2m_stable_diffusion_v1
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: trinart_characters_it4_v1.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
trinart_vae:
|
||||||
|
description: Custom autoencoder for trinart_characters
|
||||||
|
repo_id: naclbit/trinart_characters_19.2m_stable_diffusion_v1
|
||||||
|
config: VAE/trinart
|
||||||
|
file: autoencoder_fix_kl-f8-trinart_characters.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
papercut-1.0:
|
||||||
|
description: SD 1.5 fine-tuned for papercut art (use "PaperCut" in your prompts) (2.13 GB)
|
||||||
|
repo_id: Fictiverse/Stable_Diffusion_PaperCut_Model
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: PaperCut_v1.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
voxel_art-1.0:
|
||||||
|
description: Stable Diffusion trained on voxel art (use "VoxelArt" in your prompts) (4.27 GB)
|
||||||
|
repo_id: Fictiverse/Stable_Diffusion_VoxelArt_Model
|
||||||
|
config: v1-inference.yaml
|
||||||
|
file: VoxelArt_v1.ckpt
|
||||||
|
recommended: False
|
||||||
|
width: 512
|
||||||
|
height: 512
|
|
@ -0,0 +1,29 @@
|
||||||
|
# This file describes the alternative machine learning models
|
||||||
|
# available to InvokeAI script.
|
||||||
|
#
|
||||||
|
# To add a new model, follow the examples below. Each
|
||||||
|
# model requires a model config file, a weights file,
|
||||||
|
# and the width and height of the images it
|
||||||
|
# was trained on.
|
||||||
|
stable-diffusion-1.5:
|
||||||
|
description: The newest Stable Diffusion version 1.5 weight file (4.27 GB)
|
||||||
|
weights: models/ldm/stable-diffusion-v1/v1-5-pruned-emaonly.ckpt
|
||||||
|
config: configs/stable-diffusion/v1-inference.yaml
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
vae: ./models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt
|
||||||
|
default: true
|
||||||
|
stable-diffusion-1.4:
|
||||||
|
description: Stable Diffusion inference model version 1.4
|
||||||
|
config: configs/stable-diffusion/v1-inference.yaml
|
||||||
|
weights: models/ldm/stable-diffusion-v1/sd-v1-4.ckpt
|
||||||
|
vae: models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt
|
||||||
|
width: 512
|
||||||
|
height: 512
|
||||||
|
inpainting-1.5:
|
||||||
|
weights: models/ldm/stable-diffusion-v1/sd-v1-5-inpainting.ckpt
|
||||||
|
config: configs/stable-diffusion/v1-inpainting-inference.yaml
|
||||||
|
vae: models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt
|
||||||
|
description: RunwayML SD 1.5 model optimized for inpainting
|
||||||
|
width: 512
|
||||||
|
height: 512
|
|
@ -0,0 +1,803 @@
|
||||||
|
sd-concepts-library/001glitch-core
|
||||||
|
sd-concepts-library/2814-roth
|
||||||
|
sd-concepts-library/3d-female-cyborgs
|
||||||
|
sd-concepts-library/4tnght
|
||||||
|
sd-concepts-library/80s-anime-ai
|
||||||
|
sd-concepts-library/80s-anime-ai-being
|
||||||
|
sd-concepts-library/852style-girl
|
||||||
|
sd-concepts-library/8bit
|
||||||
|
sd-concepts-library/8sconception
|
||||||
|
sd-concepts-library/Aflac-duck
|
||||||
|
sd-concepts-library/Akitsuki
|
||||||
|
sd-concepts-library/Atako
|
||||||
|
sd-concepts-library/Exodus-Styling
|
||||||
|
sd-concepts-library/RINGAO
|
||||||
|
sd-concepts-library/a-female-hero-from-the-legend-of-mir
|
||||||
|
sd-concepts-library/a-hat-kid
|
||||||
|
sd-concepts-library/a-tale-of-two-empires
|
||||||
|
sd-concepts-library/aadhav-face
|
||||||
|
sd-concepts-library/aavegotchi
|
||||||
|
sd-concepts-library/abby-face
|
||||||
|
sd-concepts-library/abstract-concepts
|
||||||
|
sd-concepts-library/accurate-angel
|
||||||
|
sd-concepts-library/agm-style-nao
|
||||||
|
sd-concepts-library/aj-fosik
|
||||||
|
sd-concepts-library/alberto-mielgo
|
||||||
|
sd-concepts-library/alex-portugal
|
||||||
|
sd-concepts-library/alex-thumbnail-object-2000-steps
|
||||||
|
sd-concepts-library/aleyna-tilki
|
||||||
|
sd-concepts-library/alf
|
||||||
|
sd-concepts-library/alicebeta
|
||||||
|
sd-concepts-library/alien-avatar
|
||||||
|
sd-concepts-library/alisa
|
||||||
|
sd-concepts-library/all-rings-albuns
|
||||||
|
sd-concepts-library/altvent
|
||||||
|
sd-concepts-library/altyn-helmet
|
||||||
|
sd-concepts-library/amine
|
||||||
|
sd-concepts-library/amogus
|
||||||
|
sd-concepts-library/anders-zorn
|
||||||
|
sd-concepts-library/angus-mcbride-style
|
||||||
|
sd-concepts-library/animalve3-1500seq
|
||||||
|
sd-concepts-library/anime-background-style
|
||||||
|
sd-concepts-library/anime-background-style-v2
|
||||||
|
sd-concepts-library/anime-boy
|
||||||
|
sd-concepts-library/anime-girl
|
||||||
|
sd-concepts-library/anyXtronXredshift
|
||||||
|
sd-concepts-library/anya-forger
|
||||||
|
sd-concepts-library/apex-wingman
|
||||||
|
sd-concepts-library/apulian-rooster-v0-1
|
||||||
|
sd-concepts-library/arcane-face
|
||||||
|
sd-concepts-library/arcane-style-jv
|
||||||
|
sd-concepts-library/arcimboldo-style
|
||||||
|
sd-concepts-library/armando-reveron-style
|
||||||
|
sd-concepts-library/armor-concept
|
||||||
|
sd-concepts-library/arq-render
|
||||||
|
sd-concepts-library/art-brut
|
||||||
|
sd-concepts-library/arthur1
|
||||||
|
sd-concepts-library/artist-yukiko-kanagai
|
||||||
|
sd-concepts-library/arwijn
|
||||||
|
sd-concepts-library/ashiok
|
||||||
|
sd-concepts-library/at-wolf-boy-object
|
||||||
|
sd-concepts-library/atm-ant
|
||||||
|
sd-concepts-library/atm-ant-2
|
||||||
|
sd-concepts-library/axe-tattoo
|
||||||
|
sd-concepts-library/ayush-spider-spr
|
||||||
|
sd-concepts-library/azura-from-vibrant-venture
|
||||||
|
sd-concepts-library/ba-shiroko
|
||||||
|
sd-concepts-library/babau
|
||||||
|
sd-concepts-library/babs-bunny
|
||||||
|
sd-concepts-library/babushork
|
||||||
|
sd-concepts-library/backrooms
|
||||||
|
sd-concepts-library/bad_Hub_Hugh
|
||||||
|
sd-concepts-library/bada-club
|
||||||
|
sd-concepts-library/baldi
|
||||||
|
sd-concepts-library/baluchitherian
|
||||||
|
sd-concepts-library/bamse
|
||||||
|
sd-concepts-library/bamse-og-kylling
|
||||||
|
sd-concepts-library/bee
|
||||||
|
sd-concepts-library/beholder
|
||||||
|
sd-concepts-library/beldam
|
||||||
|
sd-concepts-library/belen
|
||||||
|
sd-concepts-library/bella-goth
|
||||||
|
sd-concepts-library/belle-delphine
|
||||||
|
sd-concepts-library/bert-muppet
|
||||||
|
sd-concepts-library/better-collage3
|
||||||
|
sd-concepts-library/between2-mt-fade
|
||||||
|
sd-concepts-library/birb-style
|
||||||
|
sd-concepts-library/black-and-white-design
|
||||||
|
sd-concepts-library/black-waifu
|
||||||
|
sd-concepts-library/bloo
|
||||||
|
sd-concepts-library/blue-haired-boy
|
||||||
|
sd-concepts-library/blue-zombie
|
||||||
|
sd-concepts-library/blue-zombiee
|
||||||
|
sd-concepts-library/bluebey
|
||||||
|
sd-concepts-library/bluebey-2
|
||||||
|
sd-concepts-library/bobs-burgers
|
||||||
|
sd-concepts-library/boissonnard
|
||||||
|
sd-concepts-library/bonzi-monkey
|
||||||
|
sd-concepts-library/borderlands
|
||||||
|
sd-concepts-library/bored-ape-textual-inversion
|
||||||
|
sd-concepts-library/boris-anderson
|
||||||
|
sd-concepts-library/bozo-22
|
||||||
|
sd-concepts-library/breakcore
|
||||||
|
sd-concepts-library/brittney-williams-art
|
||||||
|
sd-concepts-library/bruma
|
||||||
|
sd-concepts-library/brunnya
|
||||||
|
sd-concepts-library/buddha-statue
|
||||||
|
sd-concepts-library/bullvbear
|
||||||
|
sd-concepts-library/button-eyes
|
||||||
|
sd-concepts-library/canadian-goose
|
||||||
|
sd-concepts-library/canary-cap
|
||||||
|
sd-concepts-library/cancer_style
|
||||||
|
sd-concepts-library/captain-haddock
|
||||||
|
sd-concepts-library/captainkirb
|
||||||
|
sd-concepts-library/car-toy-rk
|
||||||
|
sd-concepts-library/carasibana
|
||||||
|
sd-concepts-library/carlitos-el-mago
|
||||||
|
sd-concepts-library/carrascharacter
|
||||||
|
sd-concepts-library/cartoona-animals
|
||||||
|
sd-concepts-library/cat-toy
|
||||||
|
sd-concepts-library/centaur
|
||||||
|
sd-concepts-library/cgdonny1
|
||||||
|
sd-concepts-library/cham
|
||||||
|
sd-concepts-library/chandra-nalaar
|
||||||
|
sd-concepts-library/char-con
|
||||||
|
sd-concepts-library/character-pingu
|
||||||
|
sd-concepts-library/cheburashka
|
||||||
|
sd-concepts-library/chen-1
|
||||||
|
sd-concepts-library/child-zombie
|
||||||
|
sd-concepts-library/chillpill
|
||||||
|
sd-concepts-library/chonkfrog
|
||||||
|
sd-concepts-library/chop
|
||||||
|
sd-concepts-library/christo-person
|
||||||
|
sd-concepts-library/chuck-walton
|
||||||
|
sd-concepts-library/chucky
|
||||||
|
sd-concepts-library/chungus-poodl-pet
|
||||||
|
sd-concepts-library/cindlop
|
||||||
|
sd-concepts-library/collage-cutouts
|
||||||
|
sd-concepts-library/collage14
|
||||||
|
sd-concepts-library/collage3
|
||||||
|
sd-concepts-library/collage3-hubcity
|
||||||
|
sd-concepts-library/cologne
|
||||||
|
sd-concepts-library/color-page
|
||||||
|
sd-concepts-library/colossus
|
||||||
|
sd-concepts-library/command-and-conquer-remastered-cameos
|
||||||
|
sd-concepts-library/concept-art
|
||||||
|
sd-concepts-library/conner-fawcett-style
|
||||||
|
sd-concepts-library/conway-pirate
|
||||||
|
sd-concepts-library/coop-himmelblau
|
||||||
|
sd-concepts-library/coraline
|
||||||
|
sd-concepts-library/cornell-box
|
||||||
|
sd-concepts-library/cortana
|
||||||
|
sd-concepts-library/covid-19-rapid-test
|
||||||
|
sd-concepts-library/cow-uwu
|
||||||
|
sd-concepts-library/cowboy
|
||||||
|
sd-concepts-library/crazy-1
|
||||||
|
sd-concepts-library/crazy-2
|
||||||
|
sd-concepts-library/crb-portraits
|
||||||
|
sd-concepts-library/crb-surrealz
|
||||||
|
sd-concepts-library/crbart
|
||||||
|
sd-concepts-library/crested-gecko
|
||||||
|
sd-concepts-library/crinos-form-garou
|
||||||
|
sd-concepts-library/cry-baby-style
|
||||||
|
sd-concepts-library/crybaby-style-2-0
|
||||||
|
sd-concepts-library/csgo-awp-object
|
||||||
|
sd-concepts-library/csgo-awp-texture-map
|
||||||
|
sd-concepts-library/cubex
|
||||||
|
sd-concepts-library/cumbia-peruana
|
||||||
|
sd-concepts-library/cute-bear
|
||||||
|
sd-concepts-library/cute-cat
|
||||||
|
sd-concepts-library/cute-game-style
|
||||||
|
sd-concepts-library/cyberpunk-lucy
|
||||||
|
sd-concepts-library/dabotap
|
||||||
|
sd-concepts-library/dan-mumford
|
||||||
|
sd-concepts-library/dan-seagrave-art-style
|
||||||
|
sd-concepts-library/dark-penguin-pinguinanimations
|
||||||
|
sd-concepts-library/darkpenguinanimatronic
|
||||||
|
sd-concepts-library/darkplane
|
||||||
|
sd-concepts-library/david-firth-artstyle
|
||||||
|
sd-concepts-library/david-martinez-cyberpunk
|
||||||
|
sd-concepts-library/david-martinez-edgerunners
|
||||||
|
sd-concepts-library/david-moreno-architecture
|
||||||
|
sd-concepts-library/daycare-attendant-sun-fnaf
|
||||||
|
sd-concepts-library/ddattender
|
||||||
|
sd-concepts-library/degods
|
||||||
|
sd-concepts-library/degodsheavy
|
||||||
|
sd-concepts-library/depthmap
|
||||||
|
sd-concepts-library/depthmap-style
|
||||||
|
sd-concepts-library/design
|
||||||
|
sd-concepts-library/detectivedinosaur1
|
||||||
|
sd-concepts-library/diaosu-toy
|
||||||
|
sd-concepts-library/dicoo
|
||||||
|
sd-concepts-library/dicoo2
|
||||||
|
sd-concepts-library/dishonored-portrait-styles
|
||||||
|
sd-concepts-library/disquieting-muses
|
||||||
|
sd-concepts-library/ditko
|
||||||
|
sd-concepts-library/dlooak
|
||||||
|
sd-concepts-library/doc
|
||||||
|
sd-concepts-library/doener-red-line-art
|
||||||
|
sd-concepts-library/dog
|
||||||
|
sd-concepts-library/dog-django
|
||||||
|
sd-concepts-library/doge-pound
|
||||||
|
sd-concepts-library/dong-ho
|
||||||
|
sd-concepts-library/dong-ho2
|
||||||
|
sd-concepts-library/doose-s-realistic-art-style
|
||||||
|
sd-concepts-library/dq10-anrushia
|
||||||
|
sd-concepts-library/dr-livesey
|
||||||
|
sd-concepts-library/dr-strange
|
||||||
|
sd-concepts-library/dragonborn
|
||||||
|
sd-concepts-library/dreamcore
|
||||||
|
sd-concepts-library/dreamy-painting
|
||||||
|
sd-concepts-library/drive-scorpion-jacket
|
||||||
|
sd-concepts-library/dsmuses
|
||||||
|
sd-concepts-library/dtv-pkmn
|
||||||
|
sd-concepts-library/dullboy-caricature
|
||||||
|
sd-concepts-library/duranduran
|
||||||
|
sd-concepts-library/durer-style
|
||||||
|
sd-concepts-library/dyoudim-style
|
||||||
|
sd-concepts-library/early-mishima-kurone
|
||||||
|
sd-concepts-library/eastward
|
||||||
|
sd-concepts-library/eddie
|
||||||
|
sd-concepts-library/edgerunners-style
|
||||||
|
sd-concepts-library/edgerunners-style-v2
|
||||||
|
sd-concepts-library/el-salvador-style-style
|
||||||
|
sd-concepts-library/elegant-flower
|
||||||
|
sd-concepts-library/elspeth-tirel
|
||||||
|
sd-concepts-library/eru-chitanda-casual
|
||||||
|
sd-concepts-library/erwin-olaf-style
|
||||||
|
sd-concepts-library/ettblackteapot
|
||||||
|
sd-concepts-library/explosions-cat
|
||||||
|
sd-concepts-library/eye-of-agamotto
|
||||||
|
sd-concepts-library/f-22
|
||||||
|
sd-concepts-library/facadeplace
|
||||||
|
sd-concepts-library/fairy-tale-painting-style
|
||||||
|
sd-concepts-library/fairytale
|
||||||
|
sd-concepts-library/fang-yuan-001
|
||||||
|
sd-concepts-library/faraon-love-shady
|
||||||
|
sd-concepts-library/fasina
|
||||||
|
sd-concepts-library/felps
|
||||||
|
sd-concepts-library/female-kpop-singer
|
||||||
|
sd-concepts-library/fergal-cat
|
||||||
|
sd-concepts-library/filename-2
|
||||||
|
sd-concepts-library/fileteado-porteno
|
||||||
|
sd-concepts-library/final-fantasy-logo
|
||||||
|
sd-concepts-library/fireworks-over-water
|
||||||
|
sd-concepts-library/fish
|
||||||
|
sd-concepts-library/flag-ussr
|
||||||
|
sd-concepts-library/flatic
|
||||||
|
sd-concepts-library/floral
|
||||||
|
sd-concepts-library/fluid-acrylic-jellyfish-creatures-style-of-carl-ingram-art
|
||||||
|
sd-concepts-library/fnf-boyfriend
|
||||||
|
sd-concepts-library/fold-structure
|
||||||
|
sd-concepts-library/fox-purple
|
||||||
|
sd-concepts-library/fractal
|
||||||
|
sd-concepts-library/fractal-flame
|
||||||
|
sd-concepts-library/fractal-temple-style
|
||||||
|
sd-concepts-library/frank-frazetta
|
||||||
|
sd-concepts-library/franz-unterberger
|
||||||
|
sd-concepts-library/freddy-fazbear
|
||||||
|
sd-concepts-library/freefonix-style
|
||||||
|
sd-concepts-library/furrpopasthetic
|
||||||
|
sd-concepts-library/fursona
|
||||||
|
sd-concepts-library/fzk
|
||||||
|
sd-concepts-library/galaxy-explorer
|
||||||
|
sd-concepts-library/ganyu-genshin-impact
|
||||||
|
sd-concepts-library/garcon-the-cat
|
||||||
|
sd-concepts-library/garfield-pizza-plush
|
||||||
|
sd-concepts-library/garfield-pizza-plush-v2
|
||||||
|
sd-concepts-library/gba-fe-class-cards
|
||||||
|
sd-concepts-library/gba-pokemon-sprites
|
||||||
|
sd-concepts-library/geggin
|
||||||
|
sd-concepts-library/ggplot2
|
||||||
|
sd-concepts-library/ghost-style
|
||||||
|
sd-concepts-library/ghostproject-men
|
||||||
|
sd-concepts-library/gibasachan-v0
|
||||||
|
sd-concepts-library/gim
|
||||||
|
sd-concepts-library/gio
|
||||||
|
sd-concepts-library/giygas
|
||||||
|
sd-concepts-library/glass-pipe
|
||||||
|
sd-concepts-library/glass-prism-cube
|
||||||
|
sd-concepts-library/glow-forest
|
||||||
|
sd-concepts-library/goku
|
||||||
|
sd-concepts-library/gram-tops
|
||||||
|
sd-concepts-library/green-blue-shanshui
|
||||||
|
sd-concepts-library/green-tent
|
||||||
|
sd-concepts-library/grifter
|
||||||
|
sd-concepts-library/grisstyle
|
||||||
|
sd-concepts-library/grit-toy
|
||||||
|
sd-concepts-library/gt-color-paint-2
|
||||||
|
sd-concepts-library/gta5-artwork
|
||||||
|
sd-concepts-library/guttestreker
|
||||||
|
sd-concepts-library/gymnastics-leotard-v2
|
||||||
|
sd-concepts-library/half-life-2-dog
|
||||||
|
sd-concepts-library/handstand
|
||||||
|
sd-concepts-library/hanfu-anime-style
|
||||||
|
sd-concepts-library/happy-chaos
|
||||||
|
sd-concepts-library/happy-person12345
|
||||||
|
sd-concepts-library/happy-person12345-assets
|
||||||
|
sd-concepts-library/harley-quinn
|
||||||
|
sd-concepts-library/harmless-ai-1
|
||||||
|
sd-concepts-library/harmless-ai-house-style-1
|
||||||
|
sd-concepts-library/hd-emoji
|
||||||
|
sd-concepts-library/heather
|
||||||
|
sd-concepts-library/henjo-techno-show
|
||||||
|
sd-concepts-library/herge-style
|
||||||
|
sd-concepts-library/hiten-style-nao
|
||||||
|
sd-concepts-library/hitokomoru-style-nao
|
||||||
|
sd-concepts-library/hiyuki-chan
|
||||||
|
sd-concepts-library/hk-bamboo
|
||||||
|
sd-concepts-library/hk-betweenislands
|
||||||
|
sd-concepts-library/hk-bicycle
|
||||||
|
sd-concepts-library/hk-blackandwhite
|
||||||
|
sd-concepts-library/hk-breakfast
|
||||||
|
sd-concepts-library/hk-buses
|
||||||
|
sd-concepts-library/hk-clouds
|
||||||
|
sd-concepts-library/hk-goldbuddha
|
||||||
|
sd-concepts-library/hk-goldenlantern
|
||||||
|
sd-concepts-library/hk-hkisland
|
||||||
|
sd-concepts-library/hk-leaves
|
||||||
|
sd-concepts-library/hk-market
|
||||||
|
sd-concepts-library/hk-oldcamera
|
||||||
|
sd-concepts-library/hk-opencamera
|
||||||
|
sd-concepts-library/hk-peach
|
||||||
|
sd-concepts-library/hk-phonevax
|
||||||
|
sd-concepts-library/hk-streetpeople
|
||||||
|
sd-concepts-library/hk-vintage
|
||||||
|
sd-concepts-library/hoi4
|
||||||
|
sd-concepts-library/hoi4-leaders
|
||||||
|
sd-concepts-library/homestuck-sprite
|
||||||
|
sd-concepts-library/homestuck-troll
|
||||||
|
sd-concepts-library/hours-sentry-fade
|
||||||
|
sd-concepts-library/hours-style
|
||||||
|
sd-concepts-library/hrgiger-drmacabre
|
||||||
|
sd-concepts-library/huang-guang-jian
|
||||||
|
sd-concepts-library/huatli
|
||||||
|
sd-concepts-library/huayecai820-greyscale
|
||||||
|
sd-concepts-library/hub-city
|
||||||
|
sd-concepts-library/hubris-oshri
|
||||||
|
sd-concepts-library/huckleberry
|
||||||
|
sd-concepts-library/hydrasuit
|
||||||
|
sd-concepts-library/i-love-chaos
|
||||||
|
sd-concepts-library/ibere-thenorio
|
||||||
|
sd-concepts-library/ic0n
|
||||||
|
sd-concepts-library/ie-gravestone
|
||||||
|
sd-concepts-library/ikea-fabler
|
||||||
|
sd-concepts-library/illustration-style
|
||||||
|
sd-concepts-library/ilo-kunst
|
||||||
|
sd-concepts-library/ilya-shkipin
|
||||||
|
sd-concepts-library/im-poppy
|
||||||
|
sd-concepts-library/ina-art
|
||||||
|
sd-concepts-library/indian-watercolor-portraits
|
||||||
|
sd-concepts-library/indiana
|
||||||
|
sd-concepts-library/ingmar-bergman
|
||||||
|
sd-concepts-library/insidewhale
|
||||||
|
sd-concepts-library/interchanges
|
||||||
|
sd-concepts-library/inuyama-muneto-style-nao
|
||||||
|
sd-concepts-library/irasutoya
|
||||||
|
sd-concepts-library/iridescent-illustration-style
|
||||||
|
sd-concepts-library/iridescent-photo-style
|
||||||
|
sd-concepts-library/isabell-schulte-pv-pvii-3000steps
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-1-image-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-1024px-1500-steps-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-12tiles-3000steps-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-4-tiles-1-lr-3000-steps-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-4-tiles-3-lr-5000-steps-style
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-4tiles-500steps
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-4tiles-6000steps
|
||||||
|
sd-concepts-library/isabell-schulte-pviii-style
|
||||||
|
sd-concepts-library/isometric-tile-test
|
||||||
|
sd-concepts-library/jacqueline-the-unicorn
|
||||||
|
sd-concepts-library/james-web-space-telescope
|
||||||
|
sd-concepts-library/jamie-hewlett-style
|
||||||
|
sd-concepts-library/jamiels
|
||||||
|
sd-concepts-library/jang-sung-rak-style
|
||||||
|
sd-concepts-library/jetsetdreamcastcovers
|
||||||
|
sd-concepts-library/jin-kisaragi
|
||||||
|
sd-concepts-library/jinjoon-lee-they
|
||||||
|
sd-concepts-library/jm-bergling-monogram
|
||||||
|
sd-concepts-library/joe-mad
|
||||||
|
sd-concepts-library/joe-whiteford-art-style
|
||||||
|
sd-concepts-library/joemad
|
||||||
|
sd-concepts-library/john-blanche
|
||||||
|
sd-concepts-library/johnny-silverhand
|
||||||
|
sd-concepts-library/jojo-bizzare-adventure-manga-lineart
|
||||||
|
sd-concepts-library/jos-de-kat
|
||||||
|
sd-concepts-library/junji-ito-artstyle
|
||||||
|
sd-concepts-library/kaleido
|
||||||
|
sd-concepts-library/kaneoya-sachiko
|
||||||
|
sd-concepts-library/kanovt
|
||||||
|
sd-concepts-library/kanv1
|
||||||
|
sd-concepts-library/karan-gloomy
|
||||||
|
sd-concepts-library/karl-s-lzx-1
|
||||||
|
sd-concepts-library/kasumin
|
||||||
|
sd-concepts-library/kawaii-colors
|
||||||
|
sd-concepts-library/kawaii-girl-plus-object
|
||||||
|
sd-concepts-library/kawaii-girl-plus-style
|
||||||
|
sd-concepts-library/kawaii-girl-plus-style-v1-1
|
||||||
|
sd-concepts-library/kay
|
||||||
|
sd-concepts-library/kaya-ghost-assasin
|
||||||
|
sd-concepts-library/ki
|
||||||
|
sd-concepts-library/kinda-sus
|
||||||
|
sd-concepts-library/kings-quest-agd
|
||||||
|
sd-concepts-library/kiora
|
||||||
|
sd-concepts-library/kira-sensei
|
||||||
|
sd-concepts-library/kirby
|
||||||
|
sd-concepts-library/klance
|
||||||
|
sd-concepts-library/kodakvision500t
|
||||||
|
sd-concepts-library/kogatan-shiny
|
||||||
|
sd-concepts-library/kogecha
|
||||||
|
sd-concepts-library/kojima-ayami
|
||||||
|
sd-concepts-library/koko-dog
|
||||||
|
sd-concepts-library/kuvshinov
|
||||||
|
sd-concepts-library/kysa-v-style
|
||||||
|
sd-concepts-library/laala-character
|
||||||
|
sd-concepts-library/larrette
|
||||||
|
sd-concepts-library/lavko
|
||||||
|
sd-concepts-library/lazytown-stephanie
|
||||||
|
sd-concepts-library/ldr
|
||||||
|
sd-concepts-library/ldrs
|
||||||
|
sd-concepts-library/led-toy
|
||||||
|
sd-concepts-library/lego-astronaut
|
||||||
|
sd-concepts-library/leica
|
||||||
|
sd-concepts-library/leif-jones
|
||||||
|
sd-concepts-library/lex
|
||||||
|
sd-concepts-library/liliana
|
||||||
|
sd-concepts-library/liliana-vess
|
||||||
|
sd-concepts-library/liminal-spaces-2-0
|
||||||
|
sd-concepts-library/liminalspaces
|
||||||
|
sd-concepts-library/line-art
|
||||||
|
sd-concepts-library/line-style
|
||||||
|
sd-concepts-library/linnopoke
|
||||||
|
sd-concepts-library/liquid-light
|
||||||
|
sd-concepts-library/liqwid-aquafarmer
|
||||||
|
sd-concepts-library/lizardman
|
||||||
|
sd-concepts-library/loab-character
|
||||||
|
sd-concepts-library/loab-style
|
||||||
|
sd-concepts-library/lofa
|
||||||
|
sd-concepts-library/logo-with-face-on-shield
|
||||||
|
sd-concepts-library/lolo
|
||||||
|
sd-concepts-library/looney-anime
|
||||||
|
sd-concepts-library/lost-rapper
|
||||||
|
sd-concepts-library/lphr-style
|
||||||
|
sd-concepts-library/lucario
|
||||||
|
sd-concepts-library/lucky-luke
|
||||||
|
sd-concepts-library/lugal-ki-en
|
||||||
|
sd-concepts-library/luinv2
|
||||||
|
sd-concepts-library/lula-13
|
||||||
|
sd-concepts-library/lumio
|
||||||
|
sd-concepts-library/lxj-o4
|
||||||
|
sd-concepts-library/m-geo
|
||||||
|
sd-concepts-library/m-geoo
|
||||||
|
sd-concepts-library/madhubani-art
|
||||||
|
sd-concepts-library/mafalda-character
|
||||||
|
sd-concepts-library/magic-pengel
|
||||||
|
sd-concepts-library/malika-favre-art-style
|
||||||
|
sd-concepts-library/manga-style
|
||||||
|
sd-concepts-library/marbling-art
|
||||||
|
sd-concepts-library/margo
|
||||||
|
sd-concepts-library/marty
|
||||||
|
sd-concepts-library/marty6
|
||||||
|
sd-concepts-library/mass
|
||||||
|
sd-concepts-library/masyanya
|
||||||
|
sd-concepts-library/masyunya
|
||||||
|
sd-concepts-library/mate
|
||||||
|
sd-concepts-library/matthew-stone
|
||||||
|
sd-concepts-library/mattvidpro
|
||||||
|
sd-concepts-library/maurice-quentin-de-la-tour-style
|
||||||
|
sd-concepts-library/maus
|
||||||
|
sd-concepts-library/max-foley
|
||||||
|
sd-concepts-library/mayor-richard-irvin
|
||||||
|
sd-concepts-library/mechasoulall
|
||||||
|
sd-concepts-library/medazzaland
|
||||||
|
sd-concepts-library/memnarch-mtg
|
||||||
|
sd-concepts-library/metagabe
|
||||||
|
sd-concepts-library/meyoco
|
||||||
|
sd-concepts-library/meze-audio-elite-headphones
|
||||||
|
sd-concepts-library/midjourney-style
|
||||||
|
sd-concepts-library/mikako-method
|
||||||
|
sd-concepts-library/mikako-methodi2i
|
||||||
|
sd-concepts-library/miko-3-robot
|
||||||
|
sd-concepts-library/milady
|
||||||
|
sd-concepts-library/mildemelwe-style
|
||||||
|
sd-concepts-library/million-live-akane-15k
|
||||||
|
sd-concepts-library/million-live-akane-3k
|
||||||
|
sd-concepts-library/million-live-akane-shifuku-3k
|
||||||
|
sd-concepts-library/million-live-spade-q-object-3k
|
||||||
|
sd-concepts-library/million-live-spade-q-style-3k
|
||||||
|
sd-concepts-library/minecraft-concept-art
|
||||||
|
sd-concepts-library/mishima-kurone
|
||||||
|
sd-concepts-library/mizkif
|
||||||
|
sd-concepts-library/moeb-style
|
||||||
|
sd-concepts-library/moebius
|
||||||
|
sd-concepts-library/mokoko
|
||||||
|
sd-concepts-library/mokoko-seed
|
||||||
|
sd-concepts-library/monster-girl
|
||||||
|
sd-concepts-library/monster-toy
|
||||||
|
sd-concepts-library/monte-novo
|
||||||
|
sd-concepts-library/moo-moo
|
||||||
|
sd-concepts-library/morino-hon-style
|
||||||
|
sd-concepts-library/moxxi
|
||||||
|
sd-concepts-library/msg
|
||||||
|
sd-concepts-library/mtg-card
|
||||||
|
sd-concepts-library/mtl-longsky
|
||||||
|
sd-concepts-library/mu-sadr
|
||||||
|
sd-concepts-library/munch-leaks-style
|
||||||
|
sd-concepts-library/museum-by-coop-himmelblau
|
||||||
|
sd-concepts-library/muxoyara
|
||||||
|
sd-concepts-library/my-hero-academia-style
|
||||||
|
sd-concepts-library/my-mug
|
||||||
|
sd-concepts-library/mycat
|
||||||
|
sd-concepts-library/mystical-nature
|
||||||
|
sd-concepts-library/naf
|
||||||
|
sd-concepts-library/nahiri
|
||||||
|
sd-concepts-library/namine-ritsu
|
||||||
|
sd-concepts-library/naoki-saito
|
||||||
|
sd-concepts-library/nard-style
|
||||||
|
sd-concepts-library/naruto
|
||||||
|
sd-concepts-library/natasha-johnston
|
||||||
|
sd-concepts-library/nathan-wyatt
|
||||||
|
sd-concepts-library/naval-portrait
|
||||||
|
sd-concepts-library/nazuna
|
||||||
|
sd-concepts-library/nebula
|
||||||
|
sd-concepts-library/ned-flanders
|
||||||
|
sd-concepts-library/neon-pastel
|
||||||
|
sd-concepts-library/new-priests
|
||||||
|
sd-concepts-library/nic-papercuts
|
||||||
|
sd-concepts-library/nikodim
|
||||||
|
sd-concepts-library/nissa-revane
|
||||||
|
sd-concepts-library/nixeu
|
||||||
|
sd-concepts-library/noggles
|
||||||
|
sd-concepts-library/nomad
|
||||||
|
sd-concepts-library/nouns-glasses
|
||||||
|
sd-concepts-library/obama-based-on-xi
|
||||||
|
sd-concepts-library/obama-self-2
|
||||||
|
sd-concepts-library/og-mox-style
|
||||||
|
sd-concepts-library/ohisashiburi-style
|
||||||
|
sd-concepts-library/oleg-kuvaev
|
||||||
|
sd-concepts-library/olli-olli
|
||||||
|
sd-concepts-library/on-kawara
|
||||||
|
sd-concepts-library/one-line-drawing
|
||||||
|
sd-concepts-library/onepunchman
|
||||||
|
sd-concepts-library/onzpo
|
||||||
|
sd-concepts-library/orangejacket
|
||||||
|
sd-concepts-library/ori
|
||||||
|
sd-concepts-library/ori-toor
|
||||||
|
sd-concepts-library/orientalist-art
|
||||||
|
sd-concepts-library/osaka-jyo
|
||||||
|
sd-concepts-library/osaka-jyo2
|
||||||
|
sd-concepts-library/osrsmini2
|
||||||
|
sd-concepts-library/osrstiny
|
||||||
|
sd-concepts-library/other-mother
|
||||||
|
sd-concepts-library/ouroboros
|
||||||
|
sd-concepts-library/outfit-items
|
||||||
|
sd-concepts-library/overprettified
|
||||||
|
sd-concepts-library/owl-house
|
||||||
|
sd-concepts-library/painted-by-silver-of-999
|
||||||
|
sd-concepts-library/painted-by-silver-of-999-2
|
||||||
|
sd-concepts-library/painted-student
|
||||||
|
sd-concepts-library/painting
|
||||||
|
sd-concepts-library/pantone-milk
|
||||||
|
sd-concepts-library/paolo-bonolis
|
||||||
|
sd-concepts-library/party-girl
|
||||||
|
sd-concepts-library/pascalsibertin
|
||||||
|
sd-concepts-library/pastelartstyle
|
||||||
|
sd-concepts-library/paul-noir
|
||||||
|
sd-concepts-library/pen-ink-portraits-bennorthen
|
||||||
|
sd-concepts-library/phan
|
||||||
|
sd-concepts-library/phan-s-collage
|
||||||
|
sd-concepts-library/phc
|
||||||
|
sd-concepts-library/phoenix-01
|
||||||
|
sd-concepts-library/pineda-david
|
||||||
|
sd-concepts-library/pink-beast-pastelae-style
|
||||||
|
sd-concepts-library/pintu
|
||||||
|
sd-concepts-library/pion-by-august-semionov
|
||||||
|
sd-concepts-library/piotr-jablonski
|
||||||
|
sd-concepts-library/pixel-mania
|
||||||
|
sd-concepts-library/pixel-toy
|
||||||
|
sd-concepts-library/pjablonski-style
|
||||||
|
sd-concepts-library/plant-style
|
||||||
|
sd-concepts-library/plen-ki-mun
|
||||||
|
sd-concepts-library/pokemon-conquest-sprites
|
||||||
|
sd-concepts-library/pool-test
|
||||||
|
sd-concepts-library/poolrooms
|
||||||
|
sd-concepts-library/poring-ragnarok-online
|
||||||
|
sd-concepts-library/poutine-dish
|
||||||
|
sd-concepts-library/princess-knight-art
|
||||||
|
sd-concepts-library/progress-chip
|
||||||
|
sd-concepts-library/puerquis-toy
|
||||||
|
sd-concepts-library/purplefishli
|
||||||
|
sd-concepts-library/pyramidheadcosplay
|
||||||
|
sd-concepts-library/qpt-atrium
|
||||||
|
sd-concepts-library/quiesel
|
||||||
|
sd-concepts-library/r-crumb-style
|
||||||
|
sd-concepts-library/rahkshi-bionicle
|
||||||
|
sd-concepts-library/raichu
|
||||||
|
sd-concepts-library/rail-scene
|
||||||
|
sd-concepts-library/rail-scene-style
|
||||||
|
sd-concepts-library/ralph-mcquarrie
|
||||||
|
sd-concepts-library/ransom
|
||||||
|
sd-concepts-library/rayne-weynolds
|
||||||
|
sd-concepts-library/rcrumb-portraits-style
|
||||||
|
sd-concepts-library/rd-chaos
|
||||||
|
sd-concepts-library/rd-paintings
|
||||||
|
sd-concepts-library/red-glasses
|
||||||
|
sd-concepts-library/reeducation-camp
|
||||||
|
sd-concepts-library/reksio-dog
|
||||||
|
sd-concepts-library/rektguy
|
||||||
|
sd-concepts-library/remert
|
||||||
|
sd-concepts-library/renalla
|
||||||
|
sd-concepts-library/repeat
|
||||||
|
sd-concepts-library/retro-girl
|
||||||
|
sd-concepts-library/retro-mecha-rangers
|
||||||
|
sd-concepts-library/retropixelart-pinguin
|
||||||
|
sd-concepts-library/rex-deno
|
||||||
|
sd-concepts-library/rhizomuse-machine-bionic-sculpture
|
||||||
|
sd-concepts-library/ricar
|
||||||
|
sd-concepts-library/rickyart
|
||||||
|
sd-concepts-library/rico-face
|
||||||
|
sd-concepts-library/riker-doll
|
||||||
|
sd-concepts-library/rikiart
|
||||||
|
sd-concepts-library/rikiboy-art
|
||||||
|
sd-concepts-library/rilakkuma
|
||||||
|
sd-concepts-library/rishusei-style
|
||||||
|
sd-concepts-library/rj-palmer
|
||||||
|
sd-concepts-library/rl-pkmn-test
|
||||||
|
sd-concepts-library/road-to-ruin
|
||||||
|
sd-concepts-library/robertnava
|
||||||
|
sd-concepts-library/roblox-avatar
|
||||||
|
sd-concepts-library/roy-lichtenstein
|
||||||
|
sd-concepts-library/ruan-jia
|
||||||
|
sd-concepts-library/russian
|
||||||
|
sd-concepts-library/s1m-naoto-ohshima
|
||||||
|
sd-concepts-library/saheeli-rai
|
||||||
|
sd-concepts-library/sakimi-style
|
||||||
|
sd-concepts-library/salmonid
|
||||||
|
sd-concepts-library/sam-yang
|
||||||
|
sd-concepts-library/sanguo-guanyu
|
||||||
|
sd-concepts-library/sas-style
|
||||||
|
sd-concepts-library/scarlet-witch
|
||||||
|
sd-concepts-library/schloss-mosigkau
|
||||||
|
sd-concepts-library/scrap-style
|
||||||
|
sd-concepts-library/scratch-project
|
||||||
|
sd-concepts-library/sculptural-style
|
||||||
|
sd-concepts-library/sd-concepts-library-uma-meme
|
||||||
|
sd-concepts-library/seamless-ground
|
||||||
|
sd-concepts-library/selezneva-alisa
|
||||||
|
sd-concepts-library/sem-mac2n
|
||||||
|
sd-concepts-library/senneca
|
||||||
|
sd-concepts-library/seraphimmoonshadow-art
|
||||||
|
sd-concepts-library/sewerslvt
|
||||||
|
sd-concepts-library/she-hulk-law-art
|
||||||
|
sd-concepts-library/she-mask
|
||||||
|
sd-concepts-library/sherhook-painting
|
||||||
|
sd-concepts-library/sherhook-painting-v2
|
||||||
|
sd-concepts-library/shev-linocut
|
||||||
|
sd-concepts-library/shigure-ui-style
|
||||||
|
sd-concepts-library/shiny-polyman
|
||||||
|
sd-concepts-library/shrunken-head
|
||||||
|
sd-concepts-library/shu-doll
|
||||||
|
sd-concepts-library/shvoren-style
|
||||||
|
sd-concepts-library/sims-2-portrait
|
||||||
|
sd-concepts-library/singsing
|
||||||
|
sd-concepts-library/singsing-doll
|
||||||
|
sd-concepts-library/sintez-ico
|
||||||
|
sd-concepts-library/skyfalls
|
||||||
|
sd-concepts-library/slm
|
||||||
|
sd-concepts-library/smarties
|
||||||
|
sd-concepts-library/smiling-friend-style
|
||||||
|
sd-concepts-library/smooth-pencils
|
||||||
|
sd-concepts-library/smurf-style
|
||||||
|
sd-concepts-library/smw-map
|
||||||
|
sd-concepts-library/society-finch
|
||||||
|
sd-concepts-library/sorami-style
|
||||||
|
sd-concepts-library/spider-gwen
|
||||||
|
sd-concepts-library/spritual-monsters
|
||||||
|
sd-concepts-library/stable-diffusion-conceptualizer
|
||||||
|
sd-concepts-library/star-tours-posters
|
||||||
|
sd-concepts-library/stardew-valley-pixel-art
|
||||||
|
sd-concepts-library/starhavenmachinegods
|
||||||
|
sd-concepts-library/sterling-archer
|
||||||
|
sd-concepts-library/stretch-re1-robot
|
||||||
|
sd-concepts-library/stuffed-penguin-toy
|
||||||
|
sd-concepts-library/style-of-marc-allante
|
||||||
|
sd-concepts-library/summie-style
|
||||||
|
sd-concepts-library/sunfish
|
||||||
|
sd-concepts-library/super-nintendo-cartridge
|
||||||
|
sd-concepts-library/supitcha-mask
|
||||||
|
sd-concepts-library/sushi-pixel
|
||||||
|
sd-concepts-library/swamp-choe-2
|
||||||
|
sd-concepts-library/t-skrang
|
||||||
|
sd-concepts-library/takuji-kawano
|
||||||
|
sd-concepts-library/tamiyo
|
||||||
|
sd-concepts-library/tangles
|
||||||
|
sd-concepts-library/tb303
|
||||||
|
sd-concepts-library/tcirle
|
||||||
|
sd-concepts-library/teelip-ir-landscape
|
||||||
|
sd-concepts-library/teferi
|
||||||
|
sd-concepts-library/tela-lenca
|
||||||
|
sd-concepts-library/tela-lenca2
|
||||||
|
sd-concepts-library/terraria-style
|
||||||
|
sd-concepts-library/tesla-bot
|
||||||
|
sd-concepts-library/test
|
||||||
|
sd-concepts-library/test-epson
|
||||||
|
sd-concepts-library/test2
|
||||||
|
sd-concepts-library/testing
|
||||||
|
sd-concepts-library/thalasin
|
||||||
|
sd-concepts-library/thegeneral
|
||||||
|
sd-concepts-library/thorneworks
|
||||||
|
sd-concepts-library/threestooges
|
||||||
|
sd-concepts-library/thunderdome-cover
|
||||||
|
sd-concepts-library/thunderdome-covers
|
||||||
|
sd-concepts-library/ti-junglepunk-v0
|
||||||
|
sd-concepts-library/tili-concept
|
||||||
|
sd-concepts-library/titan-robot
|
||||||
|
sd-concepts-library/tnj
|
||||||
|
sd-concepts-library/toho-pixel
|
||||||
|
sd-concepts-library/tomcat
|
||||||
|
sd-concepts-library/tonal1
|
||||||
|
sd-concepts-library/tony-diterlizzi-s-planescape-art
|
||||||
|
sd-concepts-library/towerplace
|
||||||
|
sd-concepts-library/toy
|
||||||
|
sd-concepts-library/toy-bonnie-plush
|
||||||
|
sd-concepts-library/toyota-sera
|
||||||
|
sd-concepts-library/transmutation-circles
|
||||||
|
sd-concepts-library/trash-polka-artstyle
|
||||||
|
sd-concepts-library/travis-bedel
|
||||||
|
sd-concepts-library/trigger-studio
|
||||||
|
sd-concepts-library/trust-support
|
||||||
|
sd-concepts-library/trypophobia
|
||||||
|
sd-concepts-library/ttte
|
||||||
|
sd-concepts-library/tubby
|
||||||
|
sd-concepts-library/tubby-cats
|
||||||
|
sd-concepts-library/tudisco
|
||||||
|
sd-concepts-library/turtlepics
|
||||||
|
sd-concepts-library/type
|
||||||
|
sd-concepts-library/ugly-sonic
|
||||||
|
sd-concepts-library/uliana-kudinova
|
||||||
|
sd-concepts-library/uma
|
||||||
|
sd-concepts-library/uma-clean-object
|
||||||
|
sd-concepts-library/uma-meme
|
||||||
|
sd-concepts-library/uma-meme-style
|
||||||
|
sd-concepts-library/uma-style-classic
|
||||||
|
sd-concepts-library/unfinished-building
|
||||||
|
sd-concepts-library/urivoldemort
|
||||||
|
sd-concepts-library/uzumaki
|
||||||
|
sd-concepts-library/valorantstyle
|
||||||
|
sd-concepts-library/vb-mox
|
||||||
|
sd-concepts-library/vcr-classique
|
||||||
|
sd-concepts-library/venice
|
||||||
|
sd-concepts-library/vespertine
|
||||||
|
sd-concepts-library/victor-narm
|
||||||
|
sd-concepts-library/vietstoneking
|
||||||
|
sd-concepts-library/vivien-reid
|
||||||
|
sd-concepts-library/vkuoo1
|
||||||
|
sd-concepts-library/vraska
|
||||||
|
sd-concepts-library/w3u
|
||||||
|
sd-concepts-library/walter-wick-photography
|
||||||
|
sd-concepts-library/warhammer-40k-drawing-style
|
||||||
|
sd-concepts-library/waterfallshadow
|
||||||
|
sd-concepts-library/wayne-reynolds-character
|
||||||
|
sd-concepts-library/wedding
|
||||||
|
sd-concepts-library/wedding-HandPainted
|
||||||
|
sd-concepts-library/werebloops
|
||||||
|
sd-concepts-library/wheatland
|
||||||
|
sd-concepts-library/wheatland-arknight
|
||||||
|
sd-concepts-library/wheelchair
|
||||||
|
sd-concepts-library/wildkat
|
||||||
|
sd-concepts-library/willy-hd
|
||||||
|
sd-concepts-library/wire-angels
|
||||||
|
sd-concepts-library/wish-artist-stile
|
||||||
|
sd-concepts-library/wlop-style
|
||||||
|
sd-concepts-library/wojak
|
||||||
|
sd-concepts-library/wojaks-now
|
||||||
|
sd-concepts-library/wojaks-now-now-now
|
||||||
|
sd-concepts-library/xatu
|
||||||
|
sd-concepts-library/xatu2
|
||||||
|
sd-concepts-library/xbh
|
||||||
|
sd-concepts-library/xi
|
||||||
|
sd-concepts-library/xidiversity
|
||||||
|
sd-concepts-library/xioboma
|
||||||
|
sd-concepts-library/xuna
|
||||||
|
sd-concepts-library/xyz
|
||||||
|
sd-concepts-library/yb-anime
|
||||||
|
sd-concepts-library/yerba-mate
|
||||||
|
sd-concepts-library/yesdelete
|
||||||
|
sd-concepts-library/yf21
|
||||||
|
sd-concepts-library/yilanov2
|
||||||
|
sd-concepts-library/yinit
|
||||||
|
sd-concepts-library/yoji-shinkawa-style
|
||||||
|
sd-concepts-library/yolandi-visser
|
||||||
|
sd-concepts-library/yoshi
|
||||||
|
sd-concepts-library/youpi2
|
||||||
|
sd-concepts-library/youtooz-candy
|
||||||
|
sd-concepts-library/yuji-himukai-style
|
||||||
|
sd-concepts-library/zaney
|
||||||
|
sd-concepts-library/zaneypixelz
|
||||||
|
sd-concepts-library/zdenek-art
|
||||||
|
sd-concepts-library/zero
|
||||||
|
sd-concepts-library/zero-bottle
|
||||||
|
sd-concepts-library/zero-suit-samus
|
||||||
|
sd-concepts-library/zillertal-can
|
||||||
|
sd-concepts-library/zizigooloo
|
||||||
|
sd-concepts-library/zk
|
||||||
|
sd-concepts-library/zoroark
|
|
@ -0,0 +1,110 @@
|
||||||
|
model:
|
||||||
|
base_learning_rate: 5.0e-03
|
||||||
|
target: ldm.models.diffusion.ddpm.LatentDiffusion
|
||||||
|
params:
|
||||||
|
linear_start: 0.00085
|
||||||
|
linear_end: 0.0120
|
||||||
|
num_timesteps_cond: 1
|
||||||
|
log_every_t: 200
|
||||||
|
timesteps: 1000
|
||||||
|
first_stage_key: image
|
||||||
|
cond_stage_key: caption
|
||||||
|
image_size: 64
|
||||||
|
channels: 4
|
||||||
|
cond_stage_trainable: true # Note: different from the one we trained before
|
||||||
|
conditioning_key: crossattn
|
||||||
|
monitor: val/loss_simple_ema
|
||||||
|
scale_factor: 0.18215
|
||||||
|
use_ema: False
|
||||||
|
embedding_reg_weight: 0.0
|
||||||
|
|
||||||
|
personalization_config:
|
||||||
|
target: ldm.modules.embedding_manager.EmbeddingManager
|
||||||
|
params:
|
||||||
|
placeholder_strings: ["*"]
|
||||||
|
initializer_words: ["sculpture"]
|
||||||
|
per_image_tokens: false
|
||||||
|
num_vectors_per_token: 1
|
||||||
|
progressive_words: False
|
||||||
|
|
||||||
|
unet_config:
|
||||||
|
target: ldm.modules.diffusionmodules.openaimodel.UNetModel
|
||||||
|
params:
|
||||||
|
image_size: 32 # unused
|
||||||
|
in_channels: 4
|
||||||
|
out_channels: 4
|
||||||
|
model_channels: 320
|
||||||
|
attention_resolutions: [ 4, 2, 1 ]
|
||||||
|
num_res_blocks: 2
|
||||||
|
channel_mult: [ 1, 2, 4, 4 ]
|
||||||
|
num_heads: 8
|
||||||
|
use_spatial_transformer: True
|
||||||
|
transformer_depth: 1
|
||||||
|
context_dim: 768
|
||||||
|
use_checkpoint: True
|
||||||
|
legacy: False
|
||||||
|
|
||||||
|
first_stage_config:
|
||||||
|
target: ldm.models.autoencoder.AutoencoderKL
|
||||||
|
params:
|
||||||
|
embed_dim: 4
|
||||||
|
monitor: val/rec_loss
|
||||||
|
ddconfig:
|
||||||
|
double_z: true
|
||||||
|
z_channels: 4
|
||||||
|
resolution: 256
|
||||||
|
in_channels: 3
|
||||||
|
out_ch: 3
|
||||||
|
ch: 128
|
||||||
|
ch_mult:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 4
|
||||||
|
- 4
|
||||||
|
num_res_blocks: 2
|
||||||
|
attn_resolutions: []
|
||||||
|
dropout: 0.0
|
||||||
|
lossconfig:
|
||||||
|
target: torch.nn.Identity
|
||||||
|
|
||||||
|
cond_stage_config:
|
||||||
|
target: ldm.modules.encoders.modules.FrozenCLIPEmbedder
|
||||||
|
|
||||||
|
data:
|
||||||
|
target: main.DataModuleFromConfig
|
||||||
|
params:
|
||||||
|
batch_size: 1
|
||||||
|
num_workers: 2
|
||||||
|
wrap: false
|
||||||
|
train:
|
||||||
|
target: ldm.data.personalized.PersonalizedBase
|
||||||
|
params:
|
||||||
|
size: 512
|
||||||
|
set: train
|
||||||
|
per_image_tokens: false
|
||||||
|
repeats: 100
|
||||||
|
validation:
|
||||||
|
target: ldm.data.personalized.PersonalizedBase
|
||||||
|
params:
|
||||||
|
size: 512
|
||||||
|
set: val
|
||||||
|
per_image_tokens: false
|
||||||
|
repeats: 10
|
||||||
|
|
||||||
|
lightning:
|
||||||
|
modelcheckpoint:
|
||||||
|
params:
|
||||||
|
every_n_train_steps: 500
|
||||||
|
callbacks:
|
||||||
|
image_logger:
|
||||||
|
target: main.ImageLogger
|
||||||
|
params:
|
||||||
|
batch_frequency: 500
|
||||||
|
max_images: 8
|
||||||
|
increase_log_steps: False
|
||||||
|
|
||||||
|
trainer:
|
||||||
|
benchmark: True
|
||||||
|
max_steps: 4000000
|
||||||
|
# max_steps: 4000
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
model:
|
||||||
|
base_learning_rate: 5.0e-03
|
||||||
|
target: ldm.models.diffusion.ddpm.LatentDiffusion
|
||||||
|
params:
|
||||||
|
linear_start: 0.00085
|
||||||
|
linear_end: 0.0120
|
||||||
|
num_timesteps_cond: 1
|
||||||
|
log_every_t: 200
|
||||||
|
timesteps: 1000
|
||||||
|
first_stage_key: image
|
||||||
|
cond_stage_key: caption
|
||||||
|
image_size: 64
|
||||||
|
channels: 4
|
||||||
|
cond_stage_trainable: true # Note: different from the one we trained before
|
||||||
|
conditioning_key: crossattn
|
||||||
|
monitor: val/loss_simple_ema
|
||||||
|
scale_factor: 0.18215
|
||||||
|
use_ema: False
|
||||||
|
embedding_reg_weight: 0.0
|
||||||
|
|
||||||
|
personalization_config:
|
||||||
|
target: ldm.modules.embedding_manager.EmbeddingManager
|
||||||
|
params:
|
||||||
|
placeholder_strings: ["*"]
|
||||||
|
initializer_words: ["painting"]
|
||||||
|
per_image_tokens: false
|
||||||
|
num_vectors_per_token: 1
|
||||||
|
|
||||||
|
unet_config:
|
||||||
|
target: ldm.modules.diffusionmodules.openaimodel.UNetModel
|
||||||
|
params:
|
||||||
|
image_size: 32 # unused
|
||||||
|
in_channels: 4
|
||||||
|
out_channels: 4
|
||||||
|
model_channels: 320
|
||||||
|
attention_resolutions: [ 4, 2, 1 ]
|
||||||
|
num_res_blocks: 2
|
||||||
|
channel_mult: [ 1, 2, 4, 4 ]
|
||||||
|
num_heads: 8
|
||||||
|
use_spatial_transformer: True
|
||||||
|
transformer_depth: 1
|
||||||
|
context_dim: 768
|
||||||
|
use_checkpoint: True
|
||||||
|
legacy: False
|
||||||
|
|
||||||
|
first_stage_config:
|
||||||
|
target: ldm.models.autoencoder.AutoencoderKL
|
||||||
|
params:
|
||||||
|
embed_dim: 4
|
||||||
|
monitor: val/rec_loss
|
||||||
|
ddconfig:
|
||||||
|
double_z: true
|
||||||
|
z_channels: 4
|
||||||
|
resolution: 256
|
||||||
|
in_channels: 3
|
||||||
|
out_ch: 3
|
||||||
|
ch: 128
|
||||||
|
ch_mult:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 4
|
||||||
|
- 4
|
||||||
|
num_res_blocks: 2
|
||||||
|
attn_resolutions: []
|
||||||
|
dropout: 0.0
|
||||||
|
lossconfig:
|
||||||
|
target: torch.nn.Identity
|
||||||
|
|
||||||
|
cond_stage_config:
|
||||||
|
target: ldm.modules.encoders.modules.FrozenCLIPEmbedder
|
||||||
|
|
||||||
|
data:
|
||||||
|
target: main.DataModuleFromConfig
|
||||||
|
params:
|
||||||
|
batch_size: 2
|
||||||
|
num_workers: 16
|
||||||
|
wrap: false
|
||||||
|
train:
|
||||||
|
target: ldm.data.personalized_style.PersonalizedBase
|
||||||
|
params:
|
||||||
|
size: 512
|
||||||
|
set: train
|
||||||
|
per_image_tokens: false
|
||||||
|
repeats: 100
|
||||||
|
validation:
|
||||||
|
target: ldm.data.personalized_style.PersonalizedBase
|
||||||
|
params:
|
||||||
|
size: 512
|
||||||
|
set: val
|
||||||
|
per_image_tokens: false
|
||||||
|
repeats: 10
|
||||||
|
|
||||||
|
lightning:
|
||||||
|
callbacks:
|
||||||
|
image_logger:
|
||||||
|
target: main.ImageLogger
|
||||||
|
params:
|
||||||
|
batch_frequency: 500
|
||||||
|
max_images: 8
|
||||||
|
increase_log_steps: False
|
||||||
|
|
||||||
|
trainer:
|
||||||
|
benchmark: True
|
|
@ -0,0 +1,79 @@
|
||||||
|
model:
|
||||||
|
base_learning_rate: 1.0e-04
|
||||||
|
target: ldm.models.diffusion.ddpm.LatentDiffusion
|
||||||
|
params:
|
||||||
|
linear_start: 0.00085
|
||||||
|
linear_end: 0.0120
|
||||||
|
num_timesteps_cond: 1
|
||||||
|
log_every_t: 200
|
||||||
|
timesteps: 1000
|
||||||
|
first_stage_key: "jpg"
|
||||||
|
cond_stage_key: "txt"
|
||||||
|
image_size: 64
|
||||||
|
channels: 4
|
||||||
|
cond_stage_trainable: false # Note: different from the one we trained before
|
||||||
|
conditioning_key: crossattn
|
||||||
|
monitor: val/loss_simple_ema
|
||||||
|
scale_factor: 0.18215
|
||||||
|
use_ema: False
|
||||||
|
|
||||||
|
scheduler_config: # 10000 warmup steps
|
||||||
|
target: ldm.lr_scheduler.LambdaLinearScheduler
|
||||||
|
params:
|
||||||
|
warm_up_steps: [ 10000 ]
|
||||||
|
cycle_lengths: [ 10000000000000 ] # incredibly large number to prevent corner cases
|
||||||
|
f_start: [ 1.e-6 ]
|
||||||
|
f_max: [ 1. ]
|
||||||
|
f_min: [ 1. ]
|
||||||
|
|
||||||
|
personalization_config:
|
||||||
|
target: ldm.modules.embedding_manager.EmbeddingManager
|
||||||
|
params:
|
||||||
|
placeholder_strings: ["*"]
|
||||||
|
initializer_words: ['sculpture']
|
||||||
|
per_image_tokens: false
|
||||||
|
num_vectors_per_token: 1
|
||||||
|
progressive_words: False
|
||||||
|
|
||||||
|
unet_config:
|
||||||
|
target: ldm.modules.diffusionmodules.openaimodel.UNetModel
|
||||||
|
params:
|
||||||
|
image_size: 32 # unused
|
||||||
|
in_channels: 4
|
||||||
|
out_channels: 4
|
||||||
|
model_channels: 320
|
||||||
|
attention_resolutions: [ 4, 2, 1 ]
|
||||||
|
num_res_blocks: 2
|
||||||
|
channel_mult: [ 1, 2, 4, 4 ]
|
||||||
|
num_heads: 8
|
||||||
|
use_spatial_transformer: True
|
||||||
|
transformer_depth: 1
|
||||||
|
context_dim: 768
|
||||||
|
use_checkpoint: True
|
||||||
|
legacy: False
|
||||||
|
|
||||||
|
first_stage_config:
|
||||||
|
target: ldm.models.autoencoder.AutoencoderKL
|
||||||
|
params:
|
||||||
|
embed_dim: 4
|
||||||
|
monitor: val/rec_loss
|
||||||
|
ddconfig:
|
||||||
|
double_z: true
|
||||||
|
z_channels: 4
|
||||||
|
resolution: 256
|
||||||
|
in_channels: 3
|
||||||
|
out_ch: 3
|
||||||
|
ch: 128
|
||||||
|
ch_mult:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 4
|
||||||
|
- 4
|
||||||
|
num_res_blocks: 2
|
||||||
|
attn_resolutions: []
|
||||||
|
dropout: 0.0
|
||||||
|
lossconfig:
|
||||||
|
target: torch.nn.Identity
|
||||||
|
|
||||||
|
cond_stage_config:
|
||||||
|
target: ldm.modules.encoders.modules.WeightedFrozenCLIPEmbedder
|
|
@ -0,0 +1,79 @@
|
||||||
|
model:
|
||||||
|
base_learning_rate: 7.5e-05
|
||||||
|
target: ldm.models.diffusion.ddpm.LatentInpaintDiffusion
|
||||||
|
params:
|
||||||
|
linear_start: 0.00085
|
||||||
|
linear_end: 0.0120
|
||||||
|
num_timesteps_cond: 1
|
||||||
|
log_every_t: 200
|
||||||
|
timesteps: 1000
|
||||||
|
first_stage_key: "jpg"
|
||||||
|
cond_stage_key: "txt"
|
||||||
|
image_size: 64
|
||||||
|
channels: 4
|
||||||
|
cond_stage_trainable: false # Note: different from the one we trained before
|
||||||
|
conditioning_key: hybrid # important
|
||||||
|
monitor: val/loss_simple_ema
|
||||||
|
scale_factor: 0.18215
|
||||||
|
finetune_keys: null
|
||||||
|
|
||||||
|
scheduler_config: # 10000 warmup steps
|
||||||
|
target: ldm.lr_scheduler.LambdaLinearScheduler
|
||||||
|
params:
|
||||||
|
warm_up_steps: [ 2500 ] # NOTE for resuming. use 10000 if starting from scratch
|
||||||
|
cycle_lengths: [ 10000000000000 ] # incredibly large number to prevent corner cases
|
||||||
|
f_start: [ 1.e-6 ]
|
||||||
|
f_max: [ 1. ]
|
||||||
|
f_min: [ 1. ]
|
||||||
|
|
||||||
|
personalization_config:
|
||||||
|
target: ldm.modules.embedding_manager.EmbeddingManager
|
||||||
|
params:
|
||||||
|
placeholder_strings: ["*"]
|
||||||
|
initializer_words: ['sculpture']
|
||||||
|
per_image_tokens: false
|
||||||
|
num_vectors_per_token: 8
|
||||||
|
progressive_words: False
|
||||||
|
|
||||||
|
unet_config:
|
||||||
|
target: ldm.modules.diffusionmodules.openaimodel.UNetModel
|
||||||
|
params:
|
||||||
|
image_size: 32 # unused
|
||||||
|
in_channels: 9 # 4 data + 4 downscaled image + 1 mask
|
||||||
|
out_channels: 4
|
||||||
|
model_channels: 320
|
||||||
|
attention_resolutions: [ 4, 2, 1 ]
|
||||||
|
num_res_blocks: 2
|
||||||
|
channel_mult: [ 1, 2, 4, 4 ]
|
||||||
|
num_heads: 8
|
||||||
|
use_spatial_transformer: True
|
||||||
|
transformer_depth: 1
|
||||||
|
context_dim: 768
|
||||||
|
use_checkpoint: True
|
||||||
|
legacy: False
|
||||||
|
|
||||||
|
first_stage_config:
|
||||||
|
target: ldm.models.autoencoder.AutoencoderKL
|
||||||
|
params:
|
||||||
|
embed_dim: 4
|
||||||
|
monitor: val/rec_loss
|
||||||
|
ddconfig:
|
||||||
|
double_z: true
|
||||||
|
z_channels: 4
|
||||||
|
resolution: 256
|
||||||
|
in_channels: 3
|
||||||
|
out_ch: 3
|
||||||
|
ch: 128
|
||||||
|
ch_mult:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 4
|
||||||
|
- 4
|
||||||
|
num_res_blocks: 2
|
||||||
|
attn_resolutions: []
|
||||||
|
dropout: 0.0
|
||||||
|
lossconfig:
|
||||||
|
target: torch.nn.Identity
|
||||||
|
|
||||||
|
cond_stage_config:
|
||||||
|
target: ldm.modules.encoders.modules.WeightedFrozenCLIPEmbedder
|
|
@ -0,0 +1,110 @@
|
||||||
|
model:
|
||||||
|
base_learning_rate: 5.0e-03
|
||||||
|
target: ldm.models.diffusion.ddpm.LatentDiffusion
|
||||||
|
params:
|
||||||
|
linear_start: 0.00085
|
||||||
|
linear_end: 0.0120
|
||||||
|
num_timesteps_cond: 1
|
||||||
|
log_every_t: 200
|
||||||
|
timesteps: 1000
|
||||||
|
first_stage_key: image
|
||||||
|
cond_stage_key: caption
|
||||||
|
image_size: 64
|
||||||
|
channels: 4
|
||||||
|
cond_stage_trainable: true # Note: different from the one we trained before
|
||||||
|
conditioning_key: crossattn
|
||||||
|
monitor: val/loss_simple_ema
|
||||||
|
scale_factor: 0.18215
|
||||||
|
use_ema: False
|
||||||
|
embedding_reg_weight: 0.0
|
||||||
|
|
||||||
|
personalization_config:
|
||||||
|
target: ldm.modules.embedding_manager.EmbeddingManager
|
||||||
|
params:
|
||||||
|
placeholder_strings: ["*"]
|
||||||
|
initializer_words: ['sculpture']
|
||||||
|
per_image_tokens: false
|
||||||
|
num_vectors_per_token: 6
|
||||||
|
progressive_words: False
|
||||||
|
|
||||||
|
unet_config:
|
||||||
|
target: ldm.modules.diffusionmodules.openaimodel.UNetModel
|
||||||
|
params:
|
||||||
|
image_size: 32 # unused
|
||||||
|
in_channels: 4
|
||||||
|
out_channels: 4
|
||||||
|
model_channels: 320
|
||||||
|
attention_resolutions: [ 4, 2, 1 ]
|
||||||
|
num_res_blocks: 2
|
||||||
|
channel_mult: [ 1, 2, 4, 4 ]
|
||||||
|
num_heads: 8
|
||||||
|
use_spatial_transformer: True
|
||||||
|
transformer_depth: 1
|
||||||
|
context_dim: 768
|
||||||
|
use_checkpoint: True
|
||||||
|
legacy: False
|
||||||
|
|
||||||
|
first_stage_config:
|
||||||
|
target: ldm.models.autoencoder.AutoencoderKL
|
||||||
|
params:
|
||||||
|
embed_dim: 4
|
||||||
|
monitor: val/rec_loss
|
||||||
|
ddconfig:
|
||||||
|
double_z: true
|
||||||
|
z_channels: 4
|
||||||
|
resolution: 256
|
||||||
|
in_channels: 3
|
||||||
|
out_ch: 3
|
||||||
|
ch: 128
|
||||||
|
ch_mult:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 4
|
||||||
|
- 4
|
||||||
|
num_res_blocks: 2
|
||||||
|
attn_resolutions: []
|
||||||
|
dropout: 0.0
|
||||||
|
lossconfig:
|
||||||
|
target: torch.nn.Identity
|
||||||
|
|
||||||
|
cond_stage_config:
|
||||||
|
target: ldm.modules.encoders.modules.FrozenCLIPEmbedder
|
||||||
|
|
||||||
|
data:
|
||||||
|
target: main.DataModuleFromConfig
|
||||||
|
params:
|
||||||
|
batch_size: 1
|
||||||
|
num_workers: 2
|
||||||
|
wrap: false
|
||||||
|
train:
|
||||||
|
target: ldm.data.personalized.PersonalizedBase
|
||||||
|
params:
|
||||||
|
size: 512
|
||||||
|
set: train
|
||||||
|
per_image_tokens: false
|
||||||
|
repeats: 100
|
||||||
|
validation:
|
||||||
|
target: ldm.data.personalized.PersonalizedBase
|
||||||
|
params:
|
||||||
|
size: 512
|
||||||
|
set: val
|
||||||
|
per_image_tokens: false
|
||||||
|
repeats: 10
|
||||||
|
|
||||||
|
lightning:
|
||||||
|
modelcheckpoint:
|
||||||
|
params:
|
||||||
|
every_n_train_steps: 500
|
||||||
|
callbacks:
|
||||||
|
image_logger:
|
||||||
|
target: main.ImageLogger
|
||||||
|
params:
|
||||||
|
batch_frequency: 500
|
||||||
|
max_images: 5
|
||||||
|
increase_log_steps: False
|
||||||
|
|
||||||
|
trainer:
|
||||||
|
benchmark: False
|
||||||
|
max_steps: 6200
|
||||||
|
# max_steps: 4000
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
@echo off
|
||||||
|
setlocal EnableExtensions EnableDelayedExpansion
|
||||||
|
|
||||||
|
PUSHD "%~dp0"
|
||||||
|
|
||||||
|
set INVOKE_AI_VERSION=latest
|
||||||
|
set arg=%1
|
||||||
|
if "%arg%" neq "" (
|
||||||
|
if "%arg:~0,2%" equ "/?" (
|
||||||
|
echo Usage: update.bat ^<release name or branch^>
|
||||||
|
echo Updates InvokeAI to use the indicated version of the code base.
|
||||||
|
echo Find the version or branch for the release you want, and pass it as the argument.
|
||||||
|
echo For example '.\update.bat v2.2.5' for release 2.2.5.
|
||||||
|
echo '.\update.bat main' for the latest development version
|
||||||
|
echo.
|
||||||
|
echo If no argument provided then will install the most recent release, equivalent to
|
||||||
|
echo '.\update.bat latest'
|
||||||
|
exit /b
|
||||||
|
) else (
|
||||||
|
set INVOKE_AI_VERSION=%arg%
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
set INVOKE_AI_SRC="https://github.com/invoke-ai/InvokeAI/archive/!INVOKE_AI_VERSION!.zip"
|
||||||
|
set INVOKE_AI_DEP=https://raw.githubusercontent.com/invoke-ai/InvokeAI/!INVOKE_AI_VERSION!/environments-and-requirements/requirements-base.txt
|
||||||
|
|
||||||
|
call curl -I "%INVOKE_AI_DEP%" -fs >.tmp.out
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo '!INVOKE_AI_VERSION!' is not a known branch name or tag. Please check the version and try again.
|
||||||
|
echo "Press any key to continue"
|
||||||
|
pause
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
del .tmp.out
|
||||||
|
|
||||||
|
echo This script will update InvokeAI and all its dependencies to !INVOKE_AI_SRC!.
|
||||||
|
echo If you do not want to do this, press control-C now!
|
||||||
|
pause
|
||||||
|
|
||||||
|
call curl -L "%INVOKE_AI_DEP%" > environments-and-requirements/requirements-base.txt
|
||||||
|
|
||||||
|
call .venv\Scripts\activate.bat
|
||||||
|
call .venv\Scripts\python -mpip install -r requirements.txt
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo Installation of requirements failed. See https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/#troubleshooting for suggestions.
|
||||||
|
pause
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
|
||||||
|
call .venv\Scripts\python -mpip install !INVOKE_AI_SRC!
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo Installation of InvokeAI failed. See https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/#troubleshooting for suggestions.
|
||||||
|
pause
|
||||||
|
exit /b
|
||||||
|
)
|
||||||
|
|
||||||
|
@rem call .venv\Scripts\python .venv\Scripts\configure_invokeai.py --root=.
|
||||||
|
|
||||||
|
@rem if %errorlevel% neq 0 (
|
||||||
|
@rem echo Configuration InvokeAI failed. See https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/#troubleshooting for suggestions.
|
||||||
|
@rem pause
|
||||||
|
@rem exit /b
|
||||||
|
@rem )
|
||||||
|
|
||||||
|
echo InvokeAI has been updated to '%INVOKE_AI_VERSION%'
|
||||||
|
|
||||||
|
echo "Press any key to continue"
|
||||||
|
pause
|
||||||
|
endlocal
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [ $# -ge 1 ] && [ "${1:0:2}" == "-h" ]; then
|
||||||
|
echo "Usage: update.sh <release>"
|
||||||
|
echo "Updates InvokeAI to use the indicated version of the code base."
|
||||||
|
echo "Find the version or branch for the release you want, and pass it as the argument."
|
||||||
|
echo "For example: update.sh v2.2.5 for release 2.2.5."
|
||||||
|
echo " update.sh main for the current development version."
|
||||||
|
echo ""
|
||||||
|
echo "If no argument provided then will install the version tagged with 'latest', equivalent to"
|
||||||
|
echo "update.sh latest"
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
INVOKE_AI_VERSION=${1:-latest}
|
||||||
|
|
||||||
|
INVOKE_AI_SRC="https://github.com/invoke-ai/InvokeAI/archive/$INVOKE_AI_VERSION.zip"
|
||||||
|
INVOKE_AI_DEP=https://raw.githubusercontent.com/invoke-ai/InvokeAI/$INVOKE_AI_VERSION/environments-and-requirements/requirements-base.txt
|
||||||
|
|
||||||
|
# ensure we're in the correct folder in case user's CWD is somewhere else
|
||||||
|
scriptdir=$(dirname "$0")
|
||||||
|
cd "$scriptdir"
|
||||||
|
|
||||||
|
function _err_exit {
|
||||||
|
if test "$1" -ne 0
|
||||||
|
then
|
||||||
|
echo "Something went wrong while installing InvokeAI and/or its requirements."
|
||||||
|
echo "Update cannot continue. Please report this error to https://github.com/invoke-ai/InvokeAI/issues"
|
||||||
|
echo -e "Error code $1; Error caught was '$2'"
|
||||||
|
read -p "Press any key to exit..."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! curl -I "$INVOKE_AI_DEP" -fs >/dev/null; then
|
||||||
|
echo \'$INVOKE_AI_VERSION\' is not a known branch name or tag. Please check the version and try again.
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo This script will update InvokeAI and all its dependencies to version \'$INVOKE_AI_VERSION\'.
|
||||||
|
echo If you do not want to do this, press control-C now!
|
||||||
|
read -p "Press any key to continue, or CTRL-C to exit..."
|
||||||
|
|
||||||
|
curl -L "$INVOKE_AI_DEP" > environments-and-requirements/requirements-base.txt
|
||||||
|
|
||||||
|
. .venv/bin/activate
|
||||||
|
|
||||||
|
./.venv/bin/python -mpip install -r requirements.txt
|
||||||
|
_err_exit $? "The pip program failed to install InvokeAI's requirements."
|
||||||
|
|
||||||
|
./.venv/bin/python -mpip install $INVOKE_AI_SRC
|
||||||
|
_err_exit $? "The pip program failed to install InvokeAI."
|
||||||
|
|
||||||
|
echo InvokeAI updated to \'$INVOKE_AI_VERSION\'
|
||||||
|
|
||||||
|
# ./.venv/bin/python .venv/bin/configure_invokeai.py --root .
|
||||||
|
# _err_exit $? "The configure script failed to run successfully."
|
|
@ -0,0 +1,18 @@
|
||||||
|
** Model Installation Successful **
|
||||||
|
|
||||||
|
You're all set!
|
||||||
|
|
||||||
|
If you installed using one of the automated installation scripts,
|
||||||
|
execute 'invoke.sh' (Linux/macOS) or 'invoke.bat' (Windows) to
|
||||||
|
start InvokeAI.
|
||||||
|
|
||||||
|
If you installed manually, activate the 'invokeai' environment
|
||||||
|
(e.g. 'conda activate invokeai'), then run one of the following
|
||||||
|
commands to start InvokeAI.
|
||||||
|
|
||||||
|
Web UI:
|
||||||
|
python scripts/invoke.py --web # (connect to http://localhost:9090)
|
||||||
|
Command-line interface:
|
||||||
|
python scripts/invoke.py
|
||||||
|
|
||||||
|
Have fun!
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Run: cd /opt/invokeai/InvokeAI-Installer/ && ./install.sh"
|
||||||
|
echo
|
36
Makefile
36
Makefile
|
@ -1,11 +1,31 @@
|
||||||
|
.PHONY: cargo-ui
|
||||||
|
|
||||||
all:
|
all:
|
||||||
echo "download the current mattermost tarball"
|
wit mirrors
|
||||||
echo then build the package using the files in .debian/
|
|
||||||
|
cargo-ui:
|
||||||
|
cd cargo-ui && make
|
||||||
|
make all
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "# this are just simple shortcuts to package up files on a system once you have it compiled and installed"
|
||||||
|
@echo "cd <projectName>; make all"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
#
|
||||||
|
# Just for reference, you can make a debian package using 'ar' from the command line
|
||||||
|
#
|
||||||
|
# A .deb file is just output from 'ar rcs'
|
||||||
|
#
|
||||||
|
tar-ar:
|
||||||
|
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz .
|
||||||
|
cd files && tar -cvJf ../data.tar.xz .
|
||||||
|
ar rcs ${BASENAME}_${VERSION}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
||||||
|
dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf .debian/files/opt/
|
rm -rf files/
|
||||||
|
rm -f *.deb
|
||||||
download:
|
rm -f *.tar.xz data.tar.xz
|
||||||
wget -c https://releases.mattermost.com/7.3.0/mattermost-7.3.0-linux-amd64.tar.gz
|
rm -rf */DEBIAN/
|
||||||
mkdir -p .debian/files/opt/
|
|
||||||
cd .debian/files/opt/ && tar xfz ../../../mattermost-7.3.0-linux-amd64.tar.gz
|
|
||||||
|
|
37
README.md
37
README.md
|
@ -1,3 +1,36 @@
|
||||||
Needs to make a user and a few other things from
|
# Info
|
||||||
|
|
||||||
https://docs.mattermost.com/install/install-tar.html
|
Packages up various stuff using the bare minimum of interaction to make a .deb package.
|
||||||
|
|
||||||
|
.deb packages are 'ar' files. You can create them with 'ar', but the recommended way
|
||||||
|
seems to be to use dpkg-deb.
|
||||||
|
|
||||||
|
The packages themselves you can browse and/or download here:
|
||||||
|
|
||||||
|
http://mirrors.wit.org/wit/pool/main/
|
||||||
|
|
||||||
|
# Makefile
|
||||||
|
```
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "# this are just simple shortcuts to package up files on a system once you have it compiled and installed"
|
||||||
|
@echo "cd <projectName>; make all"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
#
|
||||||
|
# Just for reference, you can make a debian package using 'ar' from the command line
|
||||||
|
#
|
||||||
|
# A .deb file is just output from 'ar rcs'
|
||||||
|
#
|
||||||
|
tar-ar:
|
||||||
|
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz .
|
||||||
|
cd files && tar -cvJf ../data.tar.xz .
|
||||||
|
ar rcs ${BASENAME}_${VERSION}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
||||||
|
dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf files/
|
||||||
|
rm -f *.deb
|
||||||
|
rm -f *.tar.xz data.tar.xz
|
||||||
|
rm -rf */DEBIAN/
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
TARBALL=/home/android-studio-2022.1.1.19-linux.tar.gz
|
||||||
|
VERSION=2022
|
||||||
|
MINOR=1.1.19
|
||||||
|
BASENAME=android-studio
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
all: download clean extract DEBIAN build
|
||||||
|
|
||||||
|
# uses 'ar' to make a .deb file
|
||||||
|
raw: download clean extract DEBIAN tar-ar
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
download:
|
||||||
|
@echo
|
||||||
|
@echo CHECK FOR NEW VERSION AT: https://developer.android.com/studio
|
||||||
|
@echo CHECK FOR NEW VERSION AT: https://developer.android.com/studio
|
||||||
|
@echo CHECK FOR NEW VERSION AT: https://developer.android.com/studio
|
||||||
|
@echo
|
||||||
|
|
||||||
|
extract:
|
||||||
|
mkdir -p ../files/opt/
|
||||||
|
cd ../files/opt/ && tar xfz ${TARBALL}
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
make md5sum
|
||||||
|
make control
|
||||||
|
cp preinst DEBIAN
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
control:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
echo Version: ${VERSION}.${MINOR} >>DEBIAN/control
|
||||||
|
|
||||||
|
md5sum:
|
||||||
|
cd files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../DEBIAN/md5sums
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
|
||||||
|
# how to make a debian package "raw" just using tar and ar
|
||||||
|
#
|
||||||
|
# READ THIS AGAIN:
|
||||||
|
#
|
||||||
|
# A .deb file is just output from 'ar rcs'
|
||||||
|
#
|
||||||
|
tar-ar: control
|
||||||
|
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz .
|
||||||
|
cd files && tar -cvJf ../data.tar.xz .
|
||||||
|
ar rcs ${BASENAME}_${VERSION}.${MINOR}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
||||||
|
dpkg-deb --info ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
|
@ -0,0 +1,14 @@
|
||||||
|
###############################
|
||||||
|
|
||||||
|
Turn everything in files/ into a .deb debian package
|
||||||
|
|
||||||
|
###############################
|
||||||
|
|
||||||
|
|
||||||
|
Needs to make a user and a few other things from
|
||||||
|
|
||||||
|
https://docs.mattermost.com/install/install-tar.html
|
||||||
|
|
||||||
|
also note debian packaging policy:
|
||||||
|
|
||||||
|
https://salsa.debian.org/dbnpolicy/policy
|
|
@ -0,0 +1,14 @@
|
||||||
|
Package: android-studio
|
||||||
|
Source: android-studio
|
||||||
|
Architecture: amd64
|
||||||
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
|
Installed-Size: 5883
|
||||||
|
Section: development
|
||||||
|
Priority: optional
|
||||||
|
Homepage: https://developer.android.com/studio
|
||||||
|
Description: official integrated development environment for Google's Android operating system
|
||||||
|
Raw tarball from upstream.
|
||||||
|
.
|
||||||
|
Files moved to be stored in /opt/android-studio
|
||||||
|
.
|
||||||
|
This packaging is simple. It is just the tarball.
|
|
@ -0,0 +1 @@
|
||||||
|
#!/bin/sh
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh -x
|
||||||
|
|
||||||
|
# Is there something that should be done here?
|
|
@ -0,0 +1,44 @@
|
||||||
|
VERSION=20230129
|
||||||
|
BASENAME=bazel-google
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
all: clean extract DEBIAN build
|
||||||
|
|
||||||
|
update-keyring:
|
||||||
|
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
extract:
|
||||||
|
mkdir -p ../files/usr/share/keyrings
|
||||||
|
cp bazel-archive-keyring.gpg ../files/usr/share/keyrings/
|
||||||
|
mkdir -p ../files/etc/apt/sources.list.d
|
||||||
|
cp bazel.list ../files/etc/apt/sources.list.d/
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
|
||||||
|
# make the md5sum file
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
# make the control there
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
# echo Version: ${VERSION} >>DEBIAN/control
|
||||||
|
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
||||||
|
# sudo apt install -y apt-transport-https curl gnupg
|
||||||
|
# curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg
|
||||||
|
# sudo mv bazel-archive-keyring.gpg /usr/share/keyrings
|
||||||
|
|
||||||
|
deb [arch=amd64 signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8
|
|
@ -0,0 +1 @@
|
||||||
|
10
|
|
@ -0,0 +1,13 @@
|
||||||
|
Source: bazel-google
|
||||||
|
Build-Depends: golang
|
||||||
|
Package: bazel-google
|
||||||
|
Version: 20230129
|
||||||
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
|
Architecture: amd64
|
||||||
|
Depends: info
|
||||||
|
Description: sets up the apt repository for bazel directly from google
|
||||||
|
As of this build, bazel and tensorflow are under heavy development.
|
||||||
|
For debian, at this time, I would not recommend trying to build this yourself
|
||||||
|
but instead just use the google packages directly. Maybe someone has the time
|
||||||
|
to attempt to rebuild this in the debian build infrastructure, but it's going
|
||||||
|
to be very complicated and error prone.
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo To install the default version of bazel needed for tensorflow:
|
||||||
|
echo
|
||||||
|
echo Run: apt install bazel-5.3.0
|
||||||
|
echo
|
|
@ -0,0 +1,46 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
# ~/tmp/cargo/example/cargo-ui/cargo-ui
|
||||||
|
|
||||||
|
VERSION=20220510.1
|
||||||
|
BASENAME=cargo-ui
|
||||||
|
|
||||||
|
all: clean extract DEBIAN build
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
source:
|
||||||
|
git clone https://github.com/slint-ui/cargo-ui.git
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
extract:
|
||||||
|
mkdir -p ../files/usr/bin
|
||||||
|
cp ~/tmp/cargo/example/cargo-ui/cargo-ui ../files/usr/bin
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
|
||||||
|
# make the md5sum file
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
# make the control there
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
echo Version: ${VERSION} >>DEBIAN/control
|
||||||
|
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
|
@ -0,0 +1 @@
|
||||||
|
10
|
|
@ -0,0 +1,7 @@
|
||||||
|
Source: cargo-ui
|
||||||
|
Build-Depends: rust
|
||||||
|
Package: cargo-ui
|
||||||
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
|
Architecture: amd64
|
||||||
|
Depends:
|
||||||
|
Description: a rust project to make a GUI for cargo, built using Slint:
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh -x
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
useradd -mrU -s /sbin/nologin -d /var/lib/maddy -c "maddy mail server" maddy
|
|
@ -0,0 +1,62 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
# debian files were taking from upstream:
|
||||||
|
# git clone https://github.com/coredns/debian.git
|
||||||
|
|
||||||
|
# TARBALL=~/tmp/flutter-3.7.0-1.5.pre.tgz
|
||||||
|
VERSION=1.10.1
|
||||||
|
MINOR=7da2ceda
|
||||||
|
BASENAME=coredns
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
all: download clean extract DEBIAN build
|
||||||
|
|
||||||
|
# uses 'ar' to make a .deb file
|
||||||
|
raw: download clean extract DEBIAN tar-ar
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
download:
|
||||||
|
@echo
|
||||||
|
@echo CHECK FOR NEW VERSION via 'git tags'
|
||||||
|
@echo
|
||||||
|
|
||||||
|
extract:
|
||||||
|
cp -a files ../
|
||||||
|
mkdir -p ../files/usr/bin
|
||||||
|
mkdir -p ../files/usr/share/man/man1/ ../files/usr/share/man/man5/ ../files/usr/share/man/man7/
|
||||||
|
cp ~/go/src/github.com/coredns/coredns/coredns ../files/usr/bin
|
||||||
|
cp ~/go/src/github.com/coredns/coredns/man/*.1 ../files/usr/share/man/man1/
|
||||||
|
cp ~/go/src/github.com/coredns/coredns/man/*.5 ../files/usr/share/man/man5/
|
||||||
|
cp ~/go/src/github.com/coredns/coredns/man/*.7 ../files/usr/share/man/man7/
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
make md5sum
|
||||||
|
make control
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
control:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
echo Version: ${VERSION}.${MINOR} >>DEBIAN/control
|
||||||
|
echo Build-Date: `stat -c %z ~/go/src/github.com/coredns/coredns/coredns` >>DEBIAN/control
|
||||||
|
echo Source-Date: `cd ~/go/src/github.com/coredns/coredns/ && git log -1 --format=%cd` >>DEBIAN/control
|
||||||
|
|
||||||
|
md5sum:
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
|
@ -0,0 +1,5 @@
|
||||||
|
coredns (0-0) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
* Package for Debian.
|
||||||
|
|
||||||
|
-- Miek Gieben <miek@coredns.io> Sat, 11 Nov 2017 09:52:00 +0000
|
|
@ -0,0 +1 @@
|
||||||
|
10
|
|
@ -0,0 +1,8 @@
|
||||||
|
Source: coredns
|
||||||
|
Maintainer: Miek Gieben <miek@coredns.io>
|
||||||
|
Build-Depends: debhelper (>= 9), ca-certificates, curl, lsb-release, jq
|
||||||
|
|
||||||
|
Package: coredns
|
||||||
|
Architecture: any
|
||||||
|
Description: A modern DNS server written in GO
|
||||||
|
Depends: adduser
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Default Corefile, see https://coredns.io for more information.
|
||||||
|
|
||||||
|
# Answer every below the root, with the whoami plugin. Log all queries
|
||||||
|
# and errors on standard output.
|
||||||
|
. {
|
||||||
|
whoami # coredns.io/plugins/whoami
|
||||||
|
log # coredns.io/plugins/log
|
||||||
|
errors # coredns.io/plugins/errors
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
[Unit]
|
||||||
|
Description=CoreDNS DNS server
|
||||||
|
Documentation=https://coredns.io
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
PermissionsStartOnly=true
|
||||||
|
LimitNOFILE=1048576
|
||||||
|
LimitNPROC=512
|
||||||
|
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
|
||||||
|
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||||
|
NoNewPrivileges=true
|
||||||
|
User=coredns
|
||||||
|
WorkingDirectory=~
|
||||||
|
ExecStart=/usr/bin/coredns -conf=/etc/coredns/Corefile
|
||||||
|
ExecReload=/bin/kill -SIGUSR1 $MAINPID
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
configure)
|
||||||
|
if ! getent passwd coredns > /dev/null; then
|
||||||
|
adduser --system --disabled-password --disabled-login --home /var/lib/coredns \
|
||||||
|
--quiet --force-badname --group coredns
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,65 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
SOURCE=~/tmp/flutter
|
||||||
|
VERSION=3.7.0
|
||||||
|
MINOR=git
|
||||||
|
BASENAME=flutter-source-build
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
all: download clean extract DEBIAN build
|
||||||
|
|
||||||
|
# uses 'ar' to make a .deb file
|
||||||
|
raw: download clean extract DEBIAN tar-ar
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
download:
|
||||||
|
@echo
|
||||||
|
@echo CHECK FOR NEW VERSION via 'git tags'
|
||||||
|
@echo
|
||||||
|
|
||||||
|
extract:
|
||||||
|
mkdir -p ../files/opt/
|
||||||
|
cd ../files/opt/ && cp -a ${SOURCE} .
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
make md5sum
|
||||||
|
make control
|
||||||
|
cp preinst DEBIAN
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
control:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
echo Version: ${VERSION}.${MINOR} >>DEBIAN/control
|
||||||
|
|
||||||
|
md5sum:
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
|
||||||
|
# how to make a debian package "raw" just using tar and ar
|
||||||
|
#
|
||||||
|
# READ THIS AGAIN:
|
||||||
|
#
|
||||||
|
# A .deb file is just output from 'ar rcs'
|
||||||
|
#
|
||||||
|
tar-ar: control
|
||||||
|
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz .
|
||||||
|
cd files && tar -cvJf ../data.tar.xz .
|
||||||
|
ar rcs ${BASENAME}_${VERSION}.${MINOR}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
||||||
|
dpkg-deb --info ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
|
@ -0,0 +1,14 @@
|
||||||
|
Package: flutter-source-build
|
||||||
|
Source: flutter-source-build
|
||||||
|
Architecture: amd64
|
||||||
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
|
Installed-Size: 5883
|
||||||
|
Section: development
|
||||||
|
Priority: optional
|
||||||
|
Homepage: https://flutter.dev/
|
||||||
|
Description: flutter-source-build
|
||||||
|
Raw build from git repo
|
||||||
|
.
|
||||||
|
Files moved to be stored in /opt/flutter/
|
||||||
|
.
|
||||||
|
This packaging is simple. It is just the default build.
|
|
@ -0,0 +1 @@
|
||||||
|
2.0
|
|
@ -0,0 +1 @@
|
||||||
|
#!/bin/sh
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh -x
|
||||||
|
|
||||||
|
# Is there something that should be done here?
|
|
@ -0,0 +1,65 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
TARBALL=~/tmp/flutter-3.7.0-1.5.pre.tgz
|
||||||
|
VERSION=3.7.0
|
||||||
|
MINOR=1.5.pre
|
||||||
|
BASENAME=flutter
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
all: download clean extract DEBIAN build
|
||||||
|
|
||||||
|
# uses 'ar' to make a .deb file
|
||||||
|
raw: download clean extract DEBIAN tar-ar
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
download:
|
||||||
|
@echo
|
||||||
|
@echo CHECK FOR NEW VERSION via 'git tags'
|
||||||
|
@echo
|
||||||
|
|
||||||
|
extract:
|
||||||
|
mkdir -p ../files/
|
||||||
|
cd ../files/ && tar xfz ${TARBALL}
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
make md5sum
|
||||||
|
make control
|
||||||
|
cp preinst DEBIAN
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
control:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
echo Version: ${VERSION}.${MINOR} >>DEBIAN/control
|
||||||
|
|
||||||
|
md5sum:
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
|
||||||
|
# how to make a debian package "raw" just using tar and ar
|
||||||
|
#
|
||||||
|
# READ THIS AGAIN:
|
||||||
|
#
|
||||||
|
# A .deb file is just output from 'ar rcs'
|
||||||
|
#
|
||||||
|
tar-ar: control
|
||||||
|
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz .
|
||||||
|
cd files && tar -cvJf ../data.tar.xz .
|
||||||
|
ar rcs ${BASENAME}_${VERSION}.${MINOR}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
||||||
|
dpkg-deb --info ${BASENAME}_${VERSION}.${MINOR}_amd64.deb
|
|
@ -0,0 +1,12 @@
|
||||||
|
Package: flutter
|
||||||
|
Source: flutter
|
||||||
|
Architecture: amd64
|
||||||
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
|
Installed-Size: 5883
|
||||||
|
Section: development
|
||||||
|
Priority: optional
|
||||||
|
Homepage: https://flutter.dev/
|
||||||
|
Description: open-source UI software development kit created by Google
|
||||||
|
Raw build from git repo
|
||||||
|
Files moved to be stored in /opt/flutter/bin/
|
||||||
|
This packaging is simple. It is just the default build.
|
|
@ -0,0 +1 @@
|
||||||
|
2.0
|
|
@ -0,0 +1 @@
|
||||||
|
#!/bin/sh
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh -x
|
||||||
|
|
||||||
|
# Is there something that should be done here?
|
|
@ -0,0 +1,55 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
# ~/go/src/github.com/foxcpp/maddy/build/maddy version
|
||||||
|
|
||||||
|
# VERSION=0.6.2+9a87d73
|
||||||
|
GITVERSION=$(shell ~/go/src/github.com/foxcpp/maddy/build/maddy version |cut -f1 -d\ |head -n 1)
|
||||||
|
VERSION=$(GITVERSION).3
|
||||||
|
BASENAME=maddy
|
||||||
|
|
||||||
|
all: clean extract DEBIAN build
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
source:
|
||||||
|
GO111MODULE="off" go get -v -u github.com/foxcpp/maddy
|
||||||
|
echo
|
||||||
|
echo "cd ~/go/src/github.com/foxcpp/maddy/ && ./build.sh"
|
||||||
|
echo
|
||||||
|
# https://github.com/foxcpp/maddy.git
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
extract:
|
||||||
|
cp ~/go/src/github.com/foxcpp/maddy/build/maddy.conf files/etc/maddy/orig-maddy.conf
|
||||||
|
cp ~/go/src/github.com/foxcpp/maddy/build/systemd/maddy* files/lib/systemd/system/
|
||||||
|
cp -a files ../
|
||||||
|
mkdir -p ../files/usr/bin
|
||||||
|
cp ~/go/src/github.com/foxcpp/maddy/build/maddy ../files/usr/bin
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
|
||||||
|
# make the md5sum file
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
# make the control there
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
echo Version: ${VERSION} >>DEBIAN/control
|
||||||
|
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
|
@ -0,0 +1 @@
|
||||||
|
10
|
|
@ -0,0 +1,17 @@
|
||||||
|
Source: maddy
|
||||||
|
Build-Depends: golang
|
||||||
|
Package: maddy
|
||||||
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
|
Architecture: amd64
|
||||||
|
Depends:
|
||||||
|
Description: A modern mail server written in GO
|
||||||
|
Maddy Mail Server implements all functionality required to run a e-mail server.
|
||||||
|
It can send messages via SMTP (works as MTA), accept messages via SMTP (works as MX)
|
||||||
|
and store messages while providing access to them via IMAP. In addition to
|
||||||
|
that it implements auxiliary protocols that are mandatory to keep email reasonably
|
||||||
|
secure (DKIM, SPF, DMARC, DANE, MTA-STS).
|
||||||
|
.
|
||||||
|
It replaces Postfix, Dovecot, OpenDKIM, OpenSPF, OpenDMARC and more
|
||||||
|
with one daemon with uniform configuration and minimal maintenance cost.
|
||||||
|
.
|
||||||
|
Instructions: https://maddy.email/tutorials/setting-up/
|
|
@ -0,0 +1,17 @@
|
||||||
|
.PHONY: certs
|
||||||
|
|
||||||
|
all:
|
||||||
|
echo none of this works yet
|
||||||
|
|
||||||
|
# ?
|
||||||
|
tls:
|
||||||
|
setfacl -R -m u:maddy:rX /etc/ssl/mx1.example.org.crt /etc/ssl/mx1.example.org.key
|
||||||
|
setfacl -R -m u:maddy:rX /etc/letsencrypt/{live,archive}
|
||||||
|
|
||||||
|
# git clone https://github.com/acmesh-official/acme.sh.git
|
||||||
|
certs:
|
||||||
|
mkdir -p certs/mx1.example.org
|
||||||
|
./acme.sh/acme.sh --force --install-cert -d mx1.example.org \
|
||||||
|
--key-file certs/mx1.example.org/privkey.pem \
|
||||||
|
--fullchain-file certs/mx1.example.org/fullchain.pem
|
||||||
|
|
|
@ -0,0 +1,181 @@
|
||||||
|
## Maddy Mail Server - default configuration file (2022-06-18)
|
||||||
|
# Suitable for small-scale deployments. Uses its own format for local users DB,
|
||||||
|
# should be managed via maddy subcommands.
|
||||||
|
#
|
||||||
|
# See tutorials at https://maddy.email for guidance on typical
|
||||||
|
# configuration changes.
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Base variables
|
||||||
|
|
||||||
|
$(hostname) = example.org
|
||||||
|
$(primary_domain) = example.org
|
||||||
|
$(local_domains) = $(primary_domain)
|
||||||
|
|
||||||
|
tls file /etc/maddy/certs/$(hostname)/fullchain.pem /etc/maddy/certs/$(hostname)/privkey.pem
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Local storage & authentication
|
||||||
|
|
||||||
|
# pass_table provides local hashed passwords storage for authentication of
|
||||||
|
# users. It can be configured to use any "table" module, in default
|
||||||
|
# configuration a table in SQLite DB is used.
|
||||||
|
# Table can be replaced to use e.g. a file for passwords. Or pass_table module
|
||||||
|
# can be replaced altogether to use some external source of credentials (e.g.
|
||||||
|
# PAM, /etc/shadow file).
|
||||||
|
#
|
||||||
|
# If table module supports it (sql_table does) - credentials can be managed
|
||||||
|
# using 'maddy creds' command.
|
||||||
|
|
||||||
|
auth.pass_table local_authdb {
|
||||||
|
table sql_table {
|
||||||
|
driver sqlite3
|
||||||
|
dsn credentials.db
|
||||||
|
table_name passwords
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# imapsql module stores all indexes and metadata necessary for IMAP using a
|
||||||
|
# relational database. It is used by IMAP endpoint for mailbox access and
|
||||||
|
# also by SMTP & Submission endpoints for delivery of local messages.
|
||||||
|
#
|
||||||
|
# IMAP accounts, mailboxes and all message metadata can be inspected using
|
||||||
|
# imap-* subcommands of maddy.
|
||||||
|
|
||||||
|
storage.imapsql local_mailboxes {
|
||||||
|
driver sqlite3
|
||||||
|
dsn imapsql.db
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# SMTP endpoints + message routing
|
||||||
|
|
||||||
|
hostname $(hostname)
|
||||||
|
|
||||||
|
table.chain local_rewrites {
|
||||||
|
optional_step regexp "(.+)\+(.+)@(.+)" "$1@$3"
|
||||||
|
optional_step static {
|
||||||
|
entry postmaster postmaster@$(primary_domain)
|
||||||
|
}
|
||||||
|
optional_step file /etc/maddy/aliases
|
||||||
|
}
|
||||||
|
|
||||||
|
msgpipeline local_routing {
|
||||||
|
# Insert handling for special-purpose local domains here.
|
||||||
|
# e.g.
|
||||||
|
# destination lists.example.org {
|
||||||
|
# deliver_to lmtp tcp://127.0.0.1:8024
|
||||||
|
# }
|
||||||
|
|
||||||
|
destination postmaster $(local_domains) {
|
||||||
|
modify {
|
||||||
|
replace_rcpt &local_rewrites
|
||||||
|
}
|
||||||
|
|
||||||
|
deliver_to &local_mailboxes
|
||||||
|
}
|
||||||
|
|
||||||
|
default_destination {
|
||||||
|
reject 550 5.1.1 "User doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
smtp tcp://0.0.0.0:25 {
|
||||||
|
limits {
|
||||||
|
# Up to 20 msgs/sec across max. 10 SMTP connections.
|
||||||
|
all rate 20 1s
|
||||||
|
all concurrency 10
|
||||||
|
}
|
||||||
|
|
||||||
|
dmarc yes
|
||||||
|
check {
|
||||||
|
require_mx_record
|
||||||
|
dkim
|
||||||
|
spf
|
||||||
|
}
|
||||||
|
|
||||||
|
source $(local_domains) {
|
||||||
|
reject 501 5.1.8 "Use Submission for outgoing SMTP"
|
||||||
|
}
|
||||||
|
default_source {
|
||||||
|
destination postmaster $(local_domains) {
|
||||||
|
deliver_to &local_routing
|
||||||
|
}
|
||||||
|
default_destination {
|
||||||
|
reject 550 5.1.1 "User doesn't exist"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
submission tls://0.0.0.0:465 tcp://0.0.0.0:587 {
|
||||||
|
limits {
|
||||||
|
# Up to 50 msgs/sec across any amount of SMTP connections.
|
||||||
|
all rate 50 1s
|
||||||
|
}
|
||||||
|
|
||||||
|
auth &local_authdb
|
||||||
|
|
||||||
|
source $(local_domains) {
|
||||||
|
check {
|
||||||
|
authorize_sender {
|
||||||
|
prepare_email &local_rewrites
|
||||||
|
user_to_email identity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
destination postmaster $(local_domains) {
|
||||||
|
deliver_to &local_routing
|
||||||
|
}
|
||||||
|
default_destination {
|
||||||
|
modify {
|
||||||
|
dkim $(primary_domain) $(local_domains) default
|
||||||
|
}
|
||||||
|
deliver_to &remote_queue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default_source {
|
||||||
|
reject 501 5.1.8 "Non-local sender domain"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
target.remote outbound_delivery {
|
||||||
|
limits {
|
||||||
|
# Up to 20 msgs/sec across max. 10 SMTP connections
|
||||||
|
# for each recipient domain.
|
||||||
|
destination rate 20 1s
|
||||||
|
destination concurrency 10
|
||||||
|
}
|
||||||
|
mx_auth {
|
||||||
|
dane
|
||||||
|
mtasts {
|
||||||
|
cache fs
|
||||||
|
fs_dir mtasts_cache/
|
||||||
|
}
|
||||||
|
local_policy {
|
||||||
|
min_tls_level encrypted
|
||||||
|
min_mx_level none
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
target.queue remote_queue {
|
||||||
|
target &outbound_delivery
|
||||||
|
|
||||||
|
autogenerated_msg_domain $(primary_domain)
|
||||||
|
bounce {
|
||||||
|
destination postmaster $(local_domains) {
|
||||||
|
deliver_to &local_routing
|
||||||
|
}
|
||||||
|
default_destination {
|
||||||
|
reject 550 5.0.0 "Refusing to send DSNs to non-local addresses"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# IMAP endpoints
|
||||||
|
|
||||||
|
imap tls://0.0.0.0:993 tcp://0.0.0.0:143 {
|
||||||
|
auth &local_authdb
|
||||||
|
storage &local_mailboxes
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
[Unit]
|
||||||
|
Description=maddy mail server
|
||||||
|
Documentation=man:maddy(1)
|
||||||
|
Documentation=man:maddy.conf(5)
|
||||||
|
Documentation=https://maddy.email
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
NotifyAccess=main
|
||||||
|
|
||||||
|
User=maddy
|
||||||
|
Group=maddy
|
||||||
|
|
||||||
|
# cd to state directory to make sure any relative paths
|
||||||
|
# in config will be relative to it unless handled specially.
|
||||||
|
WorkingDirectory=/var/lib/maddy
|
||||||
|
|
||||||
|
ConfigurationDirectory=maddy
|
||||||
|
RuntimeDirectory=maddy
|
||||||
|
StateDirectory=maddy
|
||||||
|
LogsDirectory=maddy
|
||||||
|
ReadOnlyPaths=/usr/lib/maddy
|
||||||
|
ReadWritePaths=/var/lib/maddy
|
||||||
|
|
||||||
|
# Strict sandboxing. You have no reason to trust code written by strangers from GitHub.
|
||||||
|
PrivateTmp=true
|
||||||
|
ProtectHome=true
|
||||||
|
ProtectSystem=strict
|
||||||
|
ProtectKernelTunables=true
|
||||||
|
ProtectHostname=true
|
||||||
|
ProtectClock=true
|
||||||
|
ProtectControlGroups=true
|
||||||
|
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
|
||||||
|
|
||||||
|
# Additional sandboxing. You need to disable all of these options
|
||||||
|
# for privileged helper binaries (for system auth) to work correctly.
|
||||||
|
NoNewPrivileges=true
|
||||||
|
PrivateDevices=true
|
||||||
|
DeviceAllow=/dev/syslog
|
||||||
|
RestrictSUIDSGID=true
|
||||||
|
ProtectKernelModules=true
|
||||||
|
MemoryDenyWriteExecute=true
|
||||||
|
RestrictNamespaces=true
|
||||||
|
RestrictRealtime=true
|
||||||
|
LockPersonality=true
|
||||||
|
|
||||||
|
# Graceful shutdown with a reasonable timeout.
|
||||||
|
TimeoutStopSec=7s
|
||||||
|
KillMode=mixed
|
||||||
|
KillSignal=SIGTERM
|
||||||
|
|
||||||
|
# Required to bind on ports lower than 1024.
|
||||||
|
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||||
|
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
|
||||||
|
|
||||||
|
# Force all files created by maddy to be only readable by it.
|
||||||
|
UMask=0027
|
||||||
|
|
||||||
|
# Bump FD limitations. Even idle mail server can have a lot of FDs open (think
|
||||||
|
# of idle IMAP connections, especially ones abandoned on the other end and
|
||||||
|
# slowly timing out).
|
||||||
|
LimitNOFILE=131072
|
||||||
|
|
||||||
|
# Limit processes count to something reasonable to
|
||||||
|
# prevent resources exhausting due to big amounts of helper
|
||||||
|
# processes launched.
|
||||||
|
LimitNPROC=512
|
||||||
|
|
||||||
|
# Restart server on any problem.
|
||||||
|
Restart=on-failure
|
||||||
|
# ... Unless it is a configuration problem.
|
||||||
|
RestartPreventExitStatus=2
|
||||||
|
|
||||||
|
ExecStart=/usr/local/bin/maddy run
|
||||||
|
|
||||||
|
ExecReload=/bin/kill -USR1 $MAINPID
|
||||||
|
ExecReload=/bin/kill -USR2 $MAINPID
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,77 @@
|
||||||
|
[Unit]
|
||||||
|
Description=maddy mail server (using %i.conf)
|
||||||
|
Documentation=man:maddy(1)
|
||||||
|
Documentation=man:maddy.conf(5)
|
||||||
|
Documentation=https://maddy.email
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
NotifyAccess=main
|
||||||
|
|
||||||
|
User=maddy
|
||||||
|
Group=maddy
|
||||||
|
|
||||||
|
ConfigurationDirectory=maddy
|
||||||
|
RuntimeDirectory=maddy
|
||||||
|
StateDirectory=maddy
|
||||||
|
LogsDirectory=maddy
|
||||||
|
ReadOnlyPaths=/usr/lib/maddy
|
||||||
|
ReadWritePaths=/var/lib/maddy
|
||||||
|
|
||||||
|
# Strict sandboxing. You have no reason to trust code written by strangers from GitHub.
|
||||||
|
PrivateTmp=true
|
||||||
|
PrivateHome=true
|
||||||
|
ProtectSystem=strict
|
||||||
|
ProtectKernelTunables=true
|
||||||
|
ProtectHostname=true
|
||||||
|
ProtectClock=true
|
||||||
|
ProtectControlGroups=true
|
||||||
|
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
|
||||||
|
DeviceAllow=/dev/syslog
|
||||||
|
|
||||||
|
# Additional sandboxing. You need to disable all of these options
|
||||||
|
# for privileged helper binaries (for system auth) to work correctly.
|
||||||
|
NoNewPrivileges=true
|
||||||
|
PrivateDevices=true
|
||||||
|
RestrictSUIDSGID=true
|
||||||
|
ProtectKernelModules=true
|
||||||
|
MemoryDenyWriteExecute=true
|
||||||
|
RestrictNamespaces=true
|
||||||
|
RestrictRealtime=true
|
||||||
|
LockPersonality=true
|
||||||
|
|
||||||
|
# Graceful shutdown with a reasonable timeout.
|
||||||
|
TimeoutStopSec=7s
|
||||||
|
KillMode=mixed
|
||||||
|
KillSignal=SIGTERM
|
||||||
|
|
||||||
|
# Required to bind on ports lower than 1024.
|
||||||
|
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||||
|
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
|
||||||
|
|
||||||
|
# Force all files created by maddy to be only readable by it.
|
||||||
|
UMask=0027
|
||||||
|
|
||||||
|
# Bump FD limitations. Even idle mail server can have a lot of FDs open (think
|
||||||
|
# of idle IMAP connections, especially ones abandoned on the other end and
|
||||||
|
# slowly timing out).
|
||||||
|
LimitNOFILE=131072
|
||||||
|
|
||||||
|
# Limit processes count to something reasonable to
|
||||||
|
# prevent resources exhausting due to big amounts of helper
|
||||||
|
# processes launched.
|
||||||
|
LimitNPROC=512
|
||||||
|
|
||||||
|
# Restart server on any problem.
|
||||||
|
Restart=on-failure
|
||||||
|
# ... Unless it is a configuration problem.
|
||||||
|
RestartPreventExitStatus=2
|
||||||
|
|
||||||
|
ExecStart=/usr/local/bin/maddy --config /etc/maddy/%i.conf run
|
||||||
|
|
||||||
|
ExecReload=/bin/kill -USR1 $MAINPID
|
||||||
|
ExecReload=/bin/kill -USR2 $MAINPID
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh -x
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
useradd -mrU -s /sbin/nologin -d /var/lib/maddy -c "maddy mail server" maddy
|
|
@ -0,0 +1,67 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
VERSION=7.7.1
|
||||||
|
MINOR=v10
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo "make raw # to attempt to download, extract and build the .deb package using 'tar' and 'ar'"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
all: download clean extract DEBIAN build
|
||||||
|
|
||||||
|
raw: download clean extract DEBIAN tar-ar
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf files/opt files/DEBIAN/control
|
||||||
|
rm -f *.deb
|
||||||
|
rm -f control.tar.xz data.tar.xz
|
||||||
|
rm -rf files/DEBIAN DEBIAN
|
||||||
|
|
||||||
|
download:
|
||||||
|
@echo
|
||||||
|
@echo
|
||||||
|
@echo CHECK FOR NEW VERSION AT: https://mattermost.com/deploy/
|
||||||
|
@echo CHECK FOR NEW VERSION AT: https://mattermost.com/deploy/
|
||||||
|
@echo CHECK FOR NEW VERSION AT: https://mattermost.com/deploy/
|
||||||
|
@echo
|
||||||
|
@echo
|
||||||
|
sleep 3
|
||||||
|
cd .. && wget -c https://releases.mattermost.com/${VERSION}/mattermost-${VERSION}-linux-amd64.tar.gz
|
||||||
|
|
||||||
|
extract:
|
||||||
|
mkdir -p ../files/opt/
|
||||||
|
cd ../files/opt/ && tar xfz ../../mattermost-${VERSION}-linux-amd64.tar.gz
|
||||||
|
|
||||||
|
# update the bash-completion script
|
||||||
|
bash-completion:
|
||||||
|
cd ../ && mattermost completion bash > files/etc/bash_completion.d/mattermost
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
make md5sum
|
||||||
|
make control
|
||||||
|
cp preinst DEBIAN
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
control:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
echo Version: ${VERSION}.${MINOR} >>DEBIAN/control
|
||||||
|
|
||||||
|
md5sum:
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../DEBIAN/md5sums
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd ../files && dpkg-deb --build files mattermost_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
cd ../files && dpkg-deb --info mattermost_${VERSION}.${MINOR}_amd64.deb
|
||||||
|
|
||||||
|
# how to make a debian package "raw" just using tar and ar
|
||||||
|
tar-ar: control
|
||||||
|
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz .
|
||||||
|
cd files && tar -cvJf ../data.tar.xz .
|
||||||
|
ar rcs mattermost_${VERSION}.${MINOR}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
||||||
|
dpkg-deb --info mattermost_${VERSION}.${MINOR}_amd64.deb
|
|
@ -0,0 +1,14 @@
|
||||||
|
###############################
|
||||||
|
|
||||||
|
Turn everything in files/ into a .deb debian package
|
||||||
|
|
||||||
|
###############################
|
||||||
|
|
||||||
|
|
||||||
|
Needs to make a user and a few other things from
|
||||||
|
|
||||||
|
https://docs.mattermost.com/install/install-tar.html
|
||||||
|
|
||||||
|
also note debian packaging policy:
|
||||||
|
|
||||||
|
https://salsa.debian.org/dbnpolicy/policy
|
|
@ -1,16 +1,13 @@
|
||||||
Package: mattermost
|
Package: mattermost
|
||||||
Source: mattermost
|
Source: mattermost
|
||||||
Version: 7.3.0
|
|
||||||
Architecture: amd64
|
Architecture: amd64
|
||||||
Maintainer: Jeff Carr <jcarr@wit.com>
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
Installed-Size: 5883
|
Installed-Size: 5883
|
||||||
Section: network
|
Section: network
|
||||||
Requires: postgresql
|
Depends: postgresql
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Homepage: https://github.com/mattermost/mattermost-server
|
Homepage: https://github.com/mattermost/mattermost-server
|
||||||
Description: mattermost
|
Description: open-source, self-hostable online chat service
|
||||||
Raw tarball from upstream.
|
Raw tarball from upstream.
|
||||||
.
|
|
||||||
Files moved to be stored in /var/mattermost
|
Files moved to be stored in /var/mattermost
|
||||||
.
|
|
||||||
This packaging is a test and may not work
|
This packaging is a test and may not work
|
|
@ -0,0 +1 @@
|
||||||
|
2.0
|
|
@ -0,0 +1,325 @@
|
||||||
|
# bash completion V2 for mattermost -*- shell-script -*-
|
||||||
|
|
||||||
|
__mattermost_debug()
|
||||||
|
{
|
||||||
|
if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then
|
||||||
|
echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Macs have bash3 for which the bash-completion package doesn't include
|
||||||
|
# _init_completion. This is a minimal version of that function.
|
||||||
|
__mattermost_init_completion()
|
||||||
|
{
|
||||||
|
COMPREPLY=()
|
||||||
|
_get_comp_words_by_ref "$@" cur prev words cword
|
||||||
|
}
|
||||||
|
|
||||||
|
# This function calls the mattermost program to obtain the completion
|
||||||
|
# results and the directive. It fills the 'out' and 'directive' vars.
|
||||||
|
__mattermost_get_completion_results() {
|
||||||
|
local requestComp lastParam lastChar args
|
||||||
|
|
||||||
|
# Prepare the command to request completions for the program.
|
||||||
|
# Calling ${words[0]} instead of directly mattermost allows to handle aliases
|
||||||
|
args=("${words[@]:1}")
|
||||||
|
requestComp="${words[0]} __complete ${args[*]}"
|
||||||
|
|
||||||
|
lastParam=${words[$((${#words[@]}-1))]}
|
||||||
|
lastChar=${lastParam:$((${#lastParam}-1)):1}
|
||||||
|
__mattermost_debug "lastParam ${lastParam}, lastChar ${lastChar}"
|
||||||
|
|
||||||
|
if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then
|
||||||
|
# If the last parameter is complete (there is a space following it)
|
||||||
|
# We add an extra empty parameter so we can indicate this to the go method.
|
||||||
|
__mattermost_debug "Adding extra empty parameter"
|
||||||
|
requestComp="${requestComp} ''"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# When completing a flag with an = (e.g., mattermost -n=<TAB>)
|
||||||
|
# bash focuses on the part after the =, so we need to remove
|
||||||
|
# the flag part from $cur
|
||||||
|
if [[ "${cur}" == -*=* ]]; then
|
||||||
|
cur="${cur#*=}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
__mattermost_debug "Calling ${requestComp}"
|
||||||
|
# Use eval to handle any environment variables and such
|
||||||
|
out=$(eval "${requestComp}" 2>/dev/null)
|
||||||
|
|
||||||
|
# Extract the directive integer at the very end of the output following a colon (:)
|
||||||
|
directive=${out##*:}
|
||||||
|
# Remove the directive
|
||||||
|
out=${out%:*}
|
||||||
|
if [ "${directive}" = "${out}" ]; then
|
||||||
|
# There is not directive specified
|
||||||
|
directive=0
|
||||||
|
fi
|
||||||
|
__mattermost_debug "The completion directive is: ${directive}"
|
||||||
|
__mattermost_debug "The completions are: ${out}"
|
||||||
|
}
|
||||||
|
|
||||||
|
__mattermost_process_completion_results() {
|
||||||
|
local shellCompDirectiveError=1
|
||||||
|
local shellCompDirectiveNoSpace=2
|
||||||
|
local shellCompDirectiveNoFileComp=4
|
||||||
|
local shellCompDirectiveFilterFileExt=8
|
||||||
|
local shellCompDirectiveFilterDirs=16
|
||||||
|
|
||||||
|
if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then
|
||||||
|
# Error code. No completion.
|
||||||
|
__mattermost_debug "Received error from custom completion go code"
|
||||||
|
return
|
||||||
|
else
|
||||||
|
if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then
|
||||||
|
if [[ $(type -t compopt) = "builtin" ]]; then
|
||||||
|
__mattermost_debug "Activating no space"
|
||||||
|
compopt -o nospace
|
||||||
|
else
|
||||||
|
__mattermost_debug "No space directive not supported in this version of bash"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then
|
||||||
|
if [[ $(type -t compopt) = "builtin" ]]; then
|
||||||
|
__mattermost_debug "Activating no file completion"
|
||||||
|
compopt +o default
|
||||||
|
else
|
||||||
|
__mattermost_debug "No file completion directive not supported in this version of bash"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Separate activeHelp from normal completions
|
||||||
|
local completions=()
|
||||||
|
local activeHelp=()
|
||||||
|
__mattermost_extract_activeHelp
|
||||||
|
|
||||||
|
if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then
|
||||||
|
# File extension filtering
|
||||||
|
local fullFilter filter filteringCmd
|
||||||
|
|
||||||
|
# Do not use quotes around the $completions variable or else newline
|
||||||
|
# characters will be kept.
|
||||||
|
for filter in ${completions[*]}; do
|
||||||
|
fullFilter+="$filter|"
|
||||||
|
done
|
||||||
|
|
||||||
|
filteringCmd="_filedir $fullFilter"
|
||||||
|
__mattermost_debug "File filtering command: $filteringCmd"
|
||||||
|
$filteringCmd
|
||||||
|
elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then
|
||||||
|
# File completion for directories only
|
||||||
|
|
||||||
|
# Use printf to strip any trailing newline
|
||||||
|
local subdir
|
||||||
|
subdir=$(printf "%s" "${completions[0]}")
|
||||||
|
if [ -n "$subdir" ]; then
|
||||||
|
__mattermost_debug "Listing directories in $subdir"
|
||||||
|
pushd "$subdir" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return
|
||||||
|
else
|
||||||
|
__mattermost_debug "Listing directories in ."
|
||||||
|
_filedir -d
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
__mattermost_handle_completion_types
|
||||||
|
fi
|
||||||
|
|
||||||
|
__mattermost_handle_special_char "$cur" :
|
||||||
|
__mattermost_handle_special_char "$cur" =
|
||||||
|
|
||||||
|
# Print the activeHelp statements before we finish
|
||||||
|
if [ ${#activeHelp} -ne 0 ]; then
|
||||||
|
printf "\n";
|
||||||
|
printf "%s\n" "${activeHelp[@]}"
|
||||||
|
printf "\n"
|
||||||
|
|
||||||
|
# The prompt format is only available from bash 4.4.
|
||||||
|
# We test if it is available before using it.
|
||||||
|
if (x=${PS1@P}) 2> /dev/null; then
|
||||||
|
printf "%s" "${PS1@P}${COMP_LINE[@]}"
|
||||||
|
else
|
||||||
|
# Can't print the prompt. Just print the
|
||||||
|
# text the user had typed, it is workable enough.
|
||||||
|
printf "%s" "${COMP_LINE[@]}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Separate activeHelp lines from real completions.
|
||||||
|
# Fills the $activeHelp and $completions arrays.
|
||||||
|
__mattermost_extract_activeHelp() {
|
||||||
|
local activeHelpMarker="_activeHelp_ "
|
||||||
|
local endIndex=${#activeHelpMarker}
|
||||||
|
|
||||||
|
while IFS='' read -r comp; do
|
||||||
|
if [ "${comp:0:endIndex}" = "$activeHelpMarker" ]; then
|
||||||
|
comp=${comp:endIndex}
|
||||||
|
__mattermost_debug "ActiveHelp found: $comp"
|
||||||
|
if [ -n "$comp" ]; then
|
||||||
|
activeHelp+=("$comp")
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Not an activeHelp line but a normal completion
|
||||||
|
completions+=("$comp")
|
||||||
|
fi
|
||||||
|
done < <(printf "%s\n" "${out}")
|
||||||
|
}
|
||||||
|
|
||||||
|
__mattermost_handle_completion_types() {
|
||||||
|
__mattermost_debug "__mattermost_handle_completion_types: COMP_TYPE is $COMP_TYPE"
|
||||||
|
|
||||||
|
case $COMP_TYPE in
|
||||||
|
37|42)
|
||||||
|
# Type: menu-complete/menu-complete-backward and insert-completions
|
||||||
|
# If the user requested inserting one completion at a time, or all
|
||||||
|
# completions at once on the command-line we must remove the descriptions.
|
||||||
|
# https://github.com/spf13/cobra/issues/1508
|
||||||
|
local tab=$'\t' comp
|
||||||
|
while IFS='' read -r comp; do
|
||||||
|
[[ -z $comp ]] && continue
|
||||||
|
# Strip any description
|
||||||
|
comp=${comp%%$tab*}
|
||||||
|
# Only consider the completions that match
|
||||||
|
if [[ $comp == "$cur"* ]]; then
|
||||||
|
COMPREPLY+=("$comp")
|
||||||
|
fi
|
||||||
|
done < <(printf "%s\n" "${completions[@]}")
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# Type: complete (normal completion)
|
||||||
|
__mattermost_handle_standard_completion_case
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
__mattermost_handle_standard_completion_case() {
|
||||||
|
local tab=$'\t' comp
|
||||||
|
|
||||||
|
# Short circuit to optimize if we don't have descriptions
|
||||||
|
if [[ "${completions[*]}" != *$tab* ]]; then
|
||||||
|
IFS=$'\n' read -ra COMPREPLY -d '' < <(compgen -W "${completions[*]}" -- "$cur")
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
local longest=0
|
||||||
|
local compline
|
||||||
|
# Look for the longest completion so that we can format things nicely
|
||||||
|
while IFS='' read -r compline; do
|
||||||
|
[[ -z $compline ]] && continue
|
||||||
|
# Strip any description before checking the length
|
||||||
|
comp=${compline%%$tab*}
|
||||||
|
# Only consider the completions that match
|
||||||
|
[[ $comp == "$cur"* ]] || continue
|
||||||
|
COMPREPLY+=("$compline")
|
||||||
|
if ((${#comp}>longest)); then
|
||||||
|
longest=${#comp}
|
||||||
|
fi
|
||||||
|
done < <(printf "%s\n" "${completions[@]}")
|
||||||
|
|
||||||
|
# If there is a single completion left, remove the description text
|
||||||
|
if [ ${#COMPREPLY[*]} -eq 1 ]; then
|
||||||
|
__mattermost_debug "COMPREPLY[0]: ${COMPREPLY[0]}"
|
||||||
|
comp="${COMPREPLY[0]%%$tab*}"
|
||||||
|
__mattermost_debug "Removed description from single completion, which is now: ${comp}"
|
||||||
|
COMPREPLY[0]=$comp
|
||||||
|
else # Format the descriptions
|
||||||
|
__mattermost_format_comp_descriptions $longest
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
__mattermost_handle_special_char()
|
||||||
|
{
|
||||||
|
local comp="$1"
|
||||||
|
local char=$2
|
||||||
|
if [[ "$comp" == *${char}* && "$COMP_WORDBREAKS" == *${char}* ]]; then
|
||||||
|
local word=${comp%"${comp##*${char}}"}
|
||||||
|
local idx=${#COMPREPLY[*]}
|
||||||
|
while [[ $((--idx)) -ge 0 ]]; do
|
||||||
|
COMPREPLY[$idx]=${COMPREPLY[$idx]#"$word"}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
__mattermost_format_comp_descriptions()
|
||||||
|
{
|
||||||
|
local tab=$'\t'
|
||||||
|
local comp desc maxdesclength
|
||||||
|
local longest=$1
|
||||||
|
|
||||||
|
local i ci
|
||||||
|
for ci in ${!COMPREPLY[*]}; do
|
||||||
|
comp=${COMPREPLY[ci]}
|
||||||
|
# Properly format the description string which follows a tab character if there is one
|
||||||
|
if [[ "$comp" == *$tab* ]]; then
|
||||||
|
__mattermost_debug "Original comp: $comp"
|
||||||
|
desc=${comp#*$tab}
|
||||||
|
comp=${comp%%$tab*}
|
||||||
|
|
||||||
|
# $COLUMNS stores the current shell width.
|
||||||
|
# Remove an extra 4 because we add 2 spaces and 2 parentheses.
|
||||||
|
maxdesclength=$(( COLUMNS - longest - 4 ))
|
||||||
|
|
||||||
|
# Make sure we can fit a description of at least 8 characters
|
||||||
|
# if we are to align the descriptions.
|
||||||
|
if [[ $maxdesclength -gt 8 ]]; then
|
||||||
|
# Add the proper number of spaces to align the descriptions
|
||||||
|
for ((i = ${#comp} ; i < longest ; i++)); do
|
||||||
|
comp+=" "
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# Don't pad the descriptions so we can fit more text after the completion
|
||||||
|
maxdesclength=$(( COLUMNS - ${#comp} - 4 ))
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If there is enough space for any description text,
|
||||||
|
# truncate the descriptions that are too long for the shell width
|
||||||
|
if [ $maxdesclength -gt 0 ]; then
|
||||||
|
if [ ${#desc} -gt $maxdesclength ]; then
|
||||||
|
desc=${desc:0:$(( maxdesclength - 1 ))}
|
||||||
|
desc+="…"
|
||||||
|
fi
|
||||||
|
comp+=" ($desc)"
|
||||||
|
fi
|
||||||
|
COMPREPLY[ci]=$comp
|
||||||
|
__mattermost_debug "Final comp: $comp"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
__start_mattermost()
|
||||||
|
{
|
||||||
|
local cur prev words cword split
|
||||||
|
|
||||||
|
COMPREPLY=()
|
||||||
|
|
||||||
|
# Call _init_completion from the bash-completion package
|
||||||
|
# to prepare the arguments properly
|
||||||
|
if declare -F _init_completion >/dev/null 2>&1; then
|
||||||
|
_init_completion -n "=:" || return
|
||||||
|
else
|
||||||
|
__mattermost_init_completion -n "=:" || return
|
||||||
|
fi
|
||||||
|
|
||||||
|
__mattermost_debug
|
||||||
|
__mattermost_debug "========= starting completion logic =========="
|
||||||
|
__mattermost_debug "cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}, cword is $cword"
|
||||||
|
|
||||||
|
# The user could have moved the cursor backwards on the command-line.
|
||||||
|
# We need to trigger completion from the $cword location, so we need
|
||||||
|
# to truncate the command-line ($words) up to the $cword location.
|
||||||
|
words=("${words[@]:0:$cword+1}")
|
||||||
|
__mattermost_debug "Truncated words[*]: ${words[*]},"
|
||||||
|
|
||||||
|
local out directive
|
||||||
|
__mattermost_get_completion_results
|
||||||
|
__mattermost_process_completion_results
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $(type -t compopt) = "builtin" ]]; then
|
||||||
|
complete -o default -F __start_mattermost mattermost
|
||||||
|
else
|
||||||
|
complete -o default -o nospace -F __start_mattermost mattermost
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ex: ts=4 sw=4 et filetype=sh
|
|
@ -0,0 +1,3 @@
|
||||||
|
# config.json
|
||||||
|
|
||||||
|
This is the system configuration file for your Mattermost server. Settings are specific to different editions of Mattermost. Please read the documentation before making changes: https://docs.mattermost.com/configure/configuration-settings.html/
|
|
@ -0,0 +1,617 @@
|
||||||
|
{
|
||||||
|
"ServiceSettings": {
|
||||||
|
"SiteURL": "",
|
||||||
|
"WebsocketURL": "",
|
||||||
|
"LicenseFileLocation": "",
|
||||||
|
"ListenAddress": ":8065",
|
||||||
|
"ConnectionSecurity": "",
|
||||||
|
"TLSCertFile": "",
|
||||||
|
"TLSKeyFile": "",
|
||||||
|
"TLSMinVer": "1.2",
|
||||||
|
"TLSStrictTransport": false,
|
||||||
|
"TLSStrictTransportMaxAge": 63072000,
|
||||||
|
"TLSOverwriteCiphers": [],
|
||||||
|
"UseLetsEncrypt": false,
|
||||||
|
"LetsEncryptCertificateCacheFile": "./config/letsencrypt.cache",
|
||||||
|
"Forward80To443": false,
|
||||||
|
"TrustedProxyIPHeader": [],
|
||||||
|
"ReadTimeout": 300,
|
||||||
|
"WriteTimeout": 300,
|
||||||
|
"IdleTimeout": 60,
|
||||||
|
"MaximumLoginAttempts": 10,
|
||||||
|
"GoroutineHealthThreshold": -1,
|
||||||
|
"EnableOAuthServiceProvider": false,
|
||||||
|
"EnableIncomingWebhooks": true,
|
||||||
|
"EnableOutgoingWebhooks": true,
|
||||||
|
"EnableCommands": true,
|
||||||
|
"EnablePostUsernameOverride": false,
|
||||||
|
"EnablePostIconOverride": false,
|
||||||
|
"GoogleDeveloperKey": "",
|
||||||
|
"EnableLinkPreviews": true,
|
||||||
|
"EnablePermalinkPreviews": true,
|
||||||
|
"RestrictLinkPreviews": "",
|
||||||
|
"EnableTesting": false,
|
||||||
|
"EnableDeveloper": false,
|
||||||
|
"DeveloperFlags": "",
|
||||||
|
"EnableClientPerformanceDebugging": false,
|
||||||
|
"EnableOpenTracing": false,
|
||||||
|
"EnableSecurityFixAlert": true,
|
||||||
|
"EnableInsecureOutgoingConnections": false,
|
||||||
|
"AllowedUntrustedInternalConnections": "",
|
||||||
|
"EnableMultifactorAuthentication": false,
|
||||||
|
"EnforceMultifactorAuthentication": false,
|
||||||
|
"EnableUserAccessTokens": false,
|
||||||
|
"AllowCorsFrom": "",
|
||||||
|
"CorsExposedHeaders": "",
|
||||||
|
"CorsAllowCredentials": false,
|
||||||
|
"CorsDebug": false,
|
||||||
|
"AllowCookiesForSubdomains": false,
|
||||||
|
"ExtendSessionLengthWithActivity": true,
|
||||||
|
"SessionLengthWebInDays": 30,
|
||||||
|
"SessionLengthWebInHours": 720,
|
||||||
|
"SessionLengthMobileInDays": 30,
|
||||||
|
"SessionLengthMobileInHours": 720,
|
||||||
|
"SessionLengthSSOInDays": 30,
|
||||||
|
"SessionLengthSSOInHours": 720,
|
||||||
|
"SessionCacheInMinutes": 10,
|
||||||
|
"SessionIdleTimeoutInMinutes": 43200,
|
||||||
|
"WebsocketSecurePort": 443,
|
||||||
|
"WebsocketPort": 80,
|
||||||
|
"WebserverMode": "gzip",
|
||||||
|
"EnableGifPicker": true,
|
||||||
|
"GfycatAPIKey": "2_KtH_W5",
|
||||||
|
"GfycatAPISecret": "3wLVZPiswc3DnaiaFoLkDvB4X0IV6CpMkj4tf2inJRsBY6-FnkT08zGmppWFgeof",
|
||||||
|
"EnableCustomEmoji": true,
|
||||||
|
"EnableEmojiPicker": true,
|
||||||
|
"PostEditTimeLimit": -1,
|
||||||
|
"TimeBetweenUserTypingUpdatesMilliseconds": 5000,
|
||||||
|
"EnablePostSearch": true,
|
||||||
|
"EnableFileSearch": true,
|
||||||
|
"MinimumHashtagLength": 3,
|
||||||
|
"EnableUserTypingMessages": true,
|
||||||
|
"EnableChannelViewedMessages": true,
|
||||||
|
"EnableUserStatuses": true,
|
||||||
|
"ExperimentalEnableAuthenticationTransfer": true,
|
||||||
|
"ClusterLogTimeoutMilliseconds": 2000,
|
||||||
|
"EnablePreviewFeatures": true,
|
||||||
|
"EnableTutorial": true,
|
||||||
|
"EnableOnboardingFlow": true,
|
||||||
|
"ExperimentalEnableDefaultChannelLeaveJoinMessages": true,
|
||||||
|
"ExperimentalGroupUnreadChannels": "disabled",
|
||||||
|
"EnableAPITeamDeletion": false,
|
||||||
|
"EnableAPIUserDeletion": false,
|
||||||
|
"ExperimentalEnableHardenedMode": false,
|
||||||
|
"ExperimentalStrictCSRFEnforcement": false,
|
||||||
|
"EnableEmailInvitations": false,
|
||||||
|
"DisableBotsWhenOwnerIsDeactivated": true,
|
||||||
|
"EnableBotAccountCreation": false,
|
||||||
|
"EnableSVGs": false,
|
||||||
|
"EnableLatex": false,
|
||||||
|
"EnableInlineLatex": true,
|
||||||
|
"EnableAPIChannelDeletion": false,
|
||||||
|
"EnableLocalMode": false,
|
||||||
|
"LocalModeSocketLocation": "/var/tmp/mattermost_local.socket",
|
||||||
|
"EnableAWSMetering": false,
|
||||||
|
"SplitKey": "",
|
||||||
|
"FeatureFlagSyncIntervalSeconds": 30,
|
||||||
|
"DebugSplit": false,
|
||||||
|
"ThreadAutoFollow": true,
|
||||||
|
"CollapsedThreads": "always_on",
|
||||||
|
"ManagedResourcePaths": "",
|
||||||
|
"EnableCustomGroups": true
|
||||||
|
},
|
||||||
|
"TeamSettings": {
|
||||||
|
"SiteName": "Mattermost",
|
||||||
|
"MaxUsersPerTeam": 50,
|
||||||
|
"EnableUserCreation": true,
|
||||||
|
"EnableOpenServer": false,
|
||||||
|
"EnableUserDeactivation": false,
|
||||||
|
"RestrictCreationToDomains": "",
|
||||||
|
"EnableCustomUserStatuses": true,
|
||||||
|
"EnableCustomBrand": false,
|
||||||
|
"CustomBrandText": "",
|
||||||
|
"CustomDescriptionText": "",
|
||||||
|
"RestrictDirectMessage": "any",
|
||||||
|
"UserStatusAwayTimeout": 300,
|
||||||
|
"MaxChannelsPerTeam": 2000,
|
||||||
|
"MaxNotificationsPerChannel": 1000,
|
||||||
|
"EnableConfirmNotificationsToChannel": true,
|
||||||
|
"TeammateNameDisplay": "username",
|
||||||
|
"ExperimentalViewArchivedChannels": true,
|
||||||
|
"ExperimentalEnableAutomaticReplies": false,
|
||||||
|
"LockTeammateNameDisplay": false,
|
||||||
|
"ExperimentalPrimaryTeam": "",
|
||||||
|
"ExperimentalDefaultChannels": []
|
||||||
|
},
|
||||||
|
"ClientRequirements": {
|
||||||
|
"AndroidLatestVersion": "",
|
||||||
|
"AndroidMinVersion": "",
|
||||||
|
"IosLatestVersion": "",
|
||||||
|
"IosMinVersion": ""
|
||||||
|
},
|
||||||
|
"SqlSettings": {
|
||||||
|
"DriverName": "postgres",
|
||||||
|
"DataSource": "postgres://mmuser:mmtest@localhost/mattermost?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",
|
||||||
|
"DataSourceReplicas": [],
|
||||||
|
"DataSourceSearchReplicas": [],
|
||||||
|
"MaxIdleConns": 20,
|
||||||
|
"ConnMaxLifetimeMilliseconds": 3600000,
|
||||||
|
"ConnMaxIdleTimeMilliseconds": 300000,
|
||||||
|
"MaxOpenConns": 300,
|
||||||
|
"Trace": false,
|
||||||
|
"AtRestEncryptKey": "",
|
||||||
|
"QueryTimeout": 30,
|
||||||
|
"DisableDatabaseSearch": false,
|
||||||
|
"MigrationsStatementTimeoutSeconds": 100000,
|
||||||
|
"ReplicaLagSettings": []
|
||||||
|
},
|
||||||
|
"LogSettings": {
|
||||||
|
"EnableConsole": true,
|
||||||
|
"ConsoleLevel": "INFO",
|
||||||
|
"ConsoleJson": true,
|
||||||
|
"EnableColor": false,
|
||||||
|
"EnableFile": true,
|
||||||
|
"FileLevel": "INFO",
|
||||||
|
"FileJson": true,
|
||||||
|
"FileLocation": "",
|
||||||
|
"EnableWebhookDebugging": true,
|
||||||
|
"EnableDiagnostics": true,
|
||||||
|
"EnableSentry": true,
|
||||||
|
"AdvancedLoggingConfig": ""
|
||||||
|
},
|
||||||
|
"ExperimentalAuditSettings": {
|
||||||
|
"FileEnabled": false,
|
||||||
|
"FileName": "",
|
||||||
|
"FileMaxSizeMB": 100,
|
||||||
|
"FileMaxAgeDays": 0,
|
||||||
|
"FileMaxBackups": 0,
|
||||||
|
"FileCompress": false,
|
||||||
|
"FileMaxQueueSize": 1000,
|
||||||
|
"AdvancedLoggingConfig": ""
|
||||||
|
},
|
||||||
|
"NotificationLogSettings": {
|
||||||
|
"EnableConsole": true,
|
||||||
|
"ConsoleLevel": "INFO",
|
||||||
|
"ConsoleJson": true,
|
||||||
|
"EnableColor": false,
|
||||||
|
"EnableFile": true,
|
||||||
|
"FileLevel": "INFO",
|
||||||
|
"FileJson": true,
|
||||||
|
"FileLocation": "",
|
||||||
|
"AdvancedLoggingConfig": ""
|
||||||
|
},
|
||||||
|
"PasswordSettings": {
|
||||||
|
"MinimumLength": 8,
|
||||||
|
"Lowercase": false,
|
||||||
|
"Number": false,
|
||||||
|
"Uppercase": false,
|
||||||
|
"Symbol": false
|
||||||
|
},
|
||||||
|
"FileSettings": {
|
||||||
|
"EnableFileAttachments": true,
|
||||||
|
"EnableMobileUpload": true,
|
||||||
|
"EnableMobileDownload": true,
|
||||||
|
"MaxFileSize": 104857600,
|
||||||
|
"MaxImageResolution": 33177600,
|
||||||
|
"MaxImageDecoderConcurrency": -1,
|
||||||
|
"DriverName": "local",
|
||||||
|
"Directory": "./data/",
|
||||||
|
"EnablePublicLink": false,
|
||||||
|
"ExtractContent": true,
|
||||||
|
"ArchiveRecursion": false,
|
||||||
|
"PublicLinkSalt": "",
|
||||||
|
"InitialFont": "nunito-bold.ttf",
|
||||||
|
"AmazonS3AccessKeyId": "",
|
||||||
|
"AmazonS3SecretAccessKey": "",
|
||||||
|
"AmazonS3Bucket": "",
|
||||||
|
"AmazonS3PathPrefix": "",
|
||||||
|
"AmazonS3Region": "",
|
||||||
|
"AmazonS3Endpoint": "s3.amazonaws.com",
|
||||||
|
"AmazonS3SSL": true,
|
||||||
|
"AmazonS3SignV2": false,
|
||||||
|
"AmazonS3SSE": false,
|
||||||
|
"AmazonS3Trace": false,
|
||||||
|
"AmazonS3RequestTimeoutMilliseconds": 30000
|
||||||
|
},
|
||||||
|
"EmailSettings": {
|
||||||
|
"EnableSignUpWithEmail": true,
|
||||||
|
"EnableSignInWithEmail": true,
|
||||||
|
"EnableSignInWithUsername": true,
|
||||||
|
"SendEmailNotifications": false,
|
||||||
|
"UseChannelInEmailNotifications": false,
|
||||||
|
"RequireEmailVerification": false,
|
||||||
|
"FeedbackName": "",
|
||||||
|
"FeedbackEmail": "",
|
||||||
|
"ReplyToAddress": "",
|
||||||
|
"FeedbackOrganization": "",
|
||||||
|
"EnableSMTPAuth": false,
|
||||||
|
"SMTPUsername": "",
|
||||||
|
"SMTPPassword": "",
|
||||||
|
"SMTPServer": "",
|
||||||
|
"SMTPPort": "10025",
|
||||||
|
"SMTPServerTimeout": 10,
|
||||||
|
"ConnectionSecurity": "",
|
||||||
|
"SendPushNotifications": true,
|
||||||
|
"PushNotificationServer": "https://push-test.mattermost.com",
|
||||||
|
"PushNotificationContents": "full",
|
||||||
|
"PushNotificationBuffer": 1000,
|
||||||
|
"EnableEmailBatching": false,
|
||||||
|
"EmailBatchingBufferSize": 256,
|
||||||
|
"EmailBatchingInterval": 30,
|
||||||
|
"EnablePreviewModeBanner": true,
|
||||||
|
"SkipServerCertificateVerification": false,
|
||||||
|
"EmailNotificationContentsType": "full",
|
||||||
|
"LoginButtonColor": "#0000",
|
||||||
|
"LoginButtonBorderColor": "#2389D7",
|
||||||
|
"LoginButtonTextColor": "#2389D7",
|
||||||
|
"EnableInactivityEmail": true
|
||||||
|
},
|
||||||
|
"RateLimitSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"PerSec": 10,
|
||||||
|
"MaxBurst": 100,
|
||||||
|
"MemoryStoreSize": 10000,
|
||||||
|
"VaryByRemoteAddr": true,
|
||||||
|
"VaryByUser": false,
|
||||||
|
"VaryByHeader": ""
|
||||||
|
},
|
||||||
|
"PrivacySettings": {
|
||||||
|
"ShowEmailAddress": true,
|
||||||
|
"ShowFullName": true
|
||||||
|
},
|
||||||
|
"SupportSettings": {
|
||||||
|
"TermsOfServiceLink": "https://mattermost.com/terms-of-use/",
|
||||||
|
"PrivacyPolicyLink": "https://mattermost.com/privacy-policy/",
|
||||||
|
"AboutLink": "https://docs.mattermost.com/about/product.html/",
|
||||||
|
"HelpLink": "https://mattermost.com/default-help/",
|
||||||
|
"ReportAProblemLink": "https://mattermost.com/default-report-a-problem/",
|
||||||
|
"SupportEmail": "",
|
||||||
|
"CustomTermsOfServiceEnabled": false,
|
||||||
|
"CustomTermsOfServiceReAcceptancePeriod": 365,
|
||||||
|
"EnableAskCommunityLink": true
|
||||||
|
},
|
||||||
|
"AnnouncementSettings": {
|
||||||
|
"EnableBanner": false,
|
||||||
|
"BannerText": "",
|
||||||
|
"BannerColor": "#f2a93b",
|
||||||
|
"BannerTextColor": "#333333",
|
||||||
|
"AllowBannerDismissal": true,
|
||||||
|
"AdminNoticesEnabled": true,
|
||||||
|
"UserNoticesEnabled": true,
|
||||||
|
"NoticesURL": "https://notices.mattermost.com/",
|
||||||
|
"NoticesFetchFrequency": 3600,
|
||||||
|
"NoticesSkipCache": false
|
||||||
|
},
|
||||||
|
"ThemeSettings": {
|
||||||
|
"EnableThemeSelection": true,
|
||||||
|
"DefaultTheme": "default",
|
||||||
|
"AllowCustomThemes": true,
|
||||||
|
"AllowedThemes": []
|
||||||
|
},
|
||||||
|
"GitLabSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"Secret": "",
|
||||||
|
"Id": "",
|
||||||
|
"Scope": "",
|
||||||
|
"AuthEndpoint": "",
|
||||||
|
"TokenEndpoint": "",
|
||||||
|
"UserAPIEndpoint": "",
|
||||||
|
"DiscoveryEndpoint": "",
|
||||||
|
"ButtonText": "",
|
||||||
|
"ButtonColor": ""
|
||||||
|
},
|
||||||
|
"GoogleSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"Secret": "",
|
||||||
|
"Id": "",
|
||||||
|
"Scope": "profile email",
|
||||||
|
"AuthEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
|
||||||
|
"TokenEndpoint": "https://www.googleapis.com/oauth2/v4/token",
|
||||||
|
"UserAPIEndpoint": "https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses,nicknames,metadata",
|
||||||
|
"DiscoveryEndpoint": "",
|
||||||
|
"ButtonText": "",
|
||||||
|
"ButtonColor": ""
|
||||||
|
},
|
||||||
|
"Office365Settings": {
|
||||||
|
"Enable": false,
|
||||||
|
"Secret": "",
|
||||||
|
"Id": "",
|
||||||
|
"Scope": "User.Read",
|
||||||
|
"AuthEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
|
||||||
|
"TokenEndpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
|
||||||
|
"UserAPIEndpoint": "https://graph.microsoft.com/v1.0/me",
|
||||||
|
"DiscoveryEndpoint": "",
|
||||||
|
"DirectoryId": ""
|
||||||
|
},
|
||||||
|
"OpenIdSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"Secret": "",
|
||||||
|
"Id": "",
|
||||||
|
"Scope": "profile openid email",
|
||||||
|
"AuthEndpoint": "",
|
||||||
|
"TokenEndpoint": "",
|
||||||
|
"UserAPIEndpoint": "",
|
||||||
|
"DiscoveryEndpoint": "",
|
||||||
|
"ButtonText": "",
|
||||||
|
"ButtonColor": "#145DBF"
|
||||||
|
},
|
||||||
|
"LdapSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"EnableSync": false,
|
||||||
|
"LdapServer": "",
|
||||||
|
"LdapPort": 389,
|
||||||
|
"ConnectionSecurity": "",
|
||||||
|
"BaseDN": "",
|
||||||
|
"BindUsername": "",
|
||||||
|
"BindPassword": "",
|
||||||
|
"UserFilter": "",
|
||||||
|
"GroupFilter": "",
|
||||||
|
"GuestFilter": "",
|
||||||
|
"EnableAdminFilter": false,
|
||||||
|
"AdminFilter": "",
|
||||||
|
"GroupDisplayNameAttribute": "",
|
||||||
|
"GroupIdAttribute": "",
|
||||||
|
"FirstNameAttribute": "",
|
||||||
|
"LastNameAttribute": "",
|
||||||
|
"EmailAttribute": "",
|
||||||
|
"UsernameAttribute": "",
|
||||||
|
"NicknameAttribute": "",
|
||||||
|
"IdAttribute": "",
|
||||||
|
"PositionAttribute": "",
|
||||||
|
"LoginIdAttribute": "",
|
||||||
|
"PictureAttribute": "",
|
||||||
|
"SyncIntervalMinutes": 60,
|
||||||
|
"SkipCertificateVerification": false,
|
||||||
|
"PublicCertificateFile": "",
|
||||||
|
"PrivateKeyFile": "",
|
||||||
|
"QueryTimeout": 60,
|
||||||
|
"MaxPageSize": 0,
|
||||||
|
"LoginFieldName": "",
|
||||||
|
"LoginButtonColor": "#0000",
|
||||||
|
"LoginButtonBorderColor": "#2389D7",
|
||||||
|
"LoginButtonTextColor": "#2389D7",
|
||||||
|
"Trace": false
|
||||||
|
},
|
||||||
|
"ComplianceSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"Directory": "./data/",
|
||||||
|
"EnableDaily": false,
|
||||||
|
"BatchSize": 30000
|
||||||
|
},
|
||||||
|
"LocalizationSettings": {
|
||||||
|
"DefaultServerLocale": "en",
|
||||||
|
"DefaultClientLocale": "en",
|
||||||
|
"AvailableLocales": ""
|
||||||
|
},
|
||||||
|
"SamlSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"EnableSyncWithLdap": false,
|
||||||
|
"EnableSyncWithLdapIncludeAuth": false,
|
||||||
|
"IgnoreGuestsLdapSync": false,
|
||||||
|
"Verify": true,
|
||||||
|
"Encrypt": true,
|
||||||
|
"SignRequest": false,
|
||||||
|
"IdpURL": "",
|
||||||
|
"IdpDescriptorURL": "",
|
||||||
|
"IdpMetadataURL": "",
|
||||||
|
"ServiceProviderIdentifier": "",
|
||||||
|
"AssertionConsumerServiceURL": "",
|
||||||
|
"SignatureAlgorithm": "RSAwithSHA1",
|
||||||
|
"CanonicalAlgorithm": "Canonical1.0",
|
||||||
|
"ScopingIDPProviderId": "",
|
||||||
|
"ScopingIDPName": "",
|
||||||
|
"IdpCertificateFile": "",
|
||||||
|
"PublicCertificateFile": "",
|
||||||
|
"PrivateKeyFile": "",
|
||||||
|
"IdAttribute": "",
|
||||||
|
"GuestAttribute": "",
|
||||||
|
"EnableAdminAttribute": false,
|
||||||
|
"AdminAttribute": "",
|
||||||
|
"FirstNameAttribute": "",
|
||||||
|
"LastNameAttribute": "",
|
||||||
|
"EmailAttribute": "",
|
||||||
|
"UsernameAttribute": "",
|
||||||
|
"NicknameAttribute": "",
|
||||||
|
"LocaleAttribute": "",
|
||||||
|
"PositionAttribute": "",
|
||||||
|
"LoginButtonText": "SAML",
|
||||||
|
"LoginButtonColor": "#34a28b",
|
||||||
|
"LoginButtonBorderColor": "#2389D7",
|
||||||
|
"LoginButtonTextColor": "#ffffff"
|
||||||
|
},
|
||||||
|
"NativeAppSettings": {
|
||||||
|
"AppCustomURLSchemes": [
|
||||||
|
"mmauth://",
|
||||||
|
"mmauthbeta://"
|
||||||
|
],
|
||||||
|
"AppDownloadLink": "https://mattermost.com/download/#mattermostApps",
|
||||||
|
"AndroidAppDownloadLink": "https://mattermost.com/mattermost-android-app/",
|
||||||
|
"IosAppDownloadLink": "https://mattermost.com/mattermost-ios-app/"
|
||||||
|
},
|
||||||
|
"ClusterSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"ClusterName": "",
|
||||||
|
"OverrideHostname": "",
|
||||||
|
"NetworkInterface": "",
|
||||||
|
"BindAddress": "",
|
||||||
|
"AdvertiseAddress": "",
|
||||||
|
"UseIPAddress": true,
|
||||||
|
"EnableGossipCompression": true,
|
||||||
|
"EnableExperimentalGossipEncryption": false,
|
||||||
|
"ReadOnlyConfig": true,
|
||||||
|
"GossipPort": 8074,
|
||||||
|
"StreamingPort": 8075,
|
||||||
|
"MaxIdleConns": 100,
|
||||||
|
"MaxIdleConnsPerHost": 128,
|
||||||
|
"IdleConnTimeoutMilliseconds": 90000
|
||||||
|
},
|
||||||
|
"MetricsSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"BlockProfileRate": 0,
|
||||||
|
"ListenAddress": ":8067"
|
||||||
|
},
|
||||||
|
"ExperimentalSettings": {
|
||||||
|
"ClientSideCertEnable": false,
|
||||||
|
"ClientSideCertCheck": "secondary",
|
||||||
|
"LinkMetadataTimeoutMilliseconds": 5000,
|
||||||
|
"RestrictSystemAdmin": false,
|
||||||
|
"UseNewSAMLLibrary": false,
|
||||||
|
"CloudBilling": false,
|
||||||
|
"EnableSharedChannels": false,
|
||||||
|
"EnableRemoteClusterService": false,
|
||||||
|
"EnableAppBar": false
|
||||||
|
},
|
||||||
|
"AnalyticsSettings": {
|
||||||
|
"MaxUsersForStatistics": 2500
|
||||||
|
},
|
||||||
|
"ElasticsearchSettings": {
|
||||||
|
"ConnectionURL": "http://localhost:9200",
|
||||||
|
"Username": "elastic",
|
||||||
|
"Password": "changeme",
|
||||||
|
"EnableIndexing": false,
|
||||||
|
"EnableSearching": false,
|
||||||
|
"EnableAutocomplete": false,
|
||||||
|
"Sniff": true,
|
||||||
|
"PostIndexReplicas": 1,
|
||||||
|
"PostIndexShards": 1,
|
||||||
|
"ChannelIndexReplicas": 1,
|
||||||
|
"ChannelIndexShards": 1,
|
||||||
|
"UserIndexReplicas": 1,
|
||||||
|
"UserIndexShards": 1,
|
||||||
|
"AggregatePostsAfterDays": 365,
|
||||||
|
"PostsAggregatorJobStartTime": "03:00",
|
||||||
|
"IndexPrefix": "",
|
||||||
|
"LiveIndexingBatchSize": 1,
|
||||||
|
"BatchSize": 10000,
|
||||||
|
"RequestTimeoutSeconds": 30,
|
||||||
|
"SkipTLSVerification": false,
|
||||||
|
"Trace": ""
|
||||||
|
},
|
||||||
|
"BleveSettings": {
|
||||||
|
"IndexDir": "",
|
||||||
|
"EnableIndexing": false,
|
||||||
|
"EnableSearching": false,
|
||||||
|
"EnableAutocomplete": false,
|
||||||
|
"BatchSize": 10000
|
||||||
|
},
|
||||||
|
"DataRetentionSettings": {
|
||||||
|
"EnableMessageDeletion": false,
|
||||||
|
"EnableFileDeletion": false,
|
||||||
|
"EnableBoardsDeletion": false,
|
||||||
|
"MessageRetentionDays": 365,
|
||||||
|
"FileRetentionDays": 365,
|
||||||
|
"BoardsRetentionDays": 365,
|
||||||
|
"DeletionJobStartTime": "02:00",
|
||||||
|
"BatchSize": 3000
|
||||||
|
},
|
||||||
|
"MessageExportSettings": {
|
||||||
|
"EnableExport": false,
|
||||||
|
"ExportFormat": "actiance",
|
||||||
|
"DailyRunTime": "01:00",
|
||||||
|
"ExportFromTimestamp": 0,
|
||||||
|
"BatchSize": 10000,
|
||||||
|
"DownloadExportResults": false,
|
||||||
|
"GlobalRelaySettings": {
|
||||||
|
"CustomerType": "A9",
|
||||||
|
"SMTPUsername": "",
|
||||||
|
"SMTPPassword": "",
|
||||||
|
"EmailAddress": "",
|
||||||
|
"SMTPServerTimeout": 1800
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"JobSettings": {
|
||||||
|
"RunJobs": true,
|
||||||
|
"RunScheduler": true,
|
||||||
|
"CleanupJobsThresholdDays": -1,
|
||||||
|
"CleanupConfigThresholdDays": -1
|
||||||
|
},
|
||||||
|
"PluginSettings": {
|
||||||
|
"Enable": true,
|
||||||
|
"EnableUploads": false,
|
||||||
|
"AllowInsecureDownloadURL": false,
|
||||||
|
"EnableHealthCheck": true,
|
||||||
|
"Directory": "./plugins",
|
||||||
|
"ClientDirectory": "./client/plugins",
|
||||||
|
"Plugins": {},
|
||||||
|
"PluginStates": {
|
||||||
|
"com.mattermost.apps": {
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
"com.mattermost.calls": {
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
"com.mattermost.nps": {
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
"focalboard": {
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
"playbooks": {
|
||||||
|
"Enable": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EnableMarketplace": true,
|
||||||
|
"EnableRemoteMarketplace": true,
|
||||||
|
"AutomaticPrepackagedPlugins": true,
|
||||||
|
"RequirePluginSignature": false,
|
||||||
|
"MarketplaceURL": "https://api.integrations.mattermost.com",
|
||||||
|
"SignaturePublicKeyFiles": [],
|
||||||
|
"ChimeraOAuthProxyURL": ""
|
||||||
|
},
|
||||||
|
"DisplaySettings": {
|
||||||
|
"CustomURLSchemes": [],
|
||||||
|
"ExperimentalTimezone": true
|
||||||
|
},
|
||||||
|
"GuestAccountsSettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"AllowEmailAccounts": true,
|
||||||
|
"EnforceMultifactorAuthentication": false,
|
||||||
|
"RestrictCreationToDomains": ""
|
||||||
|
},
|
||||||
|
"ImageProxySettings": {
|
||||||
|
"Enable": false,
|
||||||
|
"ImageProxyType": "local",
|
||||||
|
"RemoteImageProxyURL": "",
|
||||||
|
"RemoteImageProxyOptions": ""
|
||||||
|
},
|
||||||
|
"CloudSettings": {
|
||||||
|
"CWSURL": "https://customers.mattermost.com",
|
||||||
|
"CWSAPIURL": "https://portal.internal.prod.cloud.mattermost.com"
|
||||||
|
},
|
||||||
|
"FeatureFlags": {
|
||||||
|
"TestFeature": "off",
|
||||||
|
"TestBoolFeature": false,
|
||||||
|
"CollapsedThreads": true,
|
||||||
|
"EnableRemoteClusterService": false,
|
||||||
|
"AppsEnabled": true,
|
||||||
|
"PluginPlaybooks": "",
|
||||||
|
"PluginApps": "",
|
||||||
|
"PluginFocalboard": "",
|
||||||
|
"PluginCalls": "",
|
||||||
|
"PermalinkPreviews": true,
|
||||||
|
"CallsMobile": false,
|
||||||
|
"CallsEnabled": true,
|
||||||
|
"BoardsFeatureFlags": "",
|
||||||
|
"GuidedChannelCreation": false,
|
||||||
|
"InviteToTeam": "none",
|
||||||
|
"CustomGroups": true,
|
||||||
|
"BoardsDataRetention": false,
|
||||||
|
"NormalizeLdapDNs": false,
|
||||||
|
"EnableInactivityCheckJob": true,
|
||||||
|
"UseCaseOnboarding": true,
|
||||||
|
"GraphQL": false,
|
||||||
|
"InsightsEnabled": true,
|
||||||
|
"CommandPalette": false,
|
||||||
|
"AdvancedTextEditor": true,
|
||||||
|
"BoardsProduct": false,
|
||||||
|
"PlanUpgradeButtonText": "upgrade"
|
||||||
|
},
|
||||||
|
"ImportSettings": {
|
||||||
|
"Directory": "./import",
|
||||||
|
"RetentionDays": 30
|
||||||
|
},
|
||||||
|
"ExportSettings": {
|
||||||
|
"Directory": "./export",
|
||||||
|
"RetentionDays": 30
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
DROP DATABASE mattermost;
|
||||||
|
CREATE DATABASE mattermost;
|
||||||
|
CREATE USER mmuser WITH PASSWORD 'mmpass';
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;
|
|
@ -0,0 +1,4 @@
|
||||||
|
#
|
||||||
|
# PostgreSQL Authentication Configuration for Mattermost
|
||||||
|
#
|
||||||
|
local all mattermost trust
|
|
@ -5,7 +5,7 @@ After=postgresql.service
|
||||||
BindsTo=postgresql.service
|
BindsTo=postgresql.service
|
||||||
[Service]
|
[Service]
|
||||||
Type=notify
|
Type=notify
|
||||||
ExecStart=/opt/mattermost/bin/mattermost
|
ExecStart=/usr/bin/mattermost --config files/etc/mattermost/config.json
|
||||||
TimeoutStartSec=3600
|
TimeoutStartSec=3600
|
||||||
KillMode=mixed
|
KillMode=mixed
|
||||||
Restart=always
|
Restart=always
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cd /opt/mattermost
|
||||||
|
./bin/mattermost --config /etc/mattermost/config.json
|
|
@ -0,0 +1 @@
|
||||||
|
../../opt/mattermost/bin/mmctl
|
Binary file not shown.
|
@ -0,0 +1,897 @@
|
||||||
|
Mattermost Licensing
|
||||||
|
|
||||||
|
SOFTWARE LICENSING
|
||||||
|
|
||||||
|
You are licensed to use compiled versions of the Mattermost platform produced by Mattermost, Inc. under an MIT LICENSE
|
||||||
|
|
||||||
|
- See MIT-COMPILED-LICENSE.md included in compiled versions for details
|
||||||
|
|
||||||
|
You may be licensed to use source code to create compiled versions not produced by Mattermost, Inc. in one of two ways:
|
||||||
|
|
||||||
|
1. Under the Free Software Foundation’s GNU AGPL v.3.0, subject to the exceptions outlined in this policy; or
|
||||||
|
2. Under a commercial license available from Mattermost, Inc. by contacting commercial@mattermost.com
|
||||||
|
|
||||||
|
You are licensed to use the source code in Admin Tools and Configuration Files (templates/, config/default.json, i18n/, model/,
|
||||||
|
plugin/ and all subdirectories thereof) under the Apache License v2.0.
|
||||||
|
|
||||||
|
We promise that we will not enforce the copyleft provisions in AGPL v3.0 against you if your application (a) does not
|
||||||
|
link to the Mattermost Platform directly, but exclusively uses the Mattermost Admin Tools and Configuration Files, and
|
||||||
|
(b) you have not modified, added to or adapted the source code of Mattermost in a way that results in the creation of
|
||||||
|
a “modified version” or “work based on” Mattermost as these terms are defined in the AGPL v3.0 license.
|
||||||
|
|
||||||
|
MATTERMOST TRADEMARK GUIDELINES
|
||||||
|
|
||||||
|
Your use of the mark Mattermost is subject to Mattermost, Inc's prior written approval and our organization’s Trademark
|
||||||
|
Standards of Use at https://mattermost.com/trademark-standards-of-use/. For trademark approval or any questions
|
||||||
|
you have about using these trademarks, please email trademark@mattermost.com
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
The software is released under the terms of the GNU Affero General Public
|
||||||
|
License, version 3.
|
||||||
|
|
||||||
|
GNU AFFERO GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 19 November 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU Affero General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works, specifically designed to ensure
|
||||||
|
cooperation with the community in the case of network server software.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
our General Public Licenses are intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
Developers that use our General Public Licenses protect your rights
|
||||||
|
with two steps: (1) assert copyright on the software, and (2) offer
|
||||||
|
you this License which gives you legal permission to copy, distribute
|
||||||
|
and/or modify the software.
|
||||||
|
|
||||||
|
A secondary benefit of defending all users' freedom is that
|
||||||
|
improvements made in alternate versions of the program, if they
|
||||||
|
receive widespread use, become available for other developers to
|
||||||
|
incorporate. Many developers of free software are heartened and
|
||||||
|
encouraged by the resulting cooperation. However, in the case of
|
||||||
|
software used on network servers, this result may fail to come about.
|
||||||
|
The GNU General Public License permits making a modified version and
|
||||||
|
letting the public access it on a server without ever releasing its
|
||||||
|
source code to the public.
|
||||||
|
|
||||||
|
The GNU Affero General Public License is designed specifically to
|
||||||
|
ensure that, in such cases, the modified source code becomes available
|
||||||
|
to the community. It requires the operator of a network server to
|
||||||
|
provide the source code of the modified version running there to the
|
||||||
|
users of that server. Therefore, public use of a modified version, on
|
||||||
|
a publicly accessible server, gives the public access to the source
|
||||||
|
code of the modified version.
|
||||||
|
|
||||||
|
An older license, called the Affero General Public License and
|
||||||
|
published by Affero, was designed to accomplish similar goals. This is
|
||||||
|
a different license, not a version of the Affero GPL, but Affero has
|
||||||
|
released a new version of the Affero GPL which permits relicensing under
|
||||||
|
this license.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU Affero General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Remote Network Interaction; Use with the GNU General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, if you modify the
|
||||||
|
Program, your modified version must prominently offer all users
|
||||||
|
interacting with it remotely through a computer network (if your version
|
||||||
|
supports such interaction) an opportunity to receive the Corresponding
|
||||||
|
Source of your version by providing access to the Corresponding Source
|
||||||
|
from a network server at no charge, through some standard or customary
|
||||||
|
means of facilitating copying of software. This Corresponding Source
|
||||||
|
shall include the Corresponding Source for any work covered by version 3
|
||||||
|
of the GNU General Public License that is incorporated pursuant to the
|
||||||
|
following paragraph.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the work with which it is combined will remain governed by version
|
||||||
|
3 of the GNU General Public License.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU Affero General Public License from time to time. Such new versions
|
||||||
|
will be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU Affero General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU Affero General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU Affero General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If your software can interact with users remotely through a computer
|
||||||
|
network, you should also make sure that it provides a way for users to
|
||||||
|
get its source. For example, if your program is a web application, its
|
||||||
|
interface could display a "Source" link that leads users to an archive
|
||||||
|
of the code. There are many ways you could offer source, and different
|
||||||
|
solutions will be better for different programs; see section 13 for the
|
||||||
|
specific requirements.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU AGPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# create the mattermost user and database
|
||||||
|
su postgres -c 'createuser mmuser'
|
||||||
|
|
||||||
|
# not sure this or the other one works
|
||||||
|
# su postgres -c 'createdb mattermost'
|
||||||
|
su postgres -c 'createdb -O mmuser mattermost'
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo systemctl status mattermost.service
|
||||||
|
echo
|
||||||
|
echo 'su - postgres'
|
||||||
|
echo 'psql'
|
||||||
|
echo '\\db # will list the tablespaces'
|
||||||
|
echo '\\dg # will list users'
|
||||||
|
echo
|
||||||
|
echo "ALTER USER mmuser with password 'mmpass';"
|
||||||
|
echo
|
||||||
|
echo "CREATE DATABASE mattermost;"
|
||||||
|
echo "CREATE USER mmuser WITH PASSWORD 'mmpass';"
|
||||||
|
echo "GRANT ALL PRIVILEGES ON DATABASE mattermost to mmuser;"
|
||||||
|
echo
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh -x
|
||||||
|
echo "got here in mattermost -- jcarr put this here"
|
||||||
|
touch /tmp/mattermost.jcarr.install
|
||||||
|
echo
|
||||||
|
echo follow the instructions to complete an install from here:
|
||||||
|
echo
|
||||||
|
echo https://docs.mattermost.com/install/install-tar.html
|
||||||
|
echo
|
||||||
|
|
||||||
|
useradd --system --user-group mattermost
|
||||||
|
echo $?
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
echo systemctl status mattermost.service
|
||||||
|
echo systemctl start mattermost.service
|
|
@ -0,0 +1,74 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
VERSION=221118-e58fee0fb
|
||||||
|
BASENAME=photoprism
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
all: download clean extract DEBIAN build
|
||||||
|
|
||||||
|
build-dep:
|
||||||
|
apt install tensorflow # this isn't actually packaged
|
||||||
|
git clone https://github.com/photoprism/photoprism.git
|
||||||
|
dd photoprism
|
||||||
|
git checkout release
|
||||||
|
sudo make all
|
||||||
|
sudo ./scripts/build.sh prod /opt/photoprism/bin/photoprism
|
||||||
|
sudo cp -a assets/ /opt/photoprism/assets
|
||||||
|
# now follow instructions for adduser, postgresql, etc:
|
||||||
|
# https://github.com/IndrekHaav/photoprism-debian
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
download:
|
||||||
|
@echo
|
||||||
|
@echo This uses the binary /usr/local/bin/photoprism
|
||||||
|
@echo
|
||||||
|
@echo https://github.com/photoprism/photoprism/releases
|
||||||
|
@echo mkdir ~/go/src/github.com/photoprism; cd ~/go/src/github.com/photoprism/
|
||||||
|
@echo git clone http://github.com/photoprism/photoprism
|
||||||
|
@echo cd photoprims/; go get -v -u ...
|
||||||
|
|
||||||
|
extract:
|
||||||
|
cp -a files ../
|
||||||
|
mkdir -p ../files/opt/
|
||||||
|
cd ../files/opt/ && tar xfz ../../221118-e58fee0fb.tar.gz
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
|
||||||
|
# make the md5sum file
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
# make the control there
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
# echo Version: ${VERSION} >>DEBIAN/control
|
||||||
|
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
|
||||||
|
# how to make a debian package "raw" just using tar and ar
|
||||||
|
#
|
||||||
|
# READ THIS AGAIN:
|
||||||
|
#
|
||||||
|
# A .deb file is just output from 'ar rcs'
|
||||||
|
#
|
||||||
|
tar-ar: control
|
||||||
|
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz .
|
||||||
|
cd files && tar -cvJf ../data.tar.xz .
|
||||||
|
ar rcs ${BASENAME}_${VERSION}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
||||||
|
dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
|
@ -0,0 +1 @@
|
||||||
|
10
|
|
@ -0,0 +1,13 @@
|
||||||
|
Source: photoprism
|
||||||
|
Build-Depends: golang
|
||||||
|
Package: photoprism
|
||||||
|
Version: 221118-e58fee0fb
|
||||||
|
Maintainer: Jeff Carr <jcarr@wit.com>
|
||||||
|
Architecture: any
|
||||||
|
Depends:
|
||||||
|
Description: self-hosted web application for managing and organising a photo collection
|
||||||
|
PhotoPrism® is an AI-Powered Photos App for the Decentralized Web.
|
||||||
|
.
|
||||||
|
It makes use of the latest technologies to tag and find pictures automatically without
|
||||||
|
getting in your way. You can run it at home, on a private server, or in the cloud.
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
[Unit]
|
||||||
|
Description=PhotoPrism service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
User=photoprism
|
||||||
|
Group=photoprism
|
||||||
|
WorkingDirectory=/opt/photoprism
|
||||||
|
EnvironmentFile=/var/lib/photoprism/.env
|
||||||
|
ExecStart=/opt/photoprism/bin/photoprism up -d
|
||||||
|
ExecStop=/opt/photoprism/bin/photoprism down
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1 @@
|
||||||
|
#!/bin/sh
|
|
@ -0,0 +1,78 @@
|
||||||
|
.PHONY: control
|
||||||
|
|
||||||
|
VERSION=0.6.2
|
||||||
|
BASENAME=tensorflow
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo
|
||||||
|
@echo "make all # to attempt to download, extract and build the .deb package using dpkg"
|
||||||
|
@echo
|
||||||
|
|
||||||
|
all: download clean extract DEBIAN build
|
||||||
|
|
||||||
|
build-deb:
|
||||||
|
# apt install -y gcc g++ git gnupg make zip unzip
|
||||||
|
# pip install tensorflow
|
||||||
|
# this actually seems to work:
|
||||||
|
pip install tf-nightly-cpu
|
||||||
|
|
||||||
|
build:
|
||||||
|
apt install python3-dev python3-pip
|
||||||
|
pip install -U --user pip numpy wheel packaging requests opt_einsum
|
||||||
|
pip install -U --user keras_preprocessing --no-deps
|
||||||
|
apt install bazel
|
||||||
|
mkdir ~/tmp; cd ~/tmp/ && git clone https://github.com/tensorflow/tensorflow.git
|
||||||
|
./configure
|
||||||
|
bazel build [--config=option] //tensorflow/tools/pip_package:build_pip_package # for cpu support
|
||||||
|
bazel build --config=cuda [--config=option] //tensorflow/tools/pip_package:build_pip_package # for gpu support
|
||||||
|
./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg
|
||||||
|
pip install /tmp/tensorflow_pkg/tensorflow-version
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf ../files
|
||||||
|
rm -f ../*.deb
|
||||||
|
rm -f ../*.tar.xz data.tar.xz
|
||||||
|
rm -rf DEBIAN
|
||||||
|
|
||||||
|
download:
|
||||||
|
@echo
|
||||||
|
@echo This uses the binary /usr/local/bin/tensorflow
|
||||||
|
@echo
|
||||||
|
@echo pip install tensorflow
|
||||||
|
|
||||||
|
extract:
|
||||||
|
cp -a files ../
|
||||||
|
mkdir -p ../files/usr/bin
|
||||||
|
cp /usr/local/bin/tensorflow ../files/usr/bin
|
||||||
|
|
||||||
|
# makes the DEBIAN/ directory
|
||||||
|
DEBIAN:
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
|
||||||
|
# make the md5sum file
|
||||||
|
cd ../files/ && find -type f -exec md5sum '{}' \; |sort -k2 >../md5sums
|
||||||
|
mv ../md5sums DEBIAN/
|
||||||
|
|
||||||
|
# make the control there
|
||||||
|
mkdir -p DEBIAN
|
||||||
|
cp control DEBIAN/
|
||||||
|
# echo Version: ${VERSION} >>DEBIAN/control
|
||||||
|
|
||||||
|
cp postinst DEBIAN
|
||||||
|
|
||||||
|
build:
|
||||||
|
mv DEBIAN ../files/
|
||||||
|
cd .. && dpkg-deb --build files ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
cd .. && dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
||||||
|
|
||||||
|
# how to make a debian package "raw" just using tar and ar
|
||||||
|
#
|
||||||
|
# READ THIS AGAIN:
|
||||||
|
#
|
||||||
|
# A .deb file is just output from 'ar rcs'
|
||||||
|
#
|
||||||
|
tar-ar: control
|
||||||
|
cd DEBIAN && tar --ignore-failed-read -cvJf ../control.tar.xz .
|
||||||
|
cd files && tar -cvJf ../data.tar.xz .
|
||||||
|
ar rcs ${BASENAME}_${VERSION}_amd64.deb debian-binary control.tar.xz data.tar.xz
|
||||||
|
dpkg-deb --info ${BASENAME}_${VERSION}_amd64.deb
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue