update documentation and config to reflect 21 active services
Removed references to 9 decommissioned services from CLAUDE.md, README.md, domains.yml, services.yml, and Glance release tracking. Added services tag and Cronmaster to docs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## Overview
|
||||
|
||||
This is a personal infrastructure Ansible playbook that automates deployment and management of 27 self-hosted Docker services across two domains (`thesatelliteoflove.com` and `nerder.land`). The setup uses Tailscale VPN for secure networking and Caddy for reverse proxy with automated HTTPS.
|
||||
This is a personal infrastructure Ansible playbook that automates deployment and management of 21 self-hosted Docker services across two domains (`thesatelliteoflove.com` and `nerder.land`). The setup uses Tailscale VPN for secure networking and Caddy for reverse proxy with automated HTTPS.
|
||||
|
||||
**Important**: Always review `DEPLOYMENT_LEARNINGS.md` when working on this repository for lessons learned and troubleshooting guidance.
|
||||
|
||||
@@ -30,10 +30,11 @@ ansible-playbook dns.yml -i hosts.yml
|
||||
# Deploy specific services using tags (now properly isolated)
|
||||
ansible-playbook site.yml -i hosts.yml --tags caddy --vault-password-file vault_pass
|
||||
ansible-playbook site.yml -i hosts.yml --tags authentik --vault-password-file vault_pass
|
||||
ansible-playbook site.yml -i hosts.yml --tags mmdl --vault-password-file vault_pass
|
||||
ansible-playbook site.yml -i hosts.yml --tags docker --vault-password-file vault_pass # all docker services
|
||||
ansible-playbook site.yml -i hosts.yml --tags gitea --vault-password-file vault_pass
|
||||
ansible-playbook site.yml -i hosts.yml --tags docker --vault-password-file vault_pass # entire docker role
|
||||
ansible-playbook site.yml -i hosts.yml --tags services --vault-password-file vault_pass # all services only
|
||||
|
||||
# Deploy services by category (new organized structure)
|
||||
# Deploy services by category
|
||||
ansible-playbook site.yml -i hosts.yml --tags infrastructure --vault-password-file vault_pass
|
||||
ansible-playbook site.yml -i hosts.yml --tags media,productivity --vault-password-file vault_pass
|
||||
ansible-playbook site.yml -i hosts.yml --tags development,monitoring --vault-password-file vault_pass
|
||||
@@ -51,7 +52,7 @@ ansible-playbook site.yml -i hosts.yml --tags common,cron --vault-password-file
|
||||
### Role Structure
|
||||
- **bootstrap**: Initial server hardening, user creation, Tailscale VPN setup
|
||||
- **common**: Basic system configuration, UFW firewall management
|
||||
- **docker**: Comprehensive service deployment (24 containerized applications, organized by category)
|
||||
- **docker**: Comprehensive service deployment (21 containerized applications, organized by category)
|
||||
- **cron**: Scheduled task management (currently Warhammer RSS feed generation)
|
||||
|
||||
### Docker Role Organization (Reorganized into Logical Categories)
|
||||
@@ -60,15 +61,15 @@ The docker role is now organized into logical service groups under `roles/docker
|
||||
- **infrastructure/**: Core platform components
|
||||
- Caddy (reverse proxy), Authentik (SSO), Dockge (container management)
|
||||
- **development/**: Development and collaboration tools
|
||||
- Gitea, Code Server, ByteStash
|
||||
- Gitea, ByteStash
|
||||
- **media/**: Content creation and consumption
|
||||
- Audiobookshelf, Calibre, Ghost blog, Pinchflat, Pinry, Karakeep (formerly Hoarder), Manyfold
|
||||
- Audiobookshelf, Calibre, Karakeep (formerly Hoarder), Manyfold
|
||||
- **productivity/**: Personal organization and document management
|
||||
- Paperless-NGX, MMDL, Baikal (CalDAV/CardDAV), Syncthing, Heyform, Dawarich, Palmr, Obsidian LiveSync
|
||||
- **communication/**: Social media and external communication
|
||||
- GoToSocial (Fediverse), Postiz (social media management)
|
||||
- Paperless-NGX, Baikal (CalDAV/CardDAV), Syncthing, Heyform, Dawarich, Obsidian LiveSync
|
||||
- **communication/**: Social media
|
||||
- GoToSocial (Fediverse)
|
||||
- **monitoring/**: System monitoring and alerts
|
||||
- Changedetection, Glance dashboard, AppriseAPI, Gotify
|
||||
- Changedetection, Glance dashboard, AppriseAPI, Gotify, Cronmaster
|
||||
|
||||
### Variable Management
|
||||
**Critical**: This infrastructure uses a centralized variable hierarchy in `group_vars/all/`:
|
||||
@@ -131,7 +132,6 @@ Common domains requiring hairpinning fixes:
|
||||
- **Dawarich**: Based on production compose file at https://github.com/Freika/dawarich/blob/master/docker/docker-compose.production.yml
|
||||
|
||||
## Service Memories
|
||||
- palmr is the service that responds on files.thesatelliteoflove.com
|
||||
- karakeep (formerly called hoarder) is deployed with both 'hoarder' and 'karakeep' tags for backward compatibility
|
||||
- whenever i ask you what containers need updates, run dockcheck and return a list of containers needing updates
|
||||
- when i ask for the status container updates i want you to run dockcheck on the docker host https://github.com/mag37/dockcheck?ref=selfh.st
|
||||
@@ -148,7 +148,7 @@ Common domains requiring hairpinning fixes:
|
||||
- Organized secrets by service with consistent `vault_` prefix
|
||||
|
||||
### Service Tag Fix:
|
||||
**Critical**: Service tags are now properly isolated. `--tags mmdl` deploys only MMDL (5 tasks), not the entire productivity category.
|
||||
**Critical**: Service tags are properly isolated. Individual service tags deploy only that service. The `services` tag runs all service tasks across all categories.
|
||||
|
||||
### Template Pattern:
|
||||
All templates now follow this pattern:
|
||||
|
||||
@@ -10,7 +10,7 @@ The playbook manages two main environments:
|
||||
|
||||
## Services Deployed
|
||||
|
||||
The Docker role deploys and manages 27 self-hosted services organized into logical categories:
|
||||
The Docker role deploys and manages 21 self-hosted services organized into logical categories:
|
||||
|
||||
### Infrastructure
|
||||
- **Caddy** (Reverse proxy with automatic HTTPS)
|
||||
@@ -19,37 +19,31 @@ The Docker role deploys and manages 27 self-hosted services organized into logic
|
||||
|
||||
### Development
|
||||
- **Gitea** (Git repository hosting)
|
||||
- **Code Server** (VS Code in browser)
|
||||
- **ByteStash** (Code snippet management)
|
||||
|
||||
### Media
|
||||
- **Audiobookshelf** (Audiobook server)
|
||||
- **Calibre** (E-book management)
|
||||
- **Ghost** (Blog platform)
|
||||
- **Pinchflat** (Media downloader)
|
||||
- **Pinry** (Pinterest-like board)
|
||||
- **Hoarder** (Bookmark manager)
|
||||
- **Karakeep** (Bookmark manager, formerly Hoarder)
|
||||
- **Manyfold** (3D model organizer)
|
||||
|
||||
### Productivity
|
||||
- **Paperless-NGX** (Document management)
|
||||
- **MMDL** (Task management)
|
||||
- **Baikal** (CalDAV/CardDAV server)
|
||||
- **Syncthing** (File synchronization)
|
||||
- **HeyForm** (Form builder)
|
||||
- **Dawarich** (Location tracking)
|
||||
- **Palmr** (File sharing)
|
||||
- **Obsidian LiveSync** (Note synchronization)
|
||||
|
||||
### Communication
|
||||
- **GoToSocial** (Fediverse/Mastodon)
|
||||
- **Postiz** (Social media management)
|
||||
|
||||
### Monitoring
|
||||
- **Changedetection** (Website change monitoring)
|
||||
- **Glance** (Dashboard)
|
||||
- **AppriseAPI** (Notification service)
|
||||
- **Gotify** (Push notifications)
|
||||
- **Cronmaster** (Scheduled container tasks)
|
||||
|
||||
## Structure
|
||||
|
||||
@@ -90,13 +84,13 @@ Manages scheduled tasks and automation:
|
||||
- Supports easy addition of new scheduled tasks
|
||||
|
||||
### [Docker Role](roles/docker/README.md)
|
||||
The most comprehensive role, deploying 25 containerized services organized into logical categories:
|
||||
The most comprehensive role, deploying 21 containerized services organized into logical categories:
|
||||
- **Infrastructure**: Caddy reverse proxy, Authentik SSO, Dockge management
|
||||
- **Development**: Gitea, Code Server, Matrix communication
|
||||
- **Media**: Audiobookshelf, Calibre, Ghost blog, Pinchflat, and more
|
||||
- **Productivity**: Paperless-NGX, MMDL task management, Baikal calendar
|
||||
- **Communication**: GoToSocial, Postiz social media management
|
||||
- **Monitoring**: Glance dashboard, Changedetection, AppriseAPI notifications
|
||||
- **Development**: Gitea, ByteStash
|
||||
- **Media**: Audiobookshelf, Calibre, Karakeep, Manyfold
|
||||
- **Productivity**: Paperless-NGX, Baikal, Syncthing, HeyForm, Dawarich, Obsidian LiveSync
|
||||
- **Communication**: GoToSocial
|
||||
- **Monitoring**: Glance dashboard, Changedetection, AppriseAPI, Gotify, Cronmaster
|
||||
- **Template-Driven**: All services use Jinja2 templates for consistent configuration
|
||||
- **Category-Based Deployment**: Deploy services by category using Ansible tags
|
||||
|
||||
@@ -134,10 +128,12 @@ Deploy specific services using tags:
|
||||
ansible-playbook site.yml -i hosts.yml --tags infrastructure
|
||||
ansible-playbook site.yml -i hosts.yml --tags media,productivity
|
||||
|
||||
# Deploy all services (skips system setup)
|
||||
ansible-playbook site.yml -i hosts.yml --tags services
|
||||
|
||||
# Deploy individual services
|
||||
ansible-playbook site.yml -i hosts.yml --tags caddy
|
||||
ansible-playbook site.yml -i hosts.yml --tags authentik
|
||||
ansible-playbook site.yml -i hosts.yml --tags mmdl
|
||||
```
|
||||
|
||||
### Manage DNS Records
|
||||
|
||||
@@ -8,32 +8,23 @@ subdomains:
|
||||
git: "git.{{ primary_domain }}"
|
||||
cal: "cal.{{ primary_domain }}"
|
||||
docs: "docs.{{ primary_domain }}"
|
||||
phlog: "phlog.{{ primary_domain }}" # Ghost blog
|
||||
bookmarks: "bookmarks.{{ primary_domain }}" # Hoarder/Karakeep
|
||||
heyform: "forms.{{ secondary_domain }}" # Heyform on nerder.land
|
||||
media: "media.{{ primary_domain }}"
|
||||
audio: "audio.{{ primary_domain }}" # Audiobookshelf
|
||||
books: "books.{{ primary_domain }}" # Calibre
|
||||
models: "models.{{ primary_domain }}" # Manyfold
|
||||
pinchflat: "pinchflat.{{ primary_domain }}"
|
||||
pin: "pin.{{ primary_domain }}" # Pinry
|
||||
paper: "paper.{{ primary_domain }}" # Paperless-NGX
|
||||
tasks: "tasks.{{ primary_domain }}" # MMDL
|
||||
syncthing: "syncthing.{{ primary_domain }}"
|
||||
loclog: "loclog.{{ primary_domain }}" # Dawarich
|
||||
files: "files.{{ primary_domain }}" # Palmr file sharing
|
||||
social: "social.{{ primary_domain }}" # GoToSocial
|
||||
post: "post.{{ primary_domain }}" # Postiz
|
||||
home: "home.{{ primary_domain }}" # Glance
|
||||
watcher: "watcher.{{ primary_domain }}" # Changedetection
|
||||
appriseapi: "appriseapi.{{ primary_domain }}"
|
||||
dockge: "dockge.{{ primary_domain }}"
|
||||
code: "code.{{ primary_domain }}" # Code Server
|
||||
bytestash: "snippets.{{ primary_domain }}" # ByteStash code snippets
|
||||
gotify: "gotify.{{ primary_domain }}" # Gotify notifications
|
||||
gotify_assistant: "gotify-assistant.{{ primary_domain }}" # iGotify iOS assistant
|
||||
kanboard: "kanboard.{{ primary_domain }}" # Kanboard project management
|
||||
grocy: "grocy.{{ primary_domain }}" # Grocy kitchen ERP
|
||||
|
||||
# Email domains for notifications
|
||||
email_domains:
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
# Service categories for organization
|
||||
service_categories:
|
||||
infrastructure: ["caddy", "authentik", "dockge"]
|
||||
development: ["gitea", "codeserver"]
|
||||
media: ["audiobookshelf", "calibre", "ghost", "pinchflat", "pinry", "hoarder", "manyfold"]
|
||||
productivity: ["paperlessngx", "baikal", "syncthing", "mmdl", "heyform", "dawarich", "pingvin"]
|
||||
communication: ["gotosocial", "postiz"]
|
||||
monitoring: ["glance", "changedetection", "appriseapi", "gotify"]
|
||||
development: ["gitea", "bytestash"]
|
||||
media: ["audiobookshelf", "calibre", "hoarder", "manyfold"]
|
||||
productivity: ["paperlessngx", "baikal", "syncthing", "heyform", "dawarich", "obsidian-livesync"]
|
||||
communication: ["gotosocial"]
|
||||
monitoring: ["glance", "changedetection", "appriseapi", "gotify", "cronmaster"]
|
||||
|
||||
# Common service configuration
|
||||
services:
|
||||
@@ -19,7 +19,3 @@ services:
|
||||
dawarich:
|
||||
db_name: "dawarich"
|
||||
db_user: "dawarich"
|
||||
|
||||
mmdl:
|
||||
db_name: "mmdl"
|
||||
db_user: "mmdl"
|
||||
@@ -122,21 +122,16 @@ pages:
|
||||
- hoarder-app/hoarder
|
||||
- goauthentik/authentik
|
||||
- superseriousbusiness/gotosocial
|
||||
- stonith404/pingvin-share
|
||||
- caddyserver/caddy
|
||||
- gitroomhq/postiz-app
|
||||
- sabre-io/Baikal
|
||||
- janeczku/calibre-web
|
||||
- heyform/heyform
|
||||
- paperless-ngx/paperless-ngx
|
||||
- linuxserver/docker-calibre-web
|
||||
- coder/code-server
|
||||
- dgtlmoon/changedetection.io
|
||||
- Freika/dawarich
|
||||
- manyfold3d/manyfold
|
||||
- caronc/apprise-api
|
||||
- kieraneglin/pinchflat
|
||||
- pinry/pinry
|
||||
- syncthing/syncthing
|
||||
|
||||
- size: full
|
||||
|
||||
Reference in New Issue
Block a user