Files
news/.omo/evidence/task-21-news-triage.txt
T
connor 20a6c26f7c
Check / check (push) Failing after 1m27s
Check / guardrails (push) Failing after 39s
Check / bundle (push) Successful in 1m4s
Initial commit -- did OMO do a good job?
2026-09-01 18:29:46 -04:00

841 lines
84 KiB
Plaintext

task-21-news-triage evidence
==============================
Protected files: BEFORE stats
------------------------------
File: /home/connor/compose.yml
Size: 45902 Blocks: 96 IO Block: 4096 regular file
Device: 253,0 Inode: 3456331 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ connor) Gid: ( 1000/ connor)
Access: 2026-09-01 13:31:00.127897473 -0400
Modify: 2026-09-01 13:31:00.123329809 -0400
Change: 2026-09-01 13:31:00.123329809 -0400
Birth: 2026-09-01 09:59:16.224683093 -0400
File: /home/connor/Caddyfile
Size: 15394 Blocks: 32 IO Block: 4096 regular file
Device: 253,0 Inode: 3456314 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ connor) Gid: ( 1000/ connor)
Access: 2026-09-01 09:51:56.598569747 -0400
Modify: 2026-08-28 15:51:59.475726235 -0400
Change: 2026-08-28 15:51:59.475726235 -0400
Birth: 2026-08-26 22:10:30.165466997 -0400
File: /home/connor/data/ntfy/etc/server.yml
Size: 506 Blocks: 8 IO Block: 4096 regular file
Device: 253,0 Inode: 7224774 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ connor) Gid: ( 0/ root)
Access: 2026-09-01 17:21:22.759598097 -0400
Modify: 2026-08-20 17:25:40.623346035 -0400
Change: 2026-08-20 17:25:40.623346035 -0400
Birth: 2026-02-27 16:47:40.215201274 -0500
File: /home/connor/config/prometheus/prometheus.yml
Size: 877 Blocks: 8 IO Block: 4096 regular file
Device: 253,0 Inode: 10486193 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ connor) Gid: ( 1000/ connor)
Access: 2026-09-01 17:21:22.714596100 -0400
Modify: 2026-08-25 22:21:00.811095356 -0400
Change: 2026-08-25 22:21:00.811095356 -0400
Birth: 2026-08-25 22:21:00.810402344 -0400
QA: scratch compose.yml validation
-----------------------------------
Command: podman-compose -f /tmp/opencode/compose.yml config
networks:
default: null
internal: null
llm: null
services:
alloy:
command:
- run
- --server.http.listen-addr=0.0.0.0:12345
- --storage.path=/var/lib/alloy/data
- /etc/alloy/config.alloy
depends_on:
loki:
condition: service_started
image: docker.io/grafana/alloy:latest
networks:
- internal
restart: unless-stopped
user: 0:0
volumes:
- ./config/alloy/config.alloy:/etc/alloy/config.alloy:ro
- ./data/alloy:/var/lib/alloy/data
- ./data/caddy/logs:/var/log/caddy:ro
authelia:
environment:
AUTHELIA_IDENTITY_PROVIDERS_OIDC_HMAC_SECRET: ''
AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET: ''
AUTHELIA_SESSION_SECRET: ''
AUTHELIA_STORAGE_ENCRYPTION_KEY: ''
TZ: America/Louisville
X_AUTHELIA_CONFIG_FILTERS: template
healthcheck:
interval: 30s
retries: 3
start_period: 20s
test:
- CMD
- /app/healthcheck.sh
timeout: 5s
image: docker.io/authelia/authelia:4.39
networks:
- internal
restart: unless-stopped
volumes:
- ./config/authelia:/config
baikal:
image: ckulka/baikal:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/baikal:/var/www/baikal/config
- ./data/baikal:/var/www/baikal/Specific
bitwarden:
environment:
DOMAIN: https://bw.rcjohnstone.com
SIGNUPS_ALLOWED: 'false'
image: vaultwarden/server:latest-alpine
networks:
- internal
restart: unless-stopped
volumes:
- ./data/bitwarden:/data
caddy:
environment:
BACKEND_API_URL: https://runway.rcjohnstone.com/api
image: caddy:latest
networks:
default: null
internal: null
llm: null
ports:
- 80:80
- 443:443
restart: unless-stopped
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./config/caddy:/config
- ./data/caddy:/data
- ./data/website/dist:/srv/www:ro
- ./data/runway/web:/srv/runway:ro
- ./data/news/web:/srv/news:ro
- ./data/ssl:/certbot
- ./data/flexio/dist:/srv/flexio:ro
- ./data/caddy/logs:/var/log/caddy
croc:
environment:
CROC_PASS: ''
image: docker.io/schollz/croc
ports:
- 9009-9013:9009-9013
restart: unless-stopped
crowdsec:
environment:
COLLECTIONS: crowdsecurity/caddy crowdsecurity/http-cve crowdsecurity/base-http-scenarios
crowdsecurity/whitelist-good-actors
TZ: America/Louisville
image: docker.io/crowdsecurity/crowdsec:latest
networks:
- internal
ports:
- 127.0.0.1:8099:8080
restart: unless-stopped
volumes:
- ./config/crowdsec:/etc/crowdsec
- ./data/crowdsec:/var/lib/crowdsec/data
- ./data/caddy/logs:/var/log/caddy:ro
flexio-api:
environment:
AI_HOST: ai.rcjohnstone.com
FLEXIO_MODEL: gemma3-12b
OPENWEBUI_KEY: ''
OWNER_KEY: ''
TRAGGO_HOST: time.rcjohnstone.com
TRAGGO_TOKEN: ''
image: git.rcjohnstone.com/connor/flexio:latest
networks:
- internal
- llm
restart: unless-stopped
gitea:
environment:
USER: connor
USER_GID: '1000'
USER_UID: '1000'
image: docker.gitea.com/gitea:latest
networks:
- internal
ports:
- 2222:2222
restart: always
volumes:
- ./data/gitea:/data
- /etc/localtime:/etc/localtime:ro
grafana:
depends_on:
loki:
condition: service_started
prometheus:
condition: service_started
environment:
GF_ANALYTICS_CHECK_FOR_UPDATES: 'false'
GF_ANALYTICS_REPORTING_ENABLED: 'false'
GF_SECURITY_ADMIN_PASSWORD: ''
GF_SERVER_ROOT_URL: https://grafana.rcjohnstone.com
GF_USERS_ALLOW_SIGN_UP: 'false'
TZ: America/Louisville
image: docker.io/grafana/grafana:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/grafana/provisioning:/etc/grafana/provisioning:ro
- ./data/grafana-dashboards:/var/lib/grafana/dashboards:ro
- ./data/grafana:/var/lib/grafana
hedgedoc:
environment:
CMD_ALLOW_EMAIL_REGISTER: 'false'
CMD_DB_DIALECT: mariadb
CMD_DOMAIN: md.rcjohnstone.com
CMD_PORT: '3000'
CMD_PROTOCOL_USESSL: 'true'
CMD_URL_ADDPORT: 'false'
DB_HOST: hedgedocdb
DB_NAME: hedgedoc
DB_PASS: ''
DB_PORT: '3306'
DB_USER: hedgedoc
PGID: '1000'
PUID: '1000'
TZ: America/Louisville
image: lscr.io/linuxserver/hedgedoc:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/hedgedoc:/config
hedgedocdb:
environment:
MARIADB_DATABASE: hedgedoc
MARIADB_PASSWORD: ''
MARIADB_ROOT_PASSWORD: ''
MARIADB_USER: hedgedoc
image: docker.io/mariadb
networks:
- internal
restart: unless-stopped
volumes:
- ./data/hedgedoc:/var/lib/mysql
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
network_mode: host
privileged: true
restart: unless-stopped
volumes:
- ./config/homeassistant:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
immich:
depends_on:
immich_cache:
condition: service_started
immich_db:
condition: service_started
environment:
DB_DATABASE_NAME: ''
DB_HOSTNAME: immich_db
DB_PASSWORD: ''
DB_USERNAME: ''
IMMICH_VERSION: ''
MACHINE_LEARNING_DEVICE_IDS: 0,1
MACHINE_LEARNING_WORKERS: '2'
REDIS_HOSTNAME: immich_cache
image: ghcr.io/immich-app/immich-server:release
networks:
- internal
restart: unless-stopped
volumes:
- /home/connor/photo/immich:/data
- /etc/localtime:/etc/localtime:ro
immich_cache:
healthcheck:
test: redis-cli ping || exit 1
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
networks:
- internal
restart: always
volumes:
- ./data/immich/valkey:/data/
immich_db:
environment:
POSTGRES_DB: ''
POSTGRES_INITDB_ARGS: --data-checksums
POSTGRES_PASSWORD: ''
POSTGRES_USER: ''
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:41eacbe83eca995561fe43814fd4891e16e39632806253848efaf04d3c8a8b84
networks:
- internal
restart: always
shm_size: 128mb
volumes:
- ./data/immich/postgres:/var/lib/postgresql/data
immich_machine_learning:
devices:
- nvidia.com/gpu=all
environment:
DB_DATABASE_NAME: ''
DB_HOSTNAME: immich_db
DB_PASSWORD: ''
DB_USERNAME: ''
IMMICH_VERSION: ''
MACHINE_LEARNING_DEVICE_IDS: 0,1
MACHINE_LEARNING_WORKERS: '2'
REDIS_HOSTNAME: immich_cache
healthcheck:
disable: false
image: ghcr.io/immich-app/immich-machine-learning:release-cuda
networks:
- internal
restart: always
volumes:
- model-cache:/cache
jellyfin:
devices:
- /dev/dri:/dev/dri
environment:
JELLYFIN_PublishedServerUrl: jellyfin.rcjohnstone.com
PGID: '1000'
PUID: '1000'
TZ: America/Louisville
group_add:
- '989'
image: lscr.io/linuxserver/jellyfin:latest
networks:
- internal
ports:
- 7359:7359/udp
- 1900:1900/udp
- 8020:8096
restart: unless-stopped
volumes:
- ./config/jellyfin:/config
- ./data/jellyfin:/cache
- /home/connor/video:/video
- /home/connor/audio:/audio
- /home/connor/books:/books
jellyseerr:
environment:
LOG_LEVEL: debug
TZ: America/Louisville
image: fallenbagel/jellyseerr:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/jellyseer:/app/config
- /home/connor/video:/video
- /home/connor/audio:/audio
- /home/connor/books:/books
lazylibrarian:
environment:
DOCKER_MODS: linuxserver/mods:universal-calibre|linuxserver/mods:lazylibrarian-ffmpeg
PGID: '1000'
PUID: '1000'
TZ: America/Louisville
image: lscr.io/linuxserver/lazylibrarian:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/lazylibrarian:/config
- /home/connor/downloads:/downloads
- /home/connor/books:/books
lidarr:
environment:
PGID: '1000'
PUID: '1000'
TZ: America/Louisville
image: lscr.io/linuxserver/lidarr:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/lidarr:/config
- /home/connor/downloads:/data
- /home/connor/video:/video
- /home/connor/audio:/audio
- /home/connor/books:/books
litellm:
command:
- --config
- /app/config.yaml
- --port
- '4000'
depends_on:
litellm-db:
condition: service_healthy
environment:
ANTHROPIC_API_KEY: ''
DATABASE_URL: postgresql://litellm:@litellm-db:5432/litellm
GENERIC_AUTHORIZATION_ENDPOINT: https://auth.rcjohnstone.com/api/oidc/authorization
GENERIC_CLIENT_ID: litellm
GENERIC_CLIENT_SECRET: ''
GENERIC_SCOPE: openid email profile groups
GENERIC_TOKEN_ENDPOINT: https://auth.rcjohnstone.com/api/oidc/token
GENERIC_USERINFO_ENDPOINT: https://auth.rcjohnstone.com/api/oidc/userinfo
LITELLM_MASTER_KEY: ''
MOONSHOT_API_KEY: ''
OPENAI_API_KEY: ''
OPENCODE_ZEN_API_KEY: ''
PROXY_ADMIN_ID: connor
PROXY_BASE_URL: https://llm.rcjohnstone.com
STORE_MODEL_IN_DB: 'False'
UI_PASSWORD: ''
UI_USERNAME: ''
healthcheck:
interval: 60s
retries: 3
start_period: 90s
test:
- CMD-SHELL
- /app/.venv/bin/python3 -c "import urllib.request as u,sys; sys.exit(0 if u.urlopen('http://127.0.0.1:4000/health/liveliness',timeout=4).status==200
and u.urlopen('http://llama-swap:8080/v1/models',timeout=4).status==200 else
1)"
timeout: 5s
image: ghcr.io/berriai/litellm:main-stable
networks:
- internal
- llm
ports:
- 127.0.0.1:4000:4000
restart: unless-stopped
volumes:
- ./config/litellm/config.yaml:/app/config.yaml:ro
litellm-db:
environment:
POSTGRES_DB: litellm
POSTGRES_INITDB_ARGS: --data-checksums
POSTGRES_PASSWORD: ''
POSTGRES_USER: litellm
healthcheck:
interval: 30s
retries: 5
start_period: 300s
test:
- CMD-SHELL
- pg_isready -U litellm -d litellm
timeout: 5s
image: docker.io/library/postgres:16-alpine
networks:
- internal
restart: unless-stopped
volumes:
- ./data/litellm-db:/var/lib/postgresql/data
llama-swap:
command:
- --config
- /app/config.yaml
- --listen
- :8080
cpuset: 0-7
devices:
- nvidia.com/gpu=all
image: ghcr.io/mostlygeek/llama-swap:cuda
networks:
- internal
- llm
ports:
- 127.0.0.1:8188:8080
restart: unless-stopped
volumes:
- /opt/llama-models:/models:ro
- ./config/llama-swap/config.yaml:/app/config.yaml:ro
loki:
command:
- -config.file=/etc/loki/loki.yaml
image: docker.io/grafana/loki:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/loki/loki.yaml:/etc/loki/loki.yaml:ro
- ./data/loki:/loki
news-backend:
environment:
NEWS_DATABASE_URL: sqlite:///db/news.db
NTFY_PASS: ''
NTFY_URL: ''
NTFY_USER: ''
TZ: America/Louisville
healthcheck:
interval: 30s
retries: 3
start_period: 5s
test:
- CMD
- curl
- -f
- http://localhost:3000/healthz
timeout: 5s
image: git.rcjohnstone.com/connor/news:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./data/news/db:/db
- ./config/news:/config:ro
node-exporter:
command:
- --path.rootfs=/host
- --collector.systemd
image: quay.io/prometheus/node-exporter:latest
network_mode: host
pid: host
restart: unless-stopped
volumes:
- /:/host:ro,rslave
ntfy:
command:
- serve
environment:
TZ: America/Louisville
healthcheck:
interval: 60s
retries: 3
start_period: 40s
test:
- CMD-SHELL
- wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '"healthy"\s*:\s*true'
|| exit 1
timeout: 10s
image: binwiederhier/ntfy
init: true
networks:
- internal
restart: unless-stopped
volumes:
- ./data/ntfy/cache:/var/cache/ntfy
- ./data/ntfy/etc:/etc/ntfy
- ./data/ntfy/lib:/var/lib/ntfy
ollama-webui:
depends_on:
litellm:
condition: service_started
environment:
DEFAULT_MODELS: gpt-oss-20b
ENABLE_OLLAMA_API: 'False'
ENV: prod
OPENAI_API_BASE_URLS: http://litellm:4000/v1
OPENAI_API_KEYS: ''
TASK_MODEL_EXTERNAL: gpt-oss-20b
WEBUI_AUTH: 'True'
WEBUI_NAME: Connor Johnstone AI
WEBUI_SECRET_KEY: ''
WEBUI_URL: https://ai.rcjohnstone.com
image: ghcr.io/open-webui/open-webui:main
networks:
- llm
restart: unless-stopped
volumes:
- ./data/ollama-webui:/app/backend/data
personal_site_backend:
environment:
SMTP_PASSWORD: ''
SMTP_USERNAME: ''
image: git.rcjohnstone.com/connor/personal-site/backend:latest
networks:
- internal
ports:
- 127.0.0.1:8001:8080
restart: unless-stopped
personal_site_frontend:
environment:
BACKEND_URL: http://personal_site_backend:8080/email
image: git.rcjohnstone.com/connor/personal-site/frontend:latest
networks:
- internal
volumes:
- ./data/website/dist:/srv/app/dist
- ./data/website/static:/srv/app/static
prometheus:
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --storage.tsdb.retention.time=90d
- --web.enable-lifecycle
extra_hosts:
- host.containers.internal:host-gateway
image: docker.io/prom/prometheus:latest
networks:
- internal
restart: unless-stopped
user: 0:0
volumes:
- ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./data/prometheus:/prometheus
prowlarr:
environment:
PGID: '1000'
PUID: '1000'
TZ: America/Louisville
image: lscr.io/linuxserver/prowlarr:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/prowlarr:/config
- /home/connor/downloads:/data
- /home/connor/video:/video
- /home/connor/audio:/audio
- /home/connor/books:/books
radarr:
environment:
PGID: '1000'
PUID: '1000'
TZ: America/Louisville
image: lscr.io/linuxserver/radarr:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/radarr:/config
- /home/connor/downloads:/data
- /home/connor/video:/video
- /home/connor/audio:/audio
- /home/connor/books:/books
runway-backend:
environment:
RUNWAY_DATABASE_URL: sqlite:///db/runway.db
RUNWAY_SECRET_KEY: ''
TZ: America/Louisville
image: git.rcjohnstone.com/connor/runway:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./data/runway/db:/db
searxng-core:
image: docker.io/searxng/searxng:latest
networks:
- internal
restart: always
volumes:
- ./config/searxng:/etc/searxng/:Z
- core-data:/var/cache/searxng/
searxng-valkey:
command:
- valkey-server
- --save
- '30'
- '1'
- --loglevel
- warning
image: docker.io/valkey/valkey:9-alpine
networks:
- internal
restart: always
volumes:
- valkey-data:/data/
sftpgo:
environment:
SFTPGO_WEBDAVD__BINDINGS__0__PORT: '10080'
image: drakkan/sftpgo:latest
networks:
- internal
ports:
- 2022:2022
restart: unless-stopped
volumes:
- /home/connor/video:/srv/sftpgo/data/video
- /home/connor/audio:/srv/sftpgo/data/audio
- /home/connor/docs:/var/lib/sftpgo
- ./data/sftpgo_backups:/srv/sftpgo/backups
shanty:
environment:
SHANTY_FANART_API_KEY: ''
SHANTY_LASTFM_API_KEY: ''
SHANTY_LASTFM_API_SECRET: ''
SHANTY_WEB_BIND: 0.0.0.0
image: git.rcjohnstone.com/connor/shanty:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/shanty:/config
- /usr/local/shanty:/data
- /home/connor/audio/shanty:/music
sonarr:
environment:
PGID: '1000'
PUID: '1000'
TZ: America/Louisville
image: lscr.io/linuxserver/sonarr:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./config/sonarr:/config
- /home/connor/downloads:/data
- /home/connor/video:/video
- /home/connor/audio:/audio
- /home/connor/books:/books
syncthing:
image: syncthing/syncthing
networks:
- internal
ports:
- 22000:22000/tcp
- 22000:22000/udp
- 21027:21027/udp
restart: unless-stopped
volumes:
- syncthing-home:/var/syncthing
- /home/connor/docs:/var/syncthing/Sync
- ./config/syncthing:/var/syncthing/config
traggo:
environment:
TRAGGO_DATABASE_CONNECTION: data/traggo.db
TRAGGO_DATABASE_DIALECT: sqlite3
TRAGGO_DEFAULT_USER_NAME: ''
TRAGGO_DEFAULT_USER_PASS: ''
TRAGGO_LOG_LEVEL: info
TRAGGO_PORT: '3030'
TZ: America/Louisville
image: docker.io/traggo/server:latest
networks:
- internal
restart: unless-stopped
volumes:
- ./data/traggo:/opt/traggo/data
transmission:
cap_add:
- NET_ADMIN
- MKNOD
devices:
- /dev/net/tun
environment:
GLOBAL_APPLY_PERMISSIONS: 'false'
LOCAL_NETWORK: 192.168.0.0/16
OPENVPN_CONFIG: ca_vancouver
OPENVPN_PASSWORD: ''
OPENVPN_PROVIDER: PIA
OPENVPN_USERNAME: ''
PGID: '1000'
PUID: '1000'
TRANSMISSION_RPC_AUTHENTICATION_REQUIRED: 'true'
TRANSMISSION_RPC_PASSWORD: ''
TRANSMISSION_RPC_USERNAME: ''
TRANSMISSION_WEBUI: combustion
image: haugene/transmission-openvpn
logging:
driver: json-file
options:
max-size: 10m
networks:
default: null
internal: null
ports:
- 21028:21028
restart: unless-stopped
volumes:
- ./config/transmission:/config
- /home/connor/downloads:/data
viseron:
devices:
- nvidia.com/gpu=all
image: roflcoopter/amd64-cuda-viseron:latest
networks:
- internal
restart: unless-stopped
shm_size: 1024mb
volumes:
- /home/connor/video/viseron/segments:/segments
- /home/connor/video/viseron/snapshots:/snapshots
- /home/connor/video/viseron/thumbnails:/thumbnails
- /home/connor/video/viseron/event_clips:/event_clips
- /home/connor/video/viseron/timelapse:/timelapse
- ./config/viseron:/config
- ./config/viseron-init/10-adduser:/etc/cont-init.d/10-adduser:ro
- /etc/localtime:/etc/localtime:ro
whisparr:
environment:
PGID: '1000'
PUID: '1000'
TZ: America/Louisville
WEBUI_PORTS: 6969/tcp
image: ghcr.io/hotio/whisparr
networks:
- internal
restart: unless-stopped
volumes:
- ./config/whisparr:/config
- /home/connor/downloads:/data
- /home/connor/video:/video
- /home/connor/audio:/audio
- /home/connor/books:/books
volumes:
core-data: null
model-cache: null
syncthing-home: null
valkey-data: null
EXIT: 0
QA: scratch Caddyfile validation
---------------------------------
Command (non-root): caddy validate --config /tmp/opencode/Caddyfile
{"level":"info","ts":1788297896.0972424,"msg":"using config from file","file":"/tmp/opencode/Caddyfile"}
{"level":"info","ts":1788297896.1206155,"msg":"adapted config to JSON","adapter":"caddyfile"}
Error: setting up custom log 'log15': opening log writer using &logging.FileWriter{Filename:"/var/log/caddy/access.log", Mode:0x0, DirMode:"", Roll:(*bool)(nil), RollSizeMB:20, RollInterval:0, RollAtMinutes:[]int(nil), RollAt:[]string(nil), RollCompress:(*bool)(nil), RollCompression:"", RollLocalTime:false, RollKeep:10, RollKeepDays:0, BackupTimeFormat:""}: open /var/log/caddy/access.log: permission denied
EXIT: 1
Command (root, because /var/log/caddy is owned by caddy:caddy): sudo caddy validate --config /tmp/opencode/Caddyfile
{"level":"info","ts":1788297896.2967246,"msg":"using config from file","file":"/tmp/opencode/Caddyfile"}
{"level":"info","ts":1788297896.3153973,"msg":"adapted config to JSON","adapter":"caddyfile"}
2026/09/01 21:24:56.319 INFO http.auto_https enabling automatic HTTP->HTTPS redirects {"server_name": "srv0"}
2026/09/01 21:24:56.319 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0x1e8126d7de00"}
2026/09/01 21:24:56.319 WARN http.auto_https server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server {"server_name": "srv1", "http_port": 80}
2026/09/01 21:24:56.333 INFO tls.cache.maintenance stopped background certificate maintenance {"cache": "0x1e8126d7de00"}
2026/09/01 21:24:56.333 INFO http servers shutting down with eternal grace period
Valid configuration
EXIT: 0
Command (non-root parse proof): caddy adapt --config /tmp/opencode/Caddyfile
{"logging":{"logs":{"default":{"writer":{"output":"stderr"},"encoder":{"format":"console"},"exclude":["http.log.access","http.log.access.log0","http.log.access.log1","http.log.access.log10","http.log.access.log11","http.log.access.log12","http.log.access.log13","http.log.access.log14","http.log.access.log15","http.log.access.log16","http.log.access.log17","http.log.access.log18","http.log.access.log19","http.log.access.log2","http.log.access.log20","http.log.access.log21","http.log.access.log22","http.log.access.log23","http.log.access.log24","http.log.access.log25","http.log.access.log26","http.log.access.log27","http.log.access.log28","http.log.access.log29","http.log.access.log3","http.log.access.log30","http.log.access.log31","http.log.access.log32","http.log.access.log4","http.log.access.log5","http.log.access.log6","http.log.access.log7","http.log.access.log8","http.log.access.log9"]},"log0":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log0"]},"log1":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log1"]},"log10":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log10"]},"log11":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log11"]},"log12":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log12"]},"log13":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log13"]},"log14":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log14"]},"log15":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log15"]},"log16":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log16"]},"log17":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log17"]},"log18":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log18"]},"log19":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log19"]},"log2":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log2"]},"log20":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log20"]},"log21":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log21"]},"log22":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log22"]},"log23":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log23"]},"log24":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log24"]},"log25":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log25"]},"log26":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log26"]},"log27":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log27"]},"log28":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log28"]},"log29":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log29"]},"log3":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log3"]},"log30":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log30"]},"log31":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log31"]},"log32":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log32"]},"log4":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log4"]},"log5":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log5"]},"log6":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log6"]},"log7":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log7"]},"log8":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log8"]},"log9":{"writer":{"filename":"/var/log/caddy/access.log","output":"file","roll_keep":10,"roll_size_mb":20},"encoder":{"fields":{"request\u003euri":{"actions":[{"parameter":"p","type":"replace","value":"REDACTED"},{"parameter":"t","type":"replace","value":"REDACTED"},{"parameter":"s","type":"replace","value":"REDACTED"},{"parameter":"password","type":"replace","value":"REDACTED"},{"parameter":"token","type":"replace","value":"REDACTED"},{"parameter":"access_token","type":"replace","value":"REDACTED"},{"parameter":"apikey","type":"replace","value":"REDACTED"},{"parameter":"api_key","type":"replace","value":"REDACTED"}],"filter":"query"}},"format":"filter","wrap":{"format":"json"}},"include":["http.log.access.log9"]}}},"apps":{"http":{"servers":{"srv0":{"listen":[":443"],"routes":[{"match":[{"host":["lazylibrarian.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"lazylibrarian:5299"}]}]}]}],"terminal":true},{"match":[{"host":["transmission.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"transmission:9091"}]}]}]}],"terminal":true},{"match":[{"host":["jellyseerr.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handle_response":[{"match":{"status_code":[2]},"routes":[{"handle":[{"handler":"vars"}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Email"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Email":["{http.reverse_proxy.header.Remote-Email}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Email}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Groups"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Groups":["{http.reverse_proxy.header.Remote-Groups}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Groups}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Name"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Name":["{http.reverse_proxy.header.Remote-Name}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Name}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-User"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-User":["{http.reverse_proxy.header.Remote-User}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-User}":[""]}}]}]}]}],"handler":"reverse_proxy","headers":{"request":{"set":{"X-Forwarded-Method":["{http.request.method}"],"X-Forwarded-Uri":["{http.request.uri}"]}}},"rewrite":{"method":"GET","uri":"/api/authz/forward-auth"},"upstreams":[{"dial":"authelia:9091"}]},{"handler":"reverse_proxy","upstreams":[{"dial":"jellyseerr:5055"}]}]}]}],"terminal":true},{"match":[{"host":["llama-swap.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"flush_interval":-1,"handler":"reverse_proxy","transport":{"dial_timeout":10000000000,"protocol":"http","read_timeout":900000000000,"write_timeout":900000000000},"upstreams":[{"dial":"llama-swap:8080"}]}]}]}],"terminal":true},{"match":[{"host":["jellyfin.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"jellyfin:8096"}]}]}]}],"terminal":true},{"match":[{"host":["prowlarr.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"prowlarr:9696"}]}]}]}],"terminal":true},{"match":[{"host":["whisparr.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"whisparr:6969"}]}]}]}],"terminal":true},{"match":[{"host":["backend.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"personal_site_backend:8080"}]}]}]}],"terminal":true},{"match":[{"host":["grafana.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"grafana:3000"}]}]}]}],"terminal":true},{"match":[{"host":["runway.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handle_response":[{"match":{"status_code":[2]},"routes":[{"handle":[{"handler":"vars"}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Email"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Email":["{http.reverse_proxy.header.Remote-Email}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Email}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Groups"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Groups":["{http.reverse_proxy.header.Remote-Groups}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Groups}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Name"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Name":["{http.reverse_proxy.header.Remote-Name}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Name}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-User"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-User":["{http.reverse_proxy.header.Remote-User}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-User}":[""]}}]}]}]}],"handler":"reverse_proxy","headers":{"request":{"set":{"X-Forwarded-Method":["{http.request.method}"],"X-Forwarded-Uri":["{http.request.uri}"]}}},"rewrite":{"method":"GET","uri":"/api/authz/forward-auth"},"upstreams":[{"dial":"authelia:9091"}]}]},{"group":"group19","handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"runway-backend:3000"}]}]}]}],"match":[{"path":["/api","/api/*"]}]},{"group":"group19","handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"vars","root":"/srv/runway/dist"}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html"]}}]},{"handle":[{"handler":"file_server","hide":["/tmp/opencode/Caddyfile"]}]}]}]}]}],"terminal":true},{"match":[{"host":["baikal.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"baikal:80"}]}]}]}],"terminal":true},{"match":[{"host":["shanty.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"group":"group22","handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"shanty:8085"}]}]}]}],"match":[{"path":["/rest/*"]}]},{"group":"group22","handle":[{"handler":"subroute","routes":[{"handle":[{"handle_response":[{"match":{"status_code":[2]},"routes":[{"handle":[{"handler":"vars"}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Email"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Email":["{http.reverse_proxy.header.Remote-Email}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Email}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Groups"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Groups":["{http.reverse_proxy.header.Remote-Groups}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Groups}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Name"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Name":["{http.reverse_proxy.header.Remote-Name}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Name}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-User"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-User":["{http.reverse_proxy.header.Remote-User}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-User}":[""]}}]}]}]}],"handler":"reverse_proxy","headers":{"request":{"set":{"X-Forwarded-Method":["{http.request.method}"],"X-Forwarded-Uri":["{http.request.uri}"]}}},"rewrite":{"method":"GET","uri":"/api/authz/forward-auth"},"upstreams":[{"dial":"authelia:9091"}]},{"handler":"reverse_proxy","upstreams":[{"dial":"shanty:8085"}]}]}]}]}]}],"terminal":true},{"match":[{"host":["flexio.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"group":"group24","handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"flexio-api:8080"}]}]}]}],"match":[{"path":["/api/*"]}]},{"group":"group24","handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"vars","root":"/srv/flexio"}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html"]}}]},{"handle":[{"encodings":{"gzip":{},"zstd":{}},"handler":"encode","prefer":["gzip","zstd"]},{"handler":"file_server","hide":["/tmp/opencode/Caddyfile"]}]}]}]}]}],"terminal":true},{"match":[{"host":["radarr.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"radarr:7878"}]}]}]}],"terminal":true},{"match":[{"host":["sonarr.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"sonarr:8989"}]}]}]}],"terminal":true},{"match":[{"host":["lidarr.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"lidarr:8686"}]}]}]}],"terminal":true},{"match":[{"host":["search.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"searxng-core:8080"}]}]}]}],"terminal":true},{"match":[{"host":["camera.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handle_response":[{"match":{"status_code":[2]},"routes":[{"handle":[{"handler":"vars"}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Email"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Email":["{http.reverse_proxy.header.Remote-Email}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Email}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Groups"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Groups":["{http.reverse_proxy.header.Remote-Groups}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Groups}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Name"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Name":["{http.reverse_proxy.header.Remote-Name}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Name}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-User"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-User":["{http.reverse_proxy.header.Remote-User}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-User}":[""]}}]}]}]}],"handler":"reverse_proxy","headers":{"request":{"set":{"X-Forwarded-Method":["{http.request.method}"],"X-Forwarded-Uri":["{http.request.uri}"]}}},"rewrite":{"method":"GET","uri":"/api/authz/forward-auth"},"upstreams":[{"dial":"authelia:9091"}]},{"handler":"reverse_proxy","upstreams":[{"dial":"viseron:8888"}]}]}]}],"terminal":true},{"match":[{"host":["photo.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"immich:2283"}]}]}]}],"terminal":true},{"match":[{"host":["files.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"sftpgo:10080"}]}]}]}],"terminal":true},{"match":[{"host":["auth.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"authelia:9091"}]}]}]}],"terminal":true},{"match":[{"host":["ntfy.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"ntfy:80"}]}]}]}],"terminal":true},{"match":[{"host":["time.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"group":"group35","handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"traggo:3030"}]}]}]}],"match":[{"path":["/graphql"],"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16"]}}]},{"group":"group35","handle":[{"handler":"subroute","routes":[{"handle":[{"handle_response":[{"match":{"status_code":[2]},"routes":[{"handle":[{"handler":"vars"}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Email"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Email":["{http.reverse_proxy.header.Remote-Email}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Email}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Groups"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Groups":["{http.reverse_proxy.header.Remote-Groups}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Groups}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Name"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Name":["{http.reverse_proxy.header.Remote-Name}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Name}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-User"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-User":["{http.reverse_proxy.header.Remote-User}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-User}":[""]}}]}]}]}],"handler":"reverse_proxy","headers":{"request":{"set":{"X-Forwarded-Method":["{http.request.method}"],"X-Forwarded-Uri":["{http.request.uri}"]}}},"rewrite":{"method":"GET","uri":"/api/authz/forward-auth"},"upstreams":[{"dial":"authelia:9091"}]},{"handler":"reverse_proxy","upstreams":[{"dial":"traggo:3030"}]}]}]}]}]}],"terminal":true},{"match":[{"host":["sftp.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handle_response":[{"match":{"status_code":[2]},"routes":[{"handle":[{"handler":"vars"}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Email"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Email":["{http.reverse_proxy.header.Remote-Email}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Email}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Groups"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Groups":["{http.reverse_proxy.header.Remote-Groups}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Groups}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Name"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Name":["{http.reverse_proxy.header.Remote-Name}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Name}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-User"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-User":["{http.reverse_proxy.header.Remote-User}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-User}":[""]}}]}]}]}],"handler":"reverse_proxy","headers":{"request":{"set":{"X-Forwarded-Method":["{http.request.method}"],"X-Forwarded-Uri":["{http.request.uri}"]}}},"rewrite":{"method":"GET","uri":"/api/authz/forward-auth"},"upstreams":[{"dial":"authelia:9091"}]},{"handler":"reverse_proxy","upstreams":[{"dial":"sftpgo:8080"}]}]}]}],"terminal":true},{"match":[{"host":["sync.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"syncthing:8384"}]}]}]}],"terminal":true},{"match":[{"host":["news.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"group":"group39","handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"reverse_proxy","upstreams":[{"dial":"news-backend:3000"}]}]}]}],"match":[{"path":["/api","/api/*"]}]},{"group":"group39","handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"vars","root":"/srv/news/dist"}]},{"handle":[{"handler":"rewrite","uri":"{http.matchers.file.relative}"}],"match":[{"file":{"try_files":["{http.request.uri.path}","/index.html"]}}]},{"handle":[{"handler":"file_server","hide":["/tmp/opencode/Caddyfile"]}]}]}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]}]}],"terminal":true},{"match":[{"host":["git.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"gitea:3000"}]}]}]}],"terminal":true},{"match":[{"host":["llm.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}}]},{"handle":[{"abort":true,"handler":"static_response"}],"match":[{"not":[{"remote_ip":{"ranges":["10.0.0.0/24","10.0.1.0/24","10.89.0.0/16","127.0.0.1/32"]}}]}]},{"handle":[{"flush_interval":-1,"handler":"reverse_proxy","transport":{"dial_timeout":10000000000,"protocol":"http","read_timeout":900000000000,"write_timeout":900000000000},"upstreams":[{"dial":"litellm:4000"}]}]}]}],"terminal":true},{"match":[{"host":["bw.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"reverse_proxy","upstreams":[{"dial":"bitwarden:80"}]}]}]}],"terminal":true},{"match":[{"host":["md.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handle_response":[{"match":{"status_code":[2]},"routes":[{"handle":[{"handler":"vars"}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Email"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Email":["{http.reverse_proxy.header.Remote-Email}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Email}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Groups"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Groups":["{http.reverse_proxy.header.Remote-Groups}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Groups}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Name"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Name":["{http.reverse_proxy.header.Remote-Name}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Name}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-User"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-User":["{http.reverse_proxy.header.Remote-User}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-User}":[""]}}]}]}]}],"handler":"reverse_proxy","headers":{"request":{"set":{"X-Forwarded-Method":["{http.request.method}"],"X-Forwarded-Uri":["{http.request.uri}"]}}},"rewrite":{"method":"GET","uri":"/api/authz/forward-auth"},"upstreams":[{"dial":"authelia:9091"}]},{"handler":"reverse_proxy","upstreams":[{"dial":"hedgedoc:3000"}]}]}]}],"terminal":true},{"match":[{"host":["ai.rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handle_response":[{"match":{"status_code":[2]},"routes":[{"handle":[{"handler":"vars"}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Email"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Email":["{http.reverse_proxy.header.Remote-Email}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Email}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Groups"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Groups":["{http.reverse_proxy.header.Remote-Groups}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Groups}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-Name"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-Name":["{http.reverse_proxy.header.Remote-Name}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-Name}":[""]}}]}]},{"handle":[{"handler":"headers","request":{"delete":["Remote-User"]}}]},{"handle":[{"handler":"headers","request":{"set":{"Remote-User":["{http.reverse_proxy.header.Remote-User}"]}}}],"match":[{"not":[{"vars":{"{http.reverse_proxy.header.Remote-User}":[""]}}]}]}]}],"handler":"reverse_proxy","headers":{"request":{"set":{"X-Forwarded-Method":["{http.request.method}"],"X-Forwarded-Uri":["{http.request.uri}"]}}},"rewrite":{"method":"GET","uri":"/api/authz/forward-auth"},"upstreams":[{"dial":"authelia:9091"}]},{"handler":"reverse_proxy","upstreams":[{"dial":"ollama-webui:8080"}]}]}]}],"terminal":true},{"match":[{"host":["rcjohnstone.com"]}],"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"vars","root":"/srv/www"},{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"file_server","hide":["/tmp/opencode/Caddyfile"]}]}]}],"terminal":true},{"handle":[{"handler":"subroute","routes":[{"handle":[{"handler":"vars","root":"/srv/www"},{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"file_server","hide":["/tmp/opencode/Caddyfile"]}]}]}],"terminal":true}],"tls_connection_policies":[{"default_sni":"rconnorjohnstone.com"}],"logs":{"default_logger_name":"log32","logger_names":{"ai.rcjohnstone.com":["log14"],"auth.rcjohnstone.com":["log0"],"backend.rcjohnstone.com":["log2"],"baikal.rcjohnstone.com":["log10"],"bw.rcjohnstone.com":["log3"],"camera.rcjohnstone.com":["log31"],"files.rcjohnstone.com":["log16"],"flexio.rcjohnstone.com":["log17"],"git.rcjohnstone.com":["log7"],"grafana.rcjohnstone.com":["log29"],"jellyfin.rcjohnstone.com":["log6"],"jellyseerr.rcjohnstone.com":["log8"],"lazylibrarian.rcjohnstone.com":["log24"],"lidarr.rcjohnstone.com":["log22"],"llama-swap.rcjohnstone.com":["log28"],"llm.rcjohnstone.com":["log27"],"md.rcjohnstone.com":["log11"],"news.rcjohnstone.com":["log30"],"ntfy.rcjohnstone.com":["log4"],"photo.rcjohnstone.com":["log5"],"prowlarr.rcjohnstone.com":["log19"],"radarr.rcjohnstone.com":["log20"],"rcjohnstone.com":["log1"],"runway.rcjohnstone.com":["log9"],"search.rcjohnstone.com":["log26"],"sftp.rcjohnstone.com":["log15"],"shanty.rcjohnstone.com":["log13"],"sonarr.rcjohnstone.com":["log21"],"sync.rcjohnstone.com":["log25"],"time.rcjohnstone.com":["log12"],"transmission.rcjohnstone.com":["log18"],"whisparr.rcjohnstone.com":["log23"]}}},"srv1":{"listen":[":80"],"routes":[{"handle":[{"handler":"vars","root":"/srv/www"},{"handler":"headers","response":{"require":{"headers":{"Referrer-Policy":null,"Strict-Transport-Security":null,"X-Content-Type-Options":null,"X-Frame-Options":null}},"set":{"Referrer-Policy":["strict-origin-when-cross-origin"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains"],"X-Content-Type-Options":["nosniff"],"X-Frame-Options":["SAMEORIGIN"]}}},{"handler":"file_server","hide":["/tmp/opencode/Caddyfile"]}]}],"logs":{"default_logger_name":"log32"}},"srv2":{"listen":[":9010"],"routes":[{"match":[{"path":["/metrics"]}],"handle":[{"handler":"metrics"}]}]}},"metrics":{}},"tls":{"automation":{"policies":[{"subjects":["lazylibrarian.rcjohnstone.com","llama-swap.rcjohnstone.com","grafana.rcjohnstone.com","news.rcjohnstone.com","llm.rcjohnstone.com"],"issuers":[{"module":"internal"}],"key_type":"rsa4096"},{"issuers":[{"email":"c@rcjohnstone.com","module":"acme"},{"ca":"https://acme.zerossl.com/v2/DV90","email":"c@rcjohnstone.com","module":"acme"}],"key_type":"rsa4096"}]}}}}
EXIT: 0
Protected files: AFTER stats
-----------------------------
File: /home/connor/compose.yml
Size: 45902 Blocks: 96 IO Block: 4096 regular file
Device: 253,0 Inode: 3456331 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ connor) Gid: ( 1000/ connor)
Access: 2026-09-01 13:31:00.127897473 -0400
Modify: 2026-09-01 13:31:00.123329809 -0400
Change: 2026-09-01 13:31:00.123329809 -0400
Birth: 2026-09-01 09:59:16.224683093 -0400
File: /home/connor/Caddyfile
Size: 15394 Blocks: 32 IO Block: 4096 regular file
Device: 253,0 Inode: 3456314 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ connor) Gid: ( 1000/ connor)
Access: 2026-09-01 09:51:56.598569747 -0400
Modify: 2026-08-28 15:51:59.475726235 -0400
Change: 2026-08-28 15:51:59.475726235 -0400
Birth: 2026-08-26 22:10:30.165466997 -0400
File: /home/connor/data/ntfy/etc/server.yml
Size: 506 Blocks: 8 IO Block: 4096 regular file
Device: 253,0 Inode: 7224774 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ connor) Gid: ( 0/ root)
Access: 2026-09-01 17:21:22.759598097 -0400
Modify: 2026-08-20 17:25:40.623346035 -0400
Change: 2026-08-20 17:25:40.623346035 -0400
Birth: 2026-02-27 16:47:40.215201274 -0500
File: /home/connor/config/prometheus/prometheus.yml
Size: 877 Blocks: 8 IO Block: 4096 regular file
Device: 253,0 Inode: 10486193 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ connor) Gid: ( 1000/ connor)
Access: 2026-09-01 17:21:22.714596100 -0400
Modify: 2026-08-25 22:21:00.811095356 -0400
Change: 2026-08-25 22:21:00.811095356 -0400
Birth: 2026-08-25 22:21:00.810402344 -0400