vacuula

vacuula

Official

Docker app from Desadius Vacuula's Repository

Overview

BETA CHANNEL: This template tracks the upstream :beta image. Vacuula is under active development; updates may introduce bugs or breaking changes. Back up /server/data before updating. The beta tag follows new builds when you update the container; it does not enable unattended updates by itself. Self-hosted Vacuula backend for Neato Botvac D3, D4, D5, D6 and D7, with a web app, maps and schedules. Gen4 is disabled in this template. Enroll the robot using the separate Vacuula Installer on a USB-connected computer. The installer modifies robot firmware. Home Assistant is not required.
Vacuula Logo

Vacuula

custom server for the undead robot vacuum cleaners

ko-fi Buy me a coffee

Discord | Repair my robot!

Vacuula is made as an all-in-one solution to repair and control your broken Neato Robot vacuum.

  • Gen1 - No wifi
  • Gen2 - BotVac Connected ❌ (not yet, on the todo ⏱️)
  • Gen3 - D3 ✅ D4 ✅ D5 ✅ D6 ✅ D7 ✅
  • Gen4 - D800 ✅ D8 ✅ D9 ✅ D10 ✅

Your robot not listed here? Get in touch!
¹Sadly we were not able to fit the OG BotVac Connected into the initial release, sorry about this, support for this robot is in the works and here very soon!

Vacuula webapp

Feature Status Feature Status
Setup/Status ✅ Notifications 🚧
Maps ✅ Home Assistant Entity 🚧
Historical runs ✅ Drag to clean "here" 🚧
Schedule ✅ Custom sounds 🚧
Settings ✅ QoL improvements 🚧
Zones/NoGo Lines ✅ "Next day" Schedule 🚧
MultiZones Gen4 ✅ Gen2/Gen3 🚧

[!NOTE] Do you have a Gen4 robot that is in "rainbow mode"? Different colors flashing and the robot does not start? Contact us in the discord. There we can help you repair your robot!

Repair my robot!

For the repair there are two parts

  1. Set up a server (we are looking into a community server, however, that is not done in time for initial release, so you will need to set a server up)
  2. Configure the robot

Set up server

Since the server needs to always be on to work properly, you need some dedicated hardware for it. If you do not already have something to run the server on, please read about hardware in the FAQ.

There are many ways to set this server up. If you are using Home Assistant, we recommend using the App Store repo we made, if not using Home Assistant, then Docker Compose is recommended. We provide you with a couple of ways to set up the server

Docker Compose

  1. Install Docker
    • This is probably the hardest part for anyone unfamiliar with self-hosting, so we have started writing a guide in the FAQ
  2. Download docker-compose.yaml or run wget https://github.com/vacuula/vacuula/releases/latest/download/docker-compose.yaml to download and save the file
  3. Run docker compose up -d
  • The server is configured by environment variables
  • To see logs do docker compose logs vacuula
  • To stop vacuula docker compose down
  • To start vacuula docker compose up -d
  • To update vacuula docker compose pull
  • To permanently remove stored data docker volume rm vacuula-data Vacuula needs to be stopped first

Configure the robot

We have made an easy to use installer to set your robot up!

Download the latest version for your OS here

Windows Linux Mac (M1 and newer) Mac (Intel-based)
Win 10, Win 11 Yes (need dialout) 13.7.8, 15.4
Gen3, Gen4 Gen3, Gen4 (Gen4 will not work) Gen3 (Gen4 does not work)
  • Download by clicking the os link, table shows tested/verified systems
  • Linux: run sudo usermod -aG dialout $USER to give your user dialout, then reboot your computer!

Source code is available at https://github.com/vacuula/installer
If you have a more exotic setup and cannot run this installer in any way - get in touch and we will figure something out!

Configure server

Ports used by default

Port Option Used by
8050 VACUULA_PORT Server, Webapp, Installer. (HTTP, reverse proxy for HTTPS)
335 GEN3_PORT Gen3 robots, D3-D7
3443 GEN4_PORT Gen4 robots, D8-D10

The installer instructs the robot what port it should connect to. If you want to use HTTPS for the Webapp, please put the Webapp (default port 80) behind a reverse proxy. Other ports cannot be reverse provied.

Configuration

Option Default Info
GEN3_PORT 335 Default port the Gen3 robots will connect to the server on
GEN4_PORT 3443 Default port the Gen4 robots will connect to the server on
VACUULA_PORT 8050 Default port that you can reach the webapp/api on
GEN3_ENABLED True If server should support for Gen3 robots
GEN4_ENABLED True If server should support for Gen4 robots
MDNS_ENABLED True If server should run MDNS for auto-discovering
TZ Etc/UTC If timezone of computer cannot get fetched, please set this to the correct timezone for schedules to work correctly
HOST_IP 0.0.0.0 What IP the Vacuula server hosts to, useful if you have multiple IP addresses
LOG_LEVEL info debug

Platform architecture

We have currently only tested and verified on ARM 64-bit and x86 64-bit. However, we want the server to support at least ARM 32-bit and possibly x86 32-bit as well. We are looking into what we can do to make sure these platforms are also supported. The main reason behind wanting to support them is that the server can run on older SBCs.

Categories

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/vacuula/vacuula:beta
Last Updated2026-10-26
First Seen2026-10-26

Runtime arguments

Web UI
http://[IP]:[PORT:8088]/
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart unless-stopped --log-driver json-file --log-opt max-size=10m --log-opt max-file=3

Template configuration

Web UI / installer portPorttcp

Host port for the web app and installer. Change the host port here if 8088 is occupied; keep the internal VACUULA_PORT at 8088.

Target
8088
Default
8088
Value
8088
Neato D3-D7 portPorttcp

Direct Gen3 robot connection. Keep host and container ports at 335. Do not route this port through an HTTP reverse proxy.

Target
335
Default
335
Value
335
AppdataPathrw

Persistent database, maps, robot certificate and private key. Preserve and back up this folder when recreating the container.

Target
/server/data
Default
/mnt/user/appdata/vacuula
Value
/mnt/user/appdata/vacuula
TimezoneVariable

IANA timezone used for cleaning schedules. Change for your location, e.g. Europe/London.

Target
TZ
Default
Europe/Prague
Value
Europe/Prague
Internal web portVariable

Internal listener. Keep at 8088 to match the Web UI port mapping target.

Target
VACUULA_PORT
Default
8088
Value
8088
Internal Gen3 portVariable

Internal robot listener and port reported to the installer. Must match the direct host port 335.

Target
GEN3_PORT
Default
335
Value
335
Enable Gen3Variable

Enable Neato D3-D7 support.

Target
GEN3_ENABLED
Default
True
Value
True
Enable Gen4Variable

Disabled. This template does not publish the Gen4 port and is intended for D3-D7.

Target
GEN4_ENABLED
Default
False
Value
False
mDNS discoveryVariable

Disabled for bridge networking. Enter the Unraid LAN URL manually in the installer.

Target
MDNS_ENABLED
Default
False
Value
False
Container bind addressVariable

Listen on interfaces inside the container. Keep 0.0.0.0 with bridge networking; do not enter the Unraid LAN IP here.

Target
HOST_IP
Default
0.0.0.0
Value
0.0.0.0