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
|
## 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.
|
**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)
|
# 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 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 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 gitea --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 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 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 media,productivity --vault-password-file vault_pass
|
||||||
ansible-playbook site.yml -i hosts.yml --tags development,monitoring --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
|
### Role Structure
|
||||||
- **bootstrap**: Initial server hardening, user creation, Tailscale VPN setup
|
- **bootstrap**: Initial server hardening, user creation, Tailscale VPN setup
|
||||||
- **common**: Basic system configuration, UFW firewall management
|
- **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)
|
- **cron**: Scheduled task management (currently Warhammer RSS feed generation)
|
||||||
|
|
||||||
### Docker Role Organization (Reorganized into Logical Categories)
|
### 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
|
- **infrastructure/**: Core platform components
|
||||||
- Caddy (reverse proxy), Authentik (SSO), Dockge (container management)
|
- Caddy (reverse proxy), Authentik (SSO), Dockge (container management)
|
||||||
- **development/**: Development and collaboration tools
|
- **development/**: Development and collaboration tools
|
||||||
- Gitea, Code Server, ByteStash
|
- Gitea, ByteStash
|
||||||
- **media/**: Content creation and consumption
|
- **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
|
- **productivity/**: Personal organization and document management
|
||||||
- Paperless-NGX, MMDL, Baikal (CalDAV/CardDAV), Syncthing, Heyform, Dawarich, Palmr, Obsidian LiveSync
|
- Paperless-NGX, Baikal (CalDAV/CardDAV), Syncthing, Heyform, Dawarich, Obsidian LiveSync
|
||||||
- **communication/**: Social media and external communication
|
- **communication/**: Social media
|
||||||
- GoToSocial (Fediverse), Postiz (social media management)
|
- GoToSocial (Fediverse)
|
||||||
- **monitoring/**: System monitoring and alerts
|
- **monitoring/**: System monitoring and alerts
|
||||||
- Changedetection, Glance dashboard, AppriseAPI, Gotify
|
- Changedetection, Glance dashboard, AppriseAPI, Gotify, Cronmaster
|
||||||
|
|
||||||
### Variable Management
|
### Variable Management
|
||||||
**Critical**: This infrastructure uses a centralized variable hierarchy in `group_vars/all/`:
|
**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
|
- **Dawarich**: Based on production compose file at https://github.com/Freika/dawarich/blob/master/docker/docker-compose.production.yml
|
||||||
|
|
||||||
## Service Memories
|
## 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
|
- 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
|
- 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
|
- 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
|
- Organized secrets by service with consistent `vault_` prefix
|
||||||
|
|
||||||
### Service Tag Fix:
|
### 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:
|
### Template Pattern:
|
||||||
All templates now follow this pattern:
|
All templates now follow this pattern:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ The playbook manages two main environments:
|
|||||||
|
|
||||||
## Services Deployed
|
## 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
|
### Infrastructure
|
||||||
- **Caddy** (Reverse proxy with automatic HTTPS)
|
- **Caddy** (Reverse proxy with automatic HTTPS)
|
||||||
@@ -19,37 +19,31 @@ The Docker role deploys and manages 27 self-hosted services organized into logic
|
|||||||
|
|
||||||
### Development
|
### Development
|
||||||
- **Gitea** (Git repository hosting)
|
- **Gitea** (Git repository hosting)
|
||||||
- **Code Server** (VS Code in browser)
|
|
||||||
- **ByteStash** (Code snippet management)
|
- **ByteStash** (Code snippet management)
|
||||||
|
|
||||||
### Media
|
### Media
|
||||||
- **Audiobookshelf** (Audiobook server)
|
- **Audiobookshelf** (Audiobook server)
|
||||||
- **Calibre** (E-book management)
|
- **Calibre** (E-book management)
|
||||||
- **Ghost** (Blog platform)
|
- **Karakeep** (Bookmark manager, formerly Hoarder)
|
||||||
- **Pinchflat** (Media downloader)
|
|
||||||
- **Pinry** (Pinterest-like board)
|
|
||||||
- **Hoarder** (Bookmark manager)
|
|
||||||
- **Manyfold** (3D model organizer)
|
- **Manyfold** (3D model organizer)
|
||||||
|
|
||||||
### Productivity
|
### Productivity
|
||||||
- **Paperless-NGX** (Document management)
|
- **Paperless-NGX** (Document management)
|
||||||
- **MMDL** (Task management)
|
|
||||||
- **Baikal** (CalDAV/CardDAV server)
|
- **Baikal** (CalDAV/CardDAV server)
|
||||||
- **Syncthing** (File synchronization)
|
- **Syncthing** (File synchronization)
|
||||||
- **HeyForm** (Form builder)
|
- **HeyForm** (Form builder)
|
||||||
- **Dawarich** (Location tracking)
|
- **Dawarich** (Location tracking)
|
||||||
- **Palmr** (File sharing)
|
|
||||||
- **Obsidian LiveSync** (Note synchronization)
|
- **Obsidian LiveSync** (Note synchronization)
|
||||||
|
|
||||||
### Communication
|
### Communication
|
||||||
- **GoToSocial** (Fediverse/Mastodon)
|
- **GoToSocial** (Fediverse/Mastodon)
|
||||||
- **Postiz** (Social media management)
|
|
||||||
|
|
||||||
### Monitoring
|
### Monitoring
|
||||||
- **Changedetection** (Website change monitoring)
|
- **Changedetection** (Website change monitoring)
|
||||||
- **Glance** (Dashboard)
|
- **Glance** (Dashboard)
|
||||||
- **AppriseAPI** (Notification service)
|
- **AppriseAPI** (Notification service)
|
||||||
- **Gotify** (Push notifications)
|
- **Gotify** (Push notifications)
|
||||||
|
- **Cronmaster** (Scheduled container tasks)
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
|
|
||||||
@@ -90,13 +84,13 @@ Manages scheduled tasks and automation:
|
|||||||
- Supports easy addition of new scheduled tasks
|
- Supports easy addition of new scheduled tasks
|
||||||
|
|
||||||
### [Docker Role](roles/docker/README.md)
|
### [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
|
- **Infrastructure**: Caddy reverse proxy, Authentik SSO, Dockge management
|
||||||
- **Development**: Gitea, Code Server, Matrix communication
|
- **Development**: Gitea, ByteStash
|
||||||
- **Media**: Audiobookshelf, Calibre, Ghost blog, Pinchflat, and more
|
- **Media**: Audiobookshelf, Calibre, Karakeep, Manyfold
|
||||||
- **Productivity**: Paperless-NGX, MMDL task management, Baikal calendar
|
- **Productivity**: Paperless-NGX, Baikal, Syncthing, HeyForm, Dawarich, Obsidian LiveSync
|
||||||
- **Communication**: GoToSocial, Postiz social media management
|
- **Communication**: GoToSocial
|
||||||
- **Monitoring**: Glance dashboard, Changedetection, AppriseAPI notifications
|
- **Monitoring**: Glance dashboard, Changedetection, AppriseAPI, Gotify, Cronmaster
|
||||||
- **Template-Driven**: All services use Jinja2 templates for consistent configuration
|
- **Template-Driven**: All services use Jinja2 templates for consistent configuration
|
||||||
- **Category-Based Deployment**: Deploy services by category using Ansible tags
|
- **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 infrastructure
|
||||||
ansible-playbook site.yml -i hosts.yml --tags media,productivity
|
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
|
# Deploy individual services
|
||||||
ansible-playbook site.yml -i hosts.yml --tags caddy
|
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 authentik
|
||||||
ansible-playbook site.yml -i hosts.yml --tags mmdl
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Manage DNS Records
|
### Manage DNS Records
|
||||||
|
|||||||
@@ -8,32 +8,23 @@ subdomains:
|
|||||||
git: "git.{{ primary_domain }}"
|
git: "git.{{ primary_domain }}"
|
||||||
cal: "cal.{{ primary_domain }}"
|
cal: "cal.{{ primary_domain }}"
|
||||||
docs: "docs.{{ primary_domain }}"
|
docs: "docs.{{ primary_domain }}"
|
||||||
phlog: "phlog.{{ primary_domain }}" # Ghost blog
|
|
||||||
bookmarks: "bookmarks.{{ primary_domain }}" # Hoarder/Karakeep
|
bookmarks: "bookmarks.{{ primary_domain }}" # Hoarder/Karakeep
|
||||||
heyform: "forms.{{ secondary_domain }}" # Heyform on nerder.land
|
heyform: "forms.{{ secondary_domain }}" # Heyform on nerder.land
|
||||||
media: "media.{{ primary_domain }}"
|
media: "media.{{ primary_domain }}"
|
||||||
audio: "audio.{{ primary_domain }}" # Audiobookshelf
|
audio: "audio.{{ primary_domain }}" # Audiobookshelf
|
||||||
books: "books.{{ primary_domain }}" # Calibre
|
books: "books.{{ primary_domain }}" # Calibre
|
||||||
models: "models.{{ primary_domain }}" # Manyfold
|
models: "models.{{ primary_domain }}" # Manyfold
|
||||||
pinchflat: "pinchflat.{{ primary_domain }}"
|
|
||||||
pin: "pin.{{ primary_domain }}" # Pinry
|
|
||||||
paper: "paper.{{ primary_domain }}" # Paperless-NGX
|
paper: "paper.{{ primary_domain }}" # Paperless-NGX
|
||||||
tasks: "tasks.{{ primary_domain }}" # MMDL
|
|
||||||
syncthing: "syncthing.{{ primary_domain }}"
|
syncthing: "syncthing.{{ primary_domain }}"
|
||||||
loclog: "loclog.{{ primary_domain }}" # Dawarich
|
loclog: "loclog.{{ primary_domain }}" # Dawarich
|
||||||
files: "files.{{ primary_domain }}" # Palmr file sharing
|
|
||||||
social: "social.{{ primary_domain }}" # GoToSocial
|
social: "social.{{ primary_domain }}" # GoToSocial
|
||||||
post: "post.{{ primary_domain }}" # Postiz
|
|
||||||
home: "home.{{ primary_domain }}" # Glance
|
home: "home.{{ primary_domain }}" # Glance
|
||||||
watcher: "watcher.{{ primary_domain }}" # Changedetection
|
watcher: "watcher.{{ primary_domain }}" # Changedetection
|
||||||
appriseapi: "appriseapi.{{ primary_domain }}"
|
appriseapi: "appriseapi.{{ primary_domain }}"
|
||||||
dockge: "dockge.{{ primary_domain }}"
|
dockge: "dockge.{{ primary_domain }}"
|
||||||
code: "code.{{ primary_domain }}" # Code Server
|
|
||||||
bytestash: "snippets.{{ primary_domain }}" # ByteStash code snippets
|
bytestash: "snippets.{{ primary_domain }}" # ByteStash code snippets
|
||||||
gotify: "gotify.{{ primary_domain }}" # Gotify notifications
|
gotify: "gotify.{{ primary_domain }}" # Gotify notifications
|
||||||
gotify_assistant: "gotify-assistant.{{ primary_domain }}" # iGotify iOS assistant
|
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 for notifications
|
||||||
email_domains:
|
email_domains:
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
# Service categories for organization
|
# Service categories for organization
|
||||||
service_categories:
|
service_categories:
|
||||||
infrastructure: ["caddy", "authentik", "dockge"]
|
infrastructure: ["caddy", "authentik", "dockge"]
|
||||||
development: ["gitea", "codeserver"]
|
development: ["gitea", "bytestash"]
|
||||||
media: ["audiobookshelf", "calibre", "ghost", "pinchflat", "pinry", "hoarder", "manyfold"]
|
media: ["audiobookshelf", "calibre", "hoarder", "manyfold"]
|
||||||
productivity: ["paperlessngx", "baikal", "syncthing", "mmdl", "heyform", "dawarich", "pingvin"]
|
productivity: ["paperlessngx", "baikal", "syncthing", "heyform", "dawarich", "obsidian-livesync"]
|
||||||
communication: ["gotosocial", "postiz"]
|
communication: ["gotosocial"]
|
||||||
monitoring: ["glance", "changedetection", "appriseapi", "gotify"]
|
monitoring: ["glance", "changedetection", "appriseapi", "gotify", "cronmaster"]
|
||||||
|
|
||||||
# Common service configuration
|
# Common service configuration
|
||||||
services:
|
services:
|
||||||
@@ -19,7 +19,3 @@ services:
|
|||||||
dawarich:
|
dawarich:
|
||||||
db_name: "dawarich"
|
db_name: "dawarich"
|
||||||
db_user: "dawarich"
|
db_user: "dawarich"
|
||||||
|
|
||||||
mmdl:
|
|
||||||
db_name: "mmdl"
|
|
||||||
db_user: "mmdl"
|
|
||||||
@@ -122,21 +122,16 @@ pages:
|
|||||||
- hoarder-app/hoarder
|
- hoarder-app/hoarder
|
||||||
- goauthentik/authentik
|
- goauthentik/authentik
|
||||||
- superseriousbusiness/gotosocial
|
- superseriousbusiness/gotosocial
|
||||||
- stonith404/pingvin-share
|
|
||||||
- caddyserver/caddy
|
- caddyserver/caddy
|
||||||
- gitroomhq/postiz-app
|
|
||||||
- sabre-io/Baikal
|
- sabre-io/Baikal
|
||||||
- janeczku/calibre-web
|
- janeczku/calibre-web
|
||||||
- heyform/heyform
|
- heyform/heyform
|
||||||
- paperless-ngx/paperless-ngx
|
- paperless-ngx/paperless-ngx
|
||||||
- linuxserver/docker-calibre-web
|
- linuxserver/docker-calibre-web
|
||||||
- coder/code-server
|
|
||||||
- dgtlmoon/changedetection.io
|
- dgtlmoon/changedetection.io
|
||||||
- Freika/dawarich
|
- Freika/dawarich
|
||||||
- manyfold3d/manyfold
|
- manyfold3d/manyfold
|
||||||
- caronc/apprise-api
|
- caronc/apprise-api
|
||||||
- kieraneglin/pinchflat
|
|
||||||
- pinry/pinry
|
|
||||||
- syncthing/syncthing
|
- syncthing/syncthing
|
||||||
|
|
||||||
- size: full
|
- size: full
|
||||||
|
|||||||
Reference in New Issue
Block a user