diff --git a/nefarious/.env.example b/nefarious/.env.example new file mode 100644 index 0000000..4fcda8a --- /dev/null +++ b/nefarious/.env.example @@ -0,0 +1,27 @@ +# Only sqlite3 works by default +DATABASE_URL=sqlite:////config/db.sqlite3 + +# Path to download torrents to. +# In this setup, we juse use a docker volume as the downloads aren't meant to stay on the system after being watched +# You can change this to a directory if you wish to download to the host's file system instead +HOST_DOWNLOAD_PATH=downloads + +# Redis host; shouldn't be changed +REDIS_HOST=redis + +# Config path for nefarious inside container; leave as is +NEFARIOUS_CONFIG_PATH=/config + +# Admin user credentials +NEFARIOUS_USER=admin +NEFARIOUS_PASS=changeme + +# UID and GID to run as +PUID=1000 +PGID=1000 + +# Timezone +TZ=Europe/London + +# How many worker processes celery may use; if 0, uses all cpu cores +CELERY_WORKERS=0 diff --git a/nefarious/README.md b/nefarious/README.md new file mode 100644 index 0000000..e69de29 diff --git a/nefarious/docker-compose.yml b/nefarious/docker-compose.yml new file mode 100644 index 0000000..f1db7fc --- /dev/null +++ b/nefarious/docker-compose.yml @@ -0,0 +1,108 @@ +version: '3.5' + +services: + # Main nefarious app + app: + image: 'lardbit/nefarious:latest' + restart: 'always' + logging: + options: + max-size: '500k' + max-file: '10' + + depends_on: + - 'celery' + - 'jackett' + - 'redis' + environment: + - 'DATABASE_URL' + - 'REDIS_HOST' + - 'HOST_DOWNLOAD_PATH' + - 'NEFARIOUS_USER' + - 'NEFARIOUS_PASS' + - 'CONFIG_PATH=${NEFARIOUS_CONFIG_PATH}' + labels: + - 'com.centurylinklabs.watchtower.enable=true' + networks: + - 'default' + - 'nginx' + volumes: + - 'config:${NEFARIOUS_CONFIG_PATH}' + + # Caching + redis: + image: 'redis:6-alpine' + restart: 'always' + labels: + - 'com.centurylinklabs.watchtower.enable=true' + + # Background task queue + celery: + image: 'lardbit/nefarious:latest' + restart: 'always' + entrypoint: /env/bin/celery -A nefarious worker --concurrency $CELERY_WORKERS --beat --loglevel=INFO + logging: + options: + max-size: '500k' + max-file: '10' + + depends_on: + - 'redis' + environment: + - 'DATABASE_URL' + - 'REDIS_HOST' + - 'CONFIG_PATH=${NEFARIOUS_CONFIG_PATH}' + labels: + - 'com.centurylinklabs.watchtower.enable=true' + volumes: + - 'config:${NEFARIOUS_CONFIG_PATH}' + + # Tracker searching + jackett: + image: 'linuxserver/jackett:latest' + restart: 'always' + logging: + options: + max-size: '500k' + max-file: '10' + + ports: + - '9117:9117' + labels: + - 'com.centurylinklabs.watchtower.enable=true' + networks: + - 'default' + - 'nginx' + volumes: + - 'jackett-config:/config' + + # Torrenting server + transmission: + image: 'linuxserver/transmission:latest' + restart: 'always' + logging: + options: + max-size: '500k' + max-file: '10' + + environment: + - 'PUID' + - 'PGID' + - 'TZ' + labels: + - 'com.centurylinklabs.watchtower.enable=true' + ports: + - '51413:51413' + - '51413:51413/udp' + volumes: + - '$HOST_DOWNLOAD_PATH:/downloads' + - './transmission_settings.json:/config/settings.json' + +networks: + nginx: + external: true + +volumes: + config: + downloads: + jackett-config: diff --git a/nefarious/transmission_settings.json b/nefarious/transmission_settings.json new file mode 100644 index 0000000..c079c8f --- /dev/null +++ b/nefarious/transmission_settings.json @@ -0,0 +1,10 @@ +{ + "download-dir": "/downloads/complete", + "incomplete-dir": "/downloads/incomplete", + "rpc-whitelist": "*", + "rpc-host-whitelist-enabled": "false", + "port-forwarding-enabled": true, + "peer-port": 51413, + "peer-port-random-on-start": false, + "peer-socket-tos": "default" +}