Initial commit: 23 docker stacks for GitOps deployment
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
This commit is contained in:
1
stacks/obsidian-tools/.env.template
Normal file
1
stacks/obsidian-tools/.env.template
Normal file
@@ -0,0 +1 @@
|
||||
DOMAIN=${DOMAIN}
|
||||
87
stacks/obsidian-tools/docker-compose.yml
Normal file
87
stacks/obsidian-tools/docker-compose.yml
Normal file
@@ -0,0 +1,87 @@
|
||||
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
|
||||
Reference in New Issue
Block a user