A containerized Nicotine+ (Soulseek client) with noVNC web interface. Features: - Web-based VNC access with dynamic screen resizing - Firefox ESR browser included for port testing - Multi-architecture support (amd64, arm64) - Automated builds when Nicotine+ releases new versions - Mirrored Alpine base image to avoid Docker Hub rate limiting 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
63 lines
1.7 KiB
Plaintext
63 lines
1.7 KiB
Plaintext
services:
|
|
nicotine-less:
|
|
image: git.nicola.sh/public/nicotine-less:latest
|
|
# Or build locally:
|
|
# build: .
|
|
container_name: nicotine-less
|
|
hostname: nicotine-less
|
|
restart: unless-stopped
|
|
|
|
# Ports
|
|
ports:
|
|
- "6080:6080" # noVNC web interface
|
|
- "2234:2234" # Soulseek TCP
|
|
- "2235:2235/udp" # Soulseek UDP
|
|
|
|
# Environment variables
|
|
environment:
|
|
- PUID=1000 # User ID (change if needed)
|
|
- PGID=1000 # Group ID (change if needed)
|
|
- TZ=Europe/Rome # Timezone
|
|
- VNC_RESOLUTION=1920x1080 # Desktop resolution
|
|
- VNC_DEPTH=24 # Color depth
|
|
- VNC_PASSWORD=nicotine # VNC password (optional)
|
|
- DISPLAY=:0
|
|
|
|
# Persistent volumes
|
|
volumes:
|
|
# Nicotine+ configuration (database, settings, user lists, etc)
|
|
- ./data/config:/config
|
|
|
|
# Completed downloads - CHANGE TO YOUR PATH
|
|
- /path/to/your/downloads:/downloads
|
|
|
|
# Incomplete downloads - CHANGE TO YOUR PATH
|
|
- /path/to/your/incomplete:/incomplete
|
|
|
|
# Optional: additional shared folders - CHANGE TO YOUR PATHS
|
|
# - /path/to/your/music:/shares/music:ro
|
|
# - /path/to/your/other:/shares/other:ro
|
|
|
|
# Resource limits (optional, useful for Raspberry Pi)
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 1G
|
|
cpus: '2'
|
|
reservations:
|
|
memory: 256M
|
|
|
|
# Network
|
|
network_mode: bridge
|
|
|
|
# Privileged mode not required
|
|
privileged: false
|
|
|
|
# Healthcheck
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:6080"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|