├── .github ├── DISCUSSION_TEMPLATE │ └── questions.yml ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── config.yml │ └── privileged.yml ├── dependabot.yml └── workflows │ ├── deploy.yml │ ├── issue-manager.yml │ ├── latest-changes.yml │ └── test.yml ├── Dockerfile ├── LICENSE ├── README.md ├── SECURITY.md └── nginx.conf /.github/DISCUSSION_TEMPLATE/questions.yml: -------------------------------------------------------------------------------- 1 | labels: [question] 2 | body: 3 | - type: markdown 4 | attributes: 5 | value: | 6 | Thanks for your interest in this project! 🚀 7 | 8 | Please follow these instructions, fill every question, and do every step. 🙏 9 | 10 | I'm asking this because answering questions and solving problems in GitHub is what consumes most of the time. 11 | 12 | I end up not being able to add new features, fix bugs, review pull requests, etc. as fast as I wish because I have to spend too much time handling questions. 13 | 14 | All that, on top of all the incredible help provided by a bunch of community members, that give a lot of their time to come here and help others. 15 | 16 | That's a lot of work, but if more users came to help others like them just a little bit more, it would be much less effort for them (and you and me 😅). 17 | 18 | By asking questions in a structured way (following this) it will be much easier to help you. 19 | 20 | And there's a high chance that you will find the solution along the way and you won't even have to submit it and wait for an answer. 😎 21 | 22 | As there are too many questions, I'll have to discard and close the incomplete ones. That will allow me (and others) to focus on helping people like you that follow the whole process and help us help you. 🤓 23 | - type: checkboxes 24 | id: checks 25 | attributes: 26 | label: First Check 27 | description: Please confirm and check all the following options. 28 | options: 29 | - label: I added a very descriptive title here. 30 | required: true 31 | - label: I used the GitHub search to find a similar question and didn't find it. 32 | required: true 33 | - label: I searched in the documentation/README. 34 | required: true 35 | - label: I already searched in Google "How to do X" and didn't find any information. 36 | required: true 37 | - label: I already read and followed all the tutorial in the docs/README and didn't find an answer. 38 | required: true 39 | - type: checkboxes 40 | id: help 41 | attributes: 42 | label: Commit to Help 43 | description: | 44 | After submitting this, I commit to one of: 45 | 46 | * Read open questions until I find 2 where I can help someone and add a comment to help there. 47 | * I already hit the "watch" button in this repository to receive notifications and I commit to help at least 2 people that ask questions in the future. 48 | 49 | options: 50 | - label: I commit to help with one of those options 👆 51 | required: true 52 | - type: textarea 53 | id: example 54 | attributes: 55 | label: Example Code 56 | description: | 57 | Please add a self-contained, [minimal, reproducible, example](https://stackoverflow.com/help/minimal-reproducible-example) with your use case. 58 | 59 | If I (or someone) can copy it, run it, and see it right away, there's a much higher chance I (or someone) will be able to help you. 60 | 61 | placeholder: | 62 | Write your example code here. 63 | render: Text 64 | validations: 65 | required: true 66 | - type: textarea 67 | id: description 68 | attributes: 69 | label: Description 70 | description: | 71 | What is the problem, question, or error? 72 | 73 | Write a short description telling me what you are doing, what you expect to happen, and what is currently happening. 74 | placeholder: | 75 | * Open the browser and call the endpoint `/`. 76 | * It returns a JSON with `{"message": "Hello World"}`. 77 | * But I expected it to return `{"message": "Hello Morty"}`. 78 | validations: 79 | required: true 80 | - type: dropdown 81 | id: os 82 | attributes: 83 | label: Operating System 84 | description: What operating system are you on? 85 | multiple: true 86 | options: 87 | - Linux 88 | - Windows 89 | - macOS 90 | - Other 91 | validations: 92 | required: true 93 | - type: textarea 94 | id: os-details 95 | attributes: 96 | label: Operating System Details 97 | description: You can add more details about your operating system here, in particular if you chose "Other". 98 | validations: 99 | required: true 100 | - type: input 101 | id: python-version 102 | attributes: 103 | label: Python Version 104 | description: | 105 | What Python version are you using? 106 | 107 | You can find the Python version with: 108 | 109 | ```bash 110 | python --version 111 | ``` 112 | validations: 113 | required: true 114 | - type: textarea 115 | id: context 116 | attributes: 117 | label: Additional Context 118 | description: Add any additional context information or screenshots you think are useful. 119 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [tiangolo] 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Security Contact 4 | about: Please report security vulnerabilities to security@tiangolo.com 5 | - name: Question or Problem 6 | about: Ask a question or ask about a problem in GitHub Discussions. 7 | url: https://github.com/tiangolo/nginx-rtmp-docker/discussions/categories/questions 8 | - name: Feature Request 9 | about: To suggest an idea or ask about a feature, please start with a question saying what you would like to achieve. There might be a way to do it already. 10 | url: https://github.com/tiangolo/nginx-rtmp-docker/discussions/categories/questions 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/privileged.yml: -------------------------------------------------------------------------------- 1 | name: Privileged 2 | description: You are @tiangolo or he asked you directly to create an issue here. If not, check the other options. 👇 3 | body: 4 | - type: markdown 5 | attributes: 6 | value: | 7 | Thanks for your interest in this project! 🚀 8 | 9 | If you are not @tiangolo or he didn't ask you directly to create an issue here, please start the conversation in a [Question in GitHub Discussions](https://github.com/tiangolo/nginx-rtmp-docker/discussions/categories/questions) instead. 10 | - type: checkboxes 11 | id: privileged 12 | attributes: 13 | label: Privileged issue 14 | description: Confirm that you are allowed to create an issue here. 15 | options: 16 | - label: I'm @tiangolo or he asked me directly to create an issue here. 17 | required: true 18 | - type: textarea 19 | id: content 20 | attributes: 21 | label: Issue Content 22 | description: Add the content of the issue here. 23 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # GitHub Actions 4 | - package-ecosystem: "github-actions" 5 | directory: "/" 6 | schedule: 7 | interval: "daily" 8 | commit-message: 9 | prefix: ⬆ 10 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | schedule: 8 | # cron every week on monday 9 | - cron: "0 0 * * 1" 10 | 11 | jobs: 12 | deploy: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v4 16 | - name: Set up Docker Buildx 17 | uses: docker/setup-buildx-action@v3 18 | - name: Login to DockerHub 19 | uses: docker/login-action@v3 20 | with: 21 | username: ${{ secrets.DOCKERHUB_USERNAME }} 22 | password: ${{ secrets.DOCKERHUB_TOKEN }} 23 | - name: Get date for tags 24 | run: echo "DATE_TAG=$(date -I)" >> "$GITHUB_ENV" 25 | - name: Build and push 26 | uses: docker/build-push-action@v6 27 | with: 28 | push: true 29 | platforms: linux/amd64,linux/arm64 30 | tags: | 31 | tiangolo/nginx-rtmp:latest 32 | tiangolo/nginx-rtmp:latest-${{ env.DATE_TAG }} 33 | - name: Docker Hub Description 34 | uses: peter-evans/dockerhub-description@v4 35 | with: 36 | username: ${{ secrets.DOCKERHUB_USERNAME }} 37 | password: ${{ secrets.DOCKERHUB_TOKEN }} 38 | repository: tiangolo/nginx-rtmp 39 | -------------------------------------------------------------------------------- /.github/workflows/issue-manager.yml: -------------------------------------------------------------------------------- 1 | name: Issue Manager 2 | 3 | on: 4 | schedule: 5 | - cron: "15 10 * * *" 6 | issue_comment: 7 | types: 8 | - created 9 | issues: 10 | types: 11 | - labeled 12 | pull_request_target: 13 | types: 14 | - labeled 15 | workflow_dispatch: 16 | 17 | permissions: 18 | issues: write 19 | pull-requests: write 20 | 21 | jobs: 22 | issue-manager: 23 | runs-on: ubuntu-latest 24 | steps: 25 | - uses: tiangolo/issue-manager@0.5.1 26 | with: 27 | token: ${{ secrets.GITHUB_TOKEN }} 28 | config: > 29 | { 30 | "answered": { 31 | "delay": 864000, 32 | "message": "Assuming the original need was handled, this will be automatically closed now. But feel free to add more comments or create new issues or PRs." 33 | }, 34 | "waiting": { 35 | "delay": 2628000, 36 | "message": "As this PR has been waiting for the original user for a while but seems to be inactive, it's now going to be closed. But if there's anyone interested, feel free to create a new PR." 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /.github/workflows/latest-changes.yml: -------------------------------------------------------------------------------- 1 | name: Latest Changes 2 | 3 | on: 4 | pull_request_target: 5 | branches: 6 | - master 7 | types: 8 | - closed 9 | workflow_dispatch: 10 | inputs: 11 | number: 12 | description: PR number 13 | required: true 14 | debug_enabled: 15 | description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' 16 | required: false 17 | default: 'false' 18 | 19 | jobs: 20 | latest-changes: 21 | runs-on: ubuntu-latest 22 | steps: 23 | - uses: actions/checkout@v4 24 | with: 25 | # To allow latest-changes to commit to master 26 | token: ${{ secrets.NGINX_RTMP_DOCKER_LATEST_CHANGES }} 27 | - uses: tiangolo/latest-changes@0.3.2 28 | with: 29 | token: ${{ secrets.GITHUB_TOKEN }} 30 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | types: 9 | - opened 10 | - synchronize 11 | schedule: 12 | # cron every week on monday 13 | - cron: "0 0 * * 1" 14 | 15 | jobs: 16 | test: 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v4 20 | - name: Set up Docker Buildx 21 | uses: docker/setup-buildx-action@v3 22 | - name: Build Image 23 | uses: docker/build-push-action@v6 24 | with: 25 | push: false 26 | tags: tiangolo/nginx-rtmp:latest 27 | platforms: linux/amd64,linux/arm64 28 | check: 29 | if: always() 30 | needs: 31 | - test 32 | runs-on: ubuntu-latest 33 | steps: 34 | - name: Decide whether the needed jobs succeeded or failed 35 | uses: re-actors/alls-green@release/v1 36 | with: 37 | jobs: ${{ toJSON(needs) }} 38 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM buildpack-deps:bullseye 2 | 3 | LABEL maintainer="Sebastian Ramirez " 4 | 5 | # Versions of Nginx and nginx-rtmp-module to use 6 | ENV NGINX_VERSION nginx-1.23.2 7 | ENV NGINX_RTMP_MODULE_VERSION 1.2.2 8 | 9 | # Install dependencies 10 | RUN apt-get update && \ 11 | apt-get install -y ca-certificates openssl libssl-dev && \ 12 | rm -rf /var/lib/apt/lists/* 13 | 14 | # Download and decompress Nginx 15 | RUN mkdir -p /tmp/build/nginx && \ 16 | cd /tmp/build/nginx && \ 17 | wget -O ${NGINX_VERSION}.tar.gz https://nginx.org/download/${NGINX_VERSION}.tar.gz && \ 18 | tar -zxf ${NGINX_VERSION}.tar.gz 19 | 20 | # Download and decompress RTMP module 21 | RUN mkdir -p /tmp/build/nginx-rtmp-module && \ 22 | cd /tmp/build/nginx-rtmp-module && \ 23 | wget -O nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION}.tar.gz https://github.com/arut/nginx-rtmp-module/archive/v${NGINX_RTMP_MODULE_VERSION}.tar.gz && \ 24 | tar -zxf nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION}.tar.gz && \ 25 | cd nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION} 26 | 27 | # Build and install Nginx 28 | # The default puts everything under /usr/local/nginx, so it's needed to change 29 | # it explicitly. Not just for order but to have it in the PATH 30 | RUN cd /tmp/build/nginx/${NGINX_VERSION} && \ 31 | ./configure \ 32 | --sbin-path=/usr/local/sbin/nginx \ 33 | --conf-path=/etc/nginx/nginx.conf \ 34 | --error-log-path=/var/log/nginx/error.log \ 35 | --pid-path=/var/run/nginx/nginx.pid \ 36 | --lock-path=/var/lock/nginx/nginx.lock \ 37 | --http-log-path=/var/log/nginx/access.log \ 38 | --http-client-body-temp-path=/tmp/nginx-client-body \ 39 | --with-http_ssl_module \ 40 | --with-threads \ 41 | --with-ipv6 \ 42 | --add-module=/tmp/build/nginx-rtmp-module/nginx-rtmp-module-${NGINX_RTMP_MODULE_VERSION} --with-debug && \ 43 | make -j $(getconf _NPROCESSORS_ONLN) && \ 44 | make install && \ 45 | mkdir /var/lock/nginx && \ 46 | rm -rf /tmp/build 47 | 48 | # Forward logs to Docker 49 | RUN ln -sf /dev/stdout /var/log/nginx/access.log && \ 50 | ln -sf /dev/stderr /var/log/nginx/error.log 51 | 52 | # Set up config file 53 | COPY nginx.conf /etc/nginx/nginx.conf 54 | 55 | EXPOSE 1935 56 | CMD ["nginx", "-g", "daemon off;"] 57 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016-2018 Sebastián Ramírez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Deploy](https://github.com/tiangolo/nginx-rtmp-docker/workflows/Deploy/badge.svg)](https://github.com/tiangolo/nginx-rtmp-docker/actions?query=workflow%3ADeploy) 2 | 3 | ## Supported tags and respective `Dockerfile` links 4 | 5 | * [`latest` _(Dockerfile)_](https://github.com/tiangolo/nginx-rtmp-docker/blob/master/Dockerfile) 6 | 7 | **Note**: Note: There are [tags for each build date](https://hub.docker.com/r/tiangolo/nginx-rtmp/tags). If you need to "pin" the Docker image version you use, you can select one of those tags. E.g. `tiangolo/nginx-rtmp:latest-2020-08-16`. 8 | 9 | # nginx-rtmp 10 | 11 | [**Docker**](https://www.docker.com/) image with [**Nginx**](http://nginx.org/en/) using the [**nginx-rtmp-module**](https://github.com/arut/nginx-rtmp-module) module for live multimedia (video) streaming. 12 | 13 | ## Description 14 | 15 | This [**Docker**](https://www.docker.com/) image can be used to create an RTMP server for multimedia / video streaming using [**Nginx**](http://nginx.org/en/) and [**nginx-rtmp-module**](https://github.com/arut/nginx-rtmp-module), built from the current latest sources (Nginx 1.15.0 and nginx-rtmp-module 1.2.1). 16 | 17 | This was inspired by other similar previous images from [dvdgiessen](https://hub.docker.com/r/dvdgiessen/nginx-rtmp-docker/), [jasonrivers](https://hub.docker.com/r/jasonrivers/nginx-rtmp/), [aevumdecessus](https://hub.docker.com/r/aevumdecessus/docker-nginx-rtmp/) and by an [OBS Studio post](https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/). 18 | 19 | The main purpose (and test case) to build it was to allow streaming from [**OBS Studio**](https://obsproject.com/) to different clients at the same time. 20 | 21 | **GitHub repo**: 22 | 23 | **Docker Hub image**: 24 | 25 | ## Details 26 | 27 | ## How to use 28 | 29 | * For the simplest case, just run a container with this image: 30 | 31 | ```bash 32 | docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp 33 | ``` 34 | 35 | ## How to test with OBS Studio and VLC 36 | 37 | * Run a container with the command above 38 | 39 | 40 | * Open [OBS Studio](https://obsproject.com/) 41 | * Click the "Settings" button 42 | * Go to the "Stream" section 43 | * In "Stream Type" select "Custom Streaming Server" 44 | * In the "URL" enter the `rtmp:///live` replacing `` with the IP of the host in which the container is running. For example: `rtmp://192.168.0.30/live` 45 | * In the "Stream key" use a "key" that will be used later in the client URL to display that specific stream. For example: `test` 46 | * Click the "OK" button 47 | * In the section "Sources" click the "Add" button (`+`) and select a source (for example "Screen Capture") and configure it as you need 48 | * Click the "Start Streaming" button 49 | 50 | 51 | * Open a [VLC](http://www.videolan.org/vlc/index.html) player (it also works in Raspberry Pi using `omxplayer`) 52 | * Click in the "Media" menu 53 | * Click in "Open Network Stream" 54 | * Enter the URL from above as `rtmp:///live/` replacing `` with the IP of the host in which the container is running and `` with the key you created in OBS Studio. For example: `rtmp://192.168.0.30/live/test` 55 | * Click "Play" 56 | * Now VLC should start playing whatever you are transmitting from OBS Studio 57 | 58 | ## Debugging 59 | 60 | If something is not working you can check the logs of the container with: 61 | 62 | ```bash 63 | docker logs nginx-rtmp 64 | ``` 65 | 66 | ## Extending 67 | 68 | If you need to modify the configurations you can create a file `nginx.conf` and replace the one in this image using a `Dockerfile` that is based on the image, for example: 69 | 70 | ```Dockerfile 71 | FROM tiangolo/nginx-rtmp 72 | 73 | COPY nginx.conf /etc/nginx/nginx.conf 74 | ``` 75 | 76 | The current `nginx.conf` contains: 77 | 78 | ```Nginx 79 | worker_processes auto; 80 | rtmp_auto_push on; 81 | events {} 82 | rtmp { 83 | server { 84 | listen 1935; 85 | listen [::]:1935 ipv6only=on; 86 | 87 | application live { 88 | live on; 89 | record off; 90 | } 91 | } 92 | } 93 | ``` 94 | 95 | You can start from it and modify it as you need. Here's the [documentation related to `nginx-rtmp-module`](https://github.com/arut/nginx-rtmp-module/wiki/Directives). 96 | 97 | ## Technical details 98 | 99 | * This image is built from the same base official images that most of the other official images, as Python, Node, Postgres, Nginx itself, etc. Specifically, [buildpack-deps](https://hub.docker.com/_/buildpack-deps/) which is in turn based on [debian](https://hub.docker.com/_/debian/). So, if you have any other image locally you probably have the base image layers already downloaded. 100 | 101 | * It is built from the official sources of **Nginx** and **nginx-rtmp-module** without adding anything else. (Surprisingly, most of the available images that include **nginx-rtmp-module** are made from different sources, old versions or add several other components). 102 | 103 | * It has a simple default configuration that should allow you to send one or more streams to it and have several clients receiving multiple copies of those streams simultaneously. (It includes `rtmp_auto_push` and an automatic number of worker processes). 104 | 105 | ## Release Notes 106 | 107 | ### Latest Changes 108 | 109 | #### Internal 110 | 111 | * ⬆ Bump tiangolo/latest-changes from 0.3.1 to 0.3.2. PR [#98](https://github.com/tiangolo/nginx-rtmp-docker/pull/98) by [@dependabot[bot]](https://github.com/apps/dependabot). 112 | * ⬆ Bump tiangolo/issue-manager from 0.5.0 to 0.5.1. PR [#96](https://github.com/tiangolo/nginx-rtmp-docker/pull/96) by [@dependabot[bot]](https://github.com/apps/dependabot). 113 | * 👷 Update `issue-manager.yml`. PR [#95](https://github.com/tiangolo/nginx-rtmp-docker/pull/95) by [@tiangolo](https://github.com/tiangolo). 114 | * ⬆ Bump docker/build-push-action from 5 to 6. PR [#92](https://github.com/tiangolo/nginx-rtmp-docker/pull/92) by [@dependabot[bot]](https://github.com/apps/dependabot). 115 | * 👷 Update `latest-changes` GitHub Action. PR [#93](https://github.com/tiangolo/nginx-rtmp-docker/pull/93) by [@tiangolo](https://github.com/tiangolo). 116 | * ⬆ Bump docker/build-push-action from 2 to 5. PR [#68](https://github.com/tiangolo/nginx-rtmp-docker/pull/68) by [@dependabot[bot]](https://github.com/apps/dependabot). 117 | * ⬆ Bump docker/setup-buildx-action from 1 to 3. PR [#67](https://github.com/tiangolo/nginx-rtmp-docker/pull/67) by [@dependabot[bot]](https://github.com/apps/dependabot). 118 | * ⬆ Bump docker/login-action from 1 to 3. PR [#69](https://github.com/tiangolo/nginx-rtmp-docker/pull/69) by [@dependabot[bot]](https://github.com/apps/dependabot). 119 | * 👷 Update issue-manager.yml GitHub Action permissions. PR [#76](https://github.com/tiangolo/nginx-rtmp-docker/pull/76) by [@tiangolo](https://github.com/tiangolo). 120 | * 👷 Update issue-manager.yml GitHub Action permissions. PR [#75](https://github.com/tiangolo/nginx-rtmp-docker/pull/75) by [@tiangolo](https://github.com/tiangolo). 121 | * 🔧 Add GitHub templates for discussions and issues, and security policy. PR [#72](https://github.com/tiangolo/nginx-rtmp-docker/pull/72) by [@alejsdev](https://github.com/alejsdev). 122 | * 🔧 Update `latest-changes.yml`. PR [#70](https://github.com/tiangolo/nginx-rtmp-docker/pull/70) by [@alejsdev](https://github.com/alejsdev). 123 | 124 | ### 0.0.1 125 | 126 | #### Features 127 | 128 | * ✨ Allow using debug directives, enable ` --with-debug` compile option. PR [#16](https://github.com/tiangolo/nginx-rtmp-docker/pull/16) by [@agconti](https://github.com/agconti). 129 | * ✨ Add support for multiarch builds, including ARM (e.g. Mac M1). PR [#65](https://github.com/tiangolo/nginx-rtmp-docker/pull/65) by [@tiangolo](https://github.com/tiangolo). 130 | 131 | #### Fixes 132 | 133 | * 👷 Fix multiarch deploy build. PR [#66](https://github.com/tiangolo/nginx-rtmp-docker/pull/66) by [@tiangolo](https://github.com/tiangolo). 134 | 135 | #### Docs 136 | 137 | * ✏️ Fix a typo in README. PR [#20](https://github.com/tiangolo/nginx-rtmp-docker/pull/20) by [@Irishsmurf](https://github.com/Irishsmurf). 138 | 139 | #### Upgrades 140 | 141 | * ⬆️ Upgrade Nginx to 1.23.2 and OS to bullseye. PR [#40](https://github.com/tiangolo/nginx-rtmp-docker/pull/40) by [@tiangolo](https://github.com/tiangolo). 142 | * ⬆ Upgrade to nginx-1.19.7. PR [#26](https://github.com/tiangolo/nginx-rtmp-docker/pull/26) by [@cesarandreslopez](https://github.com/cesarandreslopez). 143 | * ⬆ Update RTMP module version to 1.2.2. PR [#28](https://github.com/tiangolo/nginx-rtmp-docker/pull/28) by [@louis70109](https://github.com/louis70109). 144 | * Upgrade Nginx to version 1.18.0. PR [#13](https://github.com/tiangolo/nginx-rtmp-docker/pull/13) by [@Nathanael-Mtd](https://github.com/Nathanael-Mtd). 145 | 146 | #### Internal 147 | 148 | * 👷 Update token for latest changes. PR [#50](https://github.com/tiangolo/nginx-rtmp-docker/pull/50) by [@tiangolo](https://github.com/tiangolo). 149 | * 👷 Add GitHub Action for Docker Hub description. PR [#45](https://github.com/tiangolo/nginx-rtmp-docker/pull/45) by [@tiangolo](https://github.com/tiangolo). 150 | * Bump tiangolo/issue-manager from 0.3.0 to 0.4.0. PR [#42](https://github.com/tiangolo/nginx-rtmp-docker/pull/42) by [@dependabot[bot]](https://github.com/apps/dependabot). 151 | * Bump actions/checkout from 2 to 3. PR [#43](https://github.com/tiangolo/nginx-rtmp-docker/pull/43) by [@dependabot[bot]](https://github.com/apps/dependabot). 152 | * 🎨 Format CI config. PR [#44](https://github.com/tiangolo/nginx-rtmp-docker/pull/44) by [@tiangolo](https://github.com/tiangolo). 153 | * 👷 Add Dependabot and funding configs. PR [#41](https://github.com/tiangolo/nginx-rtmp-docker/pull/41) by [@tiangolo](https://github.com/tiangolo). 154 | * 👷 Add scheduled CI. PR [#39](https://github.com/tiangolo/nginx-rtmp-docker/pull/39) by [@tiangolo](https://github.com/tiangolo). 155 | * 👷 Add alls-green GitHub Action. PR [#38](https://github.com/tiangolo/nginx-rtmp-docker/pull/38) by [@tiangolo](https://github.com/tiangolo). 156 | * 👷 Build to test on CI for PRs, update GitHub Actions. PR [#37](https://github.com/tiangolo/nginx-rtmp-docker/pull/37) by [@tiangolo](https://github.com/tiangolo). 157 | * 👷 Add Latest Changes GitHub Action. PR [#29](https://github.com/tiangolo/nginx-rtmp-docker/pull/29) by [@tiangolo](https://github.com/tiangolo). 158 | * Add CI with GitHub actions. PR [#15](https://github.com/tiangolo/nginx-rtmp-docker/pull/15). 159 | * ⬆ Bump peter-evans/dockerhub-description from 3 to 4. PR [#63](https://github.com/tiangolo/nginx-rtmp-docker/pull/63) by [@dependabot[bot]](https://github.com/apps/dependabot). 160 | * ⬆ Bump tiangolo/issue-manager from 0.4.1 to 0.5.0. PR [#64](https://github.com/tiangolo/nginx-rtmp-docker/pull/64) by [@dependabot[bot]](https://github.com/apps/dependabot). 161 | * Bump actions/checkout from 3 to 4. PR [#52](https://github.com/tiangolo/nginx-rtmp-docker/pull/52) by [@dependabot[bot]](https://github.com/apps/dependabot). 162 | * ⬆ Bump tiangolo/issue-manager from 0.4.0 to 0.4.1. PR [#61](https://github.com/tiangolo/nginx-rtmp-docker/pull/61) by [@dependabot[bot]](https://github.com/apps/dependabot). 163 | * 👷 Update dependabot. PR [#55](https://github.com/tiangolo/nginx-rtmp-docker/pull/55) by [@tiangolo](https://github.com/tiangolo). 164 | * 👷 Update latest-changes. PR [#54](https://github.com/tiangolo/nginx-rtmp-docker/pull/54) by [@tiangolo](https://github.com/tiangolo). 165 | 166 | ## License 167 | 168 | This project is licensed under the terms of the MIT License. 169 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | Security is very important for this project and its community. 🔒 4 | 5 | Learn more about it below. 👇 6 | 7 | ## Versions 8 | 9 | The latest version or release is supported. 10 | 11 | You are encouraged to write tests for your application and update your versions frequently after ensuring that your tests are passing. This way you will benefit from the latest features, bug fixes, and **security fixes**. 12 | 13 | ## Reporting a Vulnerability 14 | 15 | If you think you found a vulnerability, and even if you are not sure about it, please report it right away by sending an email to: security@tiangolo.com. Please try to be as explicit as possible, describing all the steps and example code to reproduce the security issue. 16 | 17 | I (the author, [@tiangolo](https://twitter.com/tiangolo)) will review it thoroughly and get back to you. 18 | 19 | ## Public Discussions 20 | 21 | Please restrain from publicly discussing a potential security vulnerability. 🙊 22 | 23 | It's better to discuss privately and try to find a solution first, to limit the potential impact as much as possible. 24 | 25 | --- 26 | 27 | Thanks for your help! 28 | 29 | The community and I thank you for that. 🙇 30 | -------------------------------------------------------------------------------- /nginx.conf: -------------------------------------------------------------------------------- 1 | worker_processes auto; 2 | rtmp_auto_push on; 3 | events {} 4 | rtmp { 5 | server { 6 | listen 1935; 7 | listen [::]:1935 ipv6only=on; 8 | 9 | application live { 10 | live on; 11 | record off; 12 | } 13 | } 14 | } 15 | --------------------------------------------------------------------------------