Compare commits
19 Commits
12a0e84181
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff4bea25f6 | ||
|
|
2abb9cb5d2 | ||
|
|
8231589d4d | ||
|
|
1ffdc6caaf | ||
|
|
eb5693322d | ||
|
|
773fb9067b | ||
|
|
31a5e76cee | ||
|
|
db5394a2c5 | ||
|
|
e07521a6ae | ||
|
|
8a2240a43e | ||
|
|
0dcd0c9823 | ||
|
|
5ffc709df3 | ||
|
|
a572313d3d | ||
|
|
8de9b57365 | ||
|
|
79aa347f6a | ||
|
|
d2810af09f | ||
|
|
aaaaa7766e | ||
|
|
b532587d76 | ||
|
|
8749ca7376 |
@@ -10,7 +10,7 @@ services:
|
|||||||
retries: 5
|
retries: 5
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
volumes:
|
volumes:
|
||||||
- database:/var/lib/postgresql/data
|
- ./data/postgres:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
|
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
|
||||||
POSTGRES_USER: ${PG_USER:-authentik}
|
POSTGRES_USER: ${PG_USER:-authentik}
|
||||||
@@ -28,7 +28,7 @@ services:
|
|||||||
retries: 5
|
retries: 5
|
||||||
timeout: 3s
|
timeout: 3s
|
||||||
volumes:
|
volumes:
|
||||||
- redis:/data
|
- ./data/redis:/data
|
||||||
app:
|
app:
|
||||||
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.3}
|
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.3}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -90,12 +90,6 @@ services:
|
|||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
|
||||||
volumes:
|
|
||||||
database:
|
|
||||||
driver: local
|
|
||||||
redis:
|
|
||||||
driver: local
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy-net:
|
proxy-net:
|
||||||
external: true
|
external: true
|
||||||
|
|||||||
@@ -78,9 +78,35 @@
|
|||||||
{args[0]}.tremendousturtle.tools {
|
{args[0]}.tremendousturtle.tools {
|
||||||
import ttt-log {args[0]}
|
import ttt-log {args[0]}
|
||||||
import tls
|
import tls
|
||||||
reverse_proxy authentik-app-1:9000 {
|
@not_cf header !CF-Connecting-IP
|
||||||
|
@cf header CF-Connecting-IP *
|
||||||
|
|
||||||
|
reverse_proxy @not_cf authentik-app-1:9000 {
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
header_up X-Forwarded-Port {server_port}
|
||||||
|
}
|
||||||
|
|
||||||
|
reverse_proxy @cf authentik-app-1:9000 {
|
||||||
header_up X-Real-IP {http.request.header.CF-Connecting-IP}
|
header_up X-Real-IP {http.request.header.CF-Connecting-IP}
|
||||||
header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
|
header_up X-Forwarded-Port {server_port}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(oidc) {
|
||||||
|
{args[0]}.tremendousturtle.tools {
|
||||||
|
import ttt-log {args[0]}
|
||||||
|
import tls
|
||||||
|
@not_cf header !CF-Connecting-IP
|
||||||
|
@cf header CF-Connecting-IP *
|
||||||
|
|
||||||
|
reverse_proxy @not_cf {args[0]}-app-1:{args[1]} {
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
header_up X-Forwarded-Port {server_port}
|
||||||
|
}
|
||||||
|
|
||||||
|
reverse_proxy @cf {args[0]}-app-1:{args[1]} {
|
||||||
|
header_up X-Real-IP {http.request.header.CF-Connecting-IP}
|
||||||
|
header_up X-Forwarded-Port {server_port}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -152,7 +178,7 @@ import ttt-app requestrr 4545
|
|||||||
import ttt-app-alt budget actual-server-app-1 5006
|
import ttt-app-alt budget actual-server-app-1 5006
|
||||||
import ttt-app-alt trilium triliumnext-notes-app-1 8080
|
import ttt-app-alt trilium triliumnext-notes-app-1 8080
|
||||||
import ttt-app-alt notes triliumnext-notes-app-1 8080
|
import ttt-app-alt notes triliumnext-notes-app-1 8080
|
||||||
import ttt-app-alt stash stashapp-app-1 9999
|
#import ttt-app-alt stash stashapp-app-1 9999
|
||||||
import ttt-app-alt pihole1 192.168.1.116 80
|
import ttt-app-alt pihole1 192.168.1.116 80
|
||||||
|
|
||||||
# Authentik Configs
|
# Authentik Configs
|
||||||
@@ -163,3 +189,33 @@ import authentik frigate
|
|||||||
import authentik code
|
import authentik code
|
||||||
import authentik gitea
|
import authentik gitea
|
||||||
import authentik dozzle
|
import authentik dozzle
|
||||||
|
import authentik tautulli
|
||||||
|
#import authentik-test stash
|
||||||
|
|
||||||
|
# Authentik OIDC Configs
|
||||||
|
import oidc komodo 9120
|
||||||
|
|
||||||
|
stash.tremendousturtle.tools {
|
||||||
|
import ttt-log stash
|
||||||
|
import tls
|
||||||
|
@not_cf header !CF-Connecting-IP
|
||||||
|
@cf header CF-Connecting-IP *
|
||||||
|
|
||||||
|
# Match the bedroom Nvidia Shield IP to skip Authentik
|
||||||
|
@exclude client_ip 192.168.1.142 192.168.1.234 127.0.0.1
|
||||||
|
reverse_proxy @exclude stashapp-app-1:9999 {
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
header_up X-Forwarded-Port {server_port}
|
||||||
|
}
|
||||||
|
|
||||||
|
# When not from cloudflare just use the remote host as the real IP
|
||||||
|
reverse_proxy @not_cf authentik-app-1:9000 {
|
||||||
|
header_up X-Real-IP {remote_host}
|
||||||
|
header_up X-Forwarded-Port {server_port}
|
||||||
|
}
|
||||||
|
|
||||||
|
# When from cloudflare tunnel use the CF-Connecting-IP as the real IP
|
||||||
|
reverse_proxy @cf authentik-app-1:9000 {
|
||||||
|
header_up X-Real-IP {http.request.header.CF-Connecting-IP}
|
||||||
|
header_up X-Forwarded-Port {server_port}
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,13 +17,9 @@ services:
|
|||||||
- ./data/site:/srv
|
- ./data/site:/srv
|
||||||
- ./data/logs:/logs
|
- ./data/logs:/logs
|
||||||
- ./config:/etc/caddy
|
- ./config:/etc/caddy
|
||||||
- caddy_data:/data
|
- ./data/caddy_data:/data
|
||||||
- caddy_config:/config
|
- ./data/caddy_config:/config
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy-net:
|
proxy-net:
|
||||||
external: true
|
external: true
|
||||||
|
|
||||||
volumes:
|
|
||||||
caddy_data:
|
|
||||||
caddy_config:
|
|
||||||
|
|||||||
@@ -75,6 +75,31 @@ cameras:
|
|||||||
- 0.865,0.955,0.865,0.99,0.895,0.99,0.895,0.955
|
- 0.865,0.955,0.865,0.99,0.895,0.99,0.895,0.955
|
||||||
- 0.827,0.955,0.827,0.99,0.858,0.99,0.858,0.955
|
- 0.827,0.955,0.827,0.99,0.858,0.99,0.858,0.955
|
||||||
- 0.79,0.955,0.79,0.99,0.821,0.99,0.821,0.955
|
- 0.79,0.955,0.79,0.99,0.821,0.99,0.821,0.955
|
||||||
|
- 0.905,0.992,0.932,0.99,0.932,0.965,0.905,0.964
|
||||||
|
- 0.942,0.987,0.983,0.987,0.982,0.957,0.942,0.958
|
||||||
|
- 0.69,0.988,0.719,0.988,0.719,0.957,0.69,0.958
|
||||||
|
threshold: 35
|
||||||
|
contour_area: 15
|
||||||
|
improve_contrast: true
|
||||||
|
zones:
|
||||||
|
Front_Yard:
|
||||||
|
coordinates: 0,0.552,0.13,0.709,0.246,0.822,0.451,1,0,1
|
||||||
|
loitering_time: 0
|
||||||
|
objects:
|
||||||
|
- cat
|
||||||
|
- dog
|
||||||
|
- package
|
||||||
|
- person
|
||||||
|
- usps
|
||||||
|
- waste bin
|
||||||
|
Driveway:
|
||||||
|
coordinates:
|
||||||
|
0,0.494,0,0.549,0.131,0.706,0.251,0.824,0.454,1,1,1,1,0.37,0.856,0.33,0.743,0.296,0.569,0.253,0.451,0.225,0.264,0.324,0.177,0.372,0.043,0.461
|
||||||
|
loitering_time: 0
|
||||||
|
Street:
|
||||||
|
coordinates:
|
||||||
|
0,0.491,0.05,0.454,0.176,0.371,0.257,0.325,0.45,0.224,0.49,0.217,0.561,0.185,0.671,0.139,0.738,0.114,0.813,0.084,0.756,0.049,0.736,0.027,0.737,0,0.474,0,0.46,0.009,0.389,0.012,0.318,0.022,0,0.128
|
||||||
|
loitering_time: 0
|
||||||
ne_garage:
|
ne_garage:
|
||||||
enabled: true
|
enabled: true
|
||||||
ffmpeg:
|
ffmpeg:
|
||||||
@@ -97,6 +122,33 @@ cameras:
|
|||||||
- 0.865,0.955,0.865,0.99,0.895,0.99,0.895,0.955
|
- 0.865,0.955,0.865,0.99,0.895,0.99,0.895,0.955
|
||||||
- 0.827,0.955,0.827,0.99,0.858,0.99,0.858,0.955
|
- 0.827,0.955,0.827,0.99,0.858,0.99,0.858,0.955
|
||||||
- 0.79,0.955,0.79,0.99,0.821,0.99,0.821,0.955
|
- 0.79,0.955,0.79,0.99,0.821,0.99,0.821,0.955
|
||||||
|
- 0.905,0.992,0.932,0.99,0.932,0.965,0.905,0.964
|
||||||
|
- 0.942,0.987,0.983,0.987,0.982,0.957,0.942,0.958
|
||||||
|
- 0.69,0.988,0.719,0.988,0.719,0.957,0.69,0.958
|
||||||
|
- 0.86,0,0.849,0.11,1,0.187,1,0
|
||||||
|
threshold: 45
|
||||||
|
contour_area: 16
|
||||||
|
improve_contrast: true
|
||||||
|
zones:
|
||||||
|
Front_Yard:
|
||||||
|
coordinates:
|
||||||
|
0,0.247,0,0.417,0.07,0.391,0.16,0.363,0.287,0.332,0.406,0.306,0.518,0.286,0.314,0.18,0.21,0.195,0.119,0.212
|
||||||
|
loitering_time: 0
|
||||||
|
objects:
|
||||||
|
- cat
|
||||||
|
- dog
|
||||||
|
- package
|
||||||
|
- person
|
||||||
|
- usps
|
||||||
|
- waste bin
|
||||||
|
Driveway:
|
||||||
|
coordinates:
|
||||||
|
0,0.42,0,1,1,1,1,0.601,0.876,0.512,0.709,0.402,0.584,0.328,0.514,0.289,0.413,0.307,0.297,0.332,0.177,0.361,0.085,0.388
|
||||||
|
loitering_time: 0
|
||||||
|
Street:
|
||||||
|
coordinates:
|
||||||
|
0.043,0.059,0.132,0.102,0.205,0.131,0.311,0.176,0.414,0.229,0.523,0.287,0.527,0.293,0.622,0.348,0.697,0.392,0.79,0.452,0.901,0.526,1,0.598,1,0.203,0.612,0.024,0.473,0,0.043,0
|
||||||
|
loitering_time: 0
|
||||||
doorbell:
|
doorbell:
|
||||||
enabled: true
|
enabled: true
|
||||||
ffmpeg:
|
ffmpeg:
|
||||||
@@ -119,9 +171,26 @@ cameras:
|
|||||||
- 0.79,0.003,0.79,0.035,0.82,0.035,0.82,0.003
|
- 0.79,0.003,0.79,0.035,0.82,0.035,0.82,0.003
|
||||||
- 0.828,0.003,0.828,0.035,0.858,0.035,0.858,0.003
|
- 0.828,0.003,0.828,0.035,0.858,0.035,0.858,0.003
|
||||||
- 0.866,0.003,0.866,0.035,0.896,0.035,0.896,0.003
|
- 0.866,0.003,0.866,0.035,0.896,0.035,0.896,0.003
|
||||||
threshold: 30
|
- 0.904,0.039,0.933,0.038,0.933,0.011,0.904,0.011
|
||||||
contour_area: 18
|
- 0.943,0.033,0.983,0.033,0.983,0.004,0.942,0.005
|
||||||
|
- 0.691,0.034,0.72,0.033,0.72,0.005,0.69,0.005
|
||||||
|
threshold: 40
|
||||||
|
contour_area: 13
|
||||||
improve_contrast: true
|
improve_contrast: true
|
||||||
|
zones:
|
||||||
|
Front_Yard:
|
||||||
|
coordinates: 0,0.876,0,1,1,1,1,0.596,0.491,0.59
|
||||||
|
loitering_time: 0
|
||||||
|
objects:
|
||||||
|
- cat
|
||||||
|
- dog
|
||||||
|
- package
|
||||||
|
- person
|
||||||
|
- usps
|
||||||
|
- waste bin
|
||||||
|
Street:
|
||||||
|
coordinates: 0.363,0.583,0.643,0.591,0.644,0.524,0.363,0.522
|
||||||
|
loitering_time: 0
|
||||||
version: 0.14
|
version: 0.14
|
||||||
camera_groups:
|
camera_groups:
|
||||||
Birdseye:
|
Birdseye:
|
||||||
@@ -142,12 +211,12 @@ detect:
|
|||||||
threshold: 50
|
threshold: 50
|
||||||
|
|
||||||
snapshots:
|
snapshots:
|
||||||
enabled: True
|
enabled: true
|
||||||
retain:
|
retain:
|
||||||
default: 30
|
default: 30
|
||||||
|
|
||||||
record:
|
record:
|
||||||
enabled: True
|
enabled: true
|
||||||
retain:
|
retain:
|
||||||
days: 3
|
days: 3
|
||||||
mode: all
|
mode: all
|
||||||
@@ -158,4 +227,4 @@ record:
|
|||||||
|
|
||||||
telemetry:
|
telemetry:
|
||||||
stats:
|
stats:
|
||||||
network_bandwidth: True
|
network_bandwidth: true
|
||||||
|
|||||||
41
komodo/.env
41
komodo/.env
@@ -12,14 +12,14 @@ COMPOSE_KOMODO_IMAGE_TAG=latest
|
|||||||
|
|
||||||
## Note: 🚨 Podman does NOT support local logging driver 🚨. See Podman options here:
|
## Note: 🚨 Podman does NOT support local logging driver 🚨. See Podman options here:
|
||||||
## `https://docs.podman.io/en/v4.6.1/markdown/podman-run.1.html#log-driver-driver`
|
## `https://docs.podman.io/en/v4.6.1/markdown/podman-run.1.html#log-driver-driver`
|
||||||
COMPOSE_LOGGING_DRIVER=local # Enable log rotation with the local driver.
|
COMPOSE_LOGGING_DRIVER=journald # Enable log rotation with the local driver.
|
||||||
|
|
||||||
## DB credentials - Ignored for Sqlite
|
## DB credentials - Ignored for Sqlite
|
||||||
DB_USERNAME=admin
|
KOMODO_DB_USERNAME=admin
|
||||||
DB_PASSWORD=admin
|
KOMODO_DB_PASSWORD_FILE=/run/secrets/KOMODO_DB_PASSWORD
|
||||||
|
|
||||||
## Configure a secure passkey to authenticate between Core / Periphery.
|
## Configure a secure passkey to authenticate between Core / Periphery.
|
||||||
PASSKEY=a_random_passkey
|
KOMODO_PASSKEY_FILE=/run/secrets/KOMODO_PASSKEY
|
||||||
|
|
||||||
#=-------------------------=#
|
#=-------------------------=#
|
||||||
#= Komodo Core Environment =#
|
#= Komodo Core Environment =#
|
||||||
@@ -32,7 +32,7 @@ PASSKEY=a_random_passkey
|
|||||||
## Docs: https://docs.docker.com/compose/how-tos/use-secrets/#examples
|
## Docs: https://docs.docker.com/compose/how-tos/use-secrets/#examples
|
||||||
|
|
||||||
## Used for Oauth / Webhook url suggestion / Caddy reverse proxy.
|
## Used for Oauth / Webhook url suggestion / Caddy reverse proxy.
|
||||||
KOMODO_HOST=https://demo.komo.do
|
KOMODO_HOST=https://komodo.tremendousturtle.tools
|
||||||
## Displayed in the browser tab.
|
## Displayed in the browser tab.
|
||||||
KOMODO_TITLE=Komodo
|
KOMODO_TITLE=Komodo
|
||||||
## Create a server matching this address as the "first server".
|
## Create a server matching this address as the "first server".
|
||||||
@@ -45,22 +45,20 @@ KOMODO_DISABLE_CONFIRM_DIALOG=false
|
|||||||
## status / container status / system stats / alerting.
|
## status / container status / system stats / alerting.
|
||||||
## Options: 1-sec, 5-sec, 15-sec, 1-min, 5-min.
|
## Options: 1-sec, 5-sec, 15-sec, 1-min, 5-min.
|
||||||
## Default: 15-sec
|
## Default: 15-sec
|
||||||
KOMODO_MONITORING_INTERVAL="15-sec"
|
KOMODO_MONITORING_INTERVAL="5-sec"
|
||||||
## Rate Komodo polls Resources for updates,
|
## Rate Komodo polls Resources for updates,
|
||||||
## like outdated commit hash.
|
## like outdated commit hash.
|
||||||
## Options: 1-min, 5-min, 15-min, 30-min, 1-hr.
|
## Options: 1-min, 5-min, 15-min, 30-min, 1-hr.
|
||||||
## Default: 5-min
|
## Default: 5-min
|
||||||
KOMODO_RESOURCE_POLL_INTERVAL="5-min"
|
KOMODO_RESOURCE_POLL_INTERVAL="1-min"
|
||||||
|
|
||||||
## Used to auth against periphery. Alt: KOMODO_PASSKEY_FILE
|
|
||||||
KOMODO_PASSKEY=${PASSKEY}
|
|
||||||
## Used to auth incoming webhooks. Alt: KOMODO_WEBHOOK_SECRET_FILE
|
## Used to auth incoming webhooks. Alt: KOMODO_WEBHOOK_SECRET_FILE
|
||||||
KOMODO_WEBHOOK_SECRET=a_random_secret
|
KOMODO_WEBHOOK_SECRET_FILE=/run/secrets/KOMODO_WEBHOOK_SECRET
|
||||||
## Used to generate jwt. Alt: KOMODO_JWT_SECRET_FILE
|
## Used to generate jwt. Alt: KOMODO_JWT_SECRET_FILE
|
||||||
KOMODO_JWT_SECRET=a_random_jwt_secret
|
KOMODO_JWT_SECRET_FILE=/run/secrets/KOMODO_JWT_SECRET
|
||||||
|
|
||||||
## Enable login with username + password.
|
## Enable login with username + password.
|
||||||
KOMODO_LOCAL_AUTH=true
|
KOMODO_LOCAL_AUTH=false
|
||||||
## Disable new user signups.
|
## Disable new user signups.
|
||||||
KOMODO_DISABLE_USER_REGISTRATION=false
|
KOMODO_DISABLE_USER_REGISTRATION=false
|
||||||
## All new logins are auto enabled
|
## All new logins are auto enabled
|
||||||
@@ -72,18 +70,18 @@ KOMODO_TRANSPARENT_MODE=false
|
|||||||
|
|
||||||
## Time to live for jwt tokens.
|
## Time to live for jwt tokens.
|
||||||
## Options: 1-hr, 12-hr, 1-day, 3-day, 1-wk, 2-wk
|
## Options: 1-hr, 12-hr, 1-day, 3-day, 1-wk, 2-wk
|
||||||
KOMODO_JWT_TTL="1-day"
|
KOMODO_JWT_TTL="1-wk"
|
||||||
|
|
||||||
## OIDC Login
|
## OIDC Login
|
||||||
KOMODO_OIDC_ENABLED=false
|
KOMODO_OIDC_ENABLED=true
|
||||||
## Must reachable from Komodo Core container
|
## Must reachable from Komodo Core container
|
||||||
# KOMODO_OIDC_PROVIDER=https://oidc.provider.internal/application/o/komodo
|
KOMODO_OIDC_PROVIDER=https://authentik.tremendousturtle.tools/application/o/komodo/
|
||||||
## Change the host to one reachable be reachable by users (optional if it is the same as above).
|
## Change the host to one reachable be reachable by users (optional if it is the same as above).
|
||||||
## DO NOT include the `path` part of the URL.
|
## DO NOT include the `path` part of the URL.
|
||||||
# KOMODO_OIDC_REDIRECT_HOST=https://oidc.provider.external
|
KOMODO_OIDC_REDIRECT_HOST=https://authentik.tremendousturtle.tools
|
||||||
## Your client credentials
|
## Your client credentials
|
||||||
# KOMODO_OIDC_CLIENT_ID= # Alt: KOMODO_OIDC_CLIENT_ID_FILE
|
KOMODO_OIDC_CLIENT_ID_FILE=/run/secrets/KOMODO_OIDC_CLIENT_ID # Alt: KOMODO_OIDC_CLIENT_ID_FILE
|
||||||
# KOMODO_OIDC_CLIENT_SECRET= # Alt: KOMODO_OIDC_CLIENT_SECRET_FILE
|
KOMODO_OIDC_CLIENT_SECRET_FILE=/run/secrets/KOMODO_OIDC_CLIENT_SECRET # Alt: KOMODO_OIDC_CLIENT_SECRET_FILE
|
||||||
## Make usernames the full email.
|
## Make usernames the full email.
|
||||||
# KOMODO_OIDC_USE_FULL_EMAIL=true
|
# KOMODO_OIDC_USE_FULL_EMAIL=true
|
||||||
## Add additional trusted audiences for token claims verification.
|
## Add additional trusted audiences for token claims verification.
|
||||||
@@ -115,8 +113,11 @@ KOMODO_HETZNER_TOKEN= # Alt: KOMODO_HETZNER_TOKEN_FILE
|
|||||||
## Full variable list + descriptions are available here:
|
## Full variable list + descriptions are available here:
|
||||||
## 🦎 https://github.com/mbecker20/komodo/blob/main/config/periphery.config.toml 🦎
|
## 🦎 https://github.com/mbecker20/komodo/blob/main/config/periphery.config.toml 🦎
|
||||||
|
|
||||||
## Periphery passkeys must include KOMODO_PASSKEY to authenticate
|
## Periphery passkeys must include KOMODO_PASSKEY to authenticate.
|
||||||
PERIPHERY_PASSKEYS=${PASSKEY}
|
PERIPHERY_PASSKEYS_FILE=${KOMODO_PASSKEY_FILE}
|
||||||
|
|
||||||
|
## Specify the root directory used by Periphery agent.
|
||||||
|
PERIPHERY_ROOT_DIRECTORY=/etc/komodo
|
||||||
|
|
||||||
## Enable SSL using self signed certificates.
|
## Enable SSL using self signed certificates.
|
||||||
## Connect to Periphery at https://address:8120.
|
## Connect to Periphery at https://address:8120.
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
## 1. MongoDB
|
## 1. MongoDB
|
||||||
## 2. Komodo Core
|
## 2. Komodo Core
|
||||||
## 3. Komodo Periphery
|
## 3. Komodo Periphery
|
||||||
|
|
||||||
name: komodo
|
name: komodo
|
||||||
services:
|
services:
|
||||||
db:
|
db:
|
||||||
@@ -22,13 +21,15 @@ services:
|
|||||||
# ports:
|
# ports:
|
||||||
# - 27017:27017
|
# - 27017:27017
|
||||||
volumes:
|
volumes:
|
||||||
- mongo-data:/data/db
|
- ./data/mongo-data:/data/db
|
||||||
- mongo-config:/data/configdb
|
- ./config/mongo-config:/data/configdb
|
||||||
environment:
|
environment:
|
||||||
MONGO_INITDB_ROOT_USERNAME: ${DB_USERNAME}
|
MONGO_INITDB_ROOT_USERNAME: ${KOMODO_DB_USERNAME}
|
||||||
MONGO_INITDB_ROOT_PASSWORD: ${DB_PASSWORD}
|
MONGO_INITDB_ROOT_PASSWORD_FILE: ${KOMODO_DB_PASSWORD_FILE}
|
||||||
|
secrets:
|
||||||
|
- KOMODO_DB_PASSWORD
|
||||||
|
|
||||||
core:
|
app:
|
||||||
image: ghcr.io/mbecker20/komodo:${COMPOSE_KOMODO_IMAGE_TAG:-latest}
|
image: ghcr.io/mbecker20/komodo:${COMPOSE_KOMODO_IMAGE_TAG:-latest}
|
||||||
labels:
|
labels:
|
||||||
komodo.skip: # Prevent Komodo from stopping with StopAllContainers
|
komodo.skip: # Prevent Komodo from stopping with StopAllContainers
|
||||||
@@ -39,24 +40,29 @@ services:
|
|||||||
driver: ${COMPOSE_LOGGING_DRIVER:-local}
|
driver: ${COMPOSE_LOGGING_DRIVER:-local}
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
|
- proxy-net
|
||||||
ports:
|
ports:
|
||||||
- 9120:9120
|
- 9120:9120
|
||||||
env_file: ./compose.env
|
env_file: ./.env
|
||||||
environment:
|
environment:
|
||||||
KOMODO_DATABASE_ADDRESS: db:27017
|
KOMODO_DATABASE_ADDRESS: db:27017
|
||||||
KOMODO_DATABASE_USERNAME: ${DB_USERNAME}
|
KOMODO_DATABASE_USERNAME: ${KOMODO_DB_USERNAME}
|
||||||
KOMODO_DATABASE_PASSWORD: ${DB_PASSWORD}
|
KOMODO_DATABASE_PASSWORD_FILE: ${KOMODO_DB_PASSWORD_FILE}
|
||||||
|
KOMODO_LOGGING_LEVEL: info
|
||||||
volumes:
|
volumes:
|
||||||
## Core cache for repos for latest commit hash / contents
|
## Core cache for repos for latest commit hash / contents
|
||||||
- repo-cache:/repo-cache
|
- ./data/repo-cache:/repo-cache
|
||||||
## Store sync files on server
|
## Store sync files on server
|
||||||
# - /path/to/syncs:/syncs
|
- ./data/syncs:/syncs
|
||||||
## Optionally mount a custom core.config.toml
|
## Optionally mount a custom core.config.toml
|
||||||
# - /path/to/core.config.toml:/config/config.toml
|
# - /path/to/core.config.toml:/config/config.toml
|
||||||
## Allows for systemd Periphery connection at
|
secrets:
|
||||||
## "http://host.docker.internal:8120"
|
- KOMODO_DB_PASSWORD
|
||||||
# extra_hosts:
|
- KOMODO_PASSKEY
|
||||||
# - host.docker.internal:host-gateway
|
- KOMODO_WEBHOOK_SECRET
|
||||||
|
- KOMODO_JWT_SECRET
|
||||||
|
- KOMODO_OIDC_CLIENT_SECRET
|
||||||
|
- KOMODO_OIDC_CLIENT_ID
|
||||||
|
|
||||||
## Deploy Periphery container using this block,
|
## Deploy Periphery container using this block,
|
||||||
## or deploy the Periphery binary with systemd using
|
## or deploy the Periphery binary with systemd using
|
||||||
@@ -70,34 +76,40 @@ services:
|
|||||||
driver: ${COMPOSE_LOGGING_DRIVER:-local}
|
driver: ${COMPOSE_LOGGING_DRIVER:-local}
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
env_file: ./compose.env
|
env_file: ./.env
|
||||||
|
environment:
|
||||||
|
PERIPHERY_REPO_DIR: ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}/repos
|
||||||
|
PERIPHERY_STACK_DIR: ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}/stacks
|
||||||
|
PERIPHERY_SSL_KEY_FILE: ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}/ssl/key.pem
|
||||||
|
PERIPHERY_SSL_CERT_FILE: ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}/ssl/cert.pem
|
||||||
volumes:
|
volumes:
|
||||||
## Mount external docker socket
|
## Mount external docker socket
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
## Allow Periphery to see processes outside of container
|
## Allow Periphery to see processes outside of container
|
||||||
- /proc:/proc
|
- /proc:/proc
|
||||||
## use self signed certs in docker volume,
|
## Specify the Periphery agent root directory.
|
||||||
## or mount your own signed certs.
|
## Must be the same inside and outside the container,
|
||||||
- ssl-certs:/etc/komodo/ssl
|
## or docker will get confused. See https://github.com/mbecker20/komodo/discussions/180.
|
||||||
## manage repos in a docker volume,
|
## Default: /etc/komodo.
|
||||||
## or change it to an accessible host directory.
|
- ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}:${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}
|
||||||
- repos:/etc/komodo/repos
|
secrets:
|
||||||
## manage stack files in a docker volume,
|
- KOMODO_PASSKEY
|
||||||
## or change it to an accessible host directory.
|
|
||||||
- stacks:/etc/komodo/stacks
|
|
||||||
## Optionally mount a path to store compose files
|
|
||||||
# - /path/to/compose:/host/compose
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
# Mongo
|
|
||||||
mongo-data:
|
|
||||||
mongo-config:
|
|
||||||
# Core
|
|
||||||
repo-cache:
|
|
||||||
# Periphery
|
|
||||||
ssl-certs:
|
|
||||||
repos:
|
|
||||||
stacks:
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
default: {}
|
default: {}
|
||||||
|
proxy-net:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
KOMODO_DB_PASSWORD:
|
||||||
|
file: ./secrets/KOMODO_DB_PASSWORD
|
||||||
|
KOMODO_PASSKEY:
|
||||||
|
file: ./secrets/KOMODO_PASSKEY
|
||||||
|
KOMODO_WEBHOOK_SECRET:
|
||||||
|
file: ./secrets/KOMODO_WEBHOOK_SECRET
|
||||||
|
KOMODO_JWT_SECRET:
|
||||||
|
file: ./secrets/KOMODO_JWT_SECRET
|
||||||
|
KOMODO_OIDC_CLIENT_SECRET:
|
||||||
|
file: ./secrets/KOMODO_OIDC_CLIENT_SECRET
|
||||||
|
KOMODO_OIDC_CLIENT_ID:
|
||||||
|
file: ./secrets/KOMODO_OIDC_CLIENT_ID
|
||||||
0
media-dude/.env
Normal file
0
media-dude/.env
Normal file
0
media-dude/docker-compose.yml
Normal file
0
media-dude/docker-compose.yml
Normal file
74
media-dude/torrentarr/compose.torrentarr.yml
Normal file
74
media-dude/torrentarr/compose.torrentarr.yml
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
services:
|
||||||
|
transmission:
|
||||||
|
image: lscr.io/linuxserver/transmission:latest
|
||||||
|
environment:
|
||||||
|
DOCKER_MODS: linuxserver/mods:transmission-env-var-settings
|
||||||
|
PUID: 998 # media user
|
||||||
|
PGID: 998 # media group
|
||||||
|
UMASK: "002"
|
||||||
|
TZ: America/Los_Angeles
|
||||||
|
TRANSMISSION_DOWNLOAD_DIR: ${TORRENTARR_DOWNLOAD_DIR:?error}/complete
|
||||||
|
TRANSMISSION_INCOMPLETE_DIR: ${TORRENTARR_DOWNLOAD_DIR:?error}/incomplete
|
||||||
|
TRANSMISSION_SPEED_LIMIT_UP: "3750"
|
||||||
|
TRANSMISSION_SPEED_LIMIT_UP_ENABLED: "true"
|
||||||
|
TRANSMISSION_WATCH_DIR_ENABLED: "false"
|
||||||
|
TRANSMISSION_RPC_PORT: ${TORRENTARR_TRANSMISSION_RPC_PORT:?error}
|
||||||
|
TRANSMISSION_RPC_AUTHENTICATION_REQUIRED: "false"
|
||||||
|
volumes:
|
||||||
|
- ./transmission_config:/config
|
||||||
|
- ${TORRENTARR_DOWNLOAD_DIR:?error}:${TORRENTARR_DOWNLOAD_DIR:?error}
|
||||||
|
network_mode: "service:gluetun"
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
gluetun:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
gluetun:
|
||||||
|
image: qmcgaw/gluetun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
devices:
|
||||||
|
- /dev/net/tun:/dev/net/tun
|
||||||
|
volumes:
|
||||||
|
- gluetun_forwarding:/tmp/gluetun_forwarding
|
||||||
|
ports:
|
||||||
|
- ${TORRENTARR_TRANSMISSION_RPC_PORT:?error}:${TORRENTARR_TRANSMISSION_RPC_PORT:?error}
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
VPN_SERVICE_PROVIDER: protonvpn
|
||||||
|
VPN_TYPE: wireguard
|
||||||
|
VPN_PORT_FORWARDING: on
|
||||||
|
VPN_PORT_FORWARDING_STATUS_FILE: /tmp/gluetun_forwarding/forwarded_port
|
||||||
|
PORT_FORWARD_ONLY: "on"
|
||||||
|
SERVER_COUNTRIES: United States
|
||||||
|
SERVER_CITIES: Los Angeles
|
||||||
|
UPDATER_PERIOD: 24h
|
||||||
|
secrets:
|
||||||
|
- wireguard_private_key
|
||||||
|
port-watcher:
|
||||||
|
build: ../port-watcher
|
||||||
|
volumes:
|
||||||
|
- gluetun_forwarding:/watch
|
||||||
|
environment:
|
||||||
|
PORT_FILE: /watch/forwarded_port
|
||||||
|
TRANSMISSION_HOST: gluetun
|
||||||
|
TRANSMISSION_PORT: ${TORRENTARR_TRANSMISSION_RPC_PORT:?error}
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "test", "-f", "/watch/forwarded_port"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 60s
|
||||||
|
retries: 10
|
||||||
|
start_period: 10s
|
||||||
|
depends_on:
|
||||||
|
transmission:
|
||||||
|
condition: service_started
|
||||||
|
gluetun:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
gluetun_forwarding:
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
wireguard_private_key:
|
||||||
|
file: ./secrets/wireguard_private_key
|
||||||
4
media-dude/torrentarr/movies/.env
Normal file
4
media-dude/torrentarr/movies/.env
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
COMPOSE_FILE=compose.yml:../compose.torrentarr.yml
|
||||||
|
TORRENTARR_DOWNLOAD_DIR=/media/movies/torrents
|
||||||
|
TORRENTARR_TRANSMISSION_RPC_PORT=10011
|
||||||
|
COMPOSE_BAKE=true
|
||||||
15
media-dude/torrentarr/movies/compose.yml
Normal file
15
media-dude/torrentarr/movies/compose.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
name: torrentarr-movies
|
||||||
|
services:
|
||||||
|
radarr:
|
||||||
|
image: ghcr.io/hotio/radarr
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "7878:7878"
|
||||||
|
environment:
|
||||||
|
PUID: 998
|
||||||
|
PGID: 998
|
||||||
|
UMASK: "002"
|
||||||
|
TZ: America/Los_Angeles
|
||||||
|
volumes:
|
||||||
|
- ./radarr_config:/config
|
||||||
|
- /media/movies/library:/media/movies/library
|
||||||
8
media-dude/torrentarr/port-watcher/Dockerfile
Normal file
8
media-dude/torrentarr/port-watcher/Dockerfile
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
FROM python:3.11-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
COPY port-watcher.py .
|
||||||
|
|
||||||
|
RUN pip install watchdog transmission-rpc
|
||||||
|
|
||||||
|
CMD ["python", "port-watcher.py"]
|
||||||
82
media-dude/torrentarr/port-watcher/port-watcher.py
Normal file
82
media-dude/torrentarr/port-watcher/port-watcher.py
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import logging
|
||||||
|
from transmission_rpc import Client
|
||||||
|
from watchdog.observers import Observer
|
||||||
|
from watchdog.events import FileSystemEventHandler
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
PORT_FILE = os.getenv('PORT_FILE', '/watch/forwarded_port')
|
||||||
|
TRANSMISSION_HOST = os.getenv('TRANSMISSION_HOST', 'gluetun')
|
||||||
|
TRANSMISSION_PORT = os.getenv('TRANSMISSION_PORT', 9091)
|
||||||
|
|
||||||
|
class PortFileHandler(FileSystemEventHandler):
|
||||||
|
def __init__(self):
|
||||||
|
self.last_port = None
|
||||||
|
self.transmission_client = Client(host=TRANSMISSION_HOST, port=TRANSMISSION_PORT)
|
||||||
|
self.check_port_file() # Initial check
|
||||||
|
|
||||||
|
def on_modified(self, event):
|
||||||
|
if not event.is_directory and event.src_path == PORT_FILE:
|
||||||
|
self.check_port_file()
|
||||||
|
|
||||||
|
def check_port_file(self):
|
||||||
|
try:
|
||||||
|
if not os.path.exists(PORT_FILE):
|
||||||
|
logger.info(f"Port file not found: {PORT_FILE}")
|
||||||
|
return
|
||||||
|
|
||||||
|
with open(PORT_FILE, 'r') as f:
|
||||||
|
port = f.read().strip()
|
||||||
|
|
||||||
|
if port != self.last_port and port.isdigit():
|
||||||
|
self.last_port = port
|
||||||
|
logger.info(f"Port forwarding changed to: {port}")
|
||||||
|
self.update_transmission(port)
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error checking port file: {e}")
|
||||||
|
|
||||||
|
def update_transmission(self, port):
|
||||||
|
max_attempts = 5
|
||||||
|
attempt = 1
|
||||||
|
delay = 5 # seconds between retry attempts
|
||||||
|
|
||||||
|
while attempt <= max_attempts:
|
||||||
|
logger.info(f"Attempt {attempt}/{max_attempts}: Setting Transmission peer_port to {port}")
|
||||||
|
try:
|
||||||
|
self.transmission_client.set_session(peer_port=int(port))
|
||||||
|
logger.info(f"Successfully updated Transmission peer_port to {port}")
|
||||||
|
logger.info(f"Testing Transmission peer port...")
|
||||||
|
if self.transmission_client.port_test():
|
||||||
|
logger.info("Transmission peer port is open")
|
||||||
|
else:
|
||||||
|
logger.warning("Transmission peer port does not appear to be open")
|
||||||
|
return
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Attempt {attempt}/{max_attempts} failed: {e}")
|
||||||
|
if attempt < max_attempts:
|
||||||
|
logger.info(f"Retrying in {delay} seconds...")
|
||||||
|
time.sleep(delay)
|
||||||
|
attempt += 1
|
||||||
|
|
||||||
|
logger.error(f"Failed to update Transmission peer_port after {max_attempts} attempts")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
path = os.path.dirname(PORT_FILE)
|
||||||
|
logger.info(f"Starting port-watcher monitoring {PORT_FILE}")
|
||||||
|
|
||||||
|
event_handler = PortFileHandler()
|
||||||
|
observer = Observer()
|
||||||
|
observer.schedule(event_handler, path, recursive=False)
|
||||||
|
observer.start()
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
time.sleep(1)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
observer.stop()
|
||||||
|
observer.join()
|
||||||
4
media-dude/torrentarr/tv/.env
Normal file
4
media-dude/torrentarr/tv/.env
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
COMPOSE_FILE=compose.yml:../compose.torrentarr.yml
|
||||||
|
TORRENTARR_DOWNLOAD_DIR=/media/tv/torrents
|
||||||
|
TORRENTARR_TRANSMISSION_RPC_PORT=10010
|
||||||
|
COMPOSE_BAKE=true
|
||||||
15
media-dude/torrentarr/tv/compose.yml
Normal file
15
media-dude/torrentarr/tv/compose.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
name: torrentarr-tv
|
||||||
|
services:
|
||||||
|
sonarr:
|
||||||
|
image: ghcr.io/hotio/sonarr
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8989:8989"
|
||||||
|
environment:
|
||||||
|
PUID: 998
|
||||||
|
PGID: 998
|
||||||
|
UMASK: "002"
|
||||||
|
TZ: America/Los_Angeles
|
||||||
|
volumes:
|
||||||
|
- ./sonarr_config:/config
|
||||||
|
- /media/tv/library:/media/tv/library
|
||||||
@@ -33,21 +33,21 @@
|
|||||||
"name": "4k Movies",
|
"name": "4k Movies",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"type": "movie",
|
"type": "movie",
|
||||||
"lastScan": 1736797500041
|
"lastScan": 1741801200034
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2",
|
"id": "2",
|
||||||
"name": "Movies",
|
"name": "Movies",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"type": "movie",
|
"type": "movie",
|
||||||
"lastScan": 1736797500057
|
"lastScan": 1741801200054
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "1",
|
"id": "1",
|
||||||
"name": "TV Shows",
|
"name": "TV Shows",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"type": "show",
|
"type": "show",
|
||||||
"lastScan": 1736797500105
|
"lastScan": 1741801200272
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"machineId": "5e16f8ceb511bde943f92bbe07e3e6e33307eb16"
|
"machineId": "5e16f8ceb511bde943f92bbe07e3e6e33307eb16"
|
||||||
|
|||||||
89
scripts/torrentarr.sh
Executable file
89
scripts/torrentarr.sh
Executable file
@@ -0,0 +1,89 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Define available options as a simple array
|
||||||
|
OPTIONS=("tv" "movies" "all")
|
||||||
|
|
||||||
|
# Default values
|
||||||
|
TARGET_ALL=true
|
||||||
|
INSTANCE="all"
|
||||||
|
ACTION="up"
|
||||||
|
|
||||||
|
# Parse command line arguments
|
||||||
|
while [[ "$#" -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
--down|-d)
|
||||||
|
ACTION="down"
|
||||||
|
;;
|
||||||
|
--restart|-r)
|
||||||
|
ACTION="restart"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Assume this is the instance name
|
||||||
|
INSTANCE="$1"
|
||||||
|
# Only set TARGET_ALL to false if a specific instance is provided
|
||||||
|
if [ "$INSTANCE" != "all" ]; then
|
||||||
|
TARGET_ALL=false
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# Validate the instance name
|
||||||
|
if ! [[ " ${OPTIONS[*]} " == *" ${INSTANCE} "* ]]; then
|
||||||
|
echo "Unknown instance: $INSTANCE"
|
||||||
|
echo "Valid options: ${OPTIONS[*]}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to execute docker compose commands
|
||||||
|
run_docker_compose() {
|
||||||
|
local instance=$1
|
||||||
|
local action=$2
|
||||||
|
local ENV_FILE="./${instance}.env"
|
||||||
|
|
||||||
|
if [ "$action" == "restart" ]; then
|
||||||
|
echo "Restart: Stopping $instance torrentarr instance..."
|
||||||
|
docker compose --env-file "$ENV_FILE" down --remove-orphans
|
||||||
|
echo "Restart: Starting $instance torrentarr instance..."
|
||||||
|
docker compose --env-file "$ENV_FILE" up -d
|
||||||
|
else
|
||||||
|
if [ "$action" == "down" ]; then
|
||||||
|
echo "Stopping $inst torrentarr instance..."
|
||||||
|
docker compose --env-file "$ENV_FILE" down --remove-orphans
|
||||||
|
echo "Stopped $inst torrentarr instance."
|
||||||
|
elif [ "$action" == "up" ]; then
|
||||||
|
echo "Starting $inst torrentarr instance..."
|
||||||
|
docker compose --env-file "$ENV_FILE" up -d
|
||||||
|
echo "Started $inst torrentarr instance."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Handle all instances or specific instance
|
||||||
|
if [ "$TARGET_ALL" = true ]; then
|
||||||
|
if [ "$ACTION" == "up" ]; then
|
||||||
|
echo "Starting all instances..."
|
||||||
|
elif [ "$ACTION" == "down" ]; then
|
||||||
|
echo "Stopping all instances..."
|
||||||
|
elif [ "$ACTION" == "restart" ]; then
|
||||||
|
echo "Restarting all instances..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Loop through all options except "all"
|
||||||
|
for inst in "${OPTIONS[@]}"; do
|
||||||
|
if [ "$inst" != "all" ]; then
|
||||||
|
run_docker_compose "$inst" $ACTION
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$ACTION" == "up" ]; then
|
||||||
|
echo "Started all instances"
|
||||||
|
elif [ "$ACTION" == "down" ]; then
|
||||||
|
echo "Stopped all instances"
|
||||||
|
elif [ "$ACTION" == "restart" ]; then
|
||||||
|
echo "Restarted all instances"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
run_docker_compose "$INSTANCE" $ACTION
|
||||||
|
fi
|
||||||
3
seedsync/.gitignore
vendored
Normal file
3
seedsync/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
config/**/*.persist
|
||||||
|
config/**/*.bak
|
||||||
|
config/**/*.backup
|
||||||
35
seedsync/config/seedsync_junk/settings.cfg
Normal file
35
seedsync/config/seedsync_junk/settings.cfg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[General]
|
||||||
|
debug = False
|
||||||
|
verbose = False
|
||||||
|
|
||||||
|
[Lftp]
|
||||||
|
remote_address = asia.feralhosting.com
|
||||||
|
remote_username = tinyturtle
|
||||||
|
remote_password = password
|
||||||
|
remote_port = 22
|
||||||
|
remote_path = /media/dmg/tinyturtle/junk_transfer
|
||||||
|
local_path = /downloads
|
||||||
|
remote_path_to_scan_script = /media/dmg/tinyturtle/.seedsync_junk_bin
|
||||||
|
use_ssh_key = True
|
||||||
|
num_max_parallel_downloads = 1
|
||||||
|
num_max_parallel_files_per_download = 2
|
||||||
|
num_max_connections_per_root_file = 5
|
||||||
|
num_max_connections_per_dir_file = 5
|
||||||
|
num_max_total_connections = 5
|
||||||
|
use_temp_file = True
|
||||||
|
|
||||||
|
[Controller]
|
||||||
|
interval_ms_remote_scan = 30000
|
||||||
|
interval_ms_local_scan = 10000
|
||||||
|
interval_ms_downloading_scan = 1000
|
||||||
|
extract_path = /seedsynctmp
|
||||||
|
use_local_path_as_extract_path = True
|
||||||
|
|
||||||
|
[Web]
|
||||||
|
port = 8802
|
||||||
|
|
||||||
|
[AutoQueue]
|
||||||
|
enabled = True
|
||||||
|
patterns_only = False
|
||||||
|
auto_extract = True
|
||||||
|
|
||||||
35
seedsync/config/seedsync_junk_movies/settings.cfg
Normal file
35
seedsync/config/seedsync_junk_movies/settings.cfg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[General]
|
||||||
|
debug = False
|
||||||
|
verbose = False
|
||||||
|
|
||||||
|
[Lftp]
|
||||||
|
remote_address = asia.feralhosting.com
|
||||||
|
remote_username = tinyturtle
|
||||||
|
remote_password = password
|
||||||
|
remote_port = 22
|
||||||
|
remote_path = /media/dmg/tinyturtle/junk_transfer_movies
|
||||||
|
local_path = /downloads
|
||||||
|
remote_path_to_scan_script = /media/dmg/tinyturtle/.seedsync_junk_movies_bin
|
||||||
|
use_ssh_key = True
|
||||||
|
num_max_parallel_downloads = 1
|
||||||
|
num_max_parallel_files_per_download = 2
|
||||||
|
num_max_connections_per_root_file = 5
|
||||||
|
num_max_connections_per_dir_file = 5
|
||||||
|
num_max_total_connections = 5
|
||||||
|
use_temp_file = True
|
||||||
|
|
||||||
|
[Controller]
|
||||||
|
interval_ms_remote_scan = 30000
|
||||||
|
interval_ms_local_scan = 10000
|
||||||
|
interval_ms_downloading_scan = 1000
|
||||||
|
extract_path = /seedsynctmp
|
||||||
|
use_local_path_as_extract_path = True
|
||||||
|
|
||||||
|
[Web]
|
||||||
|
port = 8805
|
||||||
|
|
||||||
|
[AutoQueue]
|
||||||
|
enabled = True
|
||||||
|
patterns_only = False
|
||||||
|
auto_extract = True
|
||||||
|
|
||||||
35
seedsync/config/seedsync_junk_packs/settings.cfg
Normal file
35
seedsync/config/seedsync_junk_packs/settings.cfg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[General]
|
||||||
|
debug = False
|
||||||
|
verbose = False
|
||||||
|
|
||||||
|
[Lftp]
|
||||||
|
remote_address = asia.feralhosting.com
|
||||||
|
remote_username = tinyturtle
|
||||||
|
remote_password = password
|
||||||
|
remote_port = 22
|
||||||
|
remote_path = /media/dmg/tinyturtle/junk_transfer_packs
|
||||||
|
local_path = /downloads
|
||||||
|
remote_path_to_scan_script = /media/dmg/tinyturtle/.seedsync_junk_packs_bin
|
||||||
|
use_ssh_key = True
|
||||||
|
num_max_parallel_downloads = 1
|
||||||
|
num_max_parallel_files_per_download = 2
|
||||||
|
num_max_connections_per_root_file = 5
|
||||||
|
num_max_connections_per_dir_file = 5
|
||||||
|
num_max_total_connections = 5
|
||||||
|
use_temp_file = True
|
||||||
|
|
||||||
|
[Controller]
|
||||||
|
interval_ms_remote_scan = 30000
|
||||||
|
interval_ms_local_scan = 10000
|
||||||
|
interval_ms_downloading_scan = 1000
|
||||||
|
extract_path = /seedsynctmp
|
||||||
|
use_local_path_as_extract_path = True
|
||||||
|
|
||||||
|
[Web]
|
||||||
|
port = 8804
|
||||||
|
|
||||||
|
[AutoQueue]
|
||||||
|
enabled = True
|
||||||
|
patterns_only = False
|
||||||
|
auto_extract = True
|
||||||
|
|
||||||
35
seedsync/config/seedsync_movies/settings.cfg
Normal file
35
seedsync/config/seedsync_movies/settings.cfg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[General]
|
||||||
|
debug = False
|
||||||
|
verbose = False
|
||||||
|
|
||||||
|
[Lftp]
|
||||||
|
remote_address = asia.feralhosting.com
|
||||||
|
remote_username = tinyturtle
|
||||||
|
remote_password = password
|
||||||
|
remote_port = 22
|
||||||
|
remote_path = /media/dmg/tinyturtle/transfer/movies
|
||||||
|
local_path = /downloads
|
||||||
|
remote_path_to_scan_script = /media/dmg/tinyturtle/.seedsync_movies_bin
|
||||||
|
use_ssh_key = True
|
||||||
|
num_max_parallel_downloads = 1
|
||||||
|
num_max_parallel_files_per_download = 1
|
||||||
|
num_max_connections_per_root_file = 6
|
||||||
|
num_max_connections_per_dir_file = 6
|
||||||
|
num_max_total_connections = 6
|
||||||
|
use_temp_file = True
|
||||||
|
|
||||||
|
[Controller]
|
||||||
|
interval_ms_remote_scan = 30000
|
||||||
|
interval_ms_local_scan = 10000
|
||||||
|
interval_ms_downloading_scan = 1000
|
||||||
|
extract_path = /seedsynctmp
|
||||||
|
use_local_path_as_extract_path = True
|
||||||
|
|
||||||
|
[Web]
|
||||||
|
port = 8801
|
||||||
|
|
||||||
|
[AutoQueue]
|
||||||
|
enabled = True
|
||||||
|
patterns_only = False
|
||||||
|
auto_extract = True
|
||||||
|
|
||||||
35
seedsync/config/seedsync_other/settings.cfg
Normal file
35
seedsync/config/seedsync_other/settings.cfg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[General]
|
||||||
|
debug = False
|
||||||
|
verbose = False
|
||||||
|
|
||||||
|
[Lftp]
|
||||||
|
remote_address = asia.feralhosting.com
|
||||||
|
remote_username = tinyturtle
|
||||||
|
remote_password = password
|
||||||
|
remote_port = 22
|
||||||
|
remote_path = /media/dmg/tinyturtle/transfer/other
|
||||||
|
local_path = /downloads
|
||||||
|
remote_path_to_scan_script = /media/dmg/tinyturtle/.seedsync_other_bin
|
||||||
|
use_ssh_key = True
|
||||||
|
num_max_parallel_downloads = 1
|
||||||
|
num_max_parallel_files_per_download = 2
|
||||||
|
num_max_connections_per_root_file = 4
|
||||||
|
num_max_connections_per_dir_file = 4
|
||||||
|
num_max_total_connections = 4
|
||||||
|
use_temp_file = True
|
||||||
|
|
||||||
|
[Controller]
|
||||||
|
interval_ms_remote_scan = 30000
|
||||||
|
interval_ms_local_scan = 10000
|
||||||
|
interval_ms_downloading_scan = 1000
|
||||||
|
extract_path = /seedsynctmp
|
||||||
|
use_local_path_as_extract_path = True
|
||||||
|
|
||||||
|
[Web]
|
||||||
|
port = 8803
|
||||||
|
|
||||||
|
[AutoQueue]
|
||||||
|
enabled = True
|
||||||
|
patterns_only = False
|
||||||
|
auto_extract = False
|
||||||
|
|
||||||
35
seedsync/config/seedsync_tv/settings.cfg
Normal file
35
seedsync/config/seedsync_tv/settings.cfg
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[General]
|
||||||
|
debug = False
|
||||||
|
verbose = False
|
||||||
|
|
||||||
|
[Lftp]
|
||||||
|
remote_address = asia.feralhosting.com
|
||||||
|
remote_username = tinyturtle
|
||||||
|
remote_password = password
|
||||||
|
remote_port = 22
|
||||||
|
remote_path = /media/dmg/tinyturtle/transfer/tv
|
||||||
|
local_path = /downloads
|
||||||
|
remote_path_to_scan_script = /media/dmg/tinyturtle/.seedsync_tv_bin
|
||||||
|
use_ssh_key = True
|
||||||
|
num_max_parallel_downloads = 1
|
||||||
|
num_max_parallel_files_per_download = 2
|
||||||
|
num_max_connections_per_root_file = 4
|
||||||
|
num_max_connections_per_dir_file = 4
|
||||||
|
num_max_total_connections = 4
|
||||||
|
use_temp_file = True
|
||||||
|
|
||||||
|
[Controller]
|
||||||
|
interval_ms_remote_scan = 30000
|
||||||
|
interval_ms_local_scan = 10000
|
||||||
|
interval_ms_downloading_scan = 1000
|
||||||
|
extract_path = /seedsynctmp
|
||||||
|
use_local_path_as_extract_path = True
|
||||||
|
|
||||||
|
[Web]
|
||||||
|
port = 8800
|
||||||
|
|
||||||
|
[AutoQueue]
|
||||||
|
enabled = True
|
||||||
|
patterns_only = False
|
||||||
|
auto_extract = True
|
||||||
|
|
||||||
68
seedsync/docker-compose.yml
Normal file
68
seedsync/docker-compose.yml
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
name: seedsync
|
||||||
|
services:
|
||||||
|
junksync:
|
||||||
|
image: ipsingh06/seedsync:latest
|
||||||
|
container_name: junksync
|
||||||
|
user: '998'
|
||||||
|
ports:
|
||||||
|
- 8802:8802
|
||||||
|
volumes:
|
||||||
|
- /media/junk/new_transfer:/downloads
|
||||||
|
- ./config/seedsync_junk:/config
|
||||||
|
- /home/media/.ssh:/home/seedsync/.ssh
|
||||||
|
restart: unless-stopped
|
||||||
|
junkpacksync:
|
||||||
|
image: ipsingh06/seedsync:latest
|
||||||
|
container_name: junkpacksync
|
||||||
|
user: '998'
|
||||||
|
ports:
|
||||||
|
- 8804:8804
|
||||||
|
volumes:
|
||||||
|
- /media/raid/junk_pack_transfer:/downloads
|
||||||
|
- ./config/seedsync_junk_packs:/config
|
||||||
|
- /home/media/.ssh:/home/seedsync/.ssh
|
||||||
|
restart: unless-stopped
|
||||||
|
junkmoviesync:
|
||||||
|
image: ipsingh06/seedsync:latest
|
||||||
|
container_name: junkmoviesync
|
||||||
|
user: '998'
|
||||||
|
ports:
|
||||||
|
- 8805:8805
|
||||||
|
volumes:
|
||||||
|
- /media/raid/junk_movies_transfer:/downloads
|
||||||
|
- ./config/seedsync_junk_movies:/config
|
||||||
|
- /home/media/.ssh:/home/seedsync/.ssh
|
||||||
|
restart: unless-stopped
|
||||||
|
moviesync:
|
||||||
|
image: ipsingh06/seedsync:latest
|
||||||
|
container_name: moviesync
|
||||||
|
user: '998'
|
||||||
|
ports:
|
||||||
|
- 8801:8801
|
||||||
|
volumes:
|
||||||
|
- /media/downloads/movies:/downloads
|
||||||
|
- ./config/seedsync_movies:/config
|
||||||
|
- /home/media/.ssh:/home/seedsync/.ssh
|
||||||
|
restart: unless-stopped
|
||||||
|
tvsync:
|
||||||
|
image: ipsingh06/seedsync:latest
|
||||||
|
container_name: tvsync
|
||||||
|
user: '998'
|
||||||
|
ports:
|
||||||
|
- 8800:8800
|
||||||
|
volumes:
|
||||||
|
- /media/downloads/tv:/downloads
|
||||||
|
- ./config/seedsync_tv:/config
|
||||||
|
- /home/media/.ssh:/home/seedsync/.ssh
|
||||||
|
restart: unless-stopped
|
||||||
|
othersync:
|
||||||
|
image: ipsingh06/seedsync:latest
|
||||||
|
container_name: othersync
|
||||||
|
user: '998'
|
||||||
|
ports:
|
||||||
|
- 8803:8803
|
||||||
|
volumes:
|
||||||
|
- /media/downloads/other:/downloads
|
||||||
|
- ./config/seedsync_other:/config
|
||||||
|
- /home/media/.ssh:/home/seedsync/.ssh
|
||||||
|
restart: unless-stopped
|
||||||
@@ -5,7 +5,9 @@ calculate_md5: false
|
|||||||
continue_playlist_default: true
|
continue_playlist_default: true
|
||||||
create_image_clip_from_videos: false
|
create_image_clip_from_videos: false
|
||||||
cssenabled: false
|
cssenabled: false
|
||||||
dangerous_allow_public_without_auth: "false"
|
custom_served_folders:
|
||||||
|
/: /custom_web
|
||||||
|
dangerous_allow_public_without_auth: true
|
||||||
database: /db/stash-go.sqlite
|
database: /db/stash-go.sqlite
|
||||||
defaults:
|
defaults:
|
||||||
auto_tag_task:
|
auto_tag_task:
|
||||||
@@ -103,11 +105,13 @@ no_proxy: localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12
|
|||||||
nobrowser: true
|
nobrowser: true
|
||||||
notifications_enabled: false
|
notifications_enabled: false
|
||||||
parallel_tasks: 0
|
parallel_tasks: 0
|
||||||
password: $2a$04$T8nN490lPHZw1rf6v1Q2ze/VAn3hhgiJ6l/SSV96gBMwhmDLk/dXq
|
|
||||||
plugins:
|
plugins:
|
||||||
disabled:
|
disabled:
|
||||||
- VideoScrollWheel
|
- VideoScrollWheel
|
||||||
- TPDBMarkers
|
- TPDBMarkers
|
||||||
|
- filemonitor
|
||||||
|
- markerTagToScene
|
||||||
|
- visage
|
||||||
package_sources:
|
package_sources:
|
||||||
- localpath: community
|
- localpath: community
|
||||||
name: Community (stable)
|
name: Community (stable)
|
||||||
@@ -115,22 +119,68 @@ plugins:
|
|||||||
- localpath: stash-plugins
|
- localpath: stash-plugins
|
||||||
name: Stash-Plugins
|
name: Stash-Plugins
|
||||||
url: https://7djx1qp.github.io/stash-plugins/main/index.yml
|
url: https://7djx1qp.github.io/stash-plugins/main/index.yml
|
||||||
|
- localpath: tetrax
|
||||||
|
name: Tetrax
|
||||||
|
url: https://tetrax-10.github.io/stash-stuffs/index.yml
|
||||||
|
- localpath: valkyr
|
||||||
|
name: Valkyr
|
||||||
|
url: https://valkyr-js.github.io/stash-plugins/index.yml
|
||||||
|
- localpath: stgannon
|
||||||
|
name: STG Annon
|
||||||
|
url: https://stg-annon.github.io/StashScripts/stable/index.yml
|
||||||
|
- localpath: community
|
||||||
|
name: Axter-Stash
|
||||||
|
url: https://stash.axter.com/Dev/index.yml
|
||||||
settings:
|
settings:
|
||||||
|
DupFileManager:
|
||||||
|
matchDupDistance: "1"
|
||||||
|
mergeDupFilename: true
|
||||||
|
zwGraylist: /data,/movies,/packs
|
||||||
|
zxBlacklist: ""
|
||||||
|
zySwapBetterBitRate: true
|
||||||
|
zySwapBetterFrameRate: false
|
||||||
|
zySwapCodec: true
|
||||||
|
zySwapHighRes: true
|
||||||
|
zySwapLongLength: true
|
||||||
|
zzDebug: true
|
||||||
|
zzObsoleteSettingsCheckVer2: true
|
||||||
|
zzTracing: true
|
||||||
|
zzdryRun: false
|
||||||
|
PerformerDetailsExtended:
|
||||||
|
additionalStyling: false
|
||||||
|
appearsMostWithGendered: true
|
||||||
|
scenesTimespanReverse: false
|
||||||
|
showWhenCollapsed: true
|
||||||
|
topTagsOn: true
|
||||||
|
totalPlayCountOn: true
|
||||||
cjCardTweaks:
|
cjCardTweaks:
|
||||||
addBannerDimension: true
|
addBannerDimension: true
|
||||||
fileCount: true
|
fileCount: true
|
||||||
performerProfileCards: true
|
performerProfileCards: true
|
||||||
|
markerTagToScene:
|
||||||
|
allTags: false
|
||||||
|
stashStashIDInput:
|
||||||
|
performers: true
|
||||||
|
studios: true
|
||||||
stashStashIdInput:
|
stashStashIdInput:
|
||||||
performers: true
|
performers: true
|
||||||
studios: true
|
studios: true
|
||||||
tPdBmarkers:
|
tPdBmarkers:
|
||||||
disableSceneMarkerHook: true
|
disableSceneMarkerHook: true
|
||||||
|
tagGraph:
|
||||||
|
options: true
|
||||||
timestampTrade:
|
timestampTrade:
|
||||||
createMovieFromScene: false
|
addTimestampTradeUrl: true
|
||||||
|
addTsTradeTag: true
|
||||||
|
createGalleryFromScene: false
|
||||||
|
createMarkers: true
|
||||||
|
createMovieFromScene: true
|
||||||
disableGalleryLookupHook: true
|
disableGalleryLookupHook: true
|
||||||
disableSceneMarkersHook: false
|
disableSceneMarkersHook: false
|
||||||
extraUrls: false
|
extraUrls: true
|
||||||
|
matchFunscripts: false
|
||||||
mergeMarkers: true
|
mergeMarkers: true
|
||||||
|
overwriteMarkers: false
|
||||||
plugins_path: /plugins/
|
plugins_path: /plugins/
|
||||||
port: 9999
|
port: 9999
|
||||||
preview_audio: true
|
preview_audio: true
|
||||||
@@ -174,6 +224,9 @@ stash_boxes:
|
|||||||
- apikey: H04DEzLXkMqUBtNdS9CYOI4ek9KZb0EBSfNhTt1A87ee11b2
|
- apikey: H04DEzLXkMqUBtNdS9CYOI4ek9KZb0EBSfNhTt1A87ee11b2
|
||||||
endpoint: https://theporndb.net/graphql
|
endpoint: https://theporndb.net/graphql
|
||||||
name: ThePornDB
|
name: ThePornDB
|
||||||
|
- apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIwNWY4OTFiYy04MjVlLTQ1ZmQtYWFkYS0yYTc0OWE2NzgzMWQiLCJzdWIiOiJBUElLZXkiLCJpYXQiOjE3Mzk2MDkxOTF9.fMPLqqt2B3iw1qpOjMVMHmqMcorbw42Jy4WIBkyj7wo
|
||||||
|
endpoint: https://fansdb.cc/graphql
|
||||||
|
name: FansDB
|
||||||
theme_color: '#202b33'
|
theme_color: '#202b33'
|
||||||
ui:
|
ui:
|
||||||
advancedMode: true
|
advancedMode: true
|
||||||
@@ -298,631 +351,11 @@ ui:
|
|||||||
excludedStudioFields:
|
excludedStudioFields:
|
||||||
- name
|
- name
|
||||||
fingerprintQueue:
|
fingerprintQueue:
|
||||||
https://stashdb.org/graphql:
|
https://stashdb.org/graphql: []
|
||||||
- "14115"
|
https://theporndb.net/graphql: []
|
||||||
- "13320"
|
|
||||||
- "13623"
|
|
||||||
- "17433"
|
|
||||||
- "14152"
|
|
||||||
- "14206"
|
|
||||||
- "14168"
|
|
||||||
- "17294"
|
|
||||||
- "13905"
|
|
||||||
- "13385"
|
|
||||||
- "13837"
|
|
||||||
- "16837"
|
|
||||||
- "16596"
|
|
||||||
- "16686"
|
|
||||||
- "13382"
|
|
||||||
- "15576"
|
|
||||||
- "16643"
|
|
||||||
- "12278"
|
|
||||||
- "16976"
|
|
||||||
- "16406"
|
|
||||||
- "14106"
|
|
||||||
- "12610"
|
|
||||||
- "17452"
|
|
||||||
- "17174"
|
|
||||||
- "12615"
|
|
||||||
- "13066"
|
|
||||||
- "12532"
|
|
||||||
- "17526"
|
|
||||||
- "17402"
|
|
||||||
- "17170"
|
|
||||||
- "17273"
|
|
||||||
- "16997"
|
|
||||||
- "17525"
|
|
||||||
- "12403"
|
|
||||||
- "15519"
|
|
||||||
- "17428"
|
|
||||||
- "16421"
|
|
||||||
- "14631"
|
|
||||||
- "17523"
|
|
||||||
- "17287"
|
|
||||||
- "17528"
|
|
||||||
- "15901"
|
|
||||||
- "17398"
|
|
||||||
- "16135"
|
|
||||||
- "13178"
|
|
||||||
- "17282"
|
|
||||||
- "17724"
|
|
||||||
- "17727"
|
|
||||||
- "17729"
|
|
||||||
- "17709"
|
|
||||||
- "17728"
|
|
||||||
- "17737"
|
|
||||||
- "17713"
|
|
||||||
- "17726"
|
|
||||||
- "17750"
|
|
||||||
- "17748"
|
|
||||||
- "17742"
|
|
||||||
- "17747"
|
|
||||||
- "17754"
|
|
||||||
- "17719"
|
|
||||||
- "17751"
|
|
||||||
- "17714"
|
|
||||||
- "17721"
|
|
||||||
- "17712"
|
|
||||||
- "17711"
|
|
||||||
- "17739"
|
|
||||||
- "17753"
|
|
||||||
- "17710"
|
|
||||||
- "17752"
|
|
||||||
- "17741"
|
|
||||||
- "17734"
|
|
||||||
- "17720"
|
|
||||||
- "17723"
|
|
||||||
- "17707"
|
|
||||||
- "17725"
|
|
||||||
- "17746"
|
|
||||||
- "17755"
|
|
||||||
- "17757"
|
|
||||||
- "17749"
|
|
||||||
- "17730"
|
|
||||||
- "17717"
|
|
||||||
- "17756"
|
|
||||||
- "17731"
|
|
||||||
- "17716"
|
|
||||||
- "17740"
|
|
||||||
- "17733"
|
|
||||||
- "17735"
|
|
||||||
- "17758"
|
|
||||||
- "17708"
|
|
||||||
- "17718"
|
|
||||||
- "17743"
|
|
||||||
- "17745"
|
|
||||||
- "17786"
|
|
||||||
- "17878"
|
|
||||||
- "17817"
|
|
||||||
- "17814"
|
|
||||||
- "17813"
|
|
||||||
- "17815"
|
|
||||||
- "17865"
|
|
||||||
- "17893"
|
|
||||||
- "17812"
|
|
||||||
- "17792"
|
|
||||||
- "17818"
|
|
||||||
- "17819"
|
|
||||||
- "17826"
|
|
||||||
- "17787"
|
|
||||||
- "17797"
|
|
||||||
- "17804"
|
|
||||||
- "17799"
|
|
||||||
- "17795"
|
|
||||||
- "17798"
|
|
||||||
- "17828"
|
|
||||||
- "17802"
|
|
||||||
- "17805"
|
|
||||||
- "17827"
|
|
||||||
- "17831"
|
|
||||||
- "17832"
|
|
||||||
- "17839"
|
|
||||||
- "17883"
|
|
||||||
- "17845"
|
|
||||||
- "17842"
|
|
||||||
- "17810"
|
|
||||||
- "17807"
|
|
||||||
- "17844"
|
|
||||||
- "17785"
|
|
||||||
- "17822"
|
|
||||||
- "17808"
|
|
||||||
- "17811"
|
|
||||||
- "17823"
|
|
||||||
- "17816"
|
|
||||||
- "17837"
|
|
||||||
- "17836"
|
|
||||||
- "17825"
|
|
||||||
- "17833"
|
|
||||||
- "17838"
|
|
||||||
- "17830"
|
|
||||||
- "17889"
|
|
||||||
- "17891"
|
|
||||||
- "17806"
|
|
||||||
- "17770"
|
|
||||||
- "17801"
|
|
||||||
- "17843"
|
|
||||||
- "17835"
|
|
||||||
- "17809"
|
|
||||||
- "17790"
|
|
||||||
- "17796"
|
|
||||||
- "17789"
|
|
||||||
- "17820"
|
|
||||||
- "17896"
|
|
||||||
- "17867"
|
|
||||||
- "17908"
|
|
||||||
- "17909"
|
|
||||||
- "17912"
|
|
||||||
- "17886"
|
|
||||||
- "17885"
|
|
||||||
- "17794"
|
|
||||||
- "17803"
|
|
||||||
- "17821"
|
|
||||||
- "17793"
|
|
||||||
- "17784"
|
|
||||||
- "17890"
|
|
||||||
- "17834"
|
|
||||||
- "17850"
|
|
||||||
- "17800"
|
|
||||||
- "17848"
|
|
||||||
- "17841"
|
|
||||||
- "17849"
|
|
||||||
- "17846"
|
|
||||||
- "17852"
|
|
||||||
- "17824"
|
|
||||||
- "17851"
|
|
||||||
- "17961"
|
|
||||||
- "17875"
|
|
||||||
- "17880"
|
|
||||||
- "17870"
|
|
||||||
- "17856"
|
|
||||||
- "17895"
|
|
||||||
- "17897"
|
|
||||||
- "17858"
|
|
||||||
- "17854"
|
|
||||||
- "17855"
|
|
||||||
- "17860"
|
|
||||||
- "17861"
|
|
||||||
- "17859"
|
|
||||||
- "17864"
|
|
||||||
- "17857"
|
|
||||||
- "17862"
|
|
||||||
- "17863"
|
|
||||||
- "17906"
|
|
||||||
- "17927"
|
|
||||||
- "17894"
|
|
||||||
- "17911"
|
|
||||||
- "17905"
|
|
||||||
- "17873"
|
|
||||||
- "17918"
|
|
||||||
- "17892"
|
|
||||||
- "17888"
|
|
||||||
- "17916"
|
|
||||||
- "17881"
|
|
||||||
- "17920"
|
|
||||||
- "17884"
|
|
||||||
- "17930"
|
|
||||||
- "17921"
|
|
||||||
- "17915"
|
|
||||||
- "17922"
|
|
||||||
- "17928"
|
|
||||||
- "17924"
|
|
||||||
- "17874"
|
|
||||||
- "17877"
|
|
||||||
- "17879"
|
|
||||||
- "17871"
|
|
||||||
- "17869"
|
|
||||||
- "17926"
|
|
||||||
- "17876"
|
|
||||||
- "17882"
|
|
||||||
- "17917"
|
|
||||||
- "17872"
|
|
||||||
- "17868"
|
|
||||||
- "17913"
|
|
||||||
- "17903"
|
|
||||||
- "17919"
|
|
||||||
- "17914"
|
|
||||||
- "17904"
|
|
||||||
- "17933"
|
|
||||||
- "17934"
|
|
||||||
- "17932"
|
|
||||||
- "17887"
|
|
||||||
- "17866"
|
|
||||||
- "17929"
|
|
||||||
- "17923"
|
|
||||||
- "17910"
|
|
||||||
- "17925"
|
|
||||||
- "17902"
|
|
||||||
- "17931"
|
|
||||||
- "17898"
|
|
||||||
- "17901"
|
|
||||||
- "17900"
|
|
||||||
- "17899"
|
|
||||||
- "17907"
|
|
||||||
- "17935"
|
|
||||||
- "17939"
|
|
||||||
- "17937"
|
|
||||||
- "17936"
|
|
||||||
- "17938"
|
|
||||||
- "17943"
|
|
||||||
- "17947"
|
|
||||||
- "17940"
|
|
||||||
- "17955"
|
|
||||||
- "17952"
|
|
||||||
- "17948"
|
|
||||||
- "17946"
|
|
||||||
- "17941"
|
|
||||||
- "17951"
|
|
||||||
- "17942"
|
|
||||||
- "17944"
|
|
||||||
- "17953"
|
|
||||||
- "17949"
|
|
||||||
- "17945"
|
|
||||||
- "17954"
|
|
||||||
- "17983"
|
|
||||||
- "17987"
|
|
||||||
- "17968"
|
|
||||||
- "17960"
|
|
||||||
- "17959"
|
|
||||||
- "17988"
|
|
||||||
- "17972"
|
|
||||||
- "17965"
|
|
||||||
- "17984"
|
|
||||||
- "17986"
|
|
||||||
- "17967"
|
|
||||||
- "17976"
|
|
||||||
- "17962"
|
|
||||||
- "17978"
|
|
||||||
- "17977"
|
|
||||||
- "17970"
|
|
||||||
- "17969"
|
|
||||||
- "17985"
|
|
||||||
- "17991"
|
|
||||||
- "17980"
|
|
||||||
- "17975"
|
|
||||||
- "17974"
|
|
||||||
- "17964"
|
|
||||||
- "17981"
|
|
||||||
- "17957"
|
|
||||||
- "17993"
|
|
||||||
- "17989"
|
|
||||||
- "17973"
|
|
||||||
- "17958"
|
|
||||||
- "17963"
|
|
||||||
- "17966"
|
|
||||||
- "17971"
|
|
||||||
- "17990"
|
|
||||||
- "17979"
|
|
||||||
- "18003"
|
|
||||||
- "18001"
|
|
||||||
- "17995"
|
|
||||||
- "18002"
|
|
||||||
- "17994"
|
|
||||||
- "18000"
|
|
||||||
- "17997"
|
|
||||||
- "17996"
|
|
||||||
- "17999"
|
|
||||||
- "17998"
|
|
||||||
- "18004"
|
|
||||||
- "18005"
|
|
||||||
- "18009"
|
|
||||||
- "18008"
|
|
||||||
- "18012"
|
|
||||||
- "18010"
|
|
||||||
- "18007"
|
|
||||||
- "18013"
|
|
||||||
- "18006"
|
|
||||||
- "18011"
|
|
||||||
- "18207"
|
|
||||||
- "18215"
|
|
||||||
- "18217"
|
|
||||||
- "18187"
|
|
||||||
- "18190"
|
|
||||||
- "18196"
|
|
||||||
- "18191"
|
|
||||||
- "18194"
|
|
||||||
- "18227"
|
|
||||||
- "18188"
|
|
||||||
- "18281"
|
|
||||||
- "18192"
|
|
||||||
- "18189"
|
|
||||||
- "18204"
|
|
||||||
- "18246"
|
|
||||||
- "18245"
|
|
||||||
- "18208"
|
|
||||||
- "18209"
|
|
||||||
- "18199"
|
|
||||||
- "18232"
|
|
||||||
- "18213"
|
|
||||||
- "18019"
|
|
||||||
- "18014"
|
|
||||||
- "18015"
|
|
||||||
- "18016"
|
|
||||||
- "18017"
|
|
||||||
- "18018"
|
|
||||||
- "18020"
|
|
||||||
- "18249"
|
|
||||||
- "18219"
|
|
||||||
- "18229"
|
|
||||||
- "18221"
|
|
||||||
- "18233"
|
|
||||||
- "18220"
|
|
||||||
- "18198"
|
|
||||||
- "18195"
|
|
||||||
- "18212"
|
|
||||||
- "18211"
|
|
||||||
- "18239"
|
|
||||||
- "18223"
|
|
||||||
- "18203"
|
|
||||||
- "18222"
|
|
||||||
- "18226"
|
|
||||||
- "18210"
|
|
||||||
- "18225"
|
|
||||||
- "18218"
|
|
||||||
- "18224"
|
|
||||||
- "18214"
|
|
||||||
- "18231"
|
|
||||||
- "18238"
|
|
||||||
- "18243"
|
|
||||||
- "18216"
|
|
||||||
- "18202"
|
|
||||||
- "18240"
|
|
||||||
- "18205"
|
|
||||||
- "18197"
|
|
||||||
- "18242"
|
|
||||||
- "18201"
|
|
||||||
- "18241"
|
|
||||||
- "18228"
|
|
||||||
- "18200"
|
|
||||||
- "18230"
|
|
||||||
- "18193"
|
|
||||||
- "18234"
|
|
||||||
- "18237"
|
|
||||||
- "18278"
|
|
||||||
- "18279"
|
|
||||||
- "18359"
|
|
||||||
- "18303"
|
|
||||||
- "18305"
|
|
||||||
- "18297"
|
|
||||||
- "18283"
|
|
||||||
- "18275"
|
|
||||||
- "18285"
|
|
||||||
- "18298"
|
|
||||||
- "18252"
|
|
||||||
- "18250"
|
|
||||||
- "18247"
|
|
||||||
- "18206"
|
|
||||||
- "18253"
|
|
||||||
- "18254"
|
|
||||||
- "18244"
|
|
||||||
- "18236"
|
|
||||||
- "18251"
|
|
||||||
- "18248"
|
|
||||||
- "18259"
|
|
||||||
- "18256"
|
|
||||||
- "18257"
|
|
||||||
- "18258"
|
|
||||||
- "18261"
|
|
||||||
- "18260"
|
|
||||||
- "18255"
|
|
||||||
- "18267"
|
|
||||||
- "18265"
|
|
||||||
- "18264"
|
|
||||||
- "18263"
|
|
||||||
- "18266"
|
|
||||||
- "18268"
|
|
||||||
- "18262"
|
|
||||||
- "18315"
|
|
||||||
- "18294"
|
|
||||||
- "18309"
|
|
||||||
- "18314"
|
|
||||||
- "18274"
|
|
||||||
- "18288"
|
|
||||||
- "18277"
|
|
||||||
- "18273"
|
|
||||||
- "18282"
|
|
||||||
- "18329"
|
|
||||||
- "18312"
|
|
||||||
- "18308"
|
|
||||||
- "18311"
|
|
||||||
- "18287"
|
|
||||||
- "18327"
|
|
||||||
- "18307"
|
|
||||||
- "18291"
|
|
||||||
- "18271"
|
|
||||||
- "18269"
|
|
||||||
- "18295"
|
|
||||||
- "18270"
|
|
||||||
- "18272"
|
|
||||||
- "18276"
|
|
||||||
- "18290"
|
|
||||||
- "18299"
|
|
||||||
- "18331"
|
|
||||||
- "18332"
|
|
||||||
- "18328"
|
|
||||||
- "18306"
|
|
||||||
- "18280"
|
|
||||||
- "18317"
|
|
||||||
- "18304"
|
|
||||||
- "18333"
|
|
||||||
- "18300"
|
|
||||||
- "18336"
|
|
||||||
- "18296"
|
|
||||||
- "18339"
|
|
||||||
- "18326"
|
|
||||||
- "18310"
|
|
||||||
- "18292"
|
|
||||||
- "18322"
|
|
||||||
- "18323"
|
|
||||||
- "18343"
|
|
||||||
- "18313"
|
|
||||||
- "18293"
|
|
||||||
- "18286"
|
|
||||||
- "18284"
|
|
||||||
- "18337"
|
|
||||||
- "18338"
|
|
||||||
- "18334"
|
|
||||||
- "18330"
|
|
||||||
- "18335"
|
|
||||||
- "18352"
|
|
||||||
- "18372"
|
|
||||||
- "18402"
|
|
||||||
- "18347"
|
|
||||||
- "18348"
|
|
||||||
- "18396"
|
|
||||||
- "18382"
|
|
||||||
- "18384"
|
|
||||||
- "18357"
|
|
||||||
- "18405"
|
|
||||||
- "18409"
|
|
||||||
- "18371"
|
|
||||||
- "18389"
|
|
||||||
- "18374"
|
|
||||||
- "18392"
|
|
||||||
- "18388"
|
|
||||||
- "18367"
|
|
||||||
- "18404"
|
|
||||||
- "18380"
|
|
||||||
- "18361"
|
|
||||||
- "18383"
|
|
||||||
- "18391"
|
|
||||||
- "18398"
|
|
||||||
- "18350"
|
|
||||||
- "18373"
|
|
||||||
- "18408"
|
|
||||||
- "18400"
|
|
||||||
- "18377"
|
|
||||||
- "18379"
|
|
||||||
- "18403"
|
|
||||||
- "18354"
|
|
||||||
- "18362"
|
|
||||||
- "18394"
|
|
||||||
- "18410"
|
|
||||||
- "18458"
|
|
||||||
- "18459"
|
|
||||||
- "18460"
|
|
||||||
- "18455"
|
|
||||||
- "18457"
|
|
||||||
- "18456"
|
|
||||||
- "18454"
|
|
||||||
- "18453"
|
|
||||||
- "18452"
|
|
||||||
- "18451"
|
|
||||||
- "18450"
|
|
||||||
- "18448"
|
|
||||||
- "18449"
|
|
||||||
- "18447"
|
|
||||||
- "18446"
|
|
||||||
- "18445"
|
|
||||||
- "18442"
|
|
||||||
- "18444"
|
|
||||||
- "18443"
|
|
||||||
- "18441"
|
|
||||||
- "18438"
|
|
||||||
- "18439"
|
|
||||||
- "18437"
|
|
||||||
- "18436"
|
|
||||||
- "18435"
|
|
||||||
- "18434"
|
|
||||||
- "18433"
|
|
||||||
- "18432"
|
|
||||||
- "18430"
|
|
||||||
- "18431"
|
|
||||||
- "18428"
|
|
||||||
- "18429"
|
|
||||||
- "18427"
|
|
||||||
- "18426"
|
|
||||||
- "18425"
|
|
||||||
- "18423"
|
|
||||||
- "18424"
|
|
||||||
- "18422"
|
|
||||||
- "18421"
|
|
||||||
- "18420"
|
|
||||||
- "18419"
|
|
||||||
- "18418"
|
|
||||||
- "18417"
|
|
||||||
- "18416"
|
|
||||||
- "18415"
|
|
||||||
- "18413"
|
|
||||||
- "18411"
|
|
||||||
- "18412"
|
|
||||||
- "18414"
|
|
||||||
- "18461"
|
|
||||||
- "18462"
|
|
||||||
- "18463"
|
|
||||||
- "18465"
|
|
||||||
- "18466"
|
|
||||||
- "18469"
|
|
||||||
- "18468"
|
|
||||||
- "18472"
|
|
||||||
- "18471"
|
|
||||||
- "18473"
|
|
||||||
- "18474"
|
|
||||||
- "18477"
|
|
||||||
- "18476"
|
|
||||||
- "18478"
|
|
||||||
- "18479"
|
|
||||||
- "18480"
|
|
||||||
- "18481"
|
|
||||||
- "18482"
|
|
||||||
- "18483"
|
|
||||||
- "18484"
|
|
||||||
- "18485"
|
|
||||||
- "18487"
|
|
||||||
- "18488"
|
|
||||||
- "18489"
|
|
||||||
- "18490"
|
|
||||||
- "18491"
|
|
||||||
- "18493"
|
|
||||||
- "18492"
|
|
||||||
- "18495"
|
|
||||||
- "18494"
|
|
||||||
- "18497"
|
|
||||||
- "18496"
|
|
||||||
- "18498"
|
|
||||||
- "18499"
|
|
||||||
- "18501"
|
|
||||||
- "18503"
|
|
||||||
- "18502"
|
|
||||||
- "18504"
|
|
||||||
- "18505"
|
|
||||||
- "18507"
|
|
||||||
- "18506"
|
|
||||||
- "18512"
|
|
||||||
- "18486"
|
|
||||||
- "18517"
|
|
||||||
- "18534"
|
|
||||||
- "18532"
|
|
||||||
- "18535"
|
|
||||||
- "18533"
|
|
||||||
- "18537"
|
|
||||||
- "18536"
|
|
||||||
- "18539"
|
|
||||||
- "18540"
|
|
||||||
- "18541"
|
|
||||||
- "18543"
|
|
||||||
- "18544"
|
|
||||||
- "18545"
|
|
||||||
- "18546"
|
|
||||||
- "18547"
|
|
||||||
- "18550"
|
|
||||||
- "18552"
|
|
||||||
- "18554"
|
|
||||||
- "18556"
|
|
||||||
- "18555"
|
|
||||||
- "18557"
|
|
||||||
- "18559"
|
|
||||||
- "18560"
|
|
||||||
- "18551"
|
|
||||||
- "18558"
|
|
||||||
https://theporndb.net/graphql:
|
|
||||||
- "18500"
|
|
||||||
- "18538"
|
|
||||||
- "18542"
|
|
||||||
- "18549"
|
|
||||||
- "18553"
|
|
||||||
markSceneAsOrganizedOnSave: false
|
markSceneAsOrganizedOnSave: false
|
||||||
mode: auto
|
mode: auto
|
||||||
selectedEndpoint: https://stashdb.org/graphql
|
selectedEndpoint: https://theporndb.net/graphql
|
||||||
setCoverImage: true
|
setCoverImage: true
|
||||||
setTags: true
|
setTags: true
|
||||||
showMales: true
|
showMales: true
|
||||||
@@ -931,7 +364,7 @@ ui:
|
|||||||
cleanGenerated:
|
cleanGenerated:
|
||||||
blobFiles: true
|
blobFiles: true
|
||||||
dryRun: false
|
dryRun: false
|
||||||
imageThumbnails: false
|
imageThumbnails: true
|
||||||
markers: true
|
markers: true
|
||||||
screenshots: true
|
screenshots: true
|
||||||
sprites: true
|
sprites: true
|
||||||
@@ -944,7 +377,7 @@ ui:
|
|||||||
interactiveHeatmapsSpeeds: false
|
interactiveHeatmapsSpeeds: false
|
||||||
markerImagePreviews: false
|
markerImagePreviews: false
|
||||||
markerScreenshots: false
|
markerScreenshots: false
|
||||||
markers: false
|
markers: true
|
||||||
phashes: true
|
phashes: true
|
||||||
previewOptions:
|
previewOptions:
|
||||||
previewExcludeEnd: "0"
|
previewExcludeEnd: "0"
|
||||||
|
|||||||
@@ -8,22 +8,14 @@ services:
|
|||||||
## the container's port must be the same with the STASH_PORT in the environment section
|
## the container's port must be the same with the STASH_PORT in the environment section
|
||||||
networks:
|
networks:
|
||||||
- proxy-net
|
- proxy-net
|
||||||
ports:
|
|
||||||
- "9999:9999"
|
|
||||||
expose:
|
expose:
|
||||||
- "9999"
|
- "9999"
|
||||||
## If you intend to use stash's DLNA functionality uncomment the below network mode and comment out the above ports section
|
|
||||||
# network_mode: host
|
|
||||||
logging:
|
|
||||||
driver: "json-file"
|
|
||||||
options:
|
|
||||||
max-file: "10"
|
|
||||||
max-size: "2m"
|
|
||||||
environment:
|
environment:
|
||||||
- STASH_STASH=/data/
|
- STASH_STASH=/data/
|
||||||
- STASH_GENERATED=/generated/
|
- STASH_GENERATED=/generated/
|
||||||
- STASH_METADATA=/metadata/
|
- STASH_METADATA=/metadata/
|
||||||
- STASH_CACHE=/cache/
|
- STASH_CACHE=/cache/
|
||||||
|
- STASH_EXTERNAL_HOST=https://stash.tremendousturtle.tools
|
||||||
## Adjust below to change default port (9999)
|
## Adjust below to change default port (9999)
|
||||||
- STASH_PORT=9999
|
- STASH_PORT=9999
|
||||||
volumes:
|
volumes:
|
||||||
@@ -35,6 +27,7 @@ services:
|
|||||||
- ./config:/root/.stash
|
- ./config:/root/.stash
|
||||||
## Point this at your collection.
|
## Point this at your collection.
|
||||||
- /media/raid/junk_transfer:/data
|
- /media/raid/junk_transfer:/data
|
||||||
|
- /media/junk/new_transfer:/data/new_transfer
|
||||||
- /media/raid/stash:/stash
|
- /media/raid/stash:/stash
|
||||||
- /media/junk/junk:/junk
|
- /media/junk/junk:/junk
|
||||||
- /media/raid/junk_movies_transfer:/movies
|
- /media/raid/junk_movies_transfer:/movies
|
||||||
@@ -51,6 +44,13 @@ services:
|
|||||||
- ./data/scrapers:/scrapers
|
- ./data/scrapers:/scrapers
|
||||||
## Where to store database file
|
## Where to store database file
|
||||||
- ./data/db:/db
|
- ./data/db:/db
|
||||||
|
## Custom DupFileManager plugin
|
||||||
|
- /code/Axter-Stash-Gitea/plugins/DupFileManager:/plugins/community/DupFileManager
|
||||||
|
- /code/Axter-Stash-Gitea/plugins/DupFileManager/web:/custom_web
|
||||||
|
## Custom TimestampTrade plugin
|
||||||
|
- /code/Stash-CommunityScripts/plugins/timestampTrade:/plugins/timestampTrade
|
||||||
|
## Custom RemoveMarkers plugin
|
||||||
|
- /code/Stash-Plugins/RemoveMarkers:/plugins/RemoveMarkers
|
||||||
## Where to store generated content (screenshots,previews,transcodes,sprites)
|
## Where to store generated content (screenshots,previews,transcodes,sprites)
|
||||||
- /media/stashapp/generated:/generated
|
- /media/stashapp/generated:/generated
|
||||||
|
|
||||||
|
|||||||
8
tautulli/.gitignore
vendored
Normal file
8
tautulli/.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
config/backups/
|
||||||
|
config/cache/
|
||||||
|
config/exports/
|
||||||
|
config/logs/
|
||||||
|
config/newsletters/
|
||||||
|
config/release.lock
|
||||||
|
config/tautulli.db
|
||||||
|
config/version.lock
|
||||||
170
tautulli/config/config.ini
Normal file
170
tautulli/config/config.ini
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
[General]
|
||||||
|
allow_guest_access = 0
|
||||||
|
date_format = YYYY-MM-DD
|
||||||
|
time_format = HH:mm
|
||||||
|
anon_redirect = https://www.nullrefer.com/?
|
||||||
|
anon_redirect_dynamic = 0
|
||||||
|
api_enabled = 1
|
||||||
|
api_key = 079935546d82416db237001d03059dc3
|
||||||
|
api_sql = 0
|
||||||
|
backup_days = 3
|
||||||
|
backup_dir = /config/backups
|
||||||
|
backup_interval = 6
|
||||||
|
cache_dir = /config/cache
|
||||||
|
cache_images = 1
|
||||||
|
check_github = 1
|
||||||
|
check_github_interval = 6
|
||||||
|
check_github_on_startup = 1
|
||||||
|
cleanup_files = 0
|
||||||
|
do_not_override_git_branch = 0
|
||||||
|
enable_https = 0
|
||||||
|
export_dir = /config/exports
|
||||||
|
first_run_complete = 1
|
||||||
|
freeze_db = 0
|
||||||
|
get_file_sizes = 0
|
||||||
|
git_branch = master
|
||||||
|
git_path = ""
|
||||||
|
git_remote = origin
|
||||||
|
git_token = ""
|
||||||
|
git_user = Tautulli
|
||||||
|
git_repo = Tautulli
|
||||||
|
group_history_tables = 1
|
||||||
|
history_table_activity = 1
|
||||||
|
home_sections = current_activity, watch_stats, library_stats, recently_added
|
||||||
|
home_library_cards = 4, 2, 1, 5, 7, 8, 9, 12
|
||||||
|
home_stats_cards = top_movies, popular_movies, top_tv, popular_tv, top_music, popular_music, last_watched, top_libraries, top_users, top_platforms, most_concurrent
|
||||||
|
home_refresh_interval = 10
|
||||||
|
https_create_cert = 1
|
||||||
|
https_cert = /config/server.crt
|
||||||
|
https_cert_chain = ""
|
||||||
|
https_key = /config/server.key
|
||||||
|
https_domain = localhost
|
||||||
|
https_ip = 127.0.0.1
|
||||||
|
http_basic_auth = 0
|
||||||
|
http_environment = production
|
||||||
|
http_hash_password = 1
|
||||||
|
http_hashed_password = 1
|
||||||
|
http_host = 0.0.0.0
|
||||||
|
http_password = PBKDF2$sha256$600000$Y6kl7oc/cNUwRhxpN3cYDw==$b4hYGhFatQNKuNvFsY4IEFI5FHVZjBKY
|
||||||
|
http_port = 8181
|
||||||
|
http_proxy = 0
|
||||||
|
http_root = ""
|
||||||
|
http_username = chris
|
||||||
|
http_plex_admin = 1
|
||||||
|
http_base_url = ""
|
||||||
|
http_rate_limit_attempts = 10
|
||||||
|
http_rate_limit_attempts_interval = 300
|
||||||
|
http_rate_limit_lockout_time = 300
|
||||||
|
http_thread_pool = 10
|
||||||
|
interface = default
|
||||||
|
launch_browser = 0
|
||||||
|
launch_startup = 0
|
||||||
|
log_blacklist = 1
|
||||||
|
log_blacklist_usernames = 1
|
||||||
|
log_dir = /config/logs
|
||||||
|
musicbrainz_lookup = 0
|
||||||
|
plexpy_auto_update = 0
|
||||||
|
show_advanced_settings = 1
|
||||||
|
themoviedb_apikey = e9a6655bae34bf694a0f3e33338dc28e
|
||||||
|
themoviedb_lookup = 0
|
||||||
|
tvmaze_lookup = 0
|
||||||
|
update_db_interval = 24
|
||||||
|
update_show_changelog = 0
|
||||||
|
week_start_monday = 0
|
||||||
|
sys_tray_icon = 0
|
||||||
|
[[get_file_sizes_hold]]
|
||||||
|
section_ids = ,
|
||||||
|
rating_keys = ,
|
||||||
|
[PMS]
|
||||||
|
pms_client_id = a63eebdc-9a0e-45be-9448-d8769535c470
|
||||||
|
pms_identifier = 5e16f8ceb511bde943f92bbe07e3e6e33307eb16
|
||||||
|
pms_ip = 192.168.1.234
|
||||||
|
pms_is_cloud = 0
|
||||||
|
pms_is_remote = 0
|
||||||
|
pms_language = ""
|
||||||
|
pms_logs_folder = /plex_logs
|
||||||
|
pms_logs_line_cap = 1000
|
||||||
|
pms_name = winterfell
|
||||||
|
pms_name_override = ""
|
||||||
|
pms_port = 32400
|
||||||
|
pms_token = udTzPteNY8SNSibrzajX
|
||||||
|
pms_ssl = 0
|
||||||
|
pms_url = http://192.168.1.234:32400
|
||||||
|
pms_url_override = ""
|
||||||
|
pms_url_manual = 0
|
||||||
|
pms_use_bif = 0
|
||||||
|
pms_uuid = db661b1c35ed453bba7ddee2e44e3145
|
||||||
|
pms_plexpass = 1
|
||||||
|
pms_platform = Linux
|
||||||
|
pms_version = 1.41.4.9463-630c9f557
|
||||||
|
pms_update_channel = plex
|
||||||
|
pms_update_distro = debian
|
||||||
|
pms_update_distro_build = linux-x86
|
||||||
|
pms_web_url = https://app.plex.tv/desktop
|
||||||
|
[Advanced]
|
||||||
|
pms_timeout = 15
|
||||||
|
pms_update_check_interval = 24
|
||||||
|
cache_sizemb = 32
|
||||||
|
check_docker_mount = 1
|
||||||
|
check_github_cache_seconds = 3600
|
||||||
|
config_version = 22
|
||||||
|
export_threads = 8
|
||||||
|
https_min_tls_version = TLSv1.2
|
||||||
|
journal_mode = WAL
|
||||||
|
metadata_cache_seconds = 1800
|
||||||
|
notification_threads = 2
|
||||||
|
notify_text_eval = 0
|
||||||
|
session_db_write_attempts = 5
|
||||||
|
synchronous_mode = NORMAL
|
||||||
|
upgrade_flag = 1
|
||||||
|
verbose_logs = 1
|
||||||
|
verify_ssl_cert = 1
|
||||||
|
websocket_monitor_ping_pong = 0
|
||||||
|
websocket_connection_attempts = 5
|
||||||
|
websocket_connection_timeout = 5
|
||||||
|
jwt_secret = 11a7ffcc84ad42c98cf603d50cffdde5
|
||||||
|
jwt_update_secret = 0
|
||||||
|
system_analytics = 1
|
||||||
|
[Monitoring]
|
||||||
|
buffer_threshold = 10
|
||||||
|
buffer_wait = 900
|
||||||
|
imgur_client_id = ""
|
||||||
|
logging_ignore_interval = 60
|
||||||
|
movie_watched_percent = 85
|
||||||
|
music_watched_percent = 85
|
||||||
|
monitor_pms_updates = 0
|
||||||
|
monitoring_interval = 60
|
||||||
|
notify_consecutive = 0
|
||||||
|
notify_continued_session_threshold = 15
|
||||||
|
notify_group_recently_added_grandparent = 1
|
||||||
|
notify_group_recently_added_parent = 1
|
||||||
|
notify_upload_posters = 0
|
||||||
|
notify_recently_added_delay = 300
|
||||||
|
notify_recently_added_grandparent = 0
|
||||||
|
notify_recently_added_upgrade = 0
|
||||||
|
notify_remote_access_threshold = 60
|
||||||
|
notify_concurrent_by_ip = 0
|
||||||
|
notify_concurrent_ipv6_cidr = /64
|
||||||
|
notify_concurrent_threshold = 2
|
||||||
|
notify_new_device_initial_only = 1
|
||||||
|
notify_server_connection_threshold = 60
|
||||||
|
notify_server_update_repeat = 0
|
||||||
|
notify_plexpy_update_repeat = 0
|
||||||
|
refresh_libraries_interval = 12
|
||||||
|
refresh_libraries_on_startup = 1
|
||||||
|
refresh_users_interval = 12
|
||||||
|
refresh_users_on_startup = 1
|
||||||
|
tv_watched_percent = 85
|
||||||
|
watched_marker = 3
|
||||||
|
[Cloudinary]
|
||||||
|
cloudinary_cloud_name = ""
|
||||||
|
cloudinary_api_key = ""
|
||||||
|
cloudinary_api_secret = ""
|
||||||
|
[Newsletter]
|
||||||
|
newsletter_auth = 0
|
||||||
|
newsletter_password = ""
|
||||||
|
newsletter_custom_dir = ""
|
||||||
|
newsletter_inline_styles = 0
|
||||||
|
newsletter_templates = newsletters
|
||||||
|
newsletter_dir = /config/newsletters
|
||||||
|
newsletter_self_hosted = 0
|
||||||
18
tautulli/docker-compose.yml
Normal file
18
tautulli/docker-compose.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
name: tautulli
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
environment:
|
||||||
|
TZ: America/Los_Angeles
|
||||||
|
image: ghcr.io/tautulli/tautulli:latest
|
||||||
|
networks:
|
||||||
|
- proxy-net
|
||||||
|
expose:
|
||||||
|
- "8181"
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./config:/config
|
||||||
|
- /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Logs:/plex_logs:ro
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy-net:
|
||||||
|
external: true
|
||||||
Reference in New Issue
Block a user