Compare commits

...

27 Commits

Author SHA1 Message Date
Chris King
a572313d3d Moved DupFileManager plugin to a fork in Gitea and moved the files to a new directory 2025-02-16 06:20:19 -08:00
Chris King
8de9b57365 Move Stash to Authentik
Add bypass for bedroom ShieldTV
Remove Stash port forwarding
Set STASH_EXTERNAL_HOST to URL
Add customized DupFileManager plugin to Stash
Enable custom_served_folders in Stash
Disable built-in Stash auth in favor of Authentik
Add additional Stash plugins and plugin sources
Add FansDB stash box configuration
2025-02-16 01:20:53 -08:00
Chris King
79aa347f6a Change default Authentik snippet to only modify X-Real-IP and X-Forwarded-Port headers
Caddy passes through and sets other headers automatically
Only use Cloudflare connecting IP header when request is coming from cloudflare
2025-02-16 01:16:36 -08:00
Chris King
d2810af09f Corrected accidental string bool 2025-02-13 16:11:35 -08:00
Chris King
aaaaa7766e Added additional motion masks for timestamps
Added zone definitions for all cameras
Adjusted motion threshhold and contour_area for all cameras
2025-02-13 16:10:18 -08:00
Chris King
b532587d76 stashapp - Added new transfer directory 2025-02-13 16:08:11 -08:00
Chris King
8749ca7376 Moved Tautulli to Docker
Added tautulli.tremendousturtle.tools to Caddy
Added additional gitignore file for Tautulli
2025-02-13 16:07:23 -08:00
Chris King
12a0e84181 Default Komodo setup 2025-02-04 02:22:58 -08:00
Chris King
aa51e224f8 Add network bandwidth monitoring for frigate
Add Frigate+ API key to enable image annotation/upload
Adjust doorbell motion parameters
Adjust detect stationary threshold
Enable recording retention for all 3 days and 30 days for motion
2025-02-04 02:22:38 -08:00
Chris King
67a8025b49 Add Dozzle to Caddy 2025-02-04 02:20:13 -08:00
Chris King
d2942bf100 Revert Authentik to stable build version 2024.12.3 2025-02-04 02:19:56 -08:00
Chris King
2d1ac160e7 Setup Dozzle 2025-02-04 02:19:17 -08:00
Chris King
3d4cdaf8d6 Enable frigate snapshots
Add additional objects to track
2025-01-30 21:15:07 -08:00
Chris King
7f5284c865 Enable repository indexing service
Enable reverse proxy trusted proxies
2025-01-23 09:24:34 -08:00
Chris King
25937216ab Change Authentik server image to use env variables again 2025-01-23 08:19:27 -08:00
Chris King
bcc325afe1 Remove unused code-server config 2025-01-22 22:38:10 -08:00
Chris King
e951edffaf Switch Frigate image to custom built image with simple user access controls based on username 2025-01-22 18:24:12 -08:00
Chris King
2e67562d95 Add code-server docker config
code-server docker is actually not used at this time
2025-01-22 18:23:30 -08:00
Chris King
78688d8bf5 Move gitea to Authentik
Enable reverse proxy authentication via headers for Gitea
2025-01-22 18:22:43 -08:00
Chris King
97a97f5028 Add bypass rules to Authelia access control for gitea API 2025-01-22 18:21:59 -08:00
Chris King
f3bbf41add Change frigate proxy user header to Authentik configured user header 2025-01-16 14:29:55 -08:00
Chris King
ceb05e3644 Expose frigate UI port to host for troubleshooting and access 2025-01-16 14:29:13 -08:00
Chris King
6040bcba8e Add home.docker.internal definition to Authentik container
Remove env variables from authentik container image
2025-01-16 14:28:39 -08:00
Chris King
9f394b4b97 Move Caddyfile into config/Caddyfile to allow caddy reload to work in Docker
Remove caddyfile configs setup in docker-compose.yml
Add authentik, redirect, and authentik-forward Caddyfile snippets
Move homepage, frigate, and code into Authentik in Caddyfile
Add redirect for home to homepage
2025-01-16 14:27:23 -08:00
Chris King
6d353fcd69 Expose 9000 and 9443 for Authentik 2025-01-13 12:04:23 -08:00
Chris King
b94f8d6557 Merge branch 'caddy-docker' 2025-01-13 11:51:02 -08:00
Chris King
8a07851ab8 Update overseerr configs 2025-01-13 11:50:54 -08:00
16 changed files with 856 additions and 760 deletions

View File

@@ -6,7 +6,19 @@ server:
# Security https://www.authelia.com/configuration/security/access-control/
access_control:
networks:
- name: 'internal'
networks:
- '192.168.1.0/24'
- '172.16.0.0/12'
rules:
- domain: 'gitea.tremendousturtle.tools'
policy: bypass
networks:
- 'internal'
resources:
- '^/api([/?].*)?$'
- '^/v2([/?].*)?$'
- domain: '*.tremendousturtle.tools'
policy: two_factor

View File

@@ -30,7 +30,7 @@ services:
volumes:
- redis:/data
app:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.2}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.3}
restart: unless-stopped
command: server
environment:
@@ -42,6 +42,8 @@ services:
networks:
- proxy-net
- default
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./data/media:/media
- ./config/custom-templates:/templates
@@ -50,13 +52,16 @@ services:
ports:
- "${COMPOSE_PORT_HTTP:-9000}:9000"
- "${COMPOSE_PORT_HTTPS:-9443}:9443"
expose:
- "9000"
- "9443"
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
worker:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.2}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.3}
restart: unless-stopped
command: worker
environment:

View File

@@ -1,116 +0,0 @@
# Global Config
{
email certs@tremendousturtle.tools
default_sni tremendousturtle.tools
acme_ca https://acme-v02.api.letsencrypt.org/directory
admin :2019
# debug
# acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
servers {
trusted_proxies cloudflare {
interval 12h
timeout 15s
}
client_ip_headers Cf-Connecting-Ip X-Forwarded-For X-Real-IP
}
}
# Global Reusable Blocks
(tls) {
tls {
dns cloudflare {
zone_token {env.CF_ZONE_TOKEN}
api_token {env.CF_API_TOKEN}
}
resolvers 1.1.1.1 1.0.0.1
}
}
(secure) {
forward_auth {args[0]} authelia-app-1:9091 {
uri /api/authz/forward-auth
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
}
}
(secure-external) {
forward_auth {args[0]} https://auth.tremendousturtle.tools {
uri /api/authz/forward-auth
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
header_up Host {upstream_hostport}
}
}
(ttt-log) {
log {
output file /logs/{args[0]}.tremendousturtle.tools.log
}
}
(ttt-proxy) {
reverse_proxy {args[0]}:{args[1]} {
header_up X-Real-IP {http.request.header.CF-Connecting-IP}
header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
}
}
(ttt-app) {
{args[0]}.tremendousturtle.tools {
import ttt-log {args[0]}
import tls
import secure *
import ttt-proxy {args[0]}-app-1 {args[1]}
}
}
(ttt-app-local) {
{args[0]}.tremendousturtle.tools {
import ttt-log {args[0]}
import tls
import secure *
import ttt-proxy host.docker.internal {args[1]}
}
}
(ttt-app-alt) {
{args[0]}.tremendousturtle.tools {
import ttt-log {args[0]}
import tls
import secure *
import ttt-proxy {args[1]} {args[2]}
}
}
# Web Config
tremendousturtle.tools {
import tls
respond "I'm Alive!"
}
auth.tremendousturtle.tools {
import tls
reverse_proxy authelia-app-1:9091
}
authentik.tremendousturtle.tools {
import tls
reverse_proxy authentik-app-1:9000
}
# Define code.tremendousturtle.tools
# Locally hosted non-docker apps (proxies to 192.168.1.234 instead of localhost)
import ttt-app-local code 8020
import ttt-app-local pihole 1080
import ttt-app-local sonarr 8989
import ttt-app-local radarr 7878
import ttt-app-local prowlarr 9696
import ttt-app-local cockpit 9090
# Docker apps with same subdomain as docker compose project name
import ttt-app frigate 8971
import ttt-app overseerr 5055
import ttt-app openobserve 5080
import ttt-app gitea 3000
import ttt-app homepage 3000
import ttt-app requestrr 4545
# Alternate configuration (different subdomain and docker compose project name)
import ttt-app-alt budget actual-server-app-1 5006
import ttt-app-alt trilium 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 pihole1 192.168.1.116 80

200
caddy/config/Caddyfile Normal file
View File

@@ -0,0 +1,200 @@
# Global Config
{
email certs@tremendousturtle.tools
default_sni tremendousturtle.tools
acme_ca https://acme-v02.api.letsencrypt.org/directory
admin :2019
# debug
# acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
servers {
trusted_proxies cloudflare {
interval 12h
timeout 15s
}
client_ip_headers Cf-Connecting-Ip X-Forwarded-For X-Real-IP
}
}
# Global Reusable Blocks
(tls) {
tls {
dns cloudflare {
zone_token {env.CF_ZONE_TOKEN}
api_token {env.CF_API_TOKEN}
}
resolvers 1.1.1.1 1.0.0.1
}
}
(secure) {
forward_auth {args[0]} authelia-app-1:9091 {
uri /api/authz/forward-auth
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
}
}
(secure-external) {
forward_auth {args[0]} https://auth.tremendousturtle.tools {
uri /api/authz/forward-auth
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
header_up Host {upstream_hostport}
}
}
(ttt-log) {
log {
output file /logs/{args[0]}.tremendousturtle.tools.log
}
}
(ttt-proxy) {
reverse_proxy {args[0]}:{args[1]} {
header_up X-Real-IP {http.request.header.CF-Connecting-IP}
header_up X-Forwarded-For {http.request.header.CF-Connecting-IP}
}
}
(ttt-app) {
{args[0]}.tremendousturtle.tools {
import ttt-log {args[0]}
import tls
import secure *
import ttt-proxy {args[0]}-app-1 {args[1]}
}
}
(ttt-app-local) {
{args[0]}.tremendousturtle.tools {
import ttt-log {args[0]}
import tls
import secure *
import ttt-proxy host.docker.internal {args[1]}
}
}
(ttt-app-alt) {
{args[0]}.tremendousturtle.tools {
import ttt-log {args[0]}
import tls
import secure *
import ttt-proxy {args[1]} {args[2]}
}
}
(authentik) {
{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 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-Forwarded-Port {server_port}
}
}
}
(redirect) {
{args[0]}.tremendousturtle.tools {
import tls
redir https://{args[1]}.tremendousturtle.tools{uri}
}
}
(authentik-forward) {
{args[0]}.tremendousturtle.tools {
import ttt-log {args[0]}
import tls
route {
# always forward outpost path to actual outpost
reverse_proxy /outpost.goauthentik.io/* http://authentik-app-1:9000
# forward authentication to outpost
forward_auth http://authentik-app-1:9000 {
uri /outpost.goauthentik.io/auth/caddy
# capitalization of the headers is important, otherwise they will be empty
copy_headers X-Authentik-Username X-Authentik-Groups X-Authentik-Entitlements X-Authentik-Email X-Authentik-Name X-Authentik-Uid X-Authentik-Jwt X-Authentik-Meta-Jwks X-Authentik-Meta-Outpost X-Authentik-Meta-Provider X-Authentik-Meta-App X-Authentik-Meta-Version
# optional, in this config trust all private ranges, should probably be set to the outposts IP
trusted_proxies private_ranges
}
# actual site configuration below, for example
reverse_proxy {args[1]}:{args[2]}
}
}
}
# Web Config
tremendousturtle.tools {
import tls
respond "I'm Alive!"
}
auth.tremendousturtle.tools {
import tls
reverse_proxy authelia-app-1:9091
}
authentik.tremendousturtle.tools {
import tls
reverse_proxy authentik-app-1:9000
}
# Define code.tremendousturtle.tools
# Locally hosted non-docker apps (proxies to 192.168.1.234 instead of localhost)
#import ttt-app-local code 8020
import ttt-app-local pihole 1080
import ttt-app-local sonarr 8989
import ttt-app-local radarr 7878
import ttt-app-local prowlarr 9696
import ttt-app-local cockpit 9090
# Docker apps with same subdomain as docker compose project name
#import ttt-app frigate 8971
import ttt-app overseerr 5055
import ttt-app openobserve 5080
#import ttt-app gitea 3000
#import ttt-app homepage 3000
import ttt-app requestrr 4545
# Alternate configuration (different subdomain and docker compose project name)
import ttt-app-alt budget actual-server-app-1 5006
import ttt-app-alt trilium 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 pihole1 192.168.1.116 80
# Authentik Configs
import authentik homepage
import redirect home homepage
import authentik frigate
import authentik code
import authentik gitea
import authentik dozzle
import authentik tautulli
#import authentik-test stash
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
@shield client_ip 192.168.1.142
reverse_proxy @shield 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}
}

View File

@@ -13,12 +13,10 @@ services:
- "443:443"
- "443:443/udp"
- "2019:2019"
configs:
- source: caddyfile
target: /etc/caddy/Caddyfile
volumes:
- ./data/site:/srv
- ./data/logs:/logs
- ./config:/etc/caddy
- caddy_data:/data
- caddy_config:/config
@@ -26,10 +24,6 @@ networks:
proxy-net:
external: true
configs:
caddyfile:
file: ./Caddyfile
volumes:
caddy_data:
caddy_config:

19
dozzle/docker-compose.yml Normal file
View File

@@ -0,0 +1,19 @@
name: dozzle
services:
app:
image: amir20/dozzle:latest
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
expose:
- "8080"
environment:
DOZZLE_AUTH_PROVIDER: forward-proxy
DOZZLE_ENABLE_ACTIONS: true
DOZZLE_HOSTNAME: dozzle.tremendousturtle.tools
networks:
- proxy-net
networks:
proxy-net:
external: true

View File

@@ -4,7 +4,7 @@ auth:
proxy:
header_map:
user: Remote-User
user: X-Forwarded-Preferred-Username
tls:
enabled: false
@@ -38,8 +38,19 @@ objects:
track:
- person
- car
- motorcycle
- bicycle
- dog
- cat
- license plate
- face
- amazon
- usps
- fedex
- ups
- package
- waste bin
cameras:
nw_garage:
@@ -64,6 +75,31 @@ cameras:
- 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.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:
enabled: true
ffmpeg:
@@ -86,6 +122,33 @@ cameras:
- 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.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:
enabled: true
ffmpeg:
@@ -108,9 +171,26 @@ cameras:
- 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.866,0.003,0.866,0.035,0.896,0.035,0.896,0.003
threshold: 35
contour_area: 15
- 0.904,0.039,0.933,0.038,0.933,0.011,0.904,0.011
- 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
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
camera_groups:
Birdseye:
@@ -128,4 +208,23 @@ camera_groups:
detect:
stationary:
interval: 50
threshold: 40
threshold: 50
snapshots:
enabled: true
retain:
default: 30
record:
enabled: true
retain:
days: 3
mode: all
events:
retain:
default: 30
mode: motion
telemetry:
stats:
network_bandwidth: true

View File

@@ -2,7 +2,11 @@ name: frigate
services:
app:
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable
#image: ghcr.io/blakeblackshear/frigate:stable
image: gitea.tremendousturtle.tools/chris/frigate:v0.14.1-web-admin-088ff992
cap_add:
- NET_ADMIN
- NET_RAW
shm_size: "250mb"
devices:
- /dev/apex_0:/dev/apex_0 # Passes a PCIe Coral
@@ -20,12 +24,15 @@ services:
networks:
- proxy-net
ports:
# - "8971:8971"
- "8554:8554" # RTSP feeds
- "8555:8555/tcp" # WebRTC over tcp
- "8555:8555/udp" # WebRTC over udp
- "5000:5000" # VS Code schema validation allowed
expose:
- "8971"
secrets:
- PLUS_API_KEY
environment:
LIBVA_DRIVER_NAME: "radeonsi" # FRIGATE_RTSP_PASSWORD: "69$nC*6$jADbc!"
labels:
@@ -41,3 +48,7 @@ services:
networks:
proxy-net:
external: true
secrets:
PLUS_API_KEY:
file: ./secrets/PLUS_API_KEY

View File

@@ -17,6 +17,16 @@ services:
GITEA__database__USER: ${GITEA_DB_USER}
GITEA__database__PASSWD__FILE: /run/secrets/postgres_pass
GITEA__server__SSH_AUTHORIZED_KEYS_COMMAND_TEMPLATE: gitea --config={{.CustomConf}} serv key-{{.Key.ID}}
GITEA__service__ENABLE_REVERSE_PROXY_AUTHENTICATION: true
GITEA__service__ENABLE_REVERSE_PROXY_AUTO_REGISTRATION: true
GITEA__service__ENABLE_REVERSE_PROXY_EMAIL: true
GITEA__indexer__REPO_INDEXER_ENABLED: true
GITEA__indexer__REPO_INDEXER_PATH: indexers/repos.bleve
GITEA__indexer__MAX_FILE_SIZE: 1048576
GITEA__indexer__REPO_INDEXER_INCLUDE: ""
GITEA__indexer__REPO_INDEXER_EXCLUDE: resources/bin/**
GITEA__security__REVERSE_PROXY_LIMIT: 2
GITEA__security__REVERSE_PROXY_TRUSTED_PROXIES: '172.31.0.0/16'
restart: unless-stopped
networks:
- gitea

130
komodo/.env Normal file
View File

@@ -0,0 +1,130 @@
####################################
# 🦎 KOMODO COMPOSE - VARIABLES 🦎 #
####################################
## These compose variables can be used with all Komodo deployment options.
## Pass these variables to the compose up command using `--env-file komodo/compose.env`.
## Additionally, they are passed to both Komodo Core and Komodo Periphery with `env_file: ./compose.env`,
## so you can pass any additional environment variables to Core / Periphery directly in this file as well.
## Stick to a specific version, or use `latest`
COMPOSE_KOMODO_IMAGE_TAG=latest
## 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`
COMPOSE_LOGGING_DRIVER=local # Enable log rotation with the local driver.
## DB credentials - Ignored for Sqlite
DB_USERNAME=admin
DB_PASSWORD=admin
## Configure a secure passkey to authenticate between Core / Periphery.
PASSKEY=a_random_passkey
#=-------------------------=#
#= Komodo Core Environment =#
#=-------------------------=#
## Full variable list + descriptions are available here:
## 🦎 https://github.com/mbecker20/komodo/blob/main/config/core.config.toml 🦎
## Note. Secret variables also support `${VARIABLE}_FILE` syntax to pass docker compose secrets.
## Docs: https://docs.docker.com/compose/how-tos/use-secrets/#examples
## Used for Oauth / Webhook url suggestion / Caddy reverse proxy.
KOMODO_HOST=https://demo.komo.do
## Displayed in the browser tab.
KOMODO_TITLE=Komodo
## Create a server matching this address as the "first server".
## Use `https://host.docker.internal:8120` when using systemd-managed Periphery.
KOMODO_FIRST_SERVER=https://periphery:8120
## Make all buttons just double-click, rather than the full confirmation dialog.
KOMODO_DISABLE_CONFIRM_DIALOG=false
## Rate Komodo polls your servers for
## status / container status / system stats / alerting.
## Options: 1-sec, 5-sec, 15-sec, 1-min, 5-min.
## Default: 15-sec
KOMODO_MONITORING_INTERVAL="15-sec"
## Rate Komodo polls Resources for updates,
## like outdated commit hash.
## Options: 1-min, 5-min, 15-min, 30-min, 1-hr.
## Default: 5-min
KOMODO_RESOURCE_POLL_INTERVAL="5-min"
## Used to auth against periphery. Alt: KOMODO_PASSKEY_FILE
KOMODO_PASSKEY=${PASSKEY}
## Used to auth incoming webhooks. Alt: KOMODO_WEBHOOK_SECRET_FILE
KOMODO_WEBHOOK_SECRET=a_random_secret
## Used to generate jwt. Alt: KOMODO_JWT_SECRET_FILE
KOMODO_JWT_SECRET=a_random_jwt_secret
## Enable login with username + password.
KOMODO_LOCAL_AUTH=true
## Disable new user signups.
KOMODO_DISABLE_USER_REGISTRATION=false
## All new logins are auto enabled
KOMODO_ENABLE_NEW_USERS=false
## Disable non-admins from creating new resources.
KOMODO_DISABLE_NON_ADMIN_CREATE=false
## Allows all users to have Read level access to all resources.
KOMODO_TRANSPARENT_MODE=false
## Time to live for jwt tokens.
## Options: 1-hr, 12-hr, 1-day, 3-day, 1-wk, 2-wk
KOMODO_JWT_TTL="1-day"
## OIDC Login
KOMODO_OIDC_ENABLED=false
## Must reachable from Komodo Core container
# KOMODO_OIDC_PROVIDER=https://oidc.provider.internal/application/o/komodo
## 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.
# KOMODO_OIDC_REDIRECT_HOST=https://oidc.provider.external
## Your client credentials
# KOMODO_OIDC_CLIENT_ID= # Alt: KOMODO_OIDC_CLIENT_ID_FILE
# KOMODO_OIDC_CLIENT_SECRET= # Alt: KOMODO_OIDC_CLIENT_SECRET_FILE
## Make usernames the full email.
# KOMODO_OIDC_USE_FULL_EMAIL=true
## Add additional trusted audiences for token claims verification.
## Supports comma separated list, and passing with _FILE (for compose secrets).
# KOMODO_OIDC_ADDITIONAL_AUDIENCES=abc,123 # Alt: KOMODO_OIDC_ADDITIONAL_AUDIENCES_FILE
## Github Oauth
KOMODO_GITHUB_OAUTH_ENABLED=false
# KOMODO_GITHUB_OAUTH_ID= # Alt: KOMODO_GITHUB_OAUTH_ID_FILE
# KOMODO_GITHUB_OAUTH_SECRET= # Alt: KOMODO_GITHUB_OAUTH_SECRET_FILE
## Google Oauth
KOMODO_GOOGLE_OAUTH_ENABLED=false
# KOMODO_GOOGLE_OAUTH_ID= # Alt: KOMODO_GOOGLE_OAUTH_ID_FILE
# KOMODO_GOOGLE_OAUTH_SECRET= # Alt: KOMODO_GOOGLE_OAUTH_SECRET_FILE
## Aws - Used to launch Builder instances and ServerTemplate instances.
KOMODO_AWS_ACCESS_KEY_ID= # Alt: KOMODO_AWS_ACCESS_KEY_ID_FILE
KOMODO_AWS_SECRET_ACCESS_KEY= # Alt: KOMODO_AWS_SECRET_ACCESS_KEY_FILE
## Hetzner - Used to launch ServerTemplate instances
## Hetzner Builder not supported due to Hetzner pay-by-the-hour pricing model
KOMODO_HETZNER_TOKEN= # Alt: KOMODO_HETZNER_TOKEN_FILE
#=------------------------------=#
#= Komodo Periphery Environment =#
#=------------------------------=#
## Full variable list + descriptions are available here:
## 🦎 https://github.com/mbecker20/komodo/blob/main/config/periphery.config.toml 🦎
## Periphery passkeys must include KOMODO_PASSKEY to authenticate
PERIPHERY_PASSKEYS=${PASSKEY}
## Enable SSL using self signed certificates.
## Connect to Periphery at https://address:8120.
PERIPHERY_SSL_ENABLED=true
## If the disk size is overreporting, can use one of these to
## whitelist / blacklist the disks to filter them, whichever is easier.
## Accepts comma separated list of paths.
## Usually whitelisting just /etc/hostname gives correct size.
PERIPHERY_INCLUDE_DISK_MOUNTS=/etc/hostname
# PERIPHERY_EXCLUDE_DISK_MOUNTS=/snap,/etc/repos

103
komodo/docker-compose.yml Normal file
View File

@@ -0,0 +1,103 @@
################################
# 🦎 KOMODO COMPOSE - MONGO 🦎 #
################################
## This compose file will deploy:
## 1. MongoDB
## 2. Komodo Core
## 3. Komodo Periphery
name: komodo
services:
db:
image: mongo
labels:
komodo.skip: # Prevent Komodo from stopping with StopAllContainers
command: --quiet --wiredTigerCacheSizeGB 0.25
restart: unless-stopped
logging:
driver: ${COMPOSE_LOGGING_DRIVER:-local}
networks:
- default
# ports:
# - 27017:27017
volumes:
- mongo-data:/data/db
- mongo-config:/data/configdb
environment:
MONGO_INITDB_ROOT_USERNAME: ${DB_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${DB_PASSWORD}
core:
image: ghcr.io/mbecker20/komodo:${COMPOSE_KOMODO_IMAGE_TAG:-latest}
labels:
komodo.skip: # Prevent Komodo from stopping with StopAllContainers
restart: unless-stopped
depends_on:
- db
logging:
driver: ${COMPOSE_LOGGING_DRIVER:-local}
networks:
- default
ports:
- 9120:9120
env_file: ./compose.env
environment:
KOMODO_DATABASE_ADDRESS: db:27017
KOMODO_DATABASE_USERNAME: ${DB_USERNAME}
KOMODO_DATABASE_PASSWORD: ${DB_PASSWORD}
volumes:
## Core cache for repos for latest commit hash / contents
- repo-cache:/repo-cache
## Store sync files on server
# - /path/to/syncs:/syncs
## Optionally mount a custom core.config.toml
# - /path/to/core.config.toml:/config/config.toml
## Allows for systemd Periphery connection at
## "http://host.docker.internal:8120"
# extra_hosts:
# - host.docker.internal:host-gateway
## Deploy Periphery container using this block,
## or deploy the Periphery binary with systemd using
## https://github.com/mbecker20/komodo/tree/main/scripts
periphery:
image: ghcr.io/mbecker20/periphery:${COMPOSE_KOMODO_IMAGE_TAG:-latest}
labels:
komodo.skip: # Prevent Komodo from stopping with StopAllContainers
restart: unless-stopped
logging:
driver: ${COMPOSE_LOGGING_DRIVER:-local}
networks:
- default
env_file: ./compose.env
volumes:
## Mount external docker socket
- /var/run/docker.sock:/var/run/docker.sock
## Allow Periphery to see processes outside of container
- /proc:/proc
## use self signed certs in docker volume,
## or mount your own signed certs.
- ssl-certs:/etc/komodo/ssl
## manage repos in a docker volume,
## or change it to an accessible host directory.
- repos:/etc/komodo/repos
## manage stack files in a docker volume,
## 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:
default: {}

View File

@@ -5,7 +5,9 @@ calculate_md5: false
continue_playlist_default: true
create_image_clip_from_videos: 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
defaults:
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
notifications_enabled: false
parallel_tasks: 0
password: $2a$04$T8nN490lPHZw1rf6v1Q2ze/VAn3hhgiJ6l/SSV96gBMwhmDLk/dXq
plugins:
disabled:
- VideoScrollWheel
- TPDBMarkers
- filemonitor
- markerTagToScene
- visage
package_sources:
- localpath: community
name: Community (stable)
@@ -115,21 +119,64 @@ plugins:
- localpath: stash-plugins
name: Stash-Plugins
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:
DupFileManager:
matchDupDistance: "1"
mergeDupFilename: true
zwGraylist: /data,/movies,/packs
zxBlacklist: ""
zySwapBetterBitRate: true
zySwapBetterFrameRate: true
zySwapCodec: true
zySwapHighRes: true
zySwapLongLength: true
zzDebug: true
zzObsoleteSettingsCheckVer2: true
zzTracing: true
zzdryRun: true
PerformerDetailsExtended:
additionalStyling: true
appearsMostWithGendered: true
scenesTimespanReverse: false
showWhenCollapsed: true
topTagsOn: true
totalPlayCountOn: true
cjCardTweaks:
addBannerDimension: true
fileCount: true
performerProfileCards: true
markerTagToScene:
allTags: false
stashStashIDInput:
performers: true
studios: true
stashStashIdInput:
performers: true
studios: true
tPdBmarkers:
disableSceneMarkerHook: true
tagGraph:
options: true
timestampTrade:
createMovieFromScene: false
addTimestampTradeUrl: true
addTsTradeTag: true
createMarkers: true
createMovieFromScene: true
disableGalleryLookupHook: true
disableSceneMarkersHook: false
extraUrls: false
disableSceneMarkersHook: true
extraUrls: true
mergeMarkers: true
plugins_path: /plugins/
port: 9999
@@ -174,6 +221,9 @@ stash_boxes:
- apikey: H04DEzLXkMqUBtNdS9CYOI4ek9KZb0EBSfNhTt1A87ee11b2
endpoint: https://theporndb.net/graphql
name: ThePornDB
- apikey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIwNWY4OTFiYy04MjVlLTQ1ZmQtYWFkYS0yYTc0OWE2NzgzMWQiLCJzdWIiOiJBUElLZXkiLCJpYXQiOjE3Mzk2MDkxOTF9.fMPLqqt2B3iw1qpOjMVMHmqMcorbw42Jy4WIBkyj7wo
endpoint: https://fansdb.cc/graphql
name: FansDB
theme_color: '#202b33'
ui:
advancedMode: true
@@ -298,628 +348,8 @@ ui:
excludedStudioFields:
- name
fingerprintQueue:
https://stashdb.org/graphql:
- "14115"
- "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"
https://stashdb.org/graphql: []
https://theporndb.net/graphql: []
markSceneAsOrganizedOnSave: false
mode: auto
selectedEndpoint: https://stashdb.org/graphql
@@ -931,7 +361,7 @@ ui:
cleanGenerated:
blobFiles: true
dryRun: false
imageThumbnails: false
imageThumbnails: true
markers: true
screenshots: true
sprites: true

View File

@@ -8,8 +8,6 @@ services:
## the container's port must be the same with the STASH_PORT in the environment section
networks:
- proxy-net
ports:
- "9999:9999"
expose:
- "9999"
## If you intend to use stash's DLNA functionality uncomment the below network mode and comment out the above ports section
@@ -24,6 +22,7 @@ services:
- STASH_GENERATED=/generated/
- STASH_METADATA=/metadata/
- STASH_CACHE=/cache/
- STASH_EXTERNAL_HOST=https://stash.tremendousturtle.tools
## Adjust below to change default port (9999)
- STASH_PORT=9999
volumes:
@@ -35,6 +34,7 @@ services:
- ./config:/root/.stash
## Point this at your collection.
- /media/raid/junk_transfer:/data
- /media/junk/new_transfer:/data/new_transfer
- /media/raid/stash:/stash
- /media/junk/junk:/junk
- /media/raid/junk_movies_transfer:/movies
@@ -51,6 +51,9 @@ services:
- ./data/scrapers:/scrapers
## Where to store database file
- ./data/db:/db
## Custom DupFileManager plugin
- /code/Axter-Stash-Gitea/plugins/DupFileManager:/plugins/community/DupFileManager
- /code/Axter-Stash-Gitea/plugins/DupFileManager/web:/custom_web
## Where to store generated content (screenshots,previews,transcodes,sprites)
- /media/stashapp/generated:/generated

8
tautulli/.gitignore vendored Normal file
View 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
View 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

View 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