Commit Graph

330 Commits

Author SHA1 Message Date
37c45065e2 chore: remove kit stack
Remove kit service and related configuration:
- Removed kit from compose includes
- Deleted kit/compose.yaml (landing, vert, pastel, stirling, units, draw, figlet)
- Removed KIT env vars from arty.yml

Kit services were stateless and don't require data migration.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 16:17:28 +01:00
07b107c865 chore: remove awsm stack
Remove awsm service and related configuration:
- Removed awsm from compose includes
- Deleted awsm/compose.yaml
- Removed awesome-backup from restic config
- Removed awsm volume mount from restic
- Removed AWSM env vars from arty.yml
- Removed awsm/import script

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 16:11:33 +01:00
91fd8be904 refactor: consolidate WebSocket config to PUSHER_* variables
- Change PUSHER_HOST to public URL (coolify-realtime.coolify.dev.pivoine.art)
- Update PUSHER_PORT from 6001 to 443 (HTTPS)
- Add PUSHER_SCHEME=https
- Remove VITE_PUSHER_* variables (redundant)
- Change label quotes from single to double

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 14:48:36 +01:00
5a42268369 feat: add VITE_PUSHER environment variables for frontend WebSocket
Configure browser to connect to Soketi via HTTPS through Traefik:
- VITE_PUSHER_HOST: coolify-realtime.coolify.dev.pivoine.art
- VITE_PUSHER_PORT: 443
- VITE_PUSHER_SCHEME: https

This fixes the 'Cannot connect to real-time service' warning.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 14:39:06 +01:00
ab632fd054 feat: expose Soketi WebSocket server via Traefik
Add Traefik labels to Soketi to make it accessible at
coolify-realtime.coolify.dev.pivoine.art for browser WebSocket connections

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 14:05:44 +01:00
8a1eee975f fix: update Soketi healthcheck to use 127.0.0.1 instead of localhost
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 13:56:37 +01:00
44ecff89c8 fix: use correct Coolify port 8080 for Traefik routing 2025-11-15 13:32:44 +01:00
3ff112ccb3 fix: use shared core PostgreSQL for Coolify instead of separate instance 2025-11-15 13:31:05 +01:00
30249bd3ca fix: use correct soketi image tag (1.0-16-alpine) 2025-11-15 13:28:27 +01:00
7e9a58357f feat: add Coolify volumes to Restic backup configuration
Add Coolify data and PostgreSQL volumes to daily backup schedule:
- dev_coolify_data - Coolify application data
- dev_coolify_postgres_data - Coolify database

Backup schedule: Daily at midnight (0 0 * * *)
Retention: 7 daily, 4 weekly, 6 monthly, 2 yearly

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 13:25:08 +01:00
140b240bab feat: add Coolify deployment platform to dev stack
Add Coolify self-hosted deployment platform with:
- Coolify main service at coolify.dev.pivoine.art
- Dedicated PostgreSQL database (uses shared core instance)
- Soketi WebSocket server for real-time features
- Traefik routing with HTTPS and compression
- Environment variables in arty.yml (secrets in .env)
- Database creation in PostgreSQL init script

Coolify enables deploying applications from Git repositories,
including the pivoine.art Jekyll site from Gitea.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 13:24:09 +01:00
5d3fa7618b fix: expose Gitea SSH port 2222 and update SSH_PORT setting
- Add ports mapping to expose SSH port 2222 on host
- Change SSH_PORT from 22 to 2222 for correct clone URL display
- Gitea will now show git@dev.pivoine.art:2222/user/repo.git in UI

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 13:07:49 +01:00
414ff269b2 fix: correct Gitea custom assets mount path for themes and favicon
Move custom assets from /data/gitea/custom/public to /data/gitea/public
to properly serve custom themes and favicon/logo files. Gitea expects
custom public assets at /data/gitea/public, not nested under custom/.

- Restructured dev/custom/public/ to dev/public/
- Updated volume mount in dev/compose.yaml
- Includes 21 custom themes from sainnhe/gitea-themes
- Includes custom favicon and logo

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 12:20:42 +01:00
485edffa48 docs: update README with gitea-dark as default theme
Note that custom themes are available for manual selection but may not work as default

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 12:16:53 +01:00
77a81d29f0 fix: change default theme to gitea-dark (built-in)
Custom themes not loading properly, reverting to built-in theme.
Custom themes still available in theme list for manual selection.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 12:16:07 +01:00
07bcba01fa feat: set edge-dark as default Gitea theme
- Change DEFAULT_THEME from gitea-auto to edge-dark
- Add THEME_COLOR_META_TAG for edge-dark (#333644)
- Custom favicon and logo already configured in custom directory

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 12:13:46 +01:00
d73504a1de fix: use correct default theme name for Gitea
- Change DEFAULT_THEME from 'auto' to 'gitea-auto'
- Add 'arc-green' to themes list (standard Gitea theme)
- Remove invalid 'auto' theme name from THEMES list

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 12:03:22 +01:00
644c437b31 fix: remove deprecated Gravatar environment variables
- Remove GITEA__picture__* environment variables (deprecated in Gitea 1.18+)
- Gravatar must be configured via admin panel in modern Gitea versions
- Add README.md with post-installation configuration instructions
- Document Gravatar setup, runner registration, themes, and custom assets

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 12:01:20 +01:00
fbdca7c5a2 fix: correct Gitea custom directory mount path
Change from ./dev/custom to ./custom since compose.yaml is in dev/ directory

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 11:57:24 +01:00
17653546b8 fix: reorganize Gitea customizations to proper directory structure
- Move themes to dev/custom/public/assets/css/ (correct Gitea custom path)
- Add custom favicon.svg and logo.svg to dev/custom/public/assets/img/
- Update volume mount to use /data/gitea/custom instead of incorrect path
- Follows Gitea customization documentation structure

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 11:56:23 +01:00
92a96b5f6e feat: add custom themes and enable Gravatar for Gitea
- Add 21 custom themes from sainnhe/gitea-themes:
  - Edge (auto, dark, light)
  - Everforest (auto, dark, light)
  - Gruvbox (auto, dark, light)
  - Gruvbox Material (auto, dark, light)
  - Nord, Palenight, Soft Era
  - Sonokai (base + 5 variants)
- Enable Gravatar for user avatars
- Set default theme to auto (system preference)
- Mount themes directory to Gitea container

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 11:53:16 +01:00
7cd56b4111 feat: add Gitea volumes to Restic backup configuration
- Add gitea-backup plan with dev_gitea_data, dev_gitea_config, and dev_gitea_runner_data volumes
- Schedule: Daily at 11 AM
- Retention: 7 daily, 4 weekly, 6 monthly, 2 yearly backups
- Add missing asciinema_data volume to backup configuration

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 11:49:56 +01:00
98f564c896 fix: use EMAIL_SMTP_* variables for Gitea mailer configuration
Change from SMTP_* to EMAIL_SMTP_* variables to match existing .env

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 11:47:59 +01:00
d32ac39d27 feat: add Gitea self-hosted Git service with Actions runner
- Create new 'dev' stack at dev.pivoine.art
- Add Gitea with PostgreSQL database (core stack)
- Add Gitea Actions runner with Docker support
- Enable mailer configuration via SMTP
- Enable container registry and packages
- Add gitea database to PostgreSQL init script

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 11:43:13 +01:00
f25856a44b feat: remove Navidrome, use Jellyfin for all media
- Remove Navidrome service from media stack
- Remove Navidrome configuration from arty.yml
- Remove media/scan command (Navidrome-specific)
- Jellyfin now handles all media: images, videos, and music
2025-11-15 09:43:00 +01:00
f9d716c80a feat: add Music support to Jellyfin, remove music_files service
- Add /mnt/hidrive/users/valknar/Music mount to Jellyfin
- Remove standalone nginx music_files service
- Jellyfin now serves images, videos, and music
- Supports transcoding, download tracking, and direct URLs via API
2025-11-15 08:57:31 +01:00
0f21392113 feat: add static file server for direct MP3 links
- Add nginx service to serve music files at music.media.pivoine.art
- Enables direct MP3 file URLs for website embedding
- Serves files from /mnt/hidrive/users/valknar/Music read-only
2025-11-15 08:51:29 +01:00
b78becd0c7 fix: use docker compose restart for media/scan command 2025-11-15 08:12:40 +01:00
f855bdf38d feat: add media/scan command for Navidrome library refresh 2025-11-15 08:12:17 +01:00
b49ae07b44 feat: enable sharing and downloads in Navidrome
- Add ND_ENABLESHARING=true
- Add ND_ENABLEDOWNLOADS=true
- Add ND_DEFAULTDOWNLOADABLESHARE=true
- Enables public music sharing via share links
2025-11-15 07:50:24 +01:00
c07add5c11 feat: replace Koel and Ampache with Navidrome music streaming server
- Remove Koel and koel_init services from media stack
- Remove Ampache service from media stack
- Add Navidrome service at navidrome.media.pivoine.art
- Remove koel and ampache databases from postgres init script
- Update arty.yml with Navidrome configuration
- Navidrome uses SQLite (no PostgreSQL required)
- Supports public sharing and Subsonic API compatibility
2025-11-15 07:44:31 +01:00
3267c6dbd8 feat: add Ampache music streaming server to media stack
- Add ampache service to media/compose.yaml with PostgreSQL backend
- Create ampache database in postgres init script
- Configure Ampache environment variables in arty.yml
- Mount Music directory read-only
- Expose at ampache.media.pivoine.art via Traefik
2025-11-15 07:21:15 +01:00
6fc51b6a51 fix: run koel_init container as www-data user
- Add user: "33:33" (www-data) to koel_init container
- Prevents permission issues when init container creates cache files
- Fixes album cover upload and metadata editing errors

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 06:59:36 +01:00
49a97755bc feat: add persistent Koel configuration via environment variables
- Add MEDIA_PATH, STORAGE_DRIVER, TRUSTED_PROXIES, and FORCE_HTTPS to environment
- Apply settings to both koel and koel_init containers
- Ensures configuration persists across container restarts without manual intervention

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 06:44:32 +01:00
9cdc6ee409 fix: correct Koel memory limit value
Remove 'M' suffix from MEDIA_KOEL_MEMORY_LIMIT as Koel appends it automatically, causing "512MM" error.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 06:30:18 +01:00
fd059dbbb5 feat: consolidate media services into unified media stack
- Combine Jellyfin, Filestash, and Koel into single media/ compose stack
- Remove standalone jelly/ and stash/ compose files
- Add Koel music streaming with PostgreSQL backend
- Update core PostgreSQL init script to create koel database
- Add media stack to root compose.yaml include
- Configure media services with subdomain routing (jellyfin.media, filestash.media, koel.media)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 20:40:53 +01:00
709dcd8882 fix: use correct NO_DOCS and NO_REDOC environment variables
- Replace DISABLE_SWAGGER_UI with NO_DOCS and NO_REDOC
- Following official LiteLLM documentation for disabling API docs
- Disables both Swagger UI and Redoc documentation interfaces

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 02:17:40 +01:00
b66e28d874 fix: use DISABLE_SWAGGER_UI environment variable instead of invalid flag
- Remove invalid --disable_swagger command flag
- Add DISABLE_SWAGGER_UI=true environment variable
- Fixes LiteLLM startup error

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 02:15:31 +01:00
f1ff42f452 feat: disable Swagger UI in LiteLLM proxy
- Add --disable_swagger flag to LiteLLM command
- Improves security by hiding API documentation interface

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 02:14:43 +01:00
187b5b5b12 fix: add BASE_URL environment variable for Linkwarden email links
- Add BASE_URL pointing to https://links.pivoine.art
- Required for email verification and password reset links

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 18:30:08 +01:00
c40ab90d94 fix: use URL-encoded EMAIL_SERVER variable for Linkwarden
- Use dedicated LINKS_EMAIL_SERVER variable with proper URL encoding
- Encode @ symbol in email address as %40 to avoid URL parsing conflicts
- Fixes NextAuth error: "Cannot read properties of undefined (reading 'split')"

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 17:27:41 +01:00
730243e894 fix: enable email functionality in Linkwarden with correct SMTP configuration
- Add NEXT_PUBLIC_EMAIL_PROVIDER=true to enable email features
- Change EMAIL_SERVER protocol from smtp:// to smtps:// for port 465 (implicit SSL/TLS)

This fixes the login issue where password recovery and email verification were not working.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 17:07:47 +01:00
badfeb1e45 feat: add sexy/bundle/update script to refresh Directus extensions
Added arty script to update Directus extension bundle from the latest
sexy_frontend image. This ensures the API container always has the
latest extensions when the frontend image is rebuilt.

Usage: arty sexy/bundle/update

Also streamlined sexy/uploads/export to match code style.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 10:16:56 +01:00
2934caa9ed fix: disable Watchtower for Facefusion custom local image
Watchtower was trying to pull updates from Docker Hub for facefusion-patched:3.5.0-cpu
which only exists locally, causing spam errors. Disabled Watchtower monitoring for this
container since it's a custom-built image with NSFW filter patches.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 08:30:51 +01:00
f71b150263 feat: add tty flag for Gradio to start properly 2025-11-13 06:18:58 +01:00
0b43299ffd fix: update content_analyser hash check in core.py for patched version 2025-11-13 06:16:14 +01:00
95099a443e feat: build custom Facefusion image with NSFW filter patch baked in 2025-11-13 06:05:42 +01:00
8f406f62c1 fix: add command with -u flag to start Facefusion 2025-11-13 06:01:09 +01:00
c2d25dde59 fix: remove entrypoint override to use default Facefusion startup 2025-11-13 05:59:05 +01:00
3c56f05286 fix: add Gradio environment variables and remove conflicting command 2025-11-13 05:52:13 +01:00