diff --git a/CLAUDE.md b/CLAUDE.md index 558246f..bc57022 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -23,14 +23,18 @@ Internet → Router → Nginx (80/443) → Services **Current Services:** - Gitea Git server: Docker container on port 3000, accessible via `/gitea/` path +- Copyparty file server: Systemd service on port 8082, accessible via `/files/` path with WebDAV support +- Jellyfin media server: Docker container on port 8096, accessible via `/media/` path - Nginx: Reverse proxy routing to `ak-homelab.duckdns.org/servicename/` ### Configuration Management All configurations are version controlled in the `config/` directory: - `config/docker/gitea/`: Gitea container setup and deployment scripts -- `config/nginx/`: Reverse proxy configurations +- `config/docker/jellyfin/`: Jellyfin media server configuration +- `config/nginx/`: Reverse proxy configurations with SSL and WebDAV support - `config/scripts/`: Utility scripts for system maintenance +- `~/.config/copyparty/`: Copyparty file server configuration Configuration files include deployment instructions in comments showing target locations (e.g., `/opt/docker/gitea/`, `/etc/nginx/sites-available/`). @@ -44,8 +48,28 @@ docker-compose down # Stop docker-compose up -d # Start docker-compose pull && docker-compose up -d # Update +# Jellyfin operations (from /opt/docker/jellyfin/) +docker-compose logs jellyfin # View logs +docker-compose down # Stop +docker-compose up -d # Start +docker-compose pull && docker-compose up -d # Update + # Deploy from repo sudo cp config/docker/gitea/docker-compose.yml /opt/docker/gitea/ +sudo cp config/docker/jellyfin/docker-compose.yml /opt/docker/jellyfin/ +``` + +### Copyparty File Server Management +```bash +# Service operations +sudo systemctl status copyparty # Check status +sudo systemctl start copyparty # Start service +sudo systemctl stop copyparty # Stop service +sudo systemctl restart copyparty # Restart (reload config) + +# Configuration +sudo cp ~/.config/copyparty/copyparty.conf ~/.config/copyparty/copyparty.conf.backup +# Edit config and restart service to reload ``` ### Nginx Operations @@ -91,9 +115,10 @@ Use `TODO.md` for centralized task management organized by category (Network & S ### Service URLs - **Local access**: http://192.168.0.100/servicename/ -- **External access**: http://ak-homelab.duckdns.org/servicename/ +- **External access**: https://ak-homelab.duckdns.org/servicename/ - **Gitea SSH**: ssh://git@ak-homelab.duckdns.org:2223 - **Voice Assistant**: http://127.0.0.1:8880 (local TTS server) +- **Copyparty WebDAV**: https://ak-homelab.duckdns.org/files/ (for X-plore, rclone, etc.) ### Voice Assistant Commands ```bash @@ -114,4 +139,28 @@ curl -X POST "http://127.0.0.1:8880/v1/audio/speech" \ -H "Content-Type: application/json" \ -d '{"input": "Hello world!", "voice": "ryan"}' \ --output test.wav +``` + +### WebDAV Client Setup +```bash +# X-plore File Manager (Android) +# Server: ak-homelab.duckdns.org +# Path: /files/ +# Port: 443 (HTTPS) +# Username: hoborg +# Password: AdminPass2024! + +# rclone configuration +rclone config create homelab-webdav webdav \ + url=https://ak-homelab.duckdns.org/files/ \ + vendor=other \ + user=hoborg \ + pass=$(rclone obscure "AdminPass2024!") + +# Mount with rclone +rclone mount homelab-webdav: ~/homelab-files --daemon + +# Test WebDAV +curl -X PROPFIND https://hoborg:AdminPass2024!@ak-homelab.duckdns.org/files/ \ + -H "Depth: 1" -H "Content-Type: text/xml" ``` \ No newline at end of file