Commit graph

77 commits

Author SHA1 Message Date
Nicholas Gerrer
6f54910986 fix: add configurable uwsgi_read_timeout to fix 504 timeout on large M3U imports (fixes #745) 2026-02-26 00:01:14 -05:00
None
39646f0b01 Fix modular mode PostgreSQL/Redis connection checks
Replace raw Python AF_INET socket checks with pg_isready (PostgreSQL) and socket.create_connection (Redis) in modular deployment mode

The raw socket check may fail in some Docker environments depending on networking and DNS configurations, causing indefinite hangs. Replaced database check with native pg_isready
and memstore checck with AF_UNSPEC in the case IPv6 is enabled.

Fixes #952
2026-02-10 23:00:35 -06:00
None
e217960500 feat: Add Redis authentication support for modular deployment
Add support for authentication when connecting to external Redis instances in modular deployment mode. This enables secure Redis deployments using either password-only authentication (Redis <6) or
username + password authentication (Redis 6+ ACL).

Changes:
- Add REDIS_PASSWORD and REDIS_USER environment variables
- Implement URL encoding for special characters in passwords
- Update all Redis connection points to support auth
- Add comprehensive documentation and examples to docker-compose.yml
- Maintains full backward compatibility (empty defaults = no auth)

All authentication mechanisms have been fully tested including pasword-only authentication, Redis 6+ ACL authentication with username + password, volume-mounted configuration files, and special character handling.

Existing deployments are not effected, authentication support is entirely opt-in using docker-compose.

Also, acknowledging the fact that the docker-compose file for modular deployments has been getting out of hand with auth support, the docker-compose.yml file was re-formatted for better visibility in configuration. This seemed like a better way to go than mandating a .env file.
2026-02-03 21:42:06 -06:00
SergeantPanda
fb8c831f1b
Merge pull request #881 from CodeBormen/fix-modular-compose-deployment
feat: Add DISPATCHARR_ENV=modular support for multi-container deployment
2026-02-03 09:49:07 -06:00
None
8eef088950 Add PostgreSQL version check for modular deployments
Implements automatic version validation for external databases in modular mode to ensure compatibility.

Changes:
- Added check_external_postgres_version() in 02-postgres.sh
- Integrated version check in entrypoint.sh after database connection
- Enforces minimum PostgreSQL version matching DispatcharrBase
- Allows newer versions with forward compatibility notice
- Rejects older versions with clear upgrade instructions

The version requirement automatically scales when DispatcharrBase is updated, requiring no manual maintenance. Only applies to modular deployments using external databases; AIO deployments are unaffected.

Tested and verified correct behavior with PostgreSQL v17, v18, and v16
2026-01-31 20:45:39 -06:00
SergeantPanda
bdcc865b9d Bug Fix: Fixed NumPy baseline detection in Docker entrypoint. Now properly detects when NumPy crashes on import due to CPU baseline incompatibility and installs legacy NumPy version. Previously, if NumPy failed to import, the script would skip legacy installation assuming it was already compatible.
Some checks failed
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Base Image Build / prepare (push) Has been cancelled
Base Image Build / docker (amd64, ubuntu-24.04) (push) Has been cancelled
Base Image Build / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Base Image Build / create-manifest (push) Has been cancelled
2026-01-30 16:35:56 -06:00
SergeantPanda
256d19a2cc Move legacy numpy install to after init-dev. UV replaces. 2026-01-30 12:45:11 -06:00
SergeantPanda
a3ed1d9628 Refactor for uv transition. 2026-01-30 12:12:42 -06:00
Matt Grutza
47b591bacb Add configurable POSTGRES_PORT and REDIS_PORT for external databases
Make database ports configurable for users with external PostgreSQL/Redis.

- Add POSTGRES_PORT and REDIS_PORT to docker-compose.yml (web and celery)
- Remove hardcoded CELERY_BROKER_URL (Django builds it from components)
- Add REDIS_PORT export to entrypoint.sh and profile variables
- Add Redis connection check for modular mode (matches PostgreSQL pattern)

Users can now specify custom ports for external databases:
  [defaults]
  POSTGRES_PORT=5432
  REDIS_PORT=6379
2026-01-23 21:28:53 -06:00
Matt Grutza
557e192d4c Add UTF8 encoding check for external databases
Extend ensure_utf8_encoding() to support both internal and external PostgreSQL.

- Modular mode: Uses TCP connection with PGPASSWORD authentication
- AIO mode: Uses Unix socket as postgres user
- Explicitly set database owner during recreation (fixes missing --owner flag)
- Conversion logic (dump/drop/recreate/restore) works for both AIO and modular modes
- Skip internal PostgreSQL setup entirely when DISPATCHARR_ENV=modular
2026-01-23 19:15:27 -06:00
Matt Grutza
236b2307e1 Add health check and fix dangerous checks
- docker-compose: added service health checks

- dockerfile: added if logic for sed command so missing files do not cause build fail

- entrypoint.celery: change migration detection to not continue until ALL migrations are applied

- entrypoint: trim django key and change external postgres check to python in case postgres binaries are missing
2026-01-21 17:40:36 -06:00
Matt Grutza
3706e63bed feat: Add DISPATCHARR_ENV=modular support for multi-container deployments
- docker/entrypoint.sh: Conditional PostgreSQL init/startup for modular mode
- docker/entrypoint.celery.sh: New dedicated entrypoint for celery container - prevents race condition in modular deployment
- docker/uwsgi.modular.ini: New uWSGI config without Redis/Celery daemons
- docker/Dockerfile: Add line ending fixes and chmod for entrypoints - adds cross-platform support for image builds
- docker/docker-compose.yml: Configure modular mode with DISPATCHARR_ENV - uses new celery entrypoint and adds depends_on to prevent race condition
2026-01-21 11:14:28 -06:00
SergeantPanda
38fa0fe99d Bug Fix: Fixed NumPy baseline detection in Docker entrypoint. Now calls numpy.show_config() directly with case-insensitive grep instead of incorrectly wrapping the output.
Some checks are pending
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
2026-01-14 17:10:06 -06:00
SergeantPanda
6d5d16d667 Enhancement: Add check for existing NumPy baseline support before reinstalling legacy NumPy to avoid unnecessary installations. 2026-01-12 12:29:54 -06:00
SergeantPanda
518c93c398 Enhance Docker setup for legacy NumPy support and streamline installation process 2026-01-06 14:07:37 -06:00
sethwv-alt
b157159b87
Fix root-owned __pycache__ by running Django commands as non-root user 2025-12-31 12:16:19 -05:00
SergeantPanda
e2736babaa Reset umask after creating secret file. 2025-12-07 20:04:58 -06:00
SergeantPanda
2155229d7f Fix uwsgi command path in entrypoint script 2025-12-07 19:40:32 -06:00
dekzter
d0edc3fa07 remove permission lines to see if this resolves lack of django secret key in environment profile.d 2025-12-07 07:54:30 -05:00
dekzter
f3a901cb3a Security Fix - generate JWT on application init 2025-12-06 13:40:10 -05:00
SergeantPanda
0a6f9eb8e1 Bug fix: Fixes uWSGI not getting environmental variables passed to it and LXC not being able to access daemons launched by uWSGI.
Fixes #575, #576, #577
2025-10-22 15:31:12 -05:00
SergeantPanda
73bb1ecd2d Trying a different approach to fix LXC issues. 2025-10-22 08:26:15 -05:00
SergeantPanda
645c1ec9df Testing redis potential fix. Launch redis in entrypoint before uWSGI 2025-10-21 21:47:15 -05:00
SergeantPanda
119b222428 Enhancement: Allow setting both Celery and UWSGI nice levels. Default nice levels are UWSGI=0, Celery=5. Added documentation to the compose files on how to use it. Using nice levels for UWSGI allows us to have streaming run at a high priority. 2025-10-21 10:11:53 -05:00
SergeantPanda
7cbdb61f2c Enhancement: Ensure root's .bashrc sources Dispatcharr profile scripts for interactive non-login shells. This will help when running root commands from the container cli 2025-10-18 19:08:02 -05:00
SergeantPanda
f9a9d5d336 Convert postgres to UTF8 from ASCII 2025-08-02 19:02:57 -05:00
SergeantPanda
108a992643 Detect mismatched Postgres version and automatically run pg_upgrade 2025-07-31 14:53:55 -05:00
SergeantPanda
c3d1600c07 Additional logging. 2025-06-27 20:22:49 -05:00
SergeantPanda
44a79d2a8a Log UWSGI if debug is set (DISPATCHARR_DEBUG=true) 2025-05-14 18:49:46 -05:00
SergeantPanda
cff68625e0 Move hardware detection to end of entrypoint so it's easier to find. 2025-05-13 12:44:32 -05:00
SergeantPanda
0953e044b7 Huge improvement to hardware acceleration script. Renamed for accuracy. 2025-05-12 19:46:23 -05:00
SergeantPanda
ade8a625bc Refactor environment variable handling in entrypoint.sh for consistency and efficiency 2025-05-12 13:57:22 -05:00
SergeantPanda
da9a78c875 Only write LIBVA_DRIVER_NAME to dispatcharr.sh if it's set by the user. 2025-05-12 13:16:15 -05:00
SergeantPanda
87798f4434 Only set LIBVA_DRIVER_NAME if user has it specified. Fixes but where FFmpeg wasn't auto detecting the correct driver for VAAPI and QSV. 2025-05-12 12:52:11 -05:00
SergeantPanda
8dd3bd6878 Use variables in export. 2025-05-12 09:10:38 -05:00
SergeantPanda
b85a5be023 Add LD_LIBRARY_PATH to dispatch user and global. 2025-05-12 08:44:07 -05:00
SergeantPanda
3a06b12f2c Hopefully fixes QSV hardware acceleration. 2025-05-11 12:45:57 -05:00
SergeantPanda
3a5dcab919 Also add LIBVA_DRIVERS_PATH to global environment. 2025-05-10 15:07:38 -05:00
SergeantPanda
67b2178978 Add LIBVA_DRIVER_PATH to environmental variables for all users. 2025-05-10 14:44:47 -05:00
SergeantPanda
67aca64420 Properly set EV for all profiles so uWSGI daemons can see it. 2025-05-10 13:25:03 -05:00
SergeantPanda
aff93591fd Detect hardware acceleration capabilities and provide suggestions. 2025-05-09 17:19:46 -05:00
SergeantPanda
2b44c122e7 Update version display to include timestamp instead of build 2025-04-30 18:46:10 -05:00
SergeantPanda
1374825b44 Add version to entrypoint and set as EV 2025-04-10 20:48:05 -05:00
SergeantPanda
67f282c682 Refactor uwsgi configuration selection in entrypoint script 2025-04-06 21:01:24 -05:00
dekzter
8807b442db reverted to uwsgi for now - gunicorn will need work to keep the proxy working 2025-04-06 16:40:00 -04:00
dekzter
ecc96f8b69 memory optimization, m3u processing, re-added group filtering before m3u ingestion 2025-04-06 11:36:16 -04:00
dekzter
7351264e8a centralized and lazy-loaded redis client singleton, check for manage.py commands so we don't init proxyservers (redis connection), put manage commmands before starting uwsgi 2025-04-04 16:18:12 -04:00
dekzter
bd3c526668 persist nginx port 2025-04-02 18:00:27 -04:00
dekzter
2e1b00782d Merge remote-tracking branch 'origin/dev' into epg-refactor 2025-03-31 11:13:22 -04:00
SergeantPanda
eb1c1d4165 Fixes db migration. 2025-03-28 15:17:11 -05:00