first
This commit is contained in:
commit
a0e693b445
24
bookstack_traefik.yml
Normal file
24
bookstack_traefik.yml
Normal file
@ -0,0 +1,24 @@
|
||||
version: '3'
|
||||
services:
|
||||
bookstack:
|
||||
image: ghcr.io/linuxserver/bookstack
|
||||
container_name: bookstack
|
||||
restart: always
|
||||
environment:
|
||||
- DB_HOST=10.10.10.2:3306
|
||||
- DB_DATABASE=base
|
||||
- DB_USERNAME=user
|
||||
- DB_PASSWORD=password
|
||||
- APP_URL=https://docs.3err0.ru
|
||||
- STORAGE_TYPE=local
|
||||
networks:
|
||||
- web
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.bookstack.rule=Host(`docs.3err0.ru`)"
|
||||
- "traefik.http.services.bookstack.loadbalancer.server.port=80"
|
||||
- "traefik.http.routers.bookstack.tls=true"
|
||||
- "traefik.http.routers.bookstack.tls.certresolver=http"
|
||||
networks:
|
||||
web:
|
||||
external: true
|
27
gitea.yml
Normal file
27
gitea.yml
Normal file
@ -0,0 +1,27 @@
|
||||
version: "3"
|
||||
|
||||
networks:
|
||||
apps:
|
||||
external: false
|
||||
|
||||
services:
|
||||
server:
|
||||
image: gitea/gitea:1.18.3
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- GITEA__database__DB_TYPE=mysql
|
||||
- GITEA__database__HOST=10.0.0.1:3306
|
||||
- GITEA__database__NAME=git
|
||||
- GITEA__database__USER=root
|
||||
- GITEA__database__PASSWD=password
|
||||
restart: always
|
||||
networks:
|
||||
- apps
|
||||
volumes:
|
||||
- /opt/gitea:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
ports:
|
||||
- "3000:3000"
|
30
gitea_traefik.yml
Normal file
30
gitea_traefik.yml
Normal file
@ -0,0 +1,30 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1.18.3
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- GITEA__database__DB_TYPE=mysql
|
||||
- GITEA__database__HOST=10.10.10.2:3306
|
||||
- GITEA__database__NAME=base
|
||||
- GITEA__database__USER=user
|
||||
- GITEA__database__PASSWD=pass
|
||||
restart: always
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- /opt/gitea:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.gitea.rule=Host(`gitea_url`)"
|
||||
- "traefik.http.services.gitea-websecure.loadbalancer.server.port=3000"
|
||||
- "traefik.http.routers.gitea.tls=true"
|
||||
- "traefik.http.routers.gitea.tls.certresolver=http"
|
||||
networks:
|
||||
web:
|
||||
external: true
|
11
hass.yml
Normal file
11
hass.yml
Normal file
@ -0,0 +1,11 @@
|
||||
version: '3'
|
||||
services:
|
||||
homeassistant:
|
||||
container_name: homeassistant
|
||||
image: "ghcr.io/home-assistant/home-assistant:stable"
|
||||
volumes:
|
||||
- /opt/hass:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
restart: unless-stopped
|
||||
privileged: true
|
||||
network_mode: host
|
18
mongo.yml
Normal file
18
mongo.yml
Normal file
@ -0,0 +1,18 @@
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
mongo:
|
||||
container_name: mongo
|
||||
image: mongo:latest
|
||||
restart: always
|
||||
volumes:
|
||||
- /opt/mongodb/data:/data/db
|
||||
ports:
|
||||
- 27017:27017
|
||||
environment:
|
||||
MONGO_INITDB_ROOT_USERNAME: user
|
||||
MONGO_INITDB_ROOT_PASSWORD: pass
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: databases
|
31
mysql.yml
Normal file
31
mysql.yml
Normal file
@ -0,0 +1,31 @@
|
||||
version: '3.9'
|
||||
|
||||
services:
|
||||
|
||||
db:
|
||||
container_name: mysql
|
||||
image: mariadb
|
||||
restart: always
|
||||
command: mysqld --port=3306 --innodb-strict-mode=1 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
|
||||
volumes:
|
||||
- /opt/mysql/data:/var/lib/mysql
|
||||
- /opt/mysql/etc:/etc/mysql/conf.d
|
||||
ports:
|
||||
- 3306:3306
|
||||
environment:
|
||||
MARIADB_AUTO_UPGRADE: "1"
|
||||
MARIADB_INITDB_SKIP_TZINFO: "1"
|
||||
MARIADB_ROOT_PASSWORD: "password"
|
||||
|
||||
adminer:
|
||||
container_name: adminer
|
||||
image: adminer
|
||||
restart: always
|
||||
ports:
|
||||
- 8086:8080
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: databases
|
||||
driver: bridge
|
||||
external: true
|
27
nginx_certbot.yml
Normal file
27
nginx_certbot.yml
Normal file
@ -0,0 +1,27 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
webserver:
|
||||
image: nginx:latest
|
||||
container_name: nginx
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
command: '/bin/sh -c ''while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"'''
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- /opt/nginx/conf/:/etc/nginx/conf.d/:ro
|
||||
- /opt/nginx/certbot/www:/var/www/certbot/
|
||||
- /opt/nginx/certbot/conf:/etc/nginx/ssl/
|
||||
- /opt/nginx/certbot/conf:/etc/letsencrypt/
|
||||
certbot:
|
||||
image: certbot/certbot:latest
|
||||
container_name: certbot
|
||||
volumes:
|
||||
- /opt/nginx/certbot/www:/var/www/certbot/:rw
|
||||
- /opt/nginx/certbot/conf:/etc/letsencrypt/:rw
|
||||
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: webserver
|
64
photoprism.yml
Normal file
64
photoprism.yml
Normal file
@ -0,0 +1,64 @@
|
||||
version: '3.5'
|
||||
|
||||
services:
|
||||
photoprism:
|
||||
container_name: photo
|
||||
image: photoprism/photoprism:latest
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
- apparmor:unconfined
|
||||
ports:
|
||||
- "2344:2342"
|
||||
environment:
|
||||
PHOTOPRISM_INIT: "http"
|
||||
PHOTOPRISM_UID: ${UID:-1000}
|
||||
PHOTOPRISM_GID: ${GID:-1000} # group id
|
||||
PHOTOPRISM_ADMIN_USER: "admin" # admin username
|
||||
PHOTOPRISM_ADMIN_PASSWORD: "photoprism" # initial admin password (minimum 8 characters)
|
||||
PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password)
|
||||
PHOTOPRISM_SITE_URL: "https://photo/" # server URL in the format "http(s)://domain.name(:port)/(path)"
|
||||
PHOTOPRISM_SITE_CAPTION: "Latest"
|
||||
PHOTOPRISM_SITE_DESCRIPTION: "Tags and finds pictures without getting in your way!"
|
||||
PHOTOPRISM_SITE_AUTHOR: "@3err0"
|
||||
PHOTOPRISM_DEBUG: "false"
|
||||
PHOTOPRISM_READONLY: "false"
|
||||
PHOTOPRISM_EXPERIMENTAL: "false"
|
||||
PHOTOPRISM_HTTP_MODE: "release"
|
||||
PHOTOPRISM_HTTP_HOST: "0.0.0.0"
|
||||
PHOTOPRISM_HTTP_PORT: 2342
|
||||
PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip)
|
||||
PHOTOPRISM_DATABASE_DRIVER: "mysql"
|
||||
PHOTOPRISM_DATABASE_SERVER: "10.0.0.1:3306"
|
||||
PHOTOPRISM_DATABASE_NAME: "photoprism"
|
||||
PHOTOPRISM_DATABASE_USER: "root"
|
||||
PHOTOPRISM_DATABASE_PASSWORD: "password"
|
||||
PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup
|
||||
PHOTOPRISM_DISABLE_BACKUPS: "true" # disables backing up albums and photo metadata to YAML files
|
||||
PHOTOPRISM_DISABLE_WEBDAV: "true" # disables built-in WebDAV server
|
||||
PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API
|
||||
PHOTOPRISM_DISABLE_PLACES: "false" # disables reverse geocoding and maps
|
||||
PHOTOPRISM_DISABLE_EXIFTOOL: "false" # disables creating JSON metadata sidecar files with ExifTool
|
||||
PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow
|
||||
PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow)
|
||||
PHOTOPRISM_UPLOAD_NSFW: "false" # allows uploads that MAY be offensive (no effect without TensorFlow)
|
||||
PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW files (reduces performance)
|
||||
PHOTOPRISM_THUMB_FILTER: "lanczos" # resample filter, best to worst: blackman, lanczos, cubic, linear
|
||||
PHOTOPRISM_THUMB_UNCACHED: "true" # enables on-demand thumbnail rendering (high memory and cpu usage)
|
||||
PHOTOPRISM_THUMB_SIZE: 2048 # pre-rendered thumbnail size limit (default 2048, min 720, max 7680)
|
||||
# PHOTOPRISM_THUMB_SIZE: 4096 # Retina 4K, DCI 4K (requires more storage); 7680 for 8K Ultra HD
|
||||
PHOTOPRISM_THUMB_SIZE_UNCACHED: 7680 # on-demand rendering size limit (default 7680, min 720, max 7680)
|
||||
PHOTOPRISM_JPEG_SIZE: 7680 # size limit for converted image files in pixels (720-30000)
|
||||
PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100)
|
||||
TF_CPP_MIN_LOG_LEVEL: 0 # show TensorFlow log messages for development
|
||||
working_dir: "/photoprism"
|
||||
volumes:
|
||||
- photo:/photoprism/originals
|
||||
# - "./storage:/photoprism/storage"
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: media
|
||||
|
||||
volumes:
|
||||
photo:
|
||||
external: true
|
30
postgres.yml
Normal file
30
postgres.yml
Normal file
@ -0,0 +1,30 @@
|
||||
version: '3.7'
|
||||
services:
|
||||
pgsql:
|
||||
container_name: postgres
|
||||
image: timescale/timescaledb:latest-pg15
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=password
|
||||
- POSTGRES_USER=root
|
||||
- POSTGRES_DB=postgres
|
||||
volumes:
|
||||
- /opt/pgsql/data :/var/lib/postgresql/data
|
||||
ports:
|
||||
- "5432:5432"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U root -d postgres"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '4'
|
||||
memory: 16G
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: databases
|
28
resilio-sync.yml
Normal file
28
resilio-sync.yml
Normal file
@ -0,0 +1,28 @@
|
||||
version: "2.1"
|
||||
services:
|
||||
resilio-sync:
|
||||
image: lscr.io/linuxserver/resilio-sync:latest
|
||||
container_name: resilio-sync
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Asia/Irkutsk
|
||||
volumes:
|
||||
- backup:/sync/backup
|
||||
- photo:/sync/photo
|
||||
- /opt/sync/config:/config
|
||||
- /opt/sync/data:/sync
|
||||
ports:
|
||||
- 8888:8888
|
||||
- 55555:55555
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
backup:
|
||||
external: true
|
||||
photo:
|
||||
external: true
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: sync
|
26
rsync-server.yml
Normal file
26
rsync-server.yml
Normal file
@ -0,0 +1,26 @@
|
||||
version: "2.1"
|
||||
services:
|
||||
rsync-server:
|
||||
image: apnar/rsync-server
|
||||
container_name: rsync-server
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Asia/Irkutsk
|
||||
- USERNAME=user
|
||||
- PASSWORD=user
|
||||
- VOLUME=/backup
|
||||
- ALLOW=0.0.0.0/0
|
||||
volumes:
|
||||
- backup:/backup
|
||||
ports:
|
||||
- 873:873
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
backup:
|
||||
external: true
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: sync
|
46
samba.yml
Normal file
46
samba.yml
Normal file
@ -0,0 +1,46 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
samba:
|
||||
image: dperson/samba
|
||||
restart: always
|
||||
networks:
|
||||
samba_net:
|
||||
ipv4_address: 10.1.0.20
|
||||
volumes:
|
||||
- /opt/samba:/mnt/share:rw
|
||||
command: >
|
||||
-s "public;/mnt/share;yes;no;yes;all"
|
||||
-p
|
||||
tmpfs:
|
||||
- /tmp
|
||||
environment:
|
||||
TZ: "Asia/Irkutsk"
|
||||
USERID: "1000"
|
||||
GROUPID: "1000"
|
||||
ANON: "yes"
|
||||
ANON_UID: "65534"
|
||||
ANON_GID: "65534"
|
||||
ports:
|
||||
- "137:137/udp"
|
||||
- "138:138/udp"
|
||||
- "139:139/tcp"
|
||||
- "445:445/tcp"
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.5'
|
||||
memory: '512M'
|
||||
placement:
|
||||
constraints: [node.role == worker]
|
||||
|
||||
networks:
|
||||
samba_net:
|
||||
driver: macvlan
|
||||
driver_opts:
|
||||
parent: enp3s0
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: 10.1.0.0/21
|
||||
gateway: 10.1.0.1
|
39
traefik.yml
Normal file
39
traefik.yml
Normal file
@ -0,0 +1,39 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:latest
|
||||
container_name: traefik
|
||||
restart: unless-stopped
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- /opt/traefik/data/traefik.yml:/traefik.yml:ro
|
||||
- /opt/traefik/ssl/acme.json:/acme.json
|
||||
- /opt/traefik/custom/:/custom/:ro
|
||||
networks:
|
||||
- web
|
||||
- internal
|
||||
labels:
|
||||
- 'traefik.enable=true'
|
||||
- 'traefik.http.routers.traefik.entrypoints=http'
|
||||
- 'traefik.http.routers.traefik.rule=Host(`traefik_url`)'
|
||||
- 'traefik.http.middlewares.traefik-auth.basicauth.users=root:password'
|
||||
- 'traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https'
|
||||
- 'traefik.http.routers.traefik.middlewares=traefik-https-redirect'
|
||||
- 'traefik.http.routers.traefik-secure.entrypoints=https'
|
||||
- 'traefik.http.routers.traefik-secure.rule=Host(`traefik_url`)'
|
||||
- 'traefik.http.routers.traefik-secure.middlewares=traefik-auth'
|
||||
- 'traefik.http.routers.traefik-secure.tls=true'
|
||||
- 'traefik.http.routers.traefik-secure.tls.certresolver=http'
|
||||
- 'traefik.http.routers.traefik-secure.service=api@internal'
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
internal:
|
||||
external: false
|
28
traefik/custom_service.yaml
Normal file
28
traefik/custom_service.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
ttp:
|
||||
routers:
|
||||
custom-secure:
|
||||
rule: "Host(`url_service`)"
|
||||
service: "custom-service"
|
||||
entrypoints: ["https"]
|
||||
middlewares:
|
||||
- "custom-https-redirect"
|
||||
tls:
|
||||
certResolver: "http"
|
||||
psw:
|
||||
rule: "Host(`url_service`)"
|
||||
entrypoints: ["http"]
|
||||
middlewares:
|
||||
- "custom-https-redirect"
|
||||
service: "custom-service"
|
||||
|
||||
middlewares:
|
||||
custom-https-redirect:
|
||||
redirectScheme:
|
||||
scheme: "https"
|
||||
permanent: true
|
||||
|
||||
services:
|
||||
custom-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: "http://service:80"
|
24
traefik/traefik.yml
Normal file
24
traefik/traefik.yml
Normal file
@ -0,0 +1,24 @@
|
||||
api:
|
||||
dashboard: true
|
||||
|
||||
entryPoints:
|
||||
http:
|
||||
address: ":80"
|
||||
https:
|
||||
address: ":443"
|
||||
|
||||
providers:
|
||||
docker:
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
exposedByDefault: false
|
||||
file:
|
||||
directory: /custom
|
||||
watch: true
|
||||
|
||||
certificatesResolvers:
|
||||
http:
|
||||
acme:
|
||||
email: mail@3err0.ru
|
||||
storage: acme.json
|
||||
httpChallenge:
|
||||
entryPoint: http
|
26
tt_rss.yml
Normal file
26
tt_rss.yml
Normal file
@ -0,0 +1,26 @@
|
||||
version: '3'
|
||||
services:
|
||||
ttrss:
|
||||
image: wangqiru/ttrss
|
||||
container_name: ttrss
|
||||
environment:
|
||||
DB_NAME: rss
|
||||
DB_USER: user
|
||||
DB_PASS: pass
|
||||
DB_HOST: 10.10.10.2
|
||||
DB_PORT: 5432
|
||||
SELF_URL_PATH: https://rss_url
|
||||
volumes:
|
||||
- /opt/ttrss/plugins:/var/www/plugins.local
|
||||
networks:
|
||||
- web
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.ttrss.rule=Host(`rss_url`)"
|
||||
- "traefik.http.services.ttrss.loadbalancer.server.port=80"
|
||||
- "traefik.http.routers.ttrss.tls=true"
|
||||
- "traefik.http.routers.ttrss.tls.certresolver=http"
|
||||
restart: always
|
||||
networks:
|
||||
web:
|
||||
external: true
|
25
vaultwarden.yml
Normal file
25
vaultwarden.yml
Normal file
@ -0,0 +1,25 @@
|
||||
version: "3"
|
||||
services:
|
||||
vaultwarden:
|
||||
image: vaultwarden/server:latest
|
||||
container_name: vaultwarden
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 9445:80 #map any custom port to use (replace 8445 not 80)
|
||||
volumes:
|
||||
- /opt/bitwarden:/data:rw
|
||||
environment:
|
||||
- ADMIN_TOKEN=token
|
||||
- WEBSOCKET_ENABLED=false
|
||||
- SIGNUPS_ALLOWED=true
|
||||
# - SMTP_HOST=smtp.yandex.ru
|
||||
# - SMTP_FROM=mail@yandex.ru
|
||||
# - SMTP_PORT=465
|
||||
# - SMTP_SECURITY=starttls
|
||||
# - SMTP_USERNAME=mail@yandex.ru
|
||||
# - SMTP_PASSWORD=password
|
||||
- DOMAIN=https://password
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: apps
|
33
webdav_traefik.yml
Normal file
33
webdav_traefik.yml
Normal file
@ -0,0 +1,33 @@
|
||||
version: '3'
|
||||
services:
|
||||
webdav:
|
||||
image: bytemark/webdav
|
||||
container_name: webdav
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
AUTH_TYPE: Basic
|
||||
USERNAME: admin
|
||||
PASSWORD: password
|
||||
SERVER_NAMES: webdav.site
|
||||
networks:
|
||||
- web
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
volumes:
|
||||
- /opt/webdav:/var/lib/dav
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.webdav.entrypoints=http"
|
||||
- "traefik.http.routers.webdav.rule=Host(`webdav.site`)"
|
||||
- "traefik.http.middlewares.webdav-https-redirect.redirectscheme.scheme=https"
|
||||
- "traefik.http.routers.webdav.middlewares=webdav-https-redirect"
|
||||
- "traefik.http.routers.webdav-secure.entrypoints=https"
|
||||
- "traefik.http.routers.webdav-secure.rule=Host(`webdav.site`)"
|
||||
- "traefik.http.routers.webdav-secure.tls=true"
|
||||
- "traefik.http.routers.webdav-secure.tls.certresolver=http"
|
||||
- "traefik.http.routers.webdav-secure.service=webdav"
|
||||
- "traefik.http.services.webdav.loadbalancer.server.port=80"
|
||||
- "traefik.docker.network=web"
|
||||
networks:
|
||||
web:
|
||||
external: true
|
Loading…
Reference in New Issue
Block a user