From 298041cd7a08fc45ff20595771850a7323187b04 Mon Sep 17 00:00:00 2001 From: Chris Wiggins Date: Tue, 1 Aug 2023 16:46:59 -0700 Subject: [PATCH 01/13] fix: don't want to kill the script if we are missing env vars --- script/trigger_inotify.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/script/trigger_inotify.sh b/script/trigger_inotify.sh index 07cc387..4151e3e 100755 --- a/script/trigger_inotify.sh +++ b/script/trigger_inotify.sh @@ -6,7 +6,6 @@ file=$5 if [ -z "${user}" ] || [ -z "${password}" ] || [ -z "${address}" ] || [ -z "${filepath}" ]; then echo "SSH environment variables not set, skipping inotify trigger." - exit 1 fi if sshpass -p "$password" ssh -o StrictHostKeyChecking=no $user@$address "sed \"\" -i $filepath/$file"; then From f21d68993c87d10d2ce8e5d2bf95004a0f08731a Mon Sep 17 00:00:00 2001 From: Chris Wiggins Date: Tue, 1 Aug 2023 16:53:00 -0700 Subject: [PATCH 02/13] fix: now it skips inotify correctly --- script/trigger_inotify.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/script/trigger_inotify.sh b/script/trigger_inotify.sh index 4151e3e..4c6aeaa 100755 --- a/script/trigger_inotify.sh +++ b/script/trigger_inotify.sh @@ -6,11 +6,12 @@ file=$5 if [ -z "${user}" ] || [ -z "${password}" ] || [ -z "${address}" ] || [ -z "${filepath}" ]; then echo "SSH environment variables not set, skipping inotify trigger." -fi - -if sshpass -p "$password" ssh -o StrictHostKeyChecking=no $user@$address "sed \"\" -i $filepath/$file"; then - echo "trigger inotify successful" else - echo "trigger inotify failed" - exit 1 + if sshpass -p "$password" ssh -o StrictHostKeyChecking=no $user@$address "sed \"\" -i $filepath/$file"; then + echo "trigger inotify successful" + else + echo "trigger inotify failed" + exit 1 + fi fi + From 4af6c1b8633cbbfbaf9e9977dc95bcc3b6e8bbb8 Mon Sep 17 00:00:00 2001 From: Chris Wiggins Date: Tue, 1 Aug 2023 15:43:06 -0700 Subject: [PATCH 03/13] Fix: volume flag for scripts did not use PWD This commit fixes the volume flag for the scripts dir. Previously it did not use PWD in the bind mount, which caused it to mount in the docker volume default location, not in the local git repo on disk. --- Dockerfile | 8 ++++---- run.sh | 9 ++++++++- script/scantoemail.sh | 1 - script/scantofile.sh | 1 - script/scantoimage.sh | 1 - script/scantoocr.sh | 1 - script/trigger_inotify.sh | 13 +------------ 7 files changed, 13 insertions(+), 21 deletions(-) delete mode 120000 script/scantoemail.sh delete mode 120000 script/scantofile.sh delete mode 120000 script/scantoimage.sh delete mode 120000 script/scantoocr.sh diff --git a/Dockerfile b/Dockerfile index f4f2210..1359bed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,10 +21,10 @@ ENV IPADDRESS="192.168.1.123" ENV USERNAME="NAS" #only set these variables, if inotify needs to be triggered (e.g., for CloudStation): -ENV SSH_USER="" -ENV SSH_PASSWORD="" -ENV SSH_HOST="" -ENV SSH_PATH="" +ENV SSH_USER="admin" +ENV SSH_PASSWORD="admin" +ENV SSH_HOST="localhost" +ENV SSH_PATH="/path/to/scans/folder/" #only set these variables, if you need FTP upload: ENV FTP_USER="scanner" diff --git a/run.sh b/run.sh index ea431b5..756c604 100755 --- a/run.sh +++ b/run.sh @@ -1 +1,8 @@ -docker run -d -v /home/$USER/scans:/scans -v script:/opt/brother/scanner/brscan-skey/script/ -e "NAME=Scanner" -e "MODEL=MFC-L2700DW" -e "IPADDRESS=192.168.1.123" --net=host brother +docker run \ + -d \ + -v /home/$USER/scans:/scans \ + -v $PWD/script:/opt/brother/scanner/brscan-skey/script/ \ + -e NAME="Scanner" \ + -e MODEL="MFC-L2700DW" \ + -e IPADDRESS="10.0.0.1" \ + --net=host brother-scanner diff --git a/script/scantoemail.sh b/script/scantoemail.sh deleted file mode 120000 index 36826b0..0000000 --- a/script/scantoemail.sh +++ /dev/null @@ -1 +0,0 @@ -scantoemail-0.2.4-1.sh \ No newline at end of file diff --git a/script/scantofile.sh b/script/scantofile.sh deleted file mode 120000 index 33f00b8..0000000 --- a/script/scantofile.sh +++ /dev/null @@ -1 +0,0 @@ -scantofile-0.2.4-1.sh \ No newline at end of file diff --git a/script/scantoimage.sh b/script/scantoimage.sh deleted file mode 120000 index bfe2ea3..0000000 --- a/script/scantoimage.sh +++ /dev/null @@ -1 +0,0 @@ -scantoimage-0.2.4-1.sh \ No newline at end of file diff --git a/script/scantoocr.sh b/script/scantoocr.sh deleted file mode 120000 index 105eb99..0000000 --- a/script/scantoocr.sh +++ /dev/null @@ -1 +0,0 @@ -scantoocr-0.2.4-1.sh \ No newline at end of file diff --git a/script/trigger_inotify.sh b/script/trigger_inotify.sh index 07cc387..34d4e0b 100755 --- a/script/trigger_inotify.sh +++ b/script/trigger_inotify.sh @@ -3,15 +3,4 @@ password=$2 address=$3 filepath=$4 file=$5 - -if [ -z "${user}" ] || [ -z "${password}" ] || [ -z "${address}" ] || [ -z "${filepath}" ]; then - echo "SSH environment variables not set, skipping inotify trigger." - exit 1 -fi - -if sshpass -p "$password" ssh -o StrictHostKeyChecking=no $user@$address "sed \"\" -i $filepath/$file"; then - echo "trigger inotify successful" -else - echo "trigger inotify failed" - exit 1 -fi +sshpass -p "$password" ssh -o StrictHostKeyChecking=no $user@$address "sed \"\" -i $filepath/$file" From 9f7d07b226aca6f20f2d644d3435ada9ca1e5e89 Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 21:56:15 +0200 Subject: [PATCH 04/13] Update run.sh quoted docker volumes --- run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/run.sh b/run.sh index 756c604..4f0eb1a 100755 --- a/run.sh +++ b/run.sh @@ -1,7 +1,7 @@ docker run \ -d \ - -v /home/$USER/scans:/scans \ - -v $PWD/script:/opt/brother/scanner/brscan-skey/script/ \ + -v "/home/$USER/scans:/scans" \ + -v "$PWD/script:/opt/brother/scanner/brscan-skey/script/" \ -e NAME="Scanner" \ -e MODEL="MFC-L2700DW" \ -e IPADDRESS="10.0.0.1" \ From 11575f2cc1daf9ae9522703bab8d73c753a8cd24 Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 22:31:28 +0200 Subject: [PATCH 05/13] adding workflow to automate image creation --- .github/workflow/publish.yml | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflow/publish.yml diff --git a/.github/workflow/publish.yml b/.github/workflow/publish.yml new file mode 100644 index 0000000..5106222 --- /dev/null +++ b/.github/workflow/publish.yml @@ -0,0 +1,48 @@ +# +name: Create and publish a Docker image + +# Configures this workflow to run every time a change is pushed to the branch called `release`. +on: + push: + branches: ['release'] + +# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu. +jobs: + build-and-push-image: + runs-on: ubuntu-latest + # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. + permissions: + contents: read + packages: write + # + steps: + - name: Checkout repository + uses: actions/checkout@v3 + # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels. + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. + # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository. + # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. + - name: Build and push Docker image + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} From fcfe00de77edcda087223e09bbb0d907a38fa55e Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 22:34:44 +0200 Subject: [PATCH 06/13] updated CloudStation to Drive --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f4f2210..7fc0e18 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ ENV MODEL="MFC-L2700DW" ENV IPADDRESS="192.168.1.123" ENV USERNAME="NAS" -#only set these variables, if inotify needs to be triggered (e.g., for CloudStation): +#only set these variables, if inotify needs to be triggered (e.g., for Synology Drive): ENV SSH_USER="" ENV SSH_PASSWORD="" ENV SSH_HOST="" From 5f09cacf9992105f952c90e4dafcf9c59a3c5de6 Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 22:38:55 +0200 Subject: [PATCH 07/13] switched creation to push on master --- .github/workflow/publish.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflow/publish.yml b/.github/workflow/publish.yml index 5106222..6c1f36d 100644 --- a/.github/workflow/publish.yml +++ b/.github/workflow/publish.yml @@ -1,10 +1,11 @@ # name: Create and publish a Docker image -# Configures this workflow to run every time a change is pushed to the branch called `release`. +# Configures this workflow to run every time a change is pushed to the branch called `master`. on: push: - branches: ['release'] + branches: ['master'] + # Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. env: From 799ff7f90b743df982c4de111b685d0c728e9b1e Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 22:40:11 +0200 Subject: [PATCH 08/13] minor changes --- .github/workflow/publish.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflow/publish.yml b/.github/workflow/publish.yml index 6c1f36d..c80284b 100644 --- a/.github/workflow/publish.yml +++ b/.github/workflow/publish.yml @@ -6,7 +6,6 @@ on: push: branches: ['master'] - # Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. env: REGISTRY: ghcr.io From 5afdd99393f72d95524b2e73bcd9d83605556987 Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 22:42:23 +0200 Subject: [PATCH 09/13] Create docker-publish.yml --- .github/workflows/docker-publish.yml | 97 ++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 .github/workflows/docker-publish.yml diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..967bbe7 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,97 @@ +name: Docker + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +on: + schedule: + - cron: '28 21 * * *' + push: + branches: [ "master" ] + # Publish semver tags as releases. + tags: [ 'v*.*.*' ] + pull_request: + branches: [ "master" ] + +env: + # Use docker.io for Docker Hub if empty + REGISTRY: ghcr.io + # github.repository as / + IMAGE_NAME: ${{ github.repository }} + + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Install the cosign tool except on PR + # https://github.com/sigstore/cosign-installer + - name: Install cosign + if: github.event_name != 'pull_request' + uses: sigstore/cosign-installer@6e04d228eb30da1757ee4e1dd75a0ec73a653e06 #v3.1.1 + with: + cosign-release: 'v2.1.1' + + # Workaround: https://github.com/docker/build-push-action/issues/461 + - name: Setup Docker buildx + uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf + + # Login against a Docker registry except on PR + # https://github.com/docker/login-action + - name: Log into registry ${{ env.REGISTRY }} + if: github.event_name != 'pull_request' + uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + # Build and push Docker image with Buildx (don't push on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + + + # Sign the resulting Docker image digest except on PRs. + # This will only write to the public Rekor transparency log when the Docker + # repository is public to avoid leaking data. If you would like to publish + # transparency data even for private images, pass --force to cosign below. + # https://github.com/sigstore/cosign + - name: Sign the published Docker image + if: ${{ github.event_name != 'pull_request' }} + env: + # https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable + TAGS: ${{ steps.meta.outputs.tags }} + DIGEST: ${{ steps.build-and-push.outputs.digest }} + # This step uses the identity token to provision an ephemeral certificate + # against the sigstore community Fulcio instance. + run: echo "${TAGS}" | xargs -I {} cosign sign --yes {}@${DIGEST} From cd679ca7d09f525fa4d85165e0a378ebf527e629 Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 22:44:09 +0200 Subject: [PATCH 10/13] fixed workflows --- .github/workflows/docker-publish.yml | 97 --------------------- .github/{workflow => workflows}/publish.yml | 0 2 files changed, 97 deletions(-) delete mode 100644 .github/workflows/docker-publish.yml rename .github/{workflow => workflows}/publish.yml (100%) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml deleted file mode 100644 index 967bbe7..0000000 --- a/.github/workflows/docker-publish.yml +++ /dev/null @@ -1,97 +0,0 @@ -name: Docker - -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -on: - schedule: - - cron: '28 21 * * *' - push: - branches: [ "master" ] - # Publish semver tags as releases. - tags: [ 'v*.*.*' ] - pull_request: - branches: [ "master" ] - -env: - # Use docker.io for Docker Hub if empty - REGISTRY: ghcr.io - # github.repository as / - IMAGE_NAME: ${{ github.repository }} - - -jobs: - build: - - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - # This is used to complete the identity challenge - # with sigstore/fulcio when running outside of PRs. - id-token: write - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Install the cosign tool except on PR - # https://github.com/sigstore/cosign-installer - - name: Install cosign - if: github.event_name != 'pull_request' - uses: sigstore/cosign-installer@6e04d228eb30da1757ee4e1dd75a0ec73a653e06 #v3.1.1 - with: - cosign-release: 'v2.1.1' - - # Workaround: https://github.com/docker/build-push-action/issues/461 - - name: Setup Docker buildx - uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf - - # Login against a Docker registry except on PR - # https://github.com/docker/login-action - - name: Log into registry ${{ env.REGISTRY }} - if: github.event_name != 'pull_request' - uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Extract metadata (tags, labels) for Docker - # https://github.com/docker/metadata-action - - name: Extract Docker metadata - id: meta - uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Build and push Docker image with Buildx (don't push on PR) - # https://github.com/docker/build-push-action - - name: Build and push Docker image - id: build-and-push - uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a - with: - context: . - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max - - - # Sign the resulting Docker image digest except on PRs. - # This will only write to the public Rekor transparency log when the Docker - # repository is public to avoid leaking data. If you would like to publish - # transparency data even for private images, pass --force to cosign below. - # https://github.com/sigstore/cosign - - name: Sign the published Docker image - if: ${{ github.event_name != 'pull_request' }} - env: - # https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable - TAGS: ${{ steps.meta.outputs.tags }} - DIGEST: ${{ steps.build-and-push.outputs.digest }} - # This step uses the identity token to provision an ephemeral certificate - # against the sigstore community Fulcio instance. - run: echo "${TAGS}" | xargs -I {} cosign sign --yes {}@${DIGEST} diff --git a/.github/workflow/publish.yml b/.github/workflows/publish.yml similarity index 100% rename from .github/workflow/publish.yml rename to .github/workflows/publish.yml From 29d446c05fe57f72b79673aea50c1735ad3bc91a Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 22:52:18 +0200 Subject: [PATCH 11/13] added Docker example with new gh packages image --- README.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f72ad4b..4f29836 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,18 @@ You can configure the tool via environment variables. The following are required | MODEL | Model of your scanner (see Supported Models) | | IPADDRESS | IP Address of your scanner | -You may also want to mount a directory to retrieve your data. Scanned files are stored in /root/brscan. - -See run.sh for example how to use environment variables and mounts. +### Docker example +''' +docker run \ + -d \ + -v "/home/$USER/scans:/scans" \ + -v "$PWD/script:/opt/brother/scanner/brscan-skey/script/" \ + -e NAME="Scanner" \ + -e MODEL="MFC-L2700DW" \ + -e IPADDRESS="10.0.0.1" \ + --net=host \ + ghcr.io/philippmundhenk/brotherscannerdocker:master +''' ## Customize As the standard scripts are not working particularly well, you may customize them to your needs. @@ -28,7 +37,8 @@ drivers will call these scripts. Each script corresponds to a shortcut button on you can customize the actions running on your scanner. Hint: These scripts don't necessarily need to do scanning tasks. You can add any shell script here. You may mount the scripts like this: --v $PWD/script/:/opt/brother/scanner/brscan-skey/script/ + +-v "$PWD/script/:/opt/brother/scanner/brscan-skey/script/" ## FTPS upload In addition to the storage in the mounted volume, you can use FTPS (Secure FTP) Upload. From 018134c00562817272c2fca4e047cd72d1456cee Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 23:01:29 +0200 Subject: [PATCH 12/13] added compose example --- README.md | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4f29836..f6fb884 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ You can configure the tool via environment variables. The following are required | MODEL | Model of your scanner (see Supported Models) | | IPADDRESS | IP Address of your scanner | -### Docker example -''' +### Docker Example +``` docker run \ -d \ -v "/home/$USER/scans:/scans" \ @@ -27,7 +27,24 @@ docker run \ -e IPADDRESS="10.0.0.1" \ --net=host \ ghcr.io/philippmundhenk/brotherscannerdocker:master -''' +``` + +### Docker Compose Example +```yaml +version: '3' + +services: + brother-scanner: + image: ghcr.io/philippmundhenk/brotherscannerdocker:master + volumes: + - /var/docker/brotherscanner/scans:/scans + environment: + - NAME=Scanner + - MODEL=MFC-L2700DW + - IPADRESS=192.168.44.26 + restart: unless-stopped + network_mode: "host" +``` ## Customize As the standard scripts are not working particularly well, you may customize them to your needs. From 90f32cada1a33473e326d48f7b9ed46fcfdf4af1 Mon Sep 17 00:00:00 2001 From: Philipp Mundhenk Date: Thu, 3 Aug 2023 23:02:17 +0200 Subject: [PATCH 13/13] bash highlighting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f6fb884..1a70559 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ You can configure the tool via environment variables. The following are required | IPADDRESS | IP Address of your scanner | ### Docker Example -``` +```bash docker run \ -d \ -v "/home/$USER/scans:/scans" \