diff --git a/compose/.env b/compose/.env index a9726dc..4184802 100644 --- a/compose/.env +++ b/compose/.env @@ -1 +1,141 @@ -#Example .env for compose \ No newline at end of file +# ============================================================================== +# AIOStreams - .env +# ============================================================================== +# AIOStreams has TWO kinds of configuration: +# +# 1. BOOTSTRAP variables (this file) - read from the environment only, before +# the database is available. They configure the things needed to start the +# process (server, database, encryption, operator auth, logging). +# These MUST be set here and cannot be changed from the dashboard. +# +# 2. RUNTIME settings - everything else (branding, presets, built-ins, proxy, +# caching, rate limits, limits, metadata, …). These are stored in the +# database and are best configured from the dashboard Settings page, where +# they can be edited live and validated. Every runtime setting still has a +# matching environment variable; setting it here locks that value (the +# field becomes read-only in the UI). Only do that if you specifically want +# an immutable, env-pinned value. +# +# Full reference for every variable (bootstrap AND runtime): +# https://docs.aiostreams.viren070.me/configuration/environment-variables +# +# Upgrading from an older version? Read: +# https://docs.aiostreams.viren070.me/migrations/v2.30 +# ============================================================================== + + +# ============================================================================== +# ESSENTIAL (REQUIRED) +# ============================================================================== + +# The base URL of your addon, including protocol and hostname (and port if not +# behind a reverse proxy). REQUIRED. Used for generating installation URLs, +# self-scraping detection, genre links, and built-in addon stream URLs. +# Example: https://aiostreams.yourdomain.com +BASE_URL=https://atream.charcarservices.uk + +# CRITICAL: secret used to encrypt stored addon configurations. +# MUST be a 64-character hex string. Cannot be changed after first run +# (doing so makes existing encrypted configs undecryptable). +# Generate one: +# Linux/macOS: openssl rand -hex 32 +# Windows (PowerShell): -join ((0..31) | ForEach-Object { '{0:x2}' -f (Get-Random -Minimum 0 -Maximum 255) }) +# (The legacy alias SESSION_SECRET is still accepted for one minor release.) +SECRET_KEY=af1423c51cb939f24c903f09c6f4f476bf2ed929b36105b3ad466af7e95515c3 + +# REQUIRED: database URI for storing addon configuration. +# Supports SQLite (simplest) or PostgreSQL. +# SQLite: DATABASE_URI=sqlite://./data/db.sqlite +# PostgreSQL: DATABASE_URI=postgres://user:password@host:port/database_name +DATABASE_URI=sqlite://./data/db.sqlite + +# Directory for the disk-backed caches (usenet segments, grabbed NZBs, torrent +# metadata). Defaults to `cache` under the data folder; set this to move the +# caches elsewhere (e.g. faster or non-persistent storage). +# DISK_CACHE_DIR=/mnt/scratch/aiostreams-cache + + +# ============================================================================== +# SERVER +# ============================================================================== + +# The port the addon listens on. +# PORT=3000 + +# Optionally override the internal URL used when communicating with built-in +# addons. The default is fine for almost all setups. +# INTERNAL_URL=http://localhost:3000 + +# Node environment: production (default), development, or test. +# NODE_ENV=production + +# Allow the dashboard System page to stop the AIOStreams process. +# SYSTEM_LIFECYCLE_ENABLED=false + + +# ============================================================================== +# REDIS (optional — scaled deployments) +# ============================================================================== +# Only recommended when running multiple instances (e.g. Docker Swarm). +# For standard single-container setups, leave this blank — AIOStreams uses a +# faster internal memory cache that is more than sufficient. +# REDIS_URI=redis://your_redis_hostname:6379 +# Redis client connect timeout in milliseconds. +# REDIS_TIMEOUT=5000 + +# How often (seconds) each instance polls the DB settings version and reloads +# runtime config if another instance changed a setting via the dashboard. +# Keeps multi-instance deployments consistent. Set 0 to disable on +# single-instance setups. +# SETTINGS_REFRESH_INTERVAL=30 + + +# ============================================================================== +# OPERATOR AUTHENTICATION +# ============================================================================== +# Credentials for this AIOStreams instance. Comma-separated username:password pairs. +# e.g. user1:pass1,user2:pass2 +# AIOSTREAMS_AUTH= + +# Per-user permissions. Comma-separated `username=perm1|perm2` entries. +# Valid permissions: admin, proxy, service, sabnzbd. +# - admin: access the dashboard + admin-only endpoints. A superset that +# implies every other permission. +# - proxy: use the built-in proxy. +# - service: use the native usenet/debrid service. +# - sabnzbd: use the SABnzbd-compatible API. +# - none: no permissions — the user may still log in to a protected config +# page but cannot use any permission-gated feature. +# Any user NOT listed here defaults to admin (all permissions). Logging in to +# the configure page never requires a permission; the dashboard requires admin. +# e.g. alice=admin,bob=proxy|sabnzbd,carol=service,dave=none +# AIOSTREAMS_AUTH_PERMISSIONS= + + +# ============================================================================== +# PRE-DB LOGGING +# ============================================================================== +# These configure the logger. + +# error | warn | info | http | verbose | debug | silly +# LOG_LEVEL=info + +# text | json (json is recommended for production) +# LOG_FORMAT=json + +# In-memory buffer of recent log lines for the dashboard Logs page. +# LOG_BUFFER_MAX_BYTES=67108864 +# LOG_BUFFER_MAX_ENTRIES=200000 + + +# ============================================================================== +# EVERYTHING ELSE +# ============================================================================== +# All other settings — addon name/ID, presets, built-in addons, debrid/service +# credentials, stream proxy, caching, rate limits, user limits, metadata, etc. +# - are runtime settings. Configure them from the dashboard Settings page. +# +# If you must pin one via the environment, find its variable name, format, and +# default in the reference: +# https://docs.aiostreams.viren070.me/configuration/environment-variables +# ============================================================================== diff --git a/compose/docker-compose.yml b/compose/docker-compose.yml index 83dadbb..cf9e870 100644 --- a/compose/docker-compose.yml +++ b/compose/docker-compose.yml @@ -1 +1,11 @@ -#Example for compose +services: + aiostreams: + image: ghcr.io/viren070/aiostreams:latest + container_name: aiostreams + restart: unless-stopped + ports: + - 3000:3000 + env_file: + - .env + volumes: + - ./data:/app/data diff --git a/terraform/backend.tf b/terraform/backend.tf index b64cfe0..e229c04 100644 --- a/terraform/backend.tf +++ b/terraform/backend.tf @@ -1,7 +1,7 @@ terraform { backend "s3" { bucket = "terraform" - key = "n8n/terraform.tfstate" + key = "media/terraform.tfstate" access_key = "GK242d456c0692a9d4cc102206" secret_key = "1d7e22b7a8892cb11b569017659aa511b37b53287c4d1699c310d9f8ac76df09" region = "garage" diff --git a/terraform/output.tf b/terraform/output.tf index e5dd6be..7c2fb75 100644 --- a/terraform/output.tf +++ b/terraform/output.tf @@ -1,7 +1,7 @@ output "vm_ipv4_addresses" { description = "Map of instance key to VM IPv4 address" value = { - for k, m in module.vm-n8n : k => m.vm_ipv4_address + for k, m in module.proxmox_ubuntu_cloudinit_clone : k => m.vm_ipv4_address } } @@ -28,14 +28,4 @@ output "vm_tag_data" { tags = v.vm_tags } } -} - -# output "inventory_file" { -# description = "Path to the generated Ansible inventory" -# value = module.inventory.filename -# } - -# output "vm_data_file" { -# description = "Path to the generated VM data file" -# value = module.vm_data.filename -# } +} \ No newline at end of file diff --git a/terraform/single.tfvars.example b/terraform/single.tfvars.example index 7705723..1c10100 100644 --- a/terraform/single.tfvars.example +++ b/terraform/single.tfvars.example @@ -1,11 +1,11 @@ instance_mode = "single" instance = { - service_name = "n8n" - vm_name = "n8n-01" - node_name = "pop" - app_port = 5678 - app_image = "docker.n8n.io/n8nio/n8n" - vm_tags = ["agentic"] + service_name = "media" + vm_name = "media-01" + node_name = "snap" + app_port = 3000 + app_image = "ghcr.io/viren070/aiostreams:jellyfin" + vm_tags = ["aio", "usenet", "arr"] }