Stacks included:
- Infrastructure: traefik, authentik, gitea, registry, watchtower, dockge
- Monitoring: smokeping, changedetection
- Apps: ghost, gollum, wallabag, radicale, invidious, xbackbone, filebrowser, syncthing, zerotier
- Custom: obsidian-tools, memento, perilous, ramz, bookclub, brain
🤖 Generated with Claude Code
88 lines
2.9 KiB
YAML
88 lines
2.9 KiB
YAML
services:
|
|
obbytodo:
|
|
image: gitea.${DOMAIN}/knight/obbytodo:latest
|
|
container_name: obbytodo
|
|
restart: unless-stopped
|
|
expose:
|
|
- "3000"
|
|
environment:
|
|
- PORT=3000
|
|
- VAULT_PATH=/vault
|
|
- DEFAULT_TASK_FILE=Mobile Tasks.md
|
|
- DAILY_DIR=log
|
|
- DAILY_PRIMARY_DIR=Control/log
|
|
volumes:
|
|
- ./vault:/vault
|
|
networks:
|
|
- web
|
|
depends_on:
|
|
- syncthing
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.docker.network=web"
|
|
- "traefik.http.routers.todo-obbytodo.entrypoints=https"
|
|
- "traefik.http.routers.todo-obbytodo.rule=Host(`shell.${DOMAIN}`) && PathPrefix(`/todo`)"
|
|
- "traefik.http.routers.todo-obbytodo.tls.certresolver=http"
|
|
- "traefik.http.routers.todo-obbytodo.middlewares=todo-obbytodo-stripprefix@docker,dashboard-auth@file"
|
|
- "traefik.http.routers.todo-obbytodo.priority=100"
|
|
- "traefik.http.middlewares.todo-obbytodo-stripprefix.stripPrefix.prefixes=/todo"
|
|
- "traefik.http.services.todo-obbytodo.loadbalancer.server.port=3000"
|
|
- "traefik.http.routers.todo-obbytodo.service=todo-obbytodo"
|
|
- "traefik.http.routers.events-obbytodo.entrypoints=https"
|
|
- "traefik.http.routers.events-obbytodo.rule=Host(`shell.${DOMAIN}`) && PathPrefix(`/events`)"
|
|
- "traefik.http.routers.events-obbytodo.tls.certresolver=http"
|
|
- "traefik.http.routers.events-obbytodo.middlewares=dashboard-auth@file"
|
|
- "traefik.http.routers.events-obbytodo.priority=100"
|
|
- "traefik.http.routers.events-obbytodo.service=todo-obbytodo"
|
|
|
|
search-service:
|
|
image: gitea.${DOMAIN}/knight/obsidiansearch:latest
|
|
container_name: obsidian-search-service
|
|
restart: unless-stopped
|
|
expose:
|
|
- "3033"
|
|
environment:
|
|
- NODE_ENV=production
|
|
- OBSIDIAN_VAULT_PATH=/data
|
|
- GRAPH_DATA_PATH=/usr/src/app/graph-data/graph.json
|
|
volumes:
|
|
- ./vault:/data:ro
|
|
- ./graph-data:/usr/src/app/graph-data
|
|
depends_on:
|
|
- syncthing
|
|
networks:
|
|
- web
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.docker.network=web"
|
|
- "traefik.http.routers.shell-secure.entrypoints=https"
|
|
- "traefik.http.routers.shell-secure.rule=Host(`shell.${DOMAIN}`)"
|
|
- "traefik.http.routers.shell-secure.tls.certresolver=http"
|
|
- "traefik.http.routers.shell-secure.middlewares=dashboard-auth@file"
|
|
- "traefik.http.services.shell-secure.loadbalancer.server.port=3033"
|
|
- "traefik.http.routers.shell-secure.service=shell-secure"
|
|
|
|
syncthing:
|
|
image: lscr.io/linuxserver/syncthing:latest
|
|
container_name: obsidian-syncthing
|
|
hostname: obsidian-syncthing
|
|
restart: unless-stopped
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=America/New_York
|
|
volumes:
|
|
- ./syncthing-config:/config
|
|
- ./vault:/data1
|
|
ports:
|
|
- "8385:8384"
|
|
- "22001:22000/tcp"
|
|
- "22001:22000/udp"
|
|
- "21028:21027/udp"
|
|
networks:
|
|
- web
|
|
|
|
networks:
|
|
web:
|
|
external: true
|