feat: complete infrastructure cleanup and optimization

This comprehensive update improves maintainability and removes unused services:

## Major Changes
- Remove 5 unused services (beaver, grist, stirlingpdf, tasksmd, redlib)
- Convert remaining static compose files to Jinja2 templates
- Clean up Caddyfile removing orphaned proxy configurations
- Align DNS records with active services

## Service Cleanup
- Remove habits.thesatelliteoflove.com DNS record (beaver service)
- Add missing DNS records for active services:
  - post.thesatelliteoflove.com (Postiz)
  - files.thesatelliteoflove.com (Pingvin Share)
  - bookmarks.thesatelliteoflove.com (Hoarder)

## Template Standardization
- Convert caddy-compose.yml to template
- Convert dockge-compose.yml to template
- Convert hoarder-compose.yml to template
- All services now use consistent template-driven approach

## Documentation Updates
- Update CLAUDE.md with new service organization
- Update README.md files with category-based deployment examples
- Update todo.md with completed work summary
- Service count updated to 22+ active services

Infrastructure is now fully organized, cleaned up, and ready for future enhancements.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-06-06 12:16:44 -06:00
parent d4bec94b99
commit 68f0276ac0
24 changed files with 191 additions and 328 deletions

View File

@ -1,20 +0,0 @@
services:
beaverhabits:
container_name: beaverhabits
user: 1000:1000
environment:
# See the note below to find all the environment variables
- HABITS_STORAGE=USER_DISK # DATABASE stores in a single SQLite database named habits.db. USER_DISK option saves in a local json file.
- MAX_USER_COUNT=1
volumes:
- ./data:/app/.user/ # Change directory to match your docker file scheme.
restart: unless-stopped
image: daya0576/beaverhabits:latest
volumes:
data:
networks:
default:
external: true
name: lava

View File

@ -0,0 +1,31 @@
services:
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
- "8448:8448"
- "8448:8448/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./site:/srv
- caddy_data:/data
- caddy_config:/config
labels:
glance.name: Caddy
glance.icon: si:caddy
glance.url: https://thesatelliteoflove.com/
glance.description: Reverse proxy
networks:
default:
ipv4_address: 172.20.0.5
volumes:
caddy_data:
caddy_config:
networks:
default:
external: true
name: lava

View File

@ -0,0 +1,27 @@
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
labels:
glance.name: Dockge
glance.icon: si:docker
glance.url: http://netcup.porgy-porgy.ts.net:5001
glance.description: Docker management
ports:
# Host Port : Container Port
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
# If you want to use private registries, you need to share the auth file with Dockge:
# - /root/.docker/:/root/.docker
# Stacks Directory
# ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH.
# ⚠️ 1. FULL path only. No relative path (MUST)
# ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST)
- /opt/stacks:/opt/stacks
environment:
# Tell Dockge where is your stacks directory
- DOCKGE_STACKS_DIR=/opt/stacks

View File

@ -1,23 +0,0 @@
version: "3.3"
services:
grist:
volumes:
- grist:/persist
extra_hosts:
- 'auth.thesatelliteoflove.com:172.20.0.3'
environment:
- GRIST_SESSION_SECRET={{ grist_session_secret }}
- APP_HOME_URL=https://grist.thesatelliteoflove.com
- GRIST_OIDC_IDP_ISSUER=https://auth.thesatelliteoflove.com/application/o/grist/.well-known/openid-configuration
- GRIST_OIDC_IDP_CLIENT_ID={{ grist_oidc_client_id }}
- GRIST_OIDC_IDP_CLIENT_SECRET={{ grist_oidc_client_secret }}
image: gristlabs/grist
volumes:
grist:
driver: local
networks:
default:
external: true
name: lava

View File

@ -0,0 +1,56 @@
version: "3.8"
services:
web:
image: ghcr.io/hoarder-app/hoarder:${HOARDER_VERSION:-release}
restart: unless-stopped
volumes:
- data:/data
ports:
- 3000:3000
env_file:
- .env
extra_hosts:
- 'auth.thesatelliteoflove.com:172.20.0.5'
- bookmarks.thesatelliteoflove.com:172.20.0.5
environment:
MEILI_ADDR: http://meilisearch:7700
DATA_DIR: /data
BROWSER_WEB_URL: http://chrome:9222
labels:
glance.name: Hoarder
glance.icon: si:wikibooks
glance.url: https://bookmarks.thesatelliteoflove.com/
glance.description: Bookmark manager
glance.id: hoarder
chrome:
image: gcr.io/zenika-hub/alpine-chrome:123
restart: unless-stopped
labels:
glance.name: Chrome
glance.parent: hoarder
command:
- --no-sandbox
- --disable-gpu
- --disable-dev-shm-usage
- --remote-debugging-address=0.0.0.0
- --remote-debugging-port=9222
- --hide-scrollbars
meilisearch:
image: getmeili/meilisearch:v1.6
restart: unless-stopped
labels:
glance.name: Meilisearch
glance.parent: hoarder
env_file:
- .env
environment:
MEILI_NO_ANALYTICS: "true"
volumes:
- meilisearch:/meili_data
volumes:
meilisearch:
data:
networks:
default:
external: true
name: lava

View File

@ -1,24 +0,0 @@
services:
redlib:
image: quay.io/redlib/redlib:latest
restart: always
container_name: "redlib"
user: nobody
read_only: true
security_opt:
- no-new-privileges:true
# - seccomp=seccomp-redlib.json
cap_drop:
- ALL
env_file: .env
networks:
- redlib
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "--tries=1", "http://localhost:8080/settings"]
interval: 5m
timeout: 3s
networks:
default:
external: true
name: lava

View File

@ -1,18 +0,0 @@
version: '3.3'
services:
stirlingpdf:
image: frooodle/s-pdf:latest
volumes:
- ./trainingData:/usr/share/tessdata #Required for extra OCR languages
- ./extraConfigs:/configs
# - ./customFiles:/customFiles/
# - ./logs:/logs/
environment:
- DOCKER_ENABLE_SECURITY=false
- INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
- LANGS=en_GB
networks:
default:
external: true
name: lava