# The Scrypted docker-compose.yml file typically resides at: # ~/.scrypted/docker-compose.yml # Scrypted NVR Storage (Optional Network Volume: Part 1 of 3) # Example volumes SMB (CIFS) and NFS. # Uncomment only one. # volumes: # nvr: # driver_opts: # type: cifs # o: username=[username],password=[password],vers=3.0,file_mode=0777,dir_mode=0777 # device: //[ip-address]/[path-to-directory] # nvr: # driver_opts: # type: "nfs" # o: "addr=[ip-address],nolock,soft,rw" # device: ":[path-to-directory]" services: scrypted: # LXC usage only # lxc privileged: true environment: # Scrypted NVR Storage (Part 2 of 3) # Uncomment the next line to configure the NVR plugin to store recordings # use the /nvr directory within the container. This can also be configured # within the plugin manually. # The drive or network share will ALSO need to be configured in the volumes # section below. # - SCRYPTED_NVR_VOLUME=/nvr - SCRYPTED_WEBHOOK_UPDATE_AUTHORIZATION=Bearer ${WATCHTOWER_HTTP_API_TOKEN:-env_missing_fallback} - SCRYPTED_WEBHOOK_UPDATE=http://localhost:10444/v1/update # LXC usage only # lxc - SCRYPTED_INSTALL_ENVIRONMENT=lxc-docker # Avahi can be used for network discovery by passing in the host daemon # or running the daemon inside the container. Choose one or the other. # Uncomment next line to run avahi-daemon inside the container. # See volumes and security_opt section below to use the host daemon. # - SCRYPTED_DOCKER_AVAHI=true # NVIDIA (Part 1 of 2) # nvidia runtime: nvidia # NVIDIA (Part 2 of 2) - Use NVIDIA image, and remove subsequent default image. # Valid images: # ghcr.io/koush/scrypted # ghcr.io/koush/scrypted:nvidia # ghcr.io/koush/scrypted:intel # ghcr.io/koush/scrypted:lite image: ghcr.io/koush/scrypted volumes: # Scrypted NVR Storage (Part 3 of 3) # Modify to add the additional volume for Scrypted NVR. # The following example would mount the /mnt/media/video path on the host # to the /nvr path inside the docker container. # - /mnt/media/video:/nvr # Or use a network mount from one of the CIFS/NFS examples at the top of this file. # - type: volume # source: nvr # target: /nvr # volume: # nocopy: true # Uncomment the following lines to use Avahi daemon from the host. # Ensure Avahi is running on the host machine: # It can be installed with: sudo apt-get install avahi-daemon # This is not compatible with running avahi inside the container (see above). # Also, uncomment the lines under security_opt # - /var/run/dbus:/var/run/dbus # - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket # Default volume for the Scrypted database. Typically should not be changed. # The volume will be placed relative to this docker-compose.yml. - ./volume:/server/volume # LXC usage only # lxc - /var/run/docker.sock:/var/run/docker.sock # lxc - /root/.scrypted/docker-compose.yml:/root/.scrypted/docker-compose.yml # lxc - /root/.scrypted/docker-compose.sh:/root/.scrypted/docker-compose.sh # lxc - /root/.scrypted/.env:/root/.scrypted/.env # lxc - /mnt:/mnt # Uncomment the following lines to use Avahi daemon from the host # Without this, AppArmor will block the container's attempt to talk to Avahi via dbus # security_opt: # - apparmor:unconfined devices: [ # uncomment the common systems devices to pass # them through to docker. # all usb devices, such as coral tpu # "/dev/bus/usb:/dev/bus/usb", # hardware accelerated video decoding, opencl, etc. # "/dev/dri:/dev/dri", # AMD GPU # "/dev/kfd:/dev/kfd", # uncomment below as necessary. # zwave usb serial device # "/dev/ttyACM0:/dev/ttyACM0", # coral PCI devices # "/dev/apex_0:/dev/apex_0", # "/dev/apex_1:/dev/apex_1", ] container_name: scrypted restart: unless-stopped network_mode: host # logging is noisy and will unnecessarily wear on flash storage. # scrypted has per device in memory logging that is preferred. # enable the log file if enhanced debugging is necessary. logging: driver: "none" # driver: "json-file" # options: # max-size: "10m" # max-file: "10" labels: - "com.centurylinklabs.watchtower.scope=scrypted" # Use global DNS servers to avoid issues with some local DNS servers. # particularly with npm registry, etc. dns: - ${SCRYPTED_DNS_SERVER_0:-1.1.1.1} - ${SCRYPTED_DNS_SERVER_1:-8.8.8.8} # watchtower manages updates for Scrypted. watchtower: environment: - WATCHTOWER_HTTP_API_TOKEN=${WATCHTOWER_HTTP_API_TOKEN:-env_missing_fallback} - WATCHTOWER_HTTP_API_UPDATE=true - WATCHTOWER_SCOPE=scrypted - WATCHTOWER_HTTP_API_PERIODIC_POLLS=${WATCHTOWER_HTTP_API_PERIODIC_POLLS:-true} image: nickfedor/watchtower container_name: scrypted-watchtower restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock labels: - "com.centurylinklabs.watchtower.scope=scrypted" ports: # The auto update port 10444 can be configured # Must match the port in the auto update url above. - 10444:8080 # check for updates once an hour (interval is in seconds) command: --interval 3600 --cleanup --scope scrypted # Use global DNS servers to avoid issues with some local DNS servers. # particularly with npm registry, etc. dns: - ${SCRYPTED_DNS_SERVER_0:-1.1.1.1} - ${SCRYPTED_DNS_SERVER_1:-8.8.8.8} # LXC usage only # lxc profiles: ["disabled"]