**Purpose**: pyLoad-ng is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.

[Detailed LinuxServer.io Deployment Info](https://docs.linuxserver.io/images/docker-pyload-ng/)


## Docker Configuration
```jsx title="docker-compose.yml"
version: '3.9'

services:
  pyload-ng:
    image: lscr.io/linuxserver/pyload-ng:latest
    container_name: pyload-ng
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Denver
    volumes:
      - /srv/containers/pyload-ng/config:/config
      - nfs-share:/downloads
    ports:
      - 8000:8000
      - 9666:9666 #optional
    restart: unless-stopped
    networks:
      docker_network:
        ipv4_address: 192.168.5.30

volumes:
  nfs-share:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.3.3,nolock,soft,rw  # Options for the NFS mount
      device: ":/mnt/STORAGE/Downloads"  # NFS path on the server

networks:
  docker_network:
    external: true
```
    
1.  Set this to your own timezone.
2.  This is optional.  Additional documentation needed to convey what this port is used for.  Possibly API access.
3.  This assumes you want your download folder to be a SMB network share, this section allows you to connect to the share so Pyload can download content directly into the network folder.  Replace the username and `REDACTED` password with your actual credentials.  Remove the `domain` argument if the SMB server is not domain-joined.
4.  This is the destination network share to target with the given credentials in section 3.

!!! note "NFS Mount Assumptions"
    The NFS folder in this example is both exported via NFS on a TrueNAS Core server, while also being exported as an NFS export.  `mapall user` and `mapall group` is configured to the user and group owners of the folder set in the permissions of the dataset in TrueNAS Core.  In this case, the mapall user is `BUNNY-LAB\nicole.rappe` and the mapall group is `BUNNY-LAB\Domain Admins`.

```jsx title=".env"
N/A
```

## Traefik Reverse Proxy Configuration
If the container does not run on the same host as Traefik, you will need to manually add configuration to Traefik's dynamic config file, outlined below.
``` yaml
http:
  routers:
    pyload:
      entryPoints:
        - websecure
      tls:
        certResolver: letsencrypt
      http2:
      service: pyload
      rule: Host(`pyload.bunny-lab.io`)

  services:
    pyload:
      loadBalancer:
        servers:
          - url: http://192.168.5.30:8000
        passHostHeader: true
```

!!! warning "Change Default Admin Credentials"
    Pyload ships with the username `pyload` and password `pyload`.  Make sure you change the credentials immediately after initial login.
    Navigate to "**Settings > Users > Pyload:"Change Password"**"