TasmoAdmin (previously SonWEB) is an administrative platform for devices flashed with Tasmota. It can run standalone, as a container, or as a Home Assistant addon.
Enable / Disable / Auto settingsTasmoAdmin is available as a Docker image on GitHub packages.
This is a Linux Alpine based image with Nginx and PHP 8.5 installed. It supports multiple architectures, amd64 (i.e. Synology DSM), arm (i.e. Raspberry PI3) and arm64 (i.e. Pine64). Check out the Guide for TasmoAdmin on Docker for setup instructions.
This is the recommended way to get up and running.
TasmoAdmin is also available as a Home Assistant addon. See the TasmoAdmin Home Assistant app for more information.
TasmoAdmin should run on any webserver that supports PHP 8.2 or newer.
Check the guides on the Wiki for more information.
Some environment variables are configured to allow easier customisation of the application
TASMO_DATADIR - Data directory, including a trailing slash. Defaults to ./tasmoadmin/data/TASMO_BASEURL - Customise the base URL for the applicationTASMO_TMPDIR - Directory for sessions and temporary cache files, including a trailing slash. Defaults to ./tasmoadmin/tmp/TASMO_DEBUG - Set to true to display PHP errors. Disabled by default.NO_AUTH - Set to true to bypass the built-in login when authentication is handled externallyTASMO_DEVICE_PASSWORD_KEY - Base64-encoded 32-byte secret for device password encryption at restTASMO_ALLOW_CROSS_SITE_IFRAME - Set to true to embed TasmoAdmin in another HTTPS site, such as Home Assistant or Organizr; HTTP requests remain restrictedTasmoAdmin encrypts only the password column in devices.csv. Usernames, column order, and in-memory Device objects remain unchanged.
_DATADIR_/.device-password.key exists, TasmoAdmin uses it.TASMO_DEVICE_PASSWORD_KEY exists, TasmoAdmin uses it..device-password.key, and uses it.Encrypted password cells are stored as enc:v1:<base64(iv||tag||ciphertext)>.
On the first read after upgrading, legacy plaintext password cells are migrated in place to the encrypted format. Running clean=devices removes both devices.csv and .device-password.key for file-backed installs.
Authenticated state changes require a POST request with the session CSRF token. The session cookie uses SameSite=Lax by default, so an iframe deployment continues to work when the parent and TasmoAdmin are same-site. To embed TasmoAdmin in another HTTPS site, such as Home Assistant or Organizr, set TASMO_ALLOW_CROSS_SITE_IFRAME=true. This uses SameSite=None; Secure only for HTTPS requests; HTTP stays at SameSite=Lax. Browsers that block third-party cookies may still require a user exception.
For a deployment check, verify an authenticated device command and self-update form in both day and night mode, then confirm that a cross-site POST and a legacy state-changing GET URL leave the installation unchanged.
TasmoAdmin can discover devices through your MQTT broker in addition to classic network autoscan.
Configure the broker connection in Settings -> MQTT discovery, then use the MQTT tab in autoscan to:
tele/+/LWTYou can also store a device-specific MQTT topic in the device edit form to make MQTT discovery matching more reliable in installations with custom topic layouts.
Provided is a docker-compose setup to ease getting started.
Simply run:
make dev
Then visit http://localhost:8000
Persistent storage within this setup is located in the .storage folder.
The repository also includes a DDEV setup for local development. It uses:
apache-fpm8.524Start the environment with:
ddev start
Install PHP and Node.js dependencies:
ddev install-deps
Install the repository hooks for local staged-file validation:
pre-commit install
Build the frontend assets:
ddev build-assets
Then visit https://tasmoadmin.ddev.site.
Common development commands:
ddev ssh
ddev exec phpunit
ddev qa
ddev restart
ddev stop
Notes:
ddev install-deps runs composer install and npm ci in tasmoadmin/ddev build-assets runs the frontend buildddev qa runs the Composer quality checkspre-commit run --all-files runs the repository hook set locallyddev exec npm run test:js runs the JavaScript test suiteddev exec npm run prettier:check verifies formatting for frontend filesWe use Transifex to maintain translations of this project. If you are not familiar with this service, you can read Transifex Documentation to get started.
Here are steps to translate the extension to a specific language.
Use the issue functionality on this repo to report bugs or feature requests.
Alternatively, join the Discord server.
This project supported by JetBrains through their Licenses for Open Source program.
(top 30 of 36)
PHP
71.5%
JavaScript
17.2%
SCSS
10.0%
Shell
1.2%
TasmoAdmin (previously SonWEB) is an administrative platform for devices flashed with Tasmota. It can run standalone, as a container, or as a Home Assistant addon.
Enable / Disable / Auto settingsTasmoAdmin is available as a Docker image on GitHub packages.
This is a Linux Alpine based image with Nginx and PHP 8.5 installed. It supports multiple architectures, amd64 (i.e. Synology DSM), arm (i.e. Raspberry PI3) and arm64 (i.e. Pine64). Check out the Guide for TasmoAdmin on Docker for setup instructions.
This is the recommended way to get up and running.
TasmoAdmin is also available as a Home Assistant addon. See the TasmoAdmin Home Assistant app for more information.
TasmoAdmin should run on any webserver that supports PHP 8.2 or newer.
Check the guides on the Wiki for more information.
Some environment variables are configured to allow easier customisation of the application
TASMO_DATADIR - Data directory, including a trailing slash. Defaults to ./tasmoadmin/data/TASMO_BASEURL - Customise the base URL for the applicationTASMO_TMPDIR - Directory for sessions and temporary cache files, including a trailing slash. Defaults to ./tasmoadmin/tmp/TASMO_DEBUG - Set to true to display PHP errors. Disabled by default.NO_AUTH - Set to true to bypass the built-in login when authentication is handled externallyTASMO_DEVICE_PASSWORD_KEY - Base64-encoded 32-byte secret for device password encryption at restTASMO_ALLOW_CROSS_SITE_IFRAME - Set to true to embed TasmoAdmin in another HTTPS site, such as Home Assistant or Organizr; HTTP requests remain restrictedTasmoAdmin encrypts only the password column in devices.csv. Usernames, column order, and in-memory Device objects remain unchanged.
_DATADIR_/.device-password.key exists, TasmoAdmin uses it.TASMO_DEVICE_PASSWORD_KEY exists, TasmoAdmin uses it..device-password.key, and uses it.Encrypted password cells are stored as enc:v1:<base64(iv||tag||ciphertext)>.
On the first read after upgrading, legacy plaintext password cells are migrated in place to the encrypted format. Running clean=devices removes both devices.csv and .device-password.key for file-backed installs.
Authenticated state changes require a POST request with the session CSRF token. The session cookie uses SameSite=Lax by default, so an iframe deployment continues to work when the parent and TasmoAdmin are same-site. To embed TasmoAdmin in another HTTPS site, such as Home Assistant or Organizr, set TASMO_ALLOW_CROSS_SITE_IFRAME=true. This uses SameSite=None; Secure only for HTTPS requests; HTTP stays at SameSite=Lax. Browsers that block third-party cookies may still require a user exception.
For a deployment check, verify an authenticated device command and self-update form in both day and night mode, then confirm that a cross-site POST and a legacy state-changing GET URL leave the installation unchanged.
TasmoAdmin can discover devices through your MQTT broker in addition to classic network autoscan.
Configure the broker connection in Settings -> MQTT discovery, then use the MQTT tab in autoscan to:
tele/+/LWTYou can also store a device-specific MQTT topic in the device edit form to make MQTT discovery matching more reliable in installations with custom topic layouts.
Provided is a docker-compose setup to ease getting started.
Simply run:
make dev
Then visit http://localhost:8000
Persistent storage within this setup is located in the .storage folder.
The repository also includes a DDEV setup for local development. It uses:
apache-fpm8.524Start the environment with:
ddev start
Install PHP and Node.js dependencies:
ddev install-deps
Install the repository hooks for local staged-file validation:
pre-commit install
Build the frontend assets:
ddev build-assets
Then visit https://tasmoadmin.ddev.site.
Common development commands:
ddev ssh
ddev exec phpunit
ddev qa
ddev restart
ddev stop
Notes:
ddev install-deps runs composer install and npm ci in tasmoadmin/ddev build-assets runs the frontend buildddev qa runs the Composer quality checkspre-commit run --all-files runs the repository hook set locallyddev exec npm run test:js runs the JavaScript test suiteddev exec npm run prettier:check verifies formatting for frontend filesWe use Transifex to maintain translations of this project. If you are not familiar with this service, you can read Transifex Documentation to get started.
Here are steps to translate the extension to a specific language.
Use the issue functionality on this repo to report bugs or feature requests.
Alternatively, join the Discord server.
This project supported by JetBrains through their Licenses for Open Source program.
(top 30 of 36)
PHP
71.5%
JavaScript
17.2%
SCSS
10.0%
Shell
1.2%