Compare commits

..

9 Commits

Author SHA1 Message Date
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
Chris King
63edf652b7 Update settings.json for oversseerr 2025-01-13 11:49:21 -08:00
Chris King
a2dff6fdd8 Change web interface ports to use expose in docker-compose.yml instead of ports
Change any port changes in docker-compose files to use expose and the default port instead of 3001:3000
Any localhost limited ports changed to expose instead
Add requestrr to caddyfile
2025-01-13 11:49:02 -08:00
Chris King
a671b15a96 Add TLS resolvers to allow acme challenges to resolve
Configure non-docker apps to proxy to host.docker.internal
Configure triliumnext-notes to use port 8080
Add host.docker.internal to caddy docker-compose
Explicitly specify .env file for caddy container
Remove port expose for triliumnext-notes container
2025-01-13 10:59:43 -08:00
Chris King
936242e24d Merge branch 'main' into caddy-docker 2025-01-13 09:39:45 -08:00
Chris King
817723d0bf update overseerr settings.json 2025-01-13 09:37:40 -08:00
Chris King
ad9b4fef97 Updated authentik db service name to db in all locations 2025-01-12 23:49:47 -08:00
Chris King
28c734c1d2 Updated docker-compose files for use with Docker Caddy
Defined top level name for all services
Added proxy-net to services
Updated main service/server container service name to "app"
Updated hostname references to projectname-app-1
Updated docker Caddy caddyfile to reference container names
Updated docker Caddy caddyfile to use 192.168.1.234 instead of localhost for non-docker services
Adjusted caddyfile accordingly
2025-01-12 23:37:59 -08:00
15 changed files with 147 additions and 76 deletions

View File

@@ -1,10 +1,15 @@
name: actual-server
services: services:
actual_server: app:
image: docker.io/actualbudget/actual-server:latest image: docker.io/actualbudget/actual-server:latest
ports: networks:
- proxy-net
#ports:
# This line makes Actual available at port 5006 of the device you run the server on, # This line makes Actual available at port 5006 of the device you run the server on,
# i.e. http://localhost:5006. You can change the first number to change the port, if you want. # i.e. http://localhost:5006. You can change the first number to change the port, if you want.
- '5006:5006' # - '5006:5006'
expose:
- "5006"
#environment: #environment:
# - ACTUAL_LOGIN_METHOD=header # - ACTUAL_LOGIN_METHOD=header
# Uncomment any of the lines below to set configuration options. # Uncomment any of the lines below to set configuration options.
@@ -21,3 +26,7 @@ services:
# '/data' is the path Actual will look for its files in by default, so leave that as-is. # '/data' is the path Actual will look for its files in by default, so leave that as-is.
- ./data:/data - ./data:/data
restart: unless-stopped restart: unless-stopped
networks:
proxy-net:
external: true

View File

@@ -1,6 +1,6 @@
name: "authelia" name: authelia
services: services:
authelia: app:
image: authelia/authelia:latest image: authelia/authelia:latest
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
@@ -25,9 +25,9 @@ services:
AUTHELIA_AUTHENTICATION_BACKEND_FILE_PATH: /run/secrets/users_database AUTHELIA_AUTHENTICATION_BACKEND_FILE_PATH: /run/secrets/users_database
AUTHELIA_TOTP_ISSUER: tremendousturtle.tools AUTHELIA_TOTP_ISSUER: tremendousturtle.tools
AUTHELIA_ACCESS_CONTROL_DEFAULT_POLICY: deny AUTHELIA_ACCESS_CONTROL_DEFAULT_POLICY: deny
AUTHELIA_SESSION_REDIS_HOST: redis AUTHELIA_SESSION_REDIS_HOST: authelia-redis-1
AUTHELIA_SESSION_REDIS_PORT: 6379 AUTHELIA_SESSION_REDIS_PORT: 6379
AUTHELIA_STORAGE_POSTGRES_ADDRESS: tcp://database:5432 AUTHELIA_STORAGE_POSTGRES_ADDRESS: tcp://authelia-database-1:5432
AUTHELIA_STORAGE_POSTGRES_DATABASE: authelia AUTHELIA_STORAGE_POSTGRES_DATABASE: authelia
AUTHELIA_STORAGE_POSTGRES_USERNAME: authelia AUTHELIA_STORAGE_POSTGRES_USERNAME: authelia
AUTHELIA_NOTIFIER_SMTP_ADDRESS: submissions://smtp.mailgun.org:465 AUTHELIA_NOTIFIER_SMTP_ADDRESS: submissions://smtp.mailgun.org:465

View File

@@ -1,6 +1,6 @@
name: authentik name: authentik
services: services:
postgresql: db:
image: docker.io/library/postgres:16-alpine image: docker.io/library/postgres:16-alpine
restart: unless-stopped restart: unless-stopped
healthcheck: healthcheck:
@@ -29,13 +29,13 @@ services:
timeout: 3s timeout: 3s
volumes: volumes:
- redis:/data - redis:/data
server: app:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.2} image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2024.12.2}
restart: unless-stopped restart: unless-stopped
command: server command: server
environment: environment:
AUTHENTIK_REDIS__HOST: redis AUTHENTIK_REDIS__HOST: authentik-redis-1
AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__HOST: authentik-db-1
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
@@ -51,7 +51,7 @@ services:
- "${COMPOSE_PORT_HTTP:-9000}:9000" - "${COMPOSE_PORT_HTTP:-9000}:9000"
- "${COMPOSE_PORT_HTTPS:-9443}:9443" - "${COMPOSE_PORT_HTTPS:-9443}:9443"
depends_on: depends_on:
postgresql: db:
condition: service_healthy condition: service_healthy
redis: redis:
condition: service_healthy condition: service_healthy
@@ -60,8 +60,8 @@ services:
restart: unless-stopped restart: unless-stopped
command: worker command: worker
environment: environment:
AUTHENTIK_REDIS__HOST: redis AUTHENTIK_REDIS__HOST: authentik-redis-1
AUTHENTIK_POSTGRESQL__HOST: postgresql AUTHENTIK_POSTGRESQL__HOST: authentik-db-1
AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik} AUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}
AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik} AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS} AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
@@ -80,7 +80,7 @@ services:
env_file: env_file:
- .env - .env
depends_on: depends_on:
postgresql: db:
condition: service_healthy condition: service_healthy
redis: redis:
condition: service_healthy condition: service_healthy
@@ -93,4 +93,4 @@ volumes:
networks: networks:
proxy-net: proxy-net:
external: true external: true

View File

@@ -23,10 +23,11 @@
zone_token {env.CF_ZONE_TOKEN} zone_token {env.CF_ZONE_TOKEN}
api_token {env.CF_API_TOKEN} api_token {env.CF_API_TOKEN}
} }
resolvers 1.1.1.1 1.0.0.1
} }
} }
(secure) { (secure) {
forward_auth {args[0]} authelia:9091 { forward_auth {args[0]} authelia-app-1:9091 {
uri /api/authz/forward-auth uri /api/authz/forward-auth
copy_headers Remote-User Remote-Groups Remote-Name Remote-Email copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
} }
@@ -54,7 +55,15 @@
import ttt-log {args[0]} import ttt-log {args[0]}
import tls import tls
import secure * import secure *
import ttt-proxy {args[0]} {args[1]} 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) { (ttt-app-alt) {
@@ -74,43 +83,34 @@ tremendousturtle.tools {
auth.tremendousturtle.tools { auth.tremendousturtle.tools {
import tls import tls
reverse_proxy 127.0.0.1:9091 reverse_proxy authelia-app-1:9091
} }
authentik.tremendousturtle.tools { authentik.tremendousturtle.tools {
import tls import tls
reverse_proxy 127.0.0.1:9000 reverse_proxy authentik-app-1:9000
} }
# Define code.tremendousturtle.tools # Define code.tremendousturtle.tools
import ttt-app code 8020 # 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 frigate 8971
import ttt-app pihole 1080
import ttt-app stash 9999
import ttt-app sonarr 8989
import ttt-app radarr 7878
import ttt-app overseerr 5055 import ttt-app overseerr 5055
import ttt-app prowlarr 9696
import ttt-app openobserve 5080 import ttt-app openobserve 5080
import ttt-app cockpit 9090
import ttt-app budget 5006
import ttt-app gitea 3000 import ttt-app gitea 3000
import ttt-app homepage 3000
import ttt-app requestrr 4545
import ttt-app trilium 8040 # Alternate configuration (different subdomain and docker compose project name)
import ttt-app-alt budget actual-server-app-1 5006
import ttt-app notes 8040 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 import ttt-app-alt pihole1 192.168.1.116 80
import ttt-app homepage 3001

View File

@@ -1,10 +1,13 @@
name: caddy name: caddy
services: services:
caddy: app:
build: . build: .
restart: unless-stopped restart: unless-stopped
env_file: .env
networks: networks:
- proxy-net - proxy-net
extra_hosts:
- "host.docker.internal:host-gateway"
ports: ports:
- "80:80" - "80:80"
- "443:443" - "443:443"
@@ -29,4 +32,4 @@ configs:
volumes: volumes:
caddy_data: caddy_data:
caddy_config: caddy_config:

View File

@@ -1,6 +1,6 @@
name: frigate
services: services:
frigate: app:
container_name: frigate
restart: unless-stopped restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "250mb" shm_size: "250mb"
@@ -17,12 +17,15 @@ services:
target: /tmp/cache target: /tmp/cache
tmpfs: tmpfs:
size: 4000000000 size: 4000000000
networks:
- proxy-net
ports: ports:
- "8971:8971"
- "8554:8554" # RTSP feeds - "8554:8554" # RTSP feeds
- "8555:8555/tcp" # WebRTC over tcp - "8555:8555/tcp" # WebRTC over tcp
- "8555:8555/udp" # WebRTC over udp - "8555:8555/udp" # WebRTC over udp
- "5000:5000" # VS Code schema validation allowed - "5000:5000" # VS Code schema validation allowed
expose:
- "8971"
environment: environment:
LIBVA_DRIVER_NAME: "radeonsi" # FRIGATE_RTSP_PASSWORD: "69$nC*6$jADbc!" LIBVA_DRIVER_NAME: "radeonsi" # FRIGATE_RTSP_PASSWORD: "69$nC*6$jADbc!"
labels: labels:
@@ -32,5 +35,9 @@ services:
- homepage.href=https://frigate.tremendousturtle.tools/ - homepage.href=https://frigate.tremendousturtle.tools/
- homepage.description=Camera Surveillance - homepage.description=Camera Surveillance
- homepage.widget.type=frigate - homepage.widget.type=frigate
- homepage.widget.url=http://192.168.1.234:5000 - homepage.widget.url=http://frigate-app-1:5000
- homepage.widget.enableRecentEvents=true - homepage.widget.enableRecentEvents=true
networks:
proxy-net:
external: true

View File

@@ -1,30 +1,35 @@
networks: networks:
gitea: gitea:
external: false external: false
proxy-net:
external: true
name: gitea
services: services:
server: app:
image: gitea/gitea:latest image: gitea/gitea:latest
environment: environment:
USER_UID: 141 USER_UID: 141
USER_GID: 150 USER_GID: 150
GITEA__database__DB_TYPE: postgres GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: db:5432 GITEA__database__HOST: gitea-db-1:5432
GITEA__database__NAME: ${GITEA_DB_NAME} GITEA__database__NAME: ${GITEA_DB_NAME}
GITEA__database__USER: ${GITEA_DB_USER} GITEA__database__USER: ${GITEA_DB_USER}
GITEA__database__PASSWD__FILE: /run/secrets/postgres_pass GITEA__database__PASSWD__FILE: /run/secrets/postgres_pass
GITEA__server__SSH_AUTHORIZED_KEYS_COMMAND_TEMPLATE: gitea --config={{.CustomConf}} serv key-{{.Key.ID}} GITEA__server__SSH_AUTHORIZED_KEYS_COMMAND_TEMPLATE: gitea --config={{.CustomConf}} serv key-{{.Key.ID}}
restart: always restart: unless-stopped
networks: networks:
- gitea - gitea
- proxy-net
volumes: volumes:
- ./data/gitea:/data - ./data/gitea:/data
- /home/git/.ssh/:/data/git/.ssh - /home/git/.ssh/:/data/git/.ssh
- /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
ports: ports:
- "3000:3000"
- "127.0.0.1:2222:22" - "127.0.0.1:2222:22"
expose:
- "3000"
depends_on: depends_on:
- db - db
secrets: secrets:
@@ -32,7 +37,7 @@ services:
db: db:
image: postgres:14 image: postgres:14
restart: always restart: unless-stopped
environment: environment:
POSTGRES_USER: ${GITEA_DB_USER} POSTGRES_USER: ${GITEA_DB_USER}
POSTGRES_PASSWORD_FILE: /run/secrets/postgres_pass POSTGRES_PASSWORD_FILE: /run/secrets/postgres_pass

View File

@@ -6,8 +6,11 @@ services:
- dockerproxy - dockerproxy
environment: environment:
DOCKER_TEMPLATE_CREATED: true DOCKER_TEMPLATE_CREATED: true
ports: expose:
- "3001:3000" - "3000"
networks:
- proxy-net
- default
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- ./config:/app/config # Make sure your local config directory exists - ./config:/app/config # Make sure your local config directory exists
@@ -19,8 +22,12 @@ services:
- SERVICES=1 # Allow access to viewing services (necessary when using Docker Swarm) - SERVICES=1 # Allow access to viewing services (necessary when using Docker Swarm)
- TASKS=1 # Allow access to viewing tasks (necessary when using Docker Swarm) - TASKS=1 # Allow access to viewing tasks (necessary when using Docker Swarm)
- POST=0 # Disallow any POST operations (effectively read-only) - POST=0 # Disallow any POST operations (effectively read-only)
ports: expose:
- "127.0.0.1:2375:2375" - "2375"
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Mounted as read-only - /var/run/docker.sock:/var/run/docker.sock:ro # Mounted as read-only
networks:
proxy-net:
external: true

View File

@@ -16,9 +16,13 @@ services:
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- db - db
networks:
- proxy-net
- default
ports: ports:
- "5080:5080"
- "5514:5514" - "5514:5514"
expose:
- "5080"
env_file: ./secrets/openobserve.env env_file: ./secrets/openobserve.env
environment: environment:
ZO_DATA_DIR: /data ZO_DATA_DIR: /data
@@ -31,6 +35,10 @@ services:
- ./data/openobserve:/data - ./data/openobserve:/data
- ./data/stream:/stream - ./data/stream:/stream
networks:
proxy-net:
external: true
secrets: secrets:
postgres_pass: postgres_pass:
file: ./secrets/POSTGRES_PASS file: ./secrets/POSTGRES_PASS

View File

@@ -1,6 +1,10 @@
name: orbital-sync
services: services:
orbital-sync: app:
image: mattwebbio/orbital-sync:1 image: mattwebbio/orbital-sync:1
restart: unless-stopped
networks:
- proxy-net
environment: environment:
PRIMARY_HOST_BASE_URL: 'http://192.168.1.234:1080' PRIMARY_HOST_BASE_URL: 'http://192.168.1.234:1080'
PRIMARY_HOST_PASSWORD: "" PRIMARY_HOST_PASSWORD: ""
@@ -8,3 +12,7 @@ services:
SECONDARY_HOSTS_1_PASSWORD: 'e8JBq59!pwM6Ppj' SECONDARY_HOSTS_1_PASSWORD: 'e8JBq59!pwM6Ppj'
INTERVAL_MINUTES: 60 INTERVAL_MINUTES: 60
VERBOSE: true VERBOSE: true
networks:
proxy-net:
external: true

View File

@@ -33,21 +33,21 @@
"name": "4k Movies", "name": "4k Movies",
"enabled": true, "enabled": true,
"type": "movie", "type": "movie",
"lastScan": 1736789700042 "lastScan": 1736797500041
}, },
{ {
"id": "2", "id": "2",
"name": "Movies", "name": "Movies",
"enabled": true, "enabled": true,
"type": "movie", "type": "movie",
"lastScan": 1736789700053 "lastScan": 1736797500057
}, },
{ {
"id": "1", "id": "1",
"name": "TV Shows", "name": "TV Shows",
"enabled": true, "enabled": true,
"type": "show", "type": "show",
"lastScan": 1736789700096 "lastScan": 1736797500105
} }
], ],
"machineId": "5e16f8ceb511bde943f92bbe07e3e6e33307eb16" "machineId": "5e16f8ceb511bde943f92bbe07e3e6e33307eb16"

View File

@@ -8,8 +8,11 @@ services:
- TZ=America/Los_Angeles - TZ=America/Los_Angeles
networks: networks:
- proxy-net - proxy-net
- default
ports: ports:
- "5055:5055" - "5055:5055"
expose:
- "5055"
volumes: volumes:
- ./data:/app/config - ./data:/app/config
- ./config/settings.json:/app/config/settings.json - ./config/settings.json:/app/config/settings.json

View File

@@ -1,11 +1,18 @@
name: requestrr
services: services:
requestrr: app:
image: thomst08/requestrr image: thomst08/requestrr
hostname: requestrr networks:
container_name: requestrr - proxy-net
ports: ports:
- 4545:4545 - "4545:4545"
expose:
- "4545"
volumes: volumes:
- ./config:/root/config - ./config:/root/config
- ./data/tmp:/root/config/tmp - ./data/tmp:/root/config/tmp
restart: unless-stopped restart: unless-stopped
networks:
proxy-net:
external: true

View File

@@ -1,13 +1,17 @@
# APPNICENAME=Stash # APPNICENAME=Stash
# APPDESCRIPTION=An organizer for your porn, written in Go # APPDESCRIPTION=An organizer for your porn, written in Go
name: stashapp
services: services:
stash: app:
image: stashapp/stash:latest image: stashapp/stash:latest
container_name: stash
restart: unless-stopped restart: unless-stopped
## 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:
- proxy-net
ports: ports:
- "9999:9999" - "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 ## If you intend to use stash's DLNA functionality uncomment the below network mode and comment out the above ports section
# network_mode: host # network_mode: host
logging: logging:
@@ -49,3 +53,7 @@ services:
- ./data/db:/db - ./data/db:/db
## 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
networks:
proxy-net:
external: true

View File

@@ -6,9 +6,15 @@ services:
volumes: volumes:
- ./data:/home/node/trilium-data - ./data:/home/node/trilium-data
- ./config:/home/node/trilium-config - ./config:/home/node/trilium-config
ports: expose:
- "127.0.0.1:8040:8080" - "8080"
networks:
- proxy-net
environment: environment:
USER_UID: 1000 USER_UID: 1000
USER_GID: 1000 USER_GID: 1000
TRILIUM_CONFIG_INI_PATH: /home/node/trilium-config/config.ini TRILIUM_CONFIG_INI_PATH: /home/node/trilium-config/config.ini
networks:
proxy-net:
external: true