Administration¶
This section will guide administrators in the behind-the-scenes configuration.
Recover User Accounts¶
If you are unable to change a user password via the UI, you can set a new one in the directly in the database.
- Generate a hashed password using the 
hash_password.pyscript. - Update the database field in 
user.password_hashto the password hash 
Example SQL:
UPDATE user SET password_hash = 'THE-PASSWORD-HASH' WHERE username = 'THE-USERNAME';
Plugins¶
Web Portal works by implementing a plugin system allowing for different widgets to be installed.
Plugins are stored in a plugins folder, this plugin system allows you to easily install a new plugin (or remove) without requiring Web Portal to be re-installed.
Add¶
To install a plugin into this folder follow these steps:
- Ensure Web Portal is shutdown
 - Ensure plugin loader is enabled (set by the environment variable)
 - Ensure "plugins" directory has a empty file called 
__init__.pyin it. - Copy/Move plugin package into folder
 - Startup Web Portal
 - Plugin should now be registered
 
Remove¶
To remove follow these steps:
- Follow any steps given by the plugins guide
 - Ensure Web Portal is shutdown
 - Move/Delete the specific plugin package from the "plugins" directory
 - Startup Web Portal
 - Go to 
"Plugin Settings" > "Missing Plugins"(as admin) to remove plugin data 
Where Is The Plugins Directory?¶
Assuming you are running the official Docker image; Web Portal is structured as shown below:
data/
    ...
app/
    web_portal/
        ...
    plugins/
        core
        core_extras
        another_plugin
        ...
To add plugins you can mount a volume as shown below using Docker Compose:
# filepath: docker-compose.yml
volumes:
  - ./data:/app/data
  - ./plugins:/app/plugins
IMPORTANT: When you mount the plugins folder as a docker volume it will disable the built-in plugins provided by the image.