Compare commits
	
		
			6 Commits
		
	
	
		
			22c0627298
			...
			70c95f7976
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 70c95f7976 | ||
| d95c4344c3 | |||
| 5aa9f26470 | |||
| 7ef1df2304 | |||
| 1f7d4daeed | |||
|   | 8165f70d64 | 
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							| @@ -61,10 +61,15 @@ services: | ||||
|     environment: | ||||
|       # Django | ||||
|       - DJANGO_DEBUG=true | ||||
|       - USE_X_FORWARDED_HOST=true | ||||
|       - DJANGO_SECURE_PROXY_SSL_HEADER=true | ||||
|       - DJANGO_CSRF_COOKIE_SECURE=true | ||||
|       - DJANGO_SESSION_COOKIE_SECURE=true | ||||
|       - DJANGO_ALLOWED_HOSTS=* | ||||
|       - DJANGO_SECRET_KEY=change-me | ||||
|       - DB_PATH=/app/data/db.sqlite3 | ||||
|       - NOTIFICATIONS_ALLOW_DUPLICATES=false | ||||
|       - DJANGO_CSRF_TRUSTED_ORIGINS="https://subscribarr.local.js-devop.de" | ||||
|       # App Settings (optional, otherwise use first-run setup) | ||||
|       #- JELLYFIN_URL= | ||||
|       #- JELLYFIN_API_KEY= | ||||
| @@ -85,11 +90,8 @@ services: | ||||
|       # Cron schedule (default every 30min) | ||||
|       - CRON_SCHEDULE=*/30 * * * * | ||||
|     volumes: | ||||
|       - subscribarr-data:/app/data | ||||
|       - ./data:/app/data | ||||
|     restart: unless-stopped | ||||
|  | ||||
| volumes: | ||||
|   subscribarr-data: | ||||
| ``` | ||||
|  | ||||
| --- | ||||
| @@ -115,7 +117,7 @@ volumes: | ||||
|  | ||||
| ## First Run | ||||
|  | ||||
| 1. Start the container (or dev server) and open `http://<host>:8000`.   | ||||
| 1. Start the container (or dev server) and open `http://<host>:8081`.   | ||||
| 2. Complete the **first-time setup**: Jellyfin URL/API key (required), optional Sonarr/Radarr, SMTP.   | ||||
| 3. **Sign in** with Jellyfin credentials (admin users in Jellyfin become admins in Subscribarr).   | ||||
| 4. Adjust settings later at `/settings/`. | ||||
|   | ||||
| @@ -6,7 +6,7 @@ class Command(BaseCommand): | ||||
|     help = 'Checks for new media and sends notifications' | ||||
|  | ||||
|     def handle(self, *args, **kwargs): | ||||
|     self.stdout.write(f'[{timezone.now()}] Starting media check...') | ||||
|         self.stdout.write(f'[{timezone.now()}] Starting media check...') | ||||
|         try: | ||||
|             check_and_notify_users() | ||||
|             self.stdout.write(self.style.SUCCESS(f'[{timezone.now()}] Media check finished successfully')) | ||||
|   | ||||
| @@ -8,11 +8,15 @@ services: | ||||
|     environment: | ||||
|       # Django | ||||
|       - DJANGO_DEBUG=true | ||||
|       - USE_X_FORWARDED_HOST=true | ||||
|       - DJANGO_SECURE_PROXY_SSL_HEADER=true | ||||
|       - DJANGO_CSRF_COOKIE_SECURE=true | ||||
|       - DJANGO_SESSION_COOKIE_SECURE=true | ||||
|       - DJANGO_ALLOWED_HOSTS=* | ||||
|       - DJANGO_SECRET_KEY=change-me | ||||
|       - DB_PATH=/app/data/db.sqlite3 | ||||
|       - NOTIFICATIONS_ALLOW_DUPLICATES=false | ||||
|       - DJANGO_CSRF_TRUSTED_ORIGINS="https://subscribarr.example.com,https://app.example.org" | ||||
|       - DJANGO_CSRF_TRUSTED_ORIGINS="https://subscribarr.local.js-devop.de" | ||||
|       # App Settings (optional, otherwise use first-run setup) | ||||
|       #- JELLYFIN_URL= | ||||
|       #- JELLYFIN_API_KEY= | ||||
| @@ -33,8 +37,5 @@ services: | ||||
|       # Cron schedule (default every 30min) | ||||
|       - CRON_SCHEDULE=*/30 * * * * | ||||
|     volumes: | ||||
|       - subscribarr-data:/app/data | ||||
|       - ./data:/app/data | ||||
|     restart: unless-stopped | ||||
|  | ||||
| volumes: | ||||
|   subscribarr-data: | ||||
|   | ||||
| @@ -2,6 +2,7 @@ | ||||
| set -euo pipefail | ||||
|  | ||||
| # Apply migrations | ||||
| python manage.py makemigrations | ||||
| python manage.py migrate --noinput | ||||
|  | ||||
| # Create admin user if provided | ||||
| @@ -66,11 +67,20 @@ print("AppSettings seeded from environment (if provided)") | ||||
| PY | ||||
|  | ||||
| # Setup cron if schedule provided | ||||
| if [[ -n "${CRON_SCHEDULE:-}" ]]; then | ||||
|   echo "Configuring cron: ${CRON_SCHEDULE}" | ||||
|   echo "${CRON_SCHEDULE} cd /app && /usr/local/bin/python manage.py check_new_media >> /app/cron.log 2>&1" > /etc/cron.d/subscribarr | ||||
| if [ -n "${CRON_SCHEDULE:-}" ]; then | ||||
|   cat >/etc/cron.d/subscribarr <<EOF | ||||
| SHELL=/bin/sh | ||||
| PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | ||||
|  | ||||
| # gleiche DB wie die App: | ||||
| DB_PATH=${DB_PATH:-/app/data/db.sqlite3} | ||||
| PYTHON=/usr/local/bin/python | ||||
|  | ||||
| # <m h dom mon dow> <user> <cmd> | ||||
| ${CRON_SCHEDULE} root cd /app && \$PYTHON manage.py migrate --noinput && \$PYTHON manage.py check_new_media >> /app/cron.log 2>&1 | ||||
| EOF | ||||
|  | ||||
|   chmod 0644 /etc/cron.d/subscribarr | ||||
|   crontab /etc/cron.d/subscribarr | ||||
|   /usr/sbin/cron | ||||
| fi | ||||
|  | ||||
|   | ||||
| @@ -116,6 +116,21 @@ if not CSRF_TRUSTED_ORIGINS: | ||||
|     CSRF_TRUSTED_ORIGINS = ['https://subscribarr.local.js-devop.de'] | ||||
|  | ||||
|  | ||||
| USE_X_FORWARDED_HOST = os.getenv('USE_X_FORWARDED_HOST', 'False').lower() == 'true' | ||||
| if os.getenv('DJANGO_SECURE_PROXY_SSL_HEADER', '').lower() in ('1', 'true', 'yes'): | ||||
|     SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') | ||||
|  | ||||
| # Secure cookies when served over HTTPS (optional) | ||||
| CSRF_COOKIE_SECURE = os.getenv('DJANGO_CSRF_COOKIE_SECURE', 'False').lower() == 'true' | ||||
| SESSION_COOKIE_SECURE = os.getenv('DJANGO_SESSION_COOKIE_SECURE', 'False').lower() == 'true' | ||||
|  | ||||
| # Optional cookie domain override (for subdomain setups) | ||||
| _cookie_domain = os.getenv('DJANGO_COOKIE_DOMAIN', '').strip() | ||||
| if _cookie_domain: | ||||
|     CSRF_COOKIE_DOMAIN = _cookie_domain | ||||
|     SESSION_COOKIE_DOMAIN = _cookie_domain | ||||
|  | ||||
|  | ||||
|  | ||||
| # Internationalization | ||||
| # https://docs.djangoproject.com/en/5.2/topics/i18n/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user