feat: add JFA-Go and SoulSync docker-compose configs
- jfa-go-docker-compose.yml: Jellyfin account invitation system (invite.jefflix.lol) - soulsync-docker-compose.yml: Spotify/Tidal to Soulseek music sync - tsconfig.json: formatting updates and jsx mode fix - package-lock.json: lock dependencies Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
38dc171af7
commit
95ac4129b3
|
|
@ -0,0 +1,21 @@
|
|||
services:
|
||||
jfa-go:
|
||||
image: hrfee/jfa-go
|
||||
container_name: jfa-go
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8056:8056"
|
||||
volumes:
|
||||
- ./jfa-go-data:/data
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.jfa-go.rule=Host(`invite.jefflix.lol`)"
|
||||
- "traefik.http.services.jfa-go.loadbalancer.server.port=8056"
|
||||
networks:
|
||||
- traefik-public
|
||||
environment:
|
||||
- TZ=Europe/Berlin
|
||||
|
||||
networks:
|
||||
traefik-public:
|
||||
external: true
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,76 @@
|
|||
services:
|
||||
# slskd - Soulseek client with REST API
|
||||
slskd:
|
||||
image: slskd/slskd:latest
|
||||
container_name: slskd
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- SLSKD_REMOTE_CONFIGURATION=true
|
||||
- SLSKD_SHARED_DIR=/shared
|
||||
- SLSKD_DOWNLOADS_DIR=/downloads
|
||||
- SLSKD_NO_HTTPS=true
|
||||
- TZ=Europe/Berlin
|
||||
volumes:
|
||||
- ./config/slskd:/app
|
||||
- ./downloads:/downloads
|
||||
# Share some of your music library back (important - avoid bans!)
|
||||
- /mnt/hetzner-media/media/music:/shared:ro
|
||||
# Transfer folder - completed downloads move here for import
|
||||
- ./transfer:/transfer
|
||||
ports:
|
||||
- "50300:50300" # Soulseek listen port
|
||||
- "50300:50300/udp"
|
||||
networks:
|
||||
- soulsync-network
|
||||
- traefik-public
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.slskd.rule=Host(`soulseek.jefflix.lol`) || Host(`slskd.jefflix.lol`)"
|
||||
- "traefik.http.routers.slskd.entrypoints=web"
|
||||
- "traefik.http.services.slskd.loadbalancer.server.port=5030"
|
||||
- "traefik.docker.network=traefik-public"
|
||||
|
||||
# SoulSync - Spotify/Tidal to Soulseek sync
|
||||
soulsync:
|
||||
image: boulderbadgedad/soulsync:latest
|
||||
container_name: soulsync
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Europe/Berlin
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- PYTHONPATH=/app
|
||||
- FLASK_ENV=production
|
||||
volumes:
|
||||
- ./config/soulsync:/app/data
|
||||
- ./config/soulsync/logs:/app/logs
|
||||
- ./config/soulsync/config:/app/config
|
||||
- ./config/soulsync/storage:/app/storage
|
||||
# Access to existing music library for comparison
|
||||
- /mnt/hetzner-media/media/music:/music:ro
|
||||
# Downloads from slskd
|
||||
- ./downloads:/downloads
|
||||
# Transfer folder for completed/processed files
|
||||
- ./transfer:/transfer
|
||||
depends_on:
|
||||
- slskd
|
||||
networks:
|
||||
- soulsync-network
|
||||
- traefik-public
|
||||
- media-network
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.soulsync.rule=Host(`soulsync.jefflix.lol`)"
|
||||
- "traefik.http.routers.soulsync.entrypoints=web"
|
||||
- "traefik.http.services.soulsync.loadbalancer.server.port=8008"
|
||||
- "traefik.docker.network=traefik-public"
|
||||
|
||||
networks:
|
||||
soulsync-network:
|
||||
driver: bridge
|
||||
traefik-public:
|
||||
external: true
|
||||
media-network:
|
||||
external: true
|
||||
|
|
@ -1,6 +1,10 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"lib": ["dom", "dom.iterable", "esnext"],
|
||||
"lib": [
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"esnext"
|
||||
],
|
||||
"allowJs": true,
|
||||
"target": "ES6",
|
||||
"skipLibCheck": true,
|
||||
|
|
@ -11,7 +15,7 @@
|
|||
"moduleResolution": "bundler",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "preserve",
|
||||
"jsx": "react-jsx",
|
||||
"incremental": true,
|
||||
"plugins": [
|
||||
{
|
||||
|
|
@ -19,9 +23,19 @@
|
|||
}
|
||||
],
|
||||
"paths": {
|
||||
"@/*": ["./*"]
|
||||
"@/*": [
|
||||
"./*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
|
||||
"exclude": ["node_modules"]
|
||||
"include": [
|
||||
"next-env.d.ts",
|
||||
"**/*.ts",
|
||||
"**/*.tsx",
|
||||
".next/types/**/*.ts",
|
||||
".next/dev/types/**/*.ts"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue