Set up the camera box
Install the camera box, connect it to moschee.io on its setup page and add cameras.
The camera box is your mosque’s camera gateway: a small computer on the same network as your cameras. It finds the NDI cameras there and sends their picture into the livestream.
You set the box up on its own web page. There you connect it to moschee.io and add cameras. You don’t need an API key or environment variables for this.
Plan
Camera boxes are available from the Gemeinde Plus plan.
What you need
- A Linux computer with Docker, for example a mini PC. The box currently runs only on x86-64 processors (Intel or AMD), not yet on a Raspberry Pi.
- A connection to the same network as your cameras. A network cable is more reliable than Wi-Fi.
- A moschee.io account with admin rights for your mosque.
Setup
Start the camera box
Start the box on the computer with this command:
docker run -d \
--name kamera-box \
--network host \
--restart unless-stopped \
-v kamera-box-data:/app/data \
moscheeio/moscheeio-media-gateway-agent:latest--network host lets the box find the cameras on the network. The kamera-box-data volume is where the box keeps its moschee.io connection and your cameras, including across updates.
With Docker Compose, the same box looks like this:
services:
kamera-box:
image: moscheeio/moscheeio-media-gateway-agent:latest
container_name: kamera-box
network_mode: host
restart: unless-stopped
volumes:
- kamera-box-data:/app/data
volumes:
kamera-box-data:Start it with docker compose up -d.
Open the setup page
On a computer or phone on the same network, open http://<IP address of the box>:8080. The box also writes the address to its log: docker logs kamera-box shows a line like Setup page: http://192.168.1.20:8080/.

The top of the page shows the box’s status, and the bottom shows the cameras it found on the network. The page is in German, or in English when your browser prefers English.
Connect to moschee.io
Click Connect to moschee.io. The box shows a code.

Click Confirm in moschee.io and sign in. Check that it shows the same code and names Kamera-Box as the device type. Choose your mosque and click Connect.

You can also confirm the code on another device: open https://app.moschee.io/device there and enter the code. If a code expires, the box shows a new one by itself.
Check the connection
The setup page notices the confirmation by itself. It then shows your mosque, and the camera server is connected.

Check the cameras
The box finds NDI cameras on its own network by itself. They are listed under Found on the network, each with its format: NDI|HX · H.264 or NDI · SpeedHQ.
If a camera is on another network, a separate VLAN for example, enter its IP address or name under Cameras on other networks and click Add. The box then looks there too. Remove takes an entry out again.

The cameras are now available in the livestreaming room. To bring a camera into a room, see Stream from an NDI camera.
Manage camera boxes in moschee.io
In the dashboard, Translation → Camera boxes lists all of your mosque’s boxes. It shows whether a box is online, when it was last seen and which version it runs.

As an admin you can rename a box there, for example after the room it is in. Remove disconnects a box from your mosque. The box notices within a minute, stops its streams and shows a code on its setup page again.
Below, Cameras lists the PTZ cameras of your boxes with their presets. There you set the Home view and the moves at Prayer times without starting a room. You save and rename presets in the camera controls of a room, because that needs the live picture. If a box is offline, the page shows its cameras as moschee.io last saw them. Owners, admins and streamers see this part. Under Remotes you create links with which the imam, for example, moves the cameras to their presets from a phone, and revoke them again (more).
Recordings on the camera box
The camera box can also record your cameras itself, straight to its own disk. Such a recording keeps going when the internet drops, and it uses no recording hours. When the camera streams into a room, the box also records the room's sound: the original and each translation as its own audio track.
Storage for recordings
The box keeps recordings in the container under /app/recordings. For them to survive an update, give the box a second volume:
docker run -d \
--name kamera-box \
--network host \
--restart unless-stopped \
--stop-timeout 30 \
-v kamera-box-data:/app/data \
-v kamera-box-recordings:/app/recordings \
moscheeio/moscheeio-media-gateway-agent:latestWith Docker Compose:
services:
kamera-box:
image: moscheeio/moscheeio-media-gateway-agent:latest
container_name: kamera-box
network_mode: host
restart: unless-stopped
stop_grace_period: 30s
volumes:
- kamera-box-data:/app/data
- kamera-box-recordings:/app/recordings
volumes:
kamera-box-data:
kamera-box-recordings:--stop-timeout 30 and stop_grace_period: 30s give running recordings time to finish their files when the box stops or updates.
If the computer has a large second disk, mount a folder on it instead, for example -v /mnt/recordings:/app/recordings (with Docker Compose - /mnt/recordings:/app/recordings). A recording only starts with at least 5 GB free. Below 2 GB, the box stops its recordings.
Start and stop a recording
In the livestreaming room, every camera on a camera box has a record button with a choice: Cloud saves the recording in moschee.io, Camera box on the box, Both starts both at once. The button remembers your last choice. While the box records, the tile shows the time with the label "Box". A warning icon appears when the box reports a problem, for example when the camera dropped out for a moment.
If the Camera box option is missing, the box needs an update (see Update the box).
You can also record in the Recordings section of the box's page. Those recordings show up in moschee.io too.
Recordings PIN
Recordings show whoever was in front of the camera, so a PIN protects the Recordings section of the box's page. Owners and admins set it in moschee.io under Translation → Camera boxes: 4 to 8 digits, or a random PIN. You can show or change the PIN there later. A box that is online picks up a new PIN right away; one that is offline, as soon as it is connected again.
Download recordings
The files are on the box. On the box's network, open http://<box IP address>:8080, go to Recordings and enter the PIN. There you can download or delete recordings. The box deletes finished recordings after 30 days on its own; you can change that in the same section.
Under Camera boxes in moschee.io you see for each box whether it can record, how much space is free and its latest recordings.
Upload recordings
The box can also upload finished recordings: to your mosque's storage at moschee.io, to storage of your own (S3, WebDAV, a network share or SFTP), or to Google Drive, OneDrive, Dropbox or YouTube. Set up the destinations in the Recordings section of the box's page. Passwords and sign-ins stay on the box.
- moschee.io needs a plan with recordings. Uploaded recordings count towards your plan's storage, not its recording hours, and show up under Translation → Recordings marked "Camera box".
- Under Camera boxes you see for each recording where it is being uploaded, whether that worked, and the link to the file.
- Once all uploads of a recording have ended and at least one worked, owners and admins get an email with the links.
Disconnect a box or move it to another mosque
On the setup page, Disconnect disconnects the box from moschee.io. It then shows a new code, which you can use to connect it again, also to another mosque. Under Camera boxes in moschee.io the old entry stays listed as offline until you remove it there.
Update the box
Pull the new image and recreate the container. The connection and the cameras stay in the volume.
docker pull moscheeio/moscheeio-media-gateway-agent:latest
docker stop kamera-box
docker rm kamera-boxThen start the box with the same docker run command as above. With Docker Compose, docker compose pull && docker compose up -d is enough.
Boxes with an API key
Since 3 November 2026 the API key no longer works. A box that was set up with MOSCHEEIO_API_KEY can’t find its mosque after its next restart and stops sending cameras. After an update it has the setup page too. Connect the box to moschee.io there, so it appears under Camera boxes and runs again. After that you can remove the key from its configuration.
Add the kamera-box-data:/app/data volume while you’re at it, or the connection is lost at the next update. The page shows cameras from GRANDIOSE_EXTRA_IPS; add new cameras on the page itself.
Boxes that still run the image ghcr.io/ihsandigital/moscheeio-ndi-client or moscheeio/moscheeio-ndi-client no longer get updates. Switch them to moscheeio/moscheeio-media-gateway-agent as described under Update the box above.