version: '3.8' services: orly-relay: image: silberengel/next-orly:v0.48.10 container_name: orly-relay restart: always ports: - "127.0.0.1:3334:3334" - "127.0.0.1:7777:7777" volumes: # Use bind mount to host filesystem for large datasets (20GB+) # Change /var/lib/orly to your desired data directory on the host - /var/lib/orly:/data environment: # Relay Configuration - ORLY_DATA_DIR=/data - ORLY_LISTEN=0.0.0.0 - ORLY_PORT=7777 - ORLY_LOG_LEVEL=Info # Admin and Owner Configuration - ORLY_ADMINS=npub1m4ny6hjqzepn4rxknuq94c2gpqzr29ufkkw7ttcxyak7v43n6vvsajc2jl,npub1v30tsz9vw6ylpz63g0a702nj3xa26t3m7p5us8f2y2sd8v6cnsvq465zjx,npub12umrfdjgvdxt45g0y3ghwcyfagssjrv5qlm3t6pu2aa5vydwdmwq8q0z04,npub18cddpua960qjy3wmw7y9gmzr4h3ajlrwq3k9jnmqzlxke4qkg6gqeyaztw - ORLY_OWNERS=npub1m4ny6hjqzepn4rxknuq94c2gpqzr29ufkkw7ttcxyak7v43n6vvsajc2jl,npub1v30tsz9vw6ylpz63g0a702nj3xa26t3m7p5us8f2y2sd8v6cnsvq465zjx,npub12umrfdjgvdxt45g0y3ghwcyfagssjrv5qlm3t6pu2aa5vydwdmwq8q0z04,npub18cddpua960qjy3wmw7y9gmzr4h3ajlrwq3k9jnmqzlxke4qkg6gqeyaztw # ACL Configuration (follows mode for access control based on admin follow lists) - ORLY_ACL_MODE=follows # Spider Configuration (syncs events for followed pubkeys) - ORLY_SPIDER_MODE=follows # Relay URL (for dashboard and metadata) - ORLY_RELAY_URL=wss://orly-relay.imwald.eu # Sprocket Configuration (event processing plugin system) - ORLY_SPROCKET_ENABLED=false # Database Logging - ORLY_DB_LOG_LEVEL=error # Database Cache Tuning for Large Datasets (20GB+) # Increased caches for better performance with large working sets - ORLY_DB_BLOCK_CACHE_MB=2048 # 2GB block cache (default: 1024MB) - ORLY_DB_INDEX_CACHE_MB=1024 # 1GB index cache (default: 512MB) - ORLY_SERIAL_CACHE_PUBKEYS=500000 # 500k pubkeys cache (default: 100k) - ORLY_SERIAL_CACHE_EVENT_IDS=2000000 # 2M event IDs cache (default: 500k) - ORLY_DB_ZSTD_LEVEL=9 # ZSTD compression level 9 (best compression, reduces disk IO) # Storage GC Configuration for Large Archives # Enable GC with aggressive eviction to manage storage growth - ORLY_GC_ENABLED=true # Enable storage garbage collection - ORLY_GC_BATCH_SIZE=5000 # GC batch size for efficient processing - ORLY_MAX_STORAGE_BYTES=107374182400 # 100GB storage cap (adjust as needed) # Bootstrap relay for initial sync - ORLY_BOOTSTRAP_RELAYS=wss://profiles.nostr1.com,wss://purplepag.es,wss://relay.damus.io # Disable subscription/payment requirements - ORLY_SUBSCRIPTION_ENABLED=false - ORLY_MONTHLY_PRICE_SAT=0 # Performance Settings - ORLY_MAX_CONNECTIONS=1000 - ORLY_MAX_EVENT_SIZE=65536 - ORLY_MAX_SUBSCRIPTIONS=20 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7777"] interval: 30s timeout: 10s retries: 3 start_period: 20s # Resource limits - Increased for large imports (20GB+) # Memory increased to handle Badger caches and import operations deploy: resources: limits: memory: 4096M # 4GB - increased from 1GB for large dataset imports cpus: "2.0" # Increased CPU for faster compaction during imports reservations: memory: 2048M # 2GB reservation cpus: "1.0" # Logging configuration logging: driver: "json-file" options: max-size: "10m" max-file: "3" # Note: Using bind mount instead of named volume for large datasets # Data is stored directly on host filesystem at /var/lib/orly # To use a different path, change the volume mount above