Compare commits
23 commits
main
...
config-vm2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f3d6805dc3 | ||
![]() |
bf135a21fc | ||
![]() |
90936d9157 | ||
![]() |
a316a8ebb3 | ||
![]() |
cc5ead065a | ||
![]() |
46ce2eb844 | ||
![]() |
5a76df1024 | ||
![]() |
e770b84bf5 | ||
![]() |
a7f5ae1372 | ||
![]() |
a7b68f4acc | ||
![]() |
5a40460011 | ||
![]() |
df00b6436e | ||
![]() |
c6644e7a8b | ||
![]() |
8bc72c9448 | ||
![]() |
cac8fb2769 | ||
![]() |
51acd19b62 | ||
![]() |
0498f7c7dc | ||
![]() |
689d58c207 | ||
![]() |
32f8bb9074 | ||
![]() |
0ccda8a71b | ||
![]() |
0866001604 | ||
![]() |
09fc19fb1f | ||
![]() |
583ec495b1 |
38 changed files with 176 additions and 6693 deletions
57
.env.default
57
.env.default
|
@ -1,46 +1,19 @@
|
|||
# ssl
|
||||
LETSENCRYPT_EMAIL=root@localhost.localdomain
|
||||
LETSENCRYPT_DNSPROVIDER_TOKEN=
|
||||
|
||||
# off sites
|
||||
HOST_BAIKAL=
|
||||
HOST_MAIL=
|
||||
HOST_NETDATA=
|
||||
|
||||
# sites
|
||||
DOMAIN=traefik.me
|
||||
HOST_BLOG=blog
|
||||
HOST_DOKUWIKI=dokuwiki
|
||||
HOST_PIGALLERY=pigallery
|
||||
HOST_PHOTOVIEW=photoview
|
||||
HOST_PHOTONIX=photonix
|
||||
HOST_LYCHEE=lychee
|
||||
HOST_SEAFILE=seafile
|
||||
HOST_SELFOSS=selfoss
|
||||
HOST_SHAARLI=shaarli
|
||||
HOST_GITEA=gitea
|
||||
HOST_WALLABAG=wallabag
|
||||
HOST_WWW=www
|
||||
FQDN_DASHBOARD=dashboard.traefik.me
|
||||
PATH_PORTAINER=/portainer
|
||||
PATH_GLANCES=/glances
|
||||
PATH_DELUGE=/deluge
|
||||
|
||||
# other
|
||||
TZ=Europe/Paris
|
||||
BASIC_AUTH=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/
|
||||
# general
|
||||
ROOT_INSTALL=/srv
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
|
||||
# torrent
|
||||
DELUGE_TORRENT_PORT=6881
|
||||
DOWNLOAD_HTTP_PORT=8000
|
||||
TZ=Europe/Paris
|
||||
DOMAIN=domain.com
|
||||
|
||||
# seafile
|
||||
SEAFILE_ADMIN_EMAIL=root@localdomain
|
||||
SEAFILE_ADMIN_PASSWORD=abc123456
|
||||
SEAFILE_DB_ROOT_PASSWORD=rootpassword
|
||||
HOST_SEAFILE=seafile
|
||||
SEAFILE_ADMIN_EMAIL=admin@domain.com
|
||||
SEAFILE_ADMIN_PASSWORD=adminpassword
|
||||
SEAFILE_DB_ROOT_PASSWORD=dbpassword
|
||||
SEAFILE_PHOTOS=/srv/data/seafile
|
||||
|
||||
# mapbox.com
|
||||
MAPBOX_TOKEN=
|
||||
# immich
|
||||
IMMICH_VERSION=release
|
||||
UPLOAD_LOCATION=./library
|
||||
DB_DATA_LOCATION=./postgres
|
||||
DB_PASSWORD=postgres
|
||||
DB_USERNAME=postgres
|
||||
DB_DATABASE_NAME=immich
|
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,2 +1,5 @@
|
|||
.env
|
||||
source.sh
|
||||
.env.vm1
|
||||
.env.vm2
|
||||
selfhosting.sublime-project
|
||||
selfhosting.sublime-workspace
|
47
07-seafile/docker-compose.seafile.yml
Normal file
47
07-seafile/docker-compose.seafile.yml
Normal file
|
@ -0,0 +1,47 @@
|
|||
services:
|
||||
db:
|
||||
container_name: seafile-db
|
||||
image: mariadb:10.11
|
||||
environment:
|
||||
- MYSQL_LOG_CONSOLE=true
|
||||
- MYSQL_ROOT_PASSWORD=${SEAFILE_DB_ROOT_PASSWORD}
|
||||
- MARIADB_AUTO_UPGRADE=1
|
||||
volumes:
|
||||
- seafile_db:/var/lib/mysql
|
||||
|
||||
memcached:
|
||||
container_name: seafile-memcached
|
||||
entrypoint: memcached -m 256
|
||||
image: memcached:1.6.18
|
||||
|
||||
seafile:
|
||||
container_name: seafile
|
||||
image: seafileltd/seafile-mc:11.0-latest
|
||||
depends_on:
|
||||
- db
|
||||
- memcached
|
||||
environment:
|
||||
- DB_HOST=db
|
||||
- DB_ROOT_PASSWD=${SEAFILE_DB_ROOT_PASSWORD}
|
||||
- SEAFILE_ADMIN_EMAIL=${SEAFILE_ADMIN_EMAIL}
|
||||
- SEAFILE_ADMIN_PASSWORD=${SEAFILE_ADMIN_PASSWORD}
|
||||
- SEAFILE_SERVER_HOSTNAME=${HOST_SEAFILE}.${DOMAIN}
|
||||
- SEAFILE_SERVER_LETSENCRYPT=false
|
||||
- FORCE_HTTPS_IN_CONF=true
|
||||
- TIME_ZONE=${TZ}
|
||||
ports:
|
||||
- "8017:80"
|
||||
volumes:
|
||||
- seafile_data:/shared:rw
|
||||
- type: bind
|
||||
source: ${ROOT_INSTALL}/data/seafile
|
||||
target: /seafile-fuse
|
||||
bind:
|
||||
propagation: rshared
|
||||
privileged: true
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
|
||||
volumes:
|
||||
seafile_db:
|
||||
seafile_data:
|
83
08-immich/docker-compose.immich.yml
Normal file
83
08-immich/docker-compose.immich.yml
Normal file
|
@ -0,0 +1,83 @@
|
|||
services:
|
||||
immich-server:
|
||||
container_name: immich_server
|
||||
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
|
||||
# extends:
|
||||
# file: hwaccel.transcoding.yml
|
||||
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
|
||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- type: bind
|
||||
source: ${SEAFILE_PHOTOS}
|
||||
target: /mnt/media/photos
|
||||
read_only: true
|
||||
bind:
|
||||
propagation: rslave
|
||||
privileged: true
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
ports:
|
||||
- '2283:2283'
|
||||
depends_on:
|
||||
- redis
|
||||
- database
|
||||
restart: always
|
||||
healthcheck:
|
||||
disable: false
|
||||
|
||||
immich-machine-learning:
|
||||
container_name: immich_machine_learning
|
||||
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
|
||||
# Example tag: ${IMMICH_VERSION:-release}-cuda
|
||||
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
|
||||
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
|
||||
# file: hwaccel.ml.yml
|
||||
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
|
||||
volumes:
|
||||
- model-cache:/cache
|
||||
restart: always
|
||||
healthcheck:
|
||||
disable: false
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/redis:6.2-alpine@sha256:eaba718fecd1196d88533de7ba49bf903ad33664a92debb24660a922ecd9cac8
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
||||
database:
|
||||
container_name: immich_postgres
|
||||
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
||||
environment:
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_USER: ${DB_USERNAME}
|
||||
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
|
||||
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: >-
|
||||
pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
|
||||
Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
|
||||
--command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
|
||||
echo "checksum failure count is $$Chksum";
|
||||
[ "$$Chksum" = '0' ] || exit 1
|
||||
interval: 5m
|
||||
start_interval: 30s
|
||||
start_period: 5m
|
||||
command: >-
|
||||
postgres
|
||||
-c shared_preload_libraries=vectors.so
|
||||
-c 'search_path="$$user", public, vectors'
|
||||
-c logging_collector=on
|
||||
-c max_wal_size=2GB
|
||||
-c shared_buffers=512MB
|
||||
-c wal_compression=on
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
model-cache:
|
20
README.md
20
README.md
|
@ -1,23 +1,3 @@
|
|||
# Hosting
|
||||
|
||||
My server installation recipes (Inspired from https://github.com/tomMoulard/make-my-server)
|
||||
|
||||
Bash function to override docker-compose command and manage multiple docker-compose.yml files (non executable YAML files are ignored).
|
||||
|
||||
```bash
|
||||
export DOCKER_COMPOSE_BIN='/usr/bin/docker compose'
|
||||
docker-compose ()
|
||||
{
|
||||
$DOCKER_COMPOSE_BIN $(find -name 'docker-compose*.yml' -type f -perm -u+x -printf '%p\t%d\n' 2>/dev/null | sort -n -k2 | cut -f 1 | awk '{print "-f "$0}') $@
|
||||
}
|
||||
```
|
||||
|
||||
Compose files refer to [service profiles](https://docs.docker.com/compose/profiles/):
|
||||
- disabled: set for services I don't use
|
||||
- testing: enable SSL configuration relying on https://traefik.me for local testing
|
||||
- production: enable domain configuration on deployment server
|
||||
|
||||
### Network diagram:
|
||||
|
||||

|
||||
|
||||
|
|
|
@ -1,114 +0,0 @@
|
|||
nwdiag {
|
||||
inet [shape = cloud];
|
||||
inet -- router;
|
||||
|
||||
network dmz {
|
||||
address = "10.254.x.x/24"
|
||||
router;
|
||||
traefik [address = "10.254.x.254"];
|
||||
nginx-streaming [address = "10.254.x.1"];
|
||||
}
|
||||
|
||||
network baikal-frontend {
|
||||
address = "10.10.10.0/24"
|
||||
traefik [address = "10.10.10.254"];
|
||||
baikal [address = "10.10.10.1"];
|
||||
}
|
||||
|
||||
network blog-frontend {
|
||||
address = "10.10.11.0/24"
|
||||
traefik [address = "10.10.11.254"];
|
||||
blog [address = "10.10.11.1"];
|
||||
}
|
||||
|
||||
network blog-backend {
|
||||
address = "10.20.11.0/24"
|
||||
blog [address = "10.20.11.1"];
|
||||
stacosys [address = "10.20.11.2"];
|
||||
}
|
||||
|
||||
network deluge-frontend {
|
||||
address = "10.10.12.0/24"
|
||||
traefik [address = "10.10.12.254"];
|
||||
deluge [address = "10.10.12.1"];
|
||||
}
|
||||
|
||||
network dokuwiki-frontend {
|
||||
address = "10.10.13.0/24"
|
||||
traefik [address = "10.10.13.254"];
|
||||
dokuwiki [address = "10.10.13.1"];
|
||||
}
|
||||
|
||||
network glances-frontend {
|
||||
address = "10.10.14.0/24"
|
||||
traefik [address = "10.10.14.254"];
|
||||
glances [address = "10.10.14.1"];
|
||||
}
|
||||
|
||||
network netdata-frontend {
|
||||
address = "10.10.15.0/24"
|
||||
traefik [address = "10.10.15.254"];
|
||||
netdata [address = "10.10.15.1"];
|
||||
}
|
||||
|
||||
network netdata-backend {
|
||||
address = "10.20.15.0/24"
|
||||
netdata [address = "10.20.15.1"];
|
||||
docker-proxy [address = "10.20.15.2"];
|
||||
}
|
||||
|
||||
network photo-frontend {
|
||||
address = "10.10.16.0/24"
|
||||
traefik [address = "10.10.16.254"];
|
||||
pigallery2 [address = "10.10.16.1"];
|
||||
}
|
||||
|
||||
network portainer-frontend {
|
||||
address = "10.10.17.0/24"
|
||||
traefik [address = "10.10.17.254"];
|
||||
portainer [address = "10.10.17.1"];
|
||||
}
|
||||
|
||||
network posteio-frontend {
|
||||
address = "10.10.18.0/24"
|
||||
traefik [address = "10.10.18.254"];
|
||||
posteio [address = "10.10.18.1"];
|
||||
}
|
||||
|
||||
network seafile-frontend {
|
||||
address = "10.10.19.0/24"
|
||||
traefik [address = "10.10.19.254"];
|
||||
seafile [address = "10.10.19.1"];
|
||||
}
|
||||
|
||||
network seafile-backend {
|
||||
address = "10.20.19.0/24"
|
||||
seafile [address = "10.20.19.1"];
|
||||
seafile-db [address = "10.20.19.2"];
|
||||
seafile-memcached [address = "10.20.19.3"];
|
||||
}
|
||||
|
||||
network selfoss-frontend {
|
||||
address = "10.10.20.0/24"
|
||||
traefik [address = "10.10.20.254"];
|
||||
selfoss [address = "10.10.20.1"];
|
||||
}
|
||||
|
||||
network shaarli-frontend {
|
||||
address = "10.10.21.0/24"
|
||||
traefik [address = "10.10.21.254"];
|
||||
shaarli [address = "10.10.21.1"];
|
||||
}
|
||||
|
||||
network wallabag-frontend {
|
||||
address = "10.10.22.0/24"
|
||||
traefik [address = "10.10.22.254"];
|
||||
wallabag [address = "10.10.22.1"];
|
||||
}
|
||||
|
||||
network www-frontend {
|
||||
address = "10.10.23.0/24"
|
||||
traefik [address = "10.10.23.254"];
|
||||
www [address = "10.10.23.1"];
|
||||
}
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 78 KiB |
272
__doc__/poetry.lock
generated
272
__doc__/poetry.lock
generated
|
@ -1,272 +0,0 @@
|
|||
[[package]]
|
||||
name = "atomicwrites"
|
||||
version = "1.4.0"
|
||||
description = "Atomic file writes."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
[[package]]
|
||||
name = "attrs"
|
||||
version = "21.2.0"
|
||||
description = "Classes Without Boilerplate"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[package.extras]
|
||||
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
|
||||
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
|
||||
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
|
||||
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
|
||||
|
||||
[[package]]
|
||||
name = "blockdiag"
|
||||
version = "3.0.0"
|
||||
description = "blockdiag generates block-diagram image from text"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
funcparserlib = ">=1.0.0a0"
|
||||
Pillow = ">3.0"
|
||||
webcolors = "*"
|
||||
|
||||
[package.extras]
|
||||
pdf = ["reportlab"]
|
||||
rst = ["docutils"]
|
||||
testing = ["nose", "flake8", "flake8-coding", "flake8-copyright", "flake8-isort", "reportlab", "docutils"]
|
||||
|
||||
[[package]]
|
||||
name = "colorama"
|
||||
version = "0.4.4"
|
||||
description = "Cross-platform colored terminal text."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[[package]]
|
||||
name = "funcparserlib"
|
||||
version = "1.0.0a0"
|
||||
description = "Recursive descent parsing library based on functional combinators"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
|
||||
|
||||
[[package]]
|
||||
name = "more-itertools"
|
||||
version = "8.12.0"
|
||||
description = "More routines for operating on iterables, beyond itertools"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
|
||||
[[package]]
|
||||
name = "nwdiag"
|
||||
version = "3.0.0"
|
||||
description = "nwdiag generates network-diagram image from text"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
blockdiag = ">=3.0.0"
|
||||
|
||||
[package.extras]
|
||||
pdf = ["reportlab"]
|
||||
rst = ["docutils"]
|
||||
testing = ["nose", "pep8 (>=1.3)", "flake8", "flake8-coding", "flake8-copyright", "flake8-isort", "reportlab", "docutils"]
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "21.3"
|
||||
description = "Core utilities for Python packages"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
|
||||
|
||||
[[package]]
|
||||
name = "pillow"
|
||||
version = "8.4.0"
|
||||
description = "Python Imaging Library (Fork)"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[[package]]
|
||||
name = "pluggy"
|
||||
version = "0.13.1"
|
||||
description = "plugin and hook calling mechanisms for python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
[package.extras]
|
||||
dev = ["pre-commit", "tox"]
|
||||
|
||||
[[package]]
|
||||
name = "py"
|
||||
version = "1.11.0"
|
||||
description = "library with cross-python path, ini-parsing, io, code, log facilities"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[[package]]
|
||||
name = "pyparsing"
|
||||
version = "3.0.6"
|
||||
description = "Python parsing module"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.extras]
|
||||
diagrams = ["jinja2", "railroad-diagrams"]
|
||||
|
||||
[[package]]
|
||||
name = "pytest"
|
||||
version = "5.4.3"
|
||||
description = "pytest: simple powerful testing with Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
|
||||
[package.dependencies]
|
||||
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
|
||||
attrs = ">=17.4.0"
|
||||
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
||||
more-itertools = ">=4.0.0"
|
||||
packaging = "*"
|
||||
pluggy = ">=0.12,<1.0"
|
||||
py = ">=1.5.0"
|
||||
wcwidth = "*"
|
||||
|
||||
[package.extras]
|
||||
checkqa-mypy = ["mypy (==v0.761)"]
|
||||
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
|
||||
|
||||
[[package]]
|
||||
name = "wcwidth"
|
||||
version = "0.2.5"
|
||||
description = "Measures the displayed width of unicode strings in a terminal"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "webcolors"
|
||||
version = "1.11.1"
|
||||
description = "A library for working with color names and color values formats defined by HTML and CSS."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.5,"
|
||||
|
||||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = "^3.9"
|
||||
content-hash = "fe015acce0fbf3644be4807b9c0484d95c2bbb57fc1b09e08e3634ee78491990"
|
||||
|
||||
[metadata.files]
|
||||
atomicwrites = [
|
||||
{file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
|
||||
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
|
||||
]
|
||||
attrs = [
|
||||
{file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
|
||||
{file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
|
||||
]
|
||||
blockdiag = [
|
||||
{file = "blockdiag-3.0.0-py3-none-any.whl", hash = "sha256:4031bfae6a7f36071d733dec639987346e10f7871356ee2c7a221961c64961d8"},
|
||||
{file = "blockdiag-3.0.0.tar.gz", hash = "sha256:dee4195bb87d23654546ba2bf5091480dbf253b409891fce2cd527c91d00a3e2"},
|
||||
]
|
||||
colorama = [
|
||||
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
|
||||
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
|
||||
]
|
||||
funcparserlib = [
|
||||
{file = "funcparserlib-1.0.0a0-py2.py3-none-any.whl", hash = "sha256:a5ca025aaec28ae19956556260f5e0f28b0d851863e7982a0daf238161e33752"},
|
||||
{file = "funcparserlib-1.0.0a0.tar.gz", hash = "sha256:e6fb432a9276078eee71813a59089fd8c4f3e81f183b4ce8b8b4734d0b2faa2a"},
|
||||
]
|
||||
more-itertools = [
|
||||
{file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"},
|
||||
{file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"},
|
||||
]
|
||||
nwdiag = [
|
||||
{file = "nwdiag-3.0.0-py3-none-any.whl", hash = "sha256:549cab5400ca33b8c05ea119414fa41e6bd85be222ba524418c2c176eea87e80"},
|
||||
{file = "nwdiag-3.0.0.tar.gz", hash = "sha256:e267530fcaac8a1d9e7403048597ed30e031e17f0191569dc6f704087bacb2eb"},
|
||||
]
|
||||
packaging = [
|
||||
{file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
|
||||
{file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
|
||||
]
|
||||
pillow = [
|
||||
{file = "Pillow-8.4.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:81f8d5c81e483a9442d72d182e1fb6dcb9723f289a57e8030811bac9ea3fef8d"},
|
||||
{file = "Pillow-8.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f97cfb1e5a392d75dd8b9fd274d205404729923840ca94ca45a0af57e13dbe6"},
|
||||
{file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb9fc393f3c61f9054e1ed26e6fe912c7321af2f41ff49d3f83d05bacf22cc78"},
|
||||
{file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d82cdb63100ef5eedb8391732375e6d05993b765f72cb34311fab92103314649"},
|
||||
{file = "Pillow-8.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62cc1afda735a8d109007164714e73771b499768b9bb5afcbbee9d0ff374b43f"},
|
||||
{file = "Pillow-8.4.0-cp310-cp310-win32.whl", hash = "sha256:e3dacecfbeec9a33e932f00c6cd7996e62f53ad46fbe677577394aaa90ee419a"},
|
||||
{file = "Pillow-8.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:620582db2a85b2df5f8a82ddeb52116560d7e5e6b055095f04ad828d1b0baa39"},
|
||||
{file = "Pillow-8.4.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:1bc723b434fbc4ab50bb68e11e93ce5fb69866ad621e3c2c9bdb0cd70e345f55"},
|
||||
{file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72cbcfd54df6caf85cc35264c77ede902452d6df41166010262374155947460c"},
|
||||
{file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70ad9e5c6cb9b8487280a02c0ad8a51581dcbbe8484ce058477692a27c151c0a"},
|
||||
{file = "Pillow-8.4.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25a49dc2e2f74e65efaa32b153527fc5ac98508d502fa46e74fa4fd678ed6645"},
|
||||
{file = "Pillow-8.4.0-cp36-cp36m-win32.whl", hash = "sha256:93ce9e955cc95959df98505e4608ad98281fff037350d8c2671c9aa86bcf10a9"},
|
||||
{file = "Pillow-8.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2e4440b8f00f504ee4b53fe30f4e381aae30b0568193be305256b1462216feff"},
|
||||
{file = "Pillow-8.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:8c803ac3c28bbc53763e6825746f05cc407b20e4a69d0122e526a582e3b5e153"},
|
||||
{file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8a17b5d948f4ceeceb66384727dde11b240736fddeda54ca740b9b8b1556b29"},
|
||||
{file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1394a6ad5abc838c5cd8a92c5a07535648cdf6d09e8e2d6df916dfa9ea86ead8"},
|
||||
{file = "Pillow-8.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:792e5c12376594bfcb986ebf3855aa4b7c225754e9a9521298e460e92fb4a488"},
|
||||
{file = "Pillow-8.4.0-cp37-cp37m-win32.whl", hash = "sha256:d99ec152570e4196772e7a8e4ba5320d2d27bf22fdf11743dd882936ed64305b"},
|
||||
{file = "Pillow-8.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7b7017b61bbcdd7f6363aeceb881e23c46583739cb69a3ab39cb384f6ec82e5b"},
|
||||
{file = "Pillow-8.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:d89363f02658e253dbd171f7c3716a5d340a24ee82d38aab9183f7fdf0cdca49"},
|
||||
{file = "Pillow-8.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0a0956fdc5defc34462bb1c765ee88d933239f9a94bc37d132004775241a7585"},
|
||||
{file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7bb9de00197fb4261825c15551adf7605cf14a80badf1761d61e59da347779"},
|
||||
{file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72b9e656e340447f827885b8d7a15fc8c4e68d410dc2297ef6787eec0f0ea409"},
|
||||
{file = "Pillow-8.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5a4532a12314149d8b4e4ad8ff09dde7427731fcfa5917ff16d0291f13609df"},
|
||||
{file = "Pillow-8.4.0-cp38-cp38-win32.whl", hash = "sha256:82aafa8d5eb68c8463b6e9baeb4f19043bb31fefc03eb7b216b51e6a9981ae09"},
|
||||
{file = "Pillow-8.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:066f3999cb3b070a95c3652712cffa1a748cd02d60ad7b4e485c3748a04d9d76"},
|
||||
{file = "Pillow-8.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:5503c86916d27c2e101b7f71c2ae2cddba01a2cf55b8395b0255fd33fa4d1f1a"},
|
||||
{file = "Pillow-8.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4acc0985ddf39d1bc969a9220b51d94ed51695d455c228d8ac29fcdb25810e6e"},
|
||||
{file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b052a619a8bfcf26bd8b3f48f45283f9e977890263e4571f2393ed8898d331b"},
|
||||
{file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:493cb4e415f44cd601fcec11c99836f707bb714ab03f5ed46ac25713baf0ff20"},
|
||||
{file = "Pillow-8.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8831cb7332eda5dc89b21a7bce7ef6ad305548820595033a4b03cf3091235ed"},
|
||||
{file = "Pillow-8.4.0-cp39-cp39-win32.whl", hash = "sha256:5e9ac5f66616b87d4da618a20ab0a38324dbe88d8a39b55be8964eb520021e02"},
|
||||
{file = "Pillow-8.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:3eb1ce5f65908556c2d8685a8f0a6e989d887ec4057326f6c22b24e8a172c66b"},
|
||||
{file = "Pillow-8.4.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ddc4d832a0f0b4c52fff973a0d44b6c99839a9d016fe4e6a1cb8f3eea96479c2"},
|
||||
{file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3e5ddc44c14042f0844b8cf7d2cd455f6cc80fd7f5eefbe657292cf601d9ad"},
|
||||
{file = "Pillow-8.4.0-pp36-pypy36_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70e94281588ef053ae8998039610dbd71bc509e4acbc77ab59d7d2937b10698"},
|
||||
{file = "Pillow-8.4.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:3862b7256046fcd950618ed22d1d60b842e3a40a48236a5498746f21189afbbc"},
|
||||
{file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4901622493f88b1a29bd30ec1a2f683782e57c3c16a2dbc7f2595ba01f639df"},
|
||||
{file = "Pillow-8.4.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c471a734240653a0ec91dec0996696eea227eafe72a33bd06c92697728046b"},
|
||||
{file = "Pillow-8.4.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:244cf3b97802c34c41905d22810846802a3329ddcb93ccc432870243211c79fc"},
|
||||
{file = "Pillow-8.4.0.tar.gz", hash = "sha256:b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed"},
|
||||
]
|
||||
pluggy = [
|
||||
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
|
||||
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
|
||||
]
|
||||
py = [
|
||||
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
|
||||
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
|
||||
]
|
||||
pyparsing = [
|
||||
{file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"},
|
||||
{file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"},
|
||||
]
|
||||
pytest = [
|
||||
{file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"},
|
||||
{file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"},
|
||||
]
|
||||
wcwidth = [
|
||||
{file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
|
||||
{file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"},
|
||||
]
|
||||
webcolors = [
|
||||
{file = "webcolors-1.11.1-py3-none-any.whl", hash = "sha256:b8cd5d865a25c51ff1218f0c90d0c0781fc64312a49b746b320cf50de1648f6e"},
|
||||
{file = "webcolors-1.11.1.tar.gz", hash = "sha256:76f360636957d1c976db7466bc71dcb713bb95ac8911944dffc55c01cb516de6"},
|
||||
]
|
|
@ -1,16 +0,0 @@
|
|||
[tool.poetry]
|
||||
name = "doc"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
authors = ["Yax"]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.9"
|
||||
nwdiag = "^3.0.0"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
pytest = "^5.2"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
|
@ -1,28 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
baikal:
|
||||
container_name: baikal
|
||||
image: ckulka/baikal:nginx
|
||||
networks:
|
||||
- baikal-frontend
|
||||
expose:
|
||||
- 80
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- baikal_data:/var/www/baikal/Specific:rw
|
||||
- baikal_config:/var/www/baikal/config:rw
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.baikal.rule=Host(`${HOST_BAIKAL}.${DOMAIN}`)
|
||||
- traefik.http.routers.baikal.entrypoints=https
|
||||
- traefik.http.routers.baikal.tls=true
|
||||
- traefik.docker.network=baikal-frontend
|
||||
|
||||
networks:
|
||||
baikal-frontend:
|
||||
name: baikal-frontend
|
||||
|
||||
volumes:
|
||||
baikal_config:
|
||||
baikal_data:
|
|
@ -1,36 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
stacosys:
|
||||
container_name: stacosys
|
||||
image: kianby/stacosys
|
||||
volumes:
|
||||
- ${ROOT_INSTALL}/data/stacosys:/config
|
||||
networks:
|
||||
- blog-backend
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 8100
|
||||
blog:
|
||||
container_name: blog
|
||||
image: kianby/blogduyax
|
||||
depends_on:
|
||||
- stacosys
|
||||
networks:
|
||||
- blog-backend
|
||||
- blog-frontend
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 80
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.blog.rule=Host(`${HOST_BLOG}.${DOMAIN}`)
|
||||
- traefik.http.routers.blog.entrypoints=https
|
||||
- traefik.http.routers.blog.tls=true
|
||||
- traefik.docker.network=blog-frontend
|
||||
|
||||
networks:
|
||||
blog-frontend:
|
||||
name: blog-frontend
|
||||
blog-backend:
|
||||
name: blog-backend
|
|
@ -1,55 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
deluge:
|
||||
container_name: deluge
|
||||
image: linuxserver/deluge
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- deluge-frontend
|
||||
environment:
|
||||
DELUGE_LOGLEVEL: info
|
||||
TZ: ${TZ}
|
||||
expose:
|
||||
- 8112
|
||||
ports:
|
||||
- ${DELUGE_TORRENT_PORT}:${DELUGE_TORRENT_PORT}/tcp
|
||||
- ${DELUGE_TORRENT_PORT}:${DELUGE_TORRENT_PORT}/udp
|
||||
volumes:
|
||||
- deluge_config:/config:rw
|
||||
- deluge_downloads:/downloads:rw
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.deluge.rule=Host(`${HOST_WWW}.${DOMAIN}`) && PathPrefix(`${PATH_DELUGE}`)
|
||||
- traefik.http.routers.deluge.entrypoints=https
|
||||
- traefik.http.routers.deluge.tls=true
|
||||
- traefik.http.services.deluge.loadbalancer.server.port=8112
|
||||
- traefik.http.routers.deluge.middlewares=delugeHeader,sameOriginHeader,delugeRedir,delugePStrip
|
||||
- traefik.http.middlewares.delugeHeader.headers.customrequestheaders.X-Deluge-Base=${PATH_DELUGE}/
|
||||
- traefik.http.middlewares.sameOriginHeader.headers.customrequestheaders.X-Frame-Options=SAMEORIGIN
|
||||
- traefik.http.middlewares.delugePStrip.stripprefix.prefixes=${PATH_DELUGE}
|
||||
- traefik.http.middlewares.delugeRedir.redirectregex.regex=^(.*)${PATH_DELUGE}$$
|
||||
- traefik.http.middlewares.delugeRedir.redirectregex.replacement=$${1}${PATH_DELUGE}/
|
||||
- traefik.docker.network=deluge-frontend
|
||||
|
||||
torrent:
|
||||
container_name: torrent
|
||||
image: kianby/nginx-streaming
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- dmz
|
||||
volumes:
|
||||
- deluge_downloads:/downloads:ro
|
||||
expose:
|
||||
- 80
|
||||
# shortcut to bypass traefik limitation
|
||||
ports:
|
||||
- ${DOWNLOAD_HTTP_PORT}:80
|
||||
|
||||
networks:
|
||||
deluge-frontend:
|
||||
name: deluge-frontend
|
||||
|
||||
volumes:
|
||||
deluge_config:
|
||||
deluge_downloads:
|
|
@ -1,26 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
dokuwiki:
|
||||
image: linuxserver/dokuwiki
|
||||
container_name: dokuwiki
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 80
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- APP_URL=/ #optional
|
||||
volumes:
|
||||
- ${ROOT_INSTALL}/data/dokuwiki:/config
|
||||
networks:
|
||||
- dokuwiki-frontend
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.dokuwiki.rule=Host(`${HOST_DOKUWIKI}.${DOMAIN}`)
|
||||
- traefik.http.routers.dokuwiki.entrypoints=https
|
||||
- traefik.http.routers.dokuwiki.tls=true
|
||||
- traefik.docker.network=dokuwiki-frontend
|
||||
|
||||
networks:
|
||||
dokuwiki-frontend:
|
||||
name: dokuwiki-frontend
|
|
@ -1,29 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
glances:
|
||||
container_name: glances
|
||||
image: nicolargo/glances:3.2.3.1
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
environment:
|
||||
- GLANCES_OPT=-w
|
||||
pid: host
|
||||
networks:
|
||||
- glances-frontend
|
||||
expose:
|
||||
- 61208
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.glances.rule=Host(`${HOST_WWW}.${DOMAIN}`) && PathPrefix(`${PATH_GLANCES}`)
|
||||
- traefik.http.routers.glances.entrypoints=https
|
||||
- traefik.http.routers.glances.tls=true
|
||||
- traefik.http.routers.glances.middlewares=glancesRedir,glancesPStrip
|
||||
- traefik.http.middlewares.glancesPStrip.stripprefix.prefixes=${PATH_GLANCES}
|
||||
- traefik.http.middlewares.glancesRedir.redirectregex.regex=^(.*)${PATH_GLANCES}$$
|
||||
- traefik.http.middlewares.glancesRedir.redirectregex.replacement=$${1}${PATH_GLANCES}/
|
||||
- traefik.docker.network=glances-frontend
|
||||
|
||||
networks:
|
||||
glances-frontend:
|
||||
name: glances-frontend
|
|
@ -1,57 +0,0 @@
|
|||
version: '3.8'
|
||||
services:
|
||||
netdata:
|
||||
image: netdata/netdata
|
||||
container_name: netdata
|
||||
hostname: ${HOST_NETDATA}.${DOMAIN}
|
||||
expose:
|
||||
- 19999
|
||||
restart: unless-stopped
|
||||
cap_add:
|
||||
- SYS_PTRACE
|
||||
security_opt:
|
||||
- apparmor:unconfined
|
||||
environment:
|
||||
- DOCKER_HOST=docker-proxy:2375
|
||||
volumes:
|
||||
- netdataconfig:/etc/netdata
|
||||
- netdatalib:/var/lib/netdata
|
||||
- netdatacache:/var/cache/netdata
|
||||
- /etc/passwd:/host/etc/passwd:ro
|
||||
- /etc/group:/host/etc/group:ro
|
||||
- /proc:/host/proc:ro
|
||||
- /sys:/host/sys:ro
|
||||
- /etc/os-release:/host/etc/os-release:ro
|
||||
networks:
|
||||
- netdata-frontend
|
||||
- netdata-backend
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.netdata.rule=Host(`${HOST_NETDATA}.${DOMAIN}`)
|
||||
- traefik.http.routers.netdata.entrypoints=https
|
||||
- traefik.http.routers.netdata.tls=true
|
||||
- traefik.http.routers.netdata.middlewares=auth
|
||||
- traefik.http.middlewares.auth.basicauth.users=${BASIC_AUTH}
|
||||
- traefik.docker.network=netdata-frontend
|
||||
healthcheck:
|
||||
disable: true
|
||||
docker-proxy:
|
||||
image: tecnativa/docker-socket-proxy
|
||||
container_name: docker-proxy
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
environment:
|
||||
- CONTAINERS=1
|
||||
networks:
|
||||
- netdata-backend
|
||||
|
||||
networks:
|
||||
netdata-frontend:
|
||||
name: netdata-frontend
|
||||
netdata-backend:
|
||||
name: netdata-backend
|
||||
|
||||
volumes:
|
||||
netdataconfig:
|
||||
netdatalib:
|
||||
netdatacache:
|
|
@ -1,35 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
lychee:
|
||||
container_name: lychee
|
||||
environment:
|
||||
- PHP_TZ=${TZ}
|
||||
- TIMEZONE=${TZ}
|
||||
image: lycheeorg/lychee
|
||||
networks:
|
||||
- photo-frontend
|
||||
expose:
|
||||
- 80
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- lychee_conf:/conf
|
||||
- lychee_uploads:/uploads
|
||||
- lychee_sym:/sym
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.photo.rule=Host(`${HOST_LYCHEE}.${DOMAIN}`)
|
||||
- traefik.http.routers.photo.entrypoints=https
|
||||
- traefik.http.routers.photo.tls=true
|
||||
- traefik.docker.network=photo-frontend
|
||||
|
||||
networks:
|
||||
photo-frontend:
|
||||
name: photo-frontend
|
||||
photo-backend:
|
||||
name: photo-backend
|
||||
|
||||
volumes:
|
||||
lychee_conf:
|
||||
lychee_uploads:
|
||||
lychee_sym:
|
|
@ -1,71 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
postgres:
|
||||
container_name: photonix-postgres
|
||||
image: postgres:11.1-alpine
|
||||
environment:
|
||||
POSTGRES_DB: photonix
|
||||
POSTGRES_PASSWORD: password
|
||||
volumes:
|
||||
- photonix_db:/var/lib/postgresql/data
|
||||
networks:
|
||||
- photo-backend
|
||||
|
||||
redis:
|
||||
container_name: photonix-redis
|
||||
image: redis:6.2.2
|
||||
networks:
|
||||
- photo-backend
|
||||
|
||||
photonix:
|
||||
container_name: photonix
|
||||
image: photonixapp/photonix:latest
|
||||
expose:
|
||||
- 80
|
||||
environment:
|
||||
ENV: prd
|
||||
POSTGRES_HOST: postgres
|
||||
POSTGRES_DB: photonix
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: password
|
||||
REDIS_HOST: redis
|
||||
ALLOWED_HOSTS: '*'
|
||||
# More configuration options here: https://photonix.org/docs/configuration/
|
||||
volumes:
|
||||
# - ./data/photos:/data/photos
|
||||
- photonix_raw_photos:/data/raw-photos-processed
|
||||
- photonix_cache:/data/cache
|
||||
- photonix_models:/data/models
|
||||
- type: bind
|
||||
source: ${ROOT_INSTALL}/data/seafile-fuse
|
||||
target: /seahub
|
||||
bind:
|
||||
propagation: rslave
|
||||
privileged: true
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
depends_on:
|
||||
- postgres
|
||||
- redis
|
||||
networks:
|
||||
- photo-backend
|
||||
- photo-frontend
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.photo.rule=Host(`${HOST_PHOTONIX}.${DOMAIN}`)
|
||||
- traefik.http.routers.photo.entrypoints=https
|
||||
- traefik.http.routers.photo.tls=true
|
||||
- traefik.docker.network=photo-frontend
|
||||
|
||||
networks:
|
||||
photo-frontend:
|
||||
name: photo-frontend
|
||||
photo-backend:
|
||||
name: photo-backend
|
||||
|
||||
volumes:
|
||||
photonix_raw_photos:
|
||||
photonix_cache:
|
||||
photonix_models:
|
||||
photonix_db:
|
|
@ -1,77 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
photoview-db:
|
||||
container_name: photoview-db
|
||||
image: mariadb:10.5
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- MYSQL_DATABASE=photoview
|
||||
- MYSQL_USER=photoview
|
||||
- MYSQL_PASSWORD=photosecret
|
||||
- MYSQL_RANDOM_ROOT_PASSWORD=1
|
||||
volumes:
|
||||
- photoview_db_data:/var/lib/mysql
|
||||
networks:
|
||||
- photo-backend
|
||||
|
||||
photoview:
|
||||
container_name: photoview
|
||||
image: viktorstrate/photoview:2
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 80
|
||||
depends_on:
|
||||
- photoview-db
|
||||
networks:
|
||||
- photo-backend
|
||||
- photo-frontend
|
||||
environment:
|
||||
- PHOTOVIEW_DATABASE_DRIVER=mysql
|
||||
- PHOTOVIEW_MYSQL_URL=photoview:photosecret@tcp(photoview-db)/photoview
|
||||
- PHOTOVIEW_LISTEN_IP=photoview
|
||||
- PHOTOVIEW_LISTEN_PORT=80
|
||||
- PHOTOVIEW_MEDIA_CACHE=/app/cache
|
||||
|
||||
# Optional: If you are using Samba/CIFS-Share and experience problems with "directory not found"
|
||||
# Enable the following Godebug
|
||||
# - GODEBUG=asyncpreemptoff=1
|
||||
|
||||
|
||||
# Optional: To enable map related features, you need to create a mapbox token.
|
||||
# A token can be generated for free here https://account.mapbox.com/access-tokens/
|
||||
# It's a good idea to limit the scope of the token to your own domain, to prevent others from using it.
|
||||
- MAPBOX_TOKEN=${MAPBOX_TOKEN}
|
||||
|
||||
volumes:
|
||||
- photoview_api_cache:/app/cache
|
||||
|
||||
# Change This: to the directory where your photos are located on your server.
|
||||
# If the photos are located at `/home/user/photos`, then change this value
|
||||
# to the following: `/home/user/photos:/photos:ro`.
|
||||
# You can mount multiple paths, if your photos are spread across multiple directories.
|
||||
#- ./photos_path:/photos:ro
|
||||
- type: bind
|
||||
source: ${ROOT_INSTALL}/data/seafile-fuse
|
||||
target: /photos
|
||||
bind:
|
||||
propagation: rslave
|
||||
privileged: true
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.photo.rule=Host(`${HOST_PHOTOVIEW}.${DOMAIN}`)
|
||||
- traefik.http.routers.photo.entrypoints=https
|
||||
- traefik.http.routers.photo.tls=true
|
||||
- traefik.docker.network=photo-frontend
|
||||
|
||||
networks:
|
||||
photo-frontend:
|
||||
name: photo-frontend
|
||||
photo-backend:
|
||||
name: photo-backend
|
||||
|
||||
volumes:
|
||||
photoview_db_data:
|
||||
photoview_api_cache:
|
|
@ -1,45 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
pigallery2:
|
||||
container_name: pigallery2
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
image: bpatrik/pigallery2:1.9.0-alpine
|
||||
networks:
|
||||
- photo-frontend
|
||||
expose:
|
||||
- 80
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
#/app/data/images
|
||||
- pigallery_config:/app/data/config:rw
|
||||
- pigallerydb_data:/app/data/db:rw
|
||||
- pigallery_tmp:/app/data/tmp:rw
|
||||
- type: bind
|
||||
source: ${ROOT_INSTALL}/data/seafile-fuse
|
||||
target: /seahub
|
||||
bind:
|
||||
propagation: rslave
|
||||
privileged: true
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
healthcheck:
|
||||
disable: true
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.photo.rule=Host(`${HOST_PIGALLERY}.${DOMAIN}`)
|
||||
- traefik.http.routers.photo.entrypoints=https
|
||||
- traefik.http.routers.photo.tls=true
|
||||
- traefik.docker.network=photo-frontend
|
||||
|
||||
networks:
|
||||
photo-frontend:
|
||||
name: photo-frontend
|
||||
photo-backend:
|
||||
name: photo-backend
|
||||
|
||||
volumes:
|
||||
pigallerydb_data:
|
||||
pigallery_tmp:
|
||||
pigallery_config:
|
|
@ -1,33 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
portainer:
|
||||
container_name: portainer
|
||||
image: portainer/portainer-ce
|
||||
command: -H unix:///var/run/docker.sock
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer_data:/data
|
||||
networks:
|
||||
- portainer-frontend
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 9000
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.portainer.rule=Host(`${HOST_WWW}.${DOMAIN}`) && PathPrefix(`${PATH_PORTAINER}`)
|
||||
- traefik.http.routers.portainer.entrypoints=https
|
||||
- traefik.http.routers.portainer.tls=true
|
||||
- traefik.http.services.portainer.loadbalancer.server.port=9000
|
||||
- traefik.http.routers.portainer.middlewares=portainerRedir,portainerPStrip
|
||||
- traefik.http.middlewares.portainerPStrip.stripprefix.prefixes=${PATH_PORTAINER}
|
||||
- traefik.http.middlewares.portainerRedir.redirectregex.regex=^(.*)${PATH_PORTAINER}$$
|
||||
- traefik.http.middlewares.portainerRedir.redirectregex.replacement=$${1}${PATH_PORTAINER}/
|
||||
- traefik.docker.network=portainer-frontend
|
||||
|
||||
networks:
|
||||
portainer-frontend:
|
||||
name: portainer-frontend
|
||||
|
||||
volumes:
|
||||
portainer_data:
|
|
@ -1,32 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
poste-io:
|
||||
container_name: poste-io
|
||||
image: analogic/poste.io
|
||||
volumes:
|
||||
- ${ROOT_INSTALL}/data/poste.io:/data
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- HTTPS=OFF
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "465:465"
|
||||
- "993:993"
|
||||
- "25:25"
|
||||
expose:
|
||||
- 80
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.posteio.rule=Host(`${HOST_MAIL}.${DOMAIN}`)
|
||||
- traefik.http.routers.posteio.entrypoints=https
|
||||
- traefik.http.routers.posteio.tls=true
|
||||
- traefik.docker.network=posteio-frontend
|
||||
networks:
|
||||
- posteio-frontend
|
||||
healthcheck:
|
||||
disable: true
|
||||
|
||||
networks:
|
||||
posteio-frontend:
|
||||
name: portainer-frontend
|
27
run-docker-compose.sh
Executable file
27
run-docker-compose.sh
Executable file
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
# examples:
|
||||
# ./run-docker-compose.sh --env-file ./.env up -d
|
||||
# ./run-docker-compose.sh --env-file ./.env down
|
||||
|
||||
# Exit on errors
|
||||
set -e
|
||||
|
||||
# Ensure arguments are provided
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 <docker compose arguments>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Store the user-provided arguments
|
||||
ARGS="$@"
|
||||
|
||||
# Find all directories containing a file named docker-compose*.yml
|
||||
find . -type f -name 'docker-compose*.yml' | while IFS= read -r compose_file; do
|
||||
|
||||
# Run the docker compose command with user arguments
|
||||
echo "Running: docker compose $compose_file"
|
||||
docker compose -f "$compose_file" $ARGS
|
||||
|
||||
done
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
seafile-db:
|
||||
container_name: seafile-db
|
||||
environment:
|
||||
MYSQL_LOG_CONSOLE: "true"
|
||||
MYSQL_ROOT_PASSWORD: ${SEAFILE_DB_ROOT_PASSWORD}
|
||||
image: mariadb:10.1
|
||||
networks:
|
||||
- seafile-backend
|
||||
volumes:
|
||||
- seafile_db:/var/lib/mysql:rw
|
||||
restart: unless-stopped
|
||||
seafile-memcached:
|
||||
container_name: seafile-memcached
|
||||
entrypoint: memcached -m 256
|
||||
image: memcached:1.5.6
|
||||
networks:
|
||||
- seafile-backend
|
||||
restart: unless-stopped
|
||||
seafile:
|
||||
container_name: seafile
|
||||
depends_on:
|
||||
- seafile-db
|
||||
- seafile-memcached
|
||||
environment:
|
||||
DB_HOST: seafile-db
|
||||
DB_ROOT_PASSWD: ${SEAFILE_DB_ROOT_PASSWORD}
|
||||
SEAFILE_ADMIN_EMAIL: ${SEAFILE_ADMIN_EMAIL}
|
||||
SEAFILE_ADMIN_PASSWORD: ${SEAFILE_ADMIN_PASSWORD}
|
||||
SEAFILE_SERVER_HOSTNAME: ${HOST_SEAFILE}.${DOMAIN}
|
||||
SEAFILE_SERVER_LETSENCRYPT: "false"
|
||||
TIME_ZONE: ${TZ}
|
||||
image: seafileltd/seafile-mc:latest
|
||||
networks:
|
||||
- seafile-backend
|
||||
- seafile-frontend
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 80
|
||||
volumes:
|
||||
- ${ROOT_INSTALL}/selfhosting/seafile/start.py:/scripts/start.py
|
||||
- seafile_data:/shared:rw
|
||||
- type: bind
|
||||
source: ${ROOT_INSTALL}/data/seafile-fuse
|
||||
target: /seafile-fuse
|
||||
bind:
|
||||
propagation: rshared
|
||||
privileged: true
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.seafile.rule=Host(`${HOST_SEAFILE}.${DOMAIN}`)
|
||||
- traefik.http.routers.seafile.entrypoints=https
|
||||
- traefik.http.routers.seafile.tls=true
|
||||
- traefik.docker.network=seafile-frontend
|
||||
|
||||
networks:
|
||||
seafile-frontend:
|
||||
name: seafile-frontend
|
||||
seafile-backend:
|
||||
name: seafile-backend
|
||||
|
||||
volumes:
|
||||
seafile_db:
|
||||
seafile_data:
|
|
@ -1,88 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
#coding: UTF-8
|
||||
|
||||
"""
|
||||
Starts the seafile/seahub server and watches the controller process. It is
|
||||
the entrypoint command of the docker container.
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
from os.path import abspath, basename, exists, dirname, join, isdir
|
||||
import shutil
|
||||
import sys
|
||||
import time
|
||||
|
||||
from utils import (
|
||||
call, get_conf, get_install_dir, get_script, get_command_output,
|
||||
render_template, wait_for_mysql, setup_logging
|
||||
)
|
||||
from upgrade import check_upgrade
|
||||
from bootstrap import init_seafile_server, is_https, init_letsencrypt, generate_local_nginx_conf
|
||||
|
||||
|
||||
shared_seafiledir = '/shared/seafile'
|
||||
ssl_dir = '/shared/ssl'
|
||||
generated_dir = '/bootstrap/generated'
|
||||
installdir = get_install_dir()
|
||||
topdir = dirname(installdir)
|
||||
|
||||
def watch_controller():
|
||||
maxretry = 4
|
||||
retry = 0
|
||||
while retry < maxretry:
|
||||
controller_pid = get_command_output('ps aux | grep seafile-controller | grep -v grep || true').strip()
|
||||
garbage_collector_pid = get_command_output('ps aux | grep /scripts/gc.sh | grep -v grep || true').strip()
|
||||
if not controller_pid and not garbage_collector_pid:
|
||||
retry += 1
|
||||
else:
|
||||
retry = 0
|
||||
time.sleep(5)
|
||||
print('seafile controller exited unexpectedly.')
|
||||
sys.exit(1)
|
||||
|
||||
def main():
|
||||
if not exists(shared_seafiledir):
|
||||
os.mkdir(shared_seafiledir)
|
||||
if not exists(generated_dir):
|
||||
os.makedirs(generated_dir)
|
||||
|
||||
if is_https():
|
||||
init_letsencrypt()
|
||||
generate_local_nginx_conf()
|
||||
call('nginx -s reload')
|
||||
|
||||
wait_for_mysql()
|
||||
init_seafile_server()
|
||||
|
||||
check_upgrade()
|
||||
os.chdir(installdir)
|
||||
|
||||
admin_pw = {
|
||||
'email': get_conf('SEAFILE_ADMIN_EMAIL', 'me@example.com'),
|
||||
'password': get_conf('SEAFILE_ADMIN_PASSWORD', 'asecret'),
|
||||
}
|
||||
password_file = join(topdir, 'conf', 'admin.txt')
|
||||
with open(password_file, 'w') as fp:
|
||||
json.dump(admin_pw, fp)
|
||||
|
||||
|
||||
try:
|
||||
call('{} start'.format(get_script('seafile.sh')))
|
||||
call('{} start'.format(get_script('seahub.sh')))
|
||||
call('{} start /seafile-fuse'.format(get_script('seaf-fuse.sh')))
|
||||
finally:
|
||||
if exists(password_file):
|
||||
os.unlink(password_file)
|
||||
|
||||
print('seafile server is running now.')
|
||||
try:
|
||||
watch_controller()
|
||||
except KeyboardInterrupt:
|
||||
print('Stopping seafile server.')
|
||||
sys.exit(0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
setup_logging()
|
||||
main()
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -1,31 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
selfoss:
|
||||
container_name: selfoss
|
||||
image: hardware/selfoss
|
||||
volumes:
|
||||
- selfoss_data:/selfoss/data
|
||||
- ${ROOT_INSTALL}/selfhosting/selfoss/cacert-2021-10-26.pem:/etc/ssl/cacerts
|
||||
- ${ROOT_INSTALL}/selfhosting/selfoss/php7.ini:/etc/php7/php.ini
|
||||
networks:
|
||||
- selfoss-frontend
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 8888
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.selfoss.rule=Host(`${HOST_SELFOSS}.${DOMAIN}`)
|
||||
- traefik.http.routers.selfoss.entrypoints=https
|
||||
- traefik.http.routers.selfoss.tls=true
|
||||
- traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=134217728
|
||||
- traefik.http.middlewares.limit.buffering.memRequestBodyBytes=2000000
|
||||
- traefik.http.middlewares.limit.buffering.maxResponseBodyBytes=134217728
|
||||
- traefik.http.middlewares.limit.buffering.memResponseBodyBytes=2000000
|
||||
- traefik.docker.network=selfoss-frontend
|
||||
volumes:
|
||||
selfoss_data:
|
||||
|
||||
networks:
|
||||
selfoss-frontend:
|
||||
name: selfoss-frontend
|
1940
selfoss/php7.ini
1940
selfoss/php7.ini
File diff suppressed because it is too large
Load diff
|
@ -1,27 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
shaarli:
|
||||
container_name: shaarli
|
||||
image: shaarli/shaarli
|
||||
volumes:
|
||||
- shaarli-cache:/var/www/shaarli/cache
|
||||
- ${ROOT_INSTALL}/data/shaarli:/var/www/shaarli/data
|
||||
networks:
|
||||
- shaarli-frontend
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 80
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.shaarli.rule=Host(`${HOST_SHAARLI}.${DOMAIN}`)
|
||||
- traefik.http.routers.shaarli.entrypoints=https
|
||||
- traefik.http.routers.shaarli.tls=true
|
||||
- traefik.docker.network=shaarli-frontend
|
||||
|
||||
networks:
|
||||
shaarli-frontend:
|
||||
name: shaarli-frontend
|
||||
|
||||
volumes:
|
||||
shaarli-cache:
|
|
@ -1,32 +0,0 @@
|
|||
version: "3.8"
|
||||
|
||||
services:
|
||||
gitea:
|
||||
container_name: gitea
|
||||
image: gitea/gitea:1.17.2-rootless
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- gitea_data:/var/lib/gitea
|
||||
- gitea_config:/etc/gitea
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3000:3000"
|
||||
networks:
|
||||
- source-frontend
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.gitea.rule=Host(`${HOST_GITEA}.${DOMAIN}`)
|
||||
- traefik.http.services.gitea.loadbalancer.server.port=3000
|
||||
- traefik.http.routers.gitea.entrypoints=https
|
||||
- traefik.http.routers.gitea.tls=true
|
||||
- traefik.docker.network=source-frontend
|
||||
|
||||
networks:
|
||||
source-frontend:
|
||||
name: source-frontend
|
||||
|
||||
volumes:
|
||||
gitea_data:
|
||||
gitea_config:
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
traefik-infomaniak:
|
||||
container_name: traefik-infomaniak
|
||||
image: traefik:v2.5.3
|
||||
profiles: ["production"]
|
||||
command:
|
||||
- --providers.docker=true
|
||||
- --providers.docker.exposedbydefault=false
|
||||
- --api.dashboard=false
|
||||
- --entrypoints.http.address=:80
|
||||
- --entrypoints.https.address=:443
|
||||
- --certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL}
|
||||
- --certificatesresolvers.letsencrypt.acme.storage=/acme.json
|
||||
- --certificatesResolvers.letsencrypt.acme.dnsChallenge=true
|
||||
# example : infomaniak
|
||||
- --certificatesresolvers.letsencrypt.acme.dnschallenge.provider=infomaniak
|
||||
environment:
|
||||
- INFOMANIAK_ACCESS_TOKEN=${LETSENCRYPT_DNSPROVIDER_TOKEN}
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.api.entrypoints=http
|
||||
- traefik.http.routers.api.entrypoints=https
|
||||
- traefik.http.routers.api.service=api@internal
|
||||
# middleware auth
|
||||
- traefik.http.routers.api.middlewares=auth
|
||||
- traefik.http.middlewares.auth.basicauth.users=${BASIC_AUTH}
|
||||
# request widlcard certificate
|
||||
- traefik.http.routers.api.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.api.tls.domains[0].main=${DOMAIN}
|
||||
- traefik.http.routers.api.tls.domains[0].sans=*.${DOMAIN}
|
||||
# global redirect to https
|
||||
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
|
||||
- traefik.http.routers.http-catchall.entrypoints=http
|
||||
- traefik.http.routers.http-catchall.middlewares=redirect-to-https
|
||||
# middleware redirect
|
||||
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
|
||||
- traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
networks:
|
||||
- dmz
|
||||
- baikal-frontend
|
||||
- blog-frontend
|
||||
- deluge-frontend
|
||||
- dokuwiki-frontend
|
||||
- glances-frontend
|
||||
- netdata-frontend
|
||||
- photo-frontend
|
||||
- portainer-frontend
|
||||
- posteio-frontend
|
||||
- seafile-frontend
|
||||
- selfoss-frontend
|
||||
- shaarli-frontend
|
||||
- source-frontend
|
||||
- wallabag-frontend
|
||||
- wwww-frontend
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ${ROOT_INSTALL}/selfhosting/traefik/acme.json:/acme.json
|
||||
|
||||
networks:
|
||||
dmz:
|
||||
name: dmz
|
|
@ -1,55 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
traefik-local:
|
||||
container_name: traefik-local
|
||||
image: traefik:v2.5.3
|
||||
profiles: ["testing"]
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
- 8080:8080
|
||||
expose:
|
||||
- 8080
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
networks:
|
||||
- dmz
|
||||
- baikal-frontend
|
||||
- blog-frontend
|
||||
- deluge-frontend
|
||||
- dokuwiki-frontend
|
||||
- glances-frontend
|
||||
- netdata-frontend
|
||||
- photo-frontend
|
||||
- portainer-frontend
|
||||
- posteio-frontend
|
||||
- seafile-frontend
|
||||
- selfoss-frontend
|
||||
- shaarli-frontend
|
||||
- source-frontend
|
||||
- wallabag-frontend
|
||||
- wwww-frontend
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ${ROOT_INSTALL}/selfhosting/traefik/traefik.yml:/etc/traefik/traefik.yml
|
||||
- ${ROOT_INSTALL}/selfhosting/traefik/tls.yml:/etc/traefik/tls.yml
|
||||
- certs:/etc/ssl/traefik
|
||||
|
||||
traefik-reverse-proxy-https-helper:
|
||||
container_name: traefik-reverse-proxy-https-helper
|
||||
image: alpine
|
||||
profiles: ["testing"]
|
||||
command: sh -c "cd /etc/ssl/traefik
|
||||
&& wget traefik.me/cert.pem -O cert.pem
|
||||
&& wget traefik.me/privkey.pem -O privkey.pem"
|
||||
volumes:
|
||||
- certs:/etc/ssl/traefik
|
||||
|
||||
networks:
|
||||
dmz:
|
||||
name: dmz
|
||||
|
||||
volumes:
|
||||
certs:
|
|
@ -1,9 +0,0 @@
|
|||
tls:
|
||||
stores:
|
||||
default:
|
||||
defaultCertificate:
|
||||
certFile: /etc/ssl/traefik/cert.pem
|
||||
keyFile: /etc/ssl/traefik/privkey.pem
|
||||
certificates:
|
||||
- certFile: /etc/ssl/traefik/cert.pem
|
||||
keyFile: /etc/ssl/traefik/privkey.pem
|
|
@ -1,37 +0,0 @@
|
|||
logLevel: INFO
|
||||
|
||||
api:
|
||||
insecure: true
|
||||
dashboard: true
|
||||
|
||||
entryPoints:
|
||||
http:
|
||||
address: ":80"
|
||||
https:
|
||||
address: ":443"
|
||||
|
||||
providers:
|
||||
file:
|
||||
filename: /etc/traefik/tls.yml
|
||||
docker:
|
||||
endpoint: unix:///var/run/docker.sock
|
||||
watch: true
|
||||
exposedByDefault: false
|
||||
defaultRule: "HostRegexp(`{{ index .Labels \"com.docker.compose.service\"}}.traefik.me`,`{{ index .Labels \"com.docker.compose.service\"}}-{dashed-ip:.*}.traefik.me`)"
|
||||
|
||||
http:
|
||||
# global redirect to https
|
||||
routers:
|
||||
http-catchall:
|
||||
rule: "hostregexp(`{host:.+}`)"
|
||||
entrypoints:
|
||||
- http
|
||||
middlewares:
|
||||
- redirect-to-https
|
||||
|
||||
# middleware redirect
|
||||
middlewares:
|
||||
redirect-to-https:
|
||||
redirectscheme:
|
||||
scheme: https
|
||||
permanent: true
|
|
@ -1,30 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
wallabag:
|
||||
container_name: wallabag
|
||||
image: wallabag/wallabag
|
||||
networks:
|
||||
- wallabag-frontend
|
||||
expose:
|
||||
- 80
|
||||
volumes:
|
||||
- wallabag_data:/var/www/wallabag/data:rw
|
||||
- wallabag_images:/var/www/wallabag/web/assets/images:rw
|
||||
environment:
|
||||
- SYMFONY__ENV__DOMAIN_NAME="https://${HOST_WALLABAG}.${DOMAIN}"
|
||||
- SYMFONY__ENV__FOSUSER_REGISTRATION=false
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.wallabag.rule=Host(`${HOST_WALLABAG}.${DOMAIN}`)
|
||||
- traefik.http.routers.wallabag.entrypoints=https
|
||||
- traefik.http.routers.wallabag.tls=true
|
||||
- traefik.docker.network=wallabag-frontend
|
||||
|
||||
networks:
|
||||
wallabag-frontend:
|
||||
name: wallabag-frontend
|
||||
|
||||
volumes:
|
||||
wallabag_data:
|
||||
wallabag_images:
|
|
@ -1,40 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
dashy:
|
||||
# To build from source, replace 'image: lissy93/dashy' with 'build: .'
|
||||
# build: .
|
||||
image: lissy93/dashy
|
||||
container_name: dashy
|
||||
# Pass in your config file below, by specifying the path on your host machine
|
||||
volumes:
|
||||
- ${ROOT_INSTALL}/data/dashy/config.yml:/app/public/conf.yml
|
||||
# Set any environmental variables
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
# Specify your user ID and group ID. You can find this by running `id -u` and `id -g`
|
||||
# - UID=1000
|
||||
# - GID=1000
|
||||
# Specify restart policy
|
||||
restart: unless-stopped
|
||||
# Configure healthchecks
|
||||
#healthcheck:
|
||||
# test: ['CMD', 'node', '/app/services/healthcheck']
|
||||
# interval: 1m30s
|
||||
# timeout: 10s
|
||||
# retries: 3
|
||||
# start_period: 40s
|
||||
networks:
|
||||
- wwww-frontend
|
||||
expose:
|
||||
- 80
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.dashy.rule=Host(`${FQDN_DASHBOARD}`)
|
||||
- traefik.http.routers.dashy.entrypoints=https
|
||||
- traefik.http.routers.dashy.tls=true
|
||||
- traefik.docker.network=wwww-frontend
|
||||
|
||||
networks:
|
||||
wwww-frontend:
|
||||
name: wwww-frontend
|
|
@ -1,27 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
heimdall:
|
||||
image: lscr.io/linuxserver/heimdall
|
||||
container_name: heimdall
|
||||
environment:
|
||||
- PUID=${PUID}
|
||||
- PGID=${PGID}
|
||||
- TZ=${TZ}
|
||||
volumes:
|
||||
- ${ROOT_INSTALL}/data/heimdall:/config
|
||||
expose:
|
||||
- 80
|
||||
networks:
|
||||
- wwww-frontend
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.dashy.rule=Host(`${FQDN_DASHBOARD}`)
|
||||
- traefik.http.routers.dashy.entrypoints=https
|
||||
- traefik.http.routers.dashy.tls=true
|
||||
- traefik.docker.network=wwww-frontend
|
||||
|
||||
networks:
|
||||
wwww-frontend:
|
||||
name: wwww-frontend
|
|
@ -1,21 +0,0 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
www:
|
||||
container_name: www
|
||||
image: kianby/www-madyanne
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- wwww-frontend
|
||||
expose:
|
||||
- 80
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.www.rule=Host(`${HOST_WWW}.${DOMAIN}`)
|
||||
- traefik.http.routers.www.entrypoints=https
|
||||
- traefik.http.routers.www.tls=true
|
||||
- traefik.docker.network=wwww-frontend
|
||||
|
||||
networks:
|
||||
wwww-frontend:
|
||||
name: wwww-frontend
|
Loading…
Add table
Reference in a new issue