HOMER WebApp
This repository hosts homer-app, the the GO webapplication for the HEP/HOMER 7.7+ stack.
Instructions
If you want to install Homer please refer to the project readme
If you’re just interested in using homer-app, download, configure and run the latest release or package.
Requirements
- golang 1.23+
- postgres 11+
- git 2.7+
- optional
Installation
Local
To get dependencies and compile the latest homer-app on your system, use the following commands:
make modules
make all
Docker
To get dependencies and compile the latest homer-app using a docker builder, use the following command:
make binary
make frontend
Configuration
Before using the application, configure all database parameters using the example configuration file:
/usr/local/homer/etc/webapp_config.json
NOTE: The default location for settings and provisioning files is /usr/local/homer
Usage
Command Help
./homer-app -h
Custom Config in /etc
./homer-app -webapp-config-path=/etc
Initialization
The application is able to initialize its database and tables it requires with the following commands:
Environment Passwords (Recommended)
Set credentials through the process environment when running provisioning commands:
HOMER_DATABASE_ROOT_PASSWORD for the database administrator password
HOMER_DATABASE_HOMER_PASSWORD for the Homer database user password
HOMER_FORCE_PASSWORD for the password used to populate the Homer administrator
HOMER_UPDATE_UI_PASSWORD for -update-ui-password
Example environment setup (all values below are placeholders, not usable credentials):
export HOMER_DATABASE_ROOT_PASSWORD='<database-admin-password>'
export HOMER_DATABASE_HOMER_PASSWORD='<homer-database-password>'
export HOMER_FORCE_PASSWORD='<homer-ui-admin-password>'
export HOMER_UPDATE_UI_PASSWORD='<replacement-ui-password>'
In automation, inject these variables through your secret-management mechanism. Avoid entering real passwords in shell history or storing them in scripts. With the required variables set, omit the password flags, for example:
./homer-app -create-homer-user -database-root-user=postgres -database-host=localhost
These values are used when the corresponding command-line flags are not provided. Avoid passing passwords as command-line arguments because they may be visible in process listings. Setting HOMER_DATABASE_HOMER_PASSWORD to an empty value overrides the existing homer_password default; database-save commands can then persist an empty password to webapp_config.json if the corresponding flag is omitted.
Explicit flags take precedence, including an explicitly empty flag. Unset environment variables retain the existing defaults; variables set to an empty string supply an empty password. Environment values are read literally, without expanding expressions such as ${HOME}. Help output does not include environment password values.
Environment input avoids putting passwords in process arguments, but does not sanitize existing application or SQL logs. Process environments can also be inspected by sufficiently privileged users. Use dummy credentials for tests and avoid exposing provisioning output in automation logs.
Password Flags (Backward Compatibility)
The original command-line examples below remain supported. The example password postgres is illustrative only. Prefer environment input: real password arguments may be visible in process listings, command auditing, and shell history. Explicit password flags override environment values.
Create User
./homer-app -create-homer-user -database-root-user=postgres -database-host=localhost -database-root-password=postgres
Show User
./homer-app -show-db-users -database-root-user=postgres -database-host=localhost -database-root-password=postgres
Create Homer DBs
./homer-app -create-config-db -database-root-user=postgres -database-host=localhost -database-root-password=postgres -database-homer-user=homer_user
./homer-app -create-data-db -database-root-user=postgres -database-host=localhost -database-root-password=postgres -database-homer-user=homer_user
Create User permissions
./homer-app -create-homer-role -database-root-user=postgres -database-host=localhost -database-root-password=postgres -database-homer-data=homer_data -database-homer-config=homer_config
Please setup the correct credentials for homer_config and homer_data DB in your webapp_config.json !!!
if your webapp_config.json isn’t in the default directory: “/usr/local/homer/etc”, use the flag “-webapp-config-path” to correct it. Same have to be applied to all steps there you read settings from “webapp_config.json”
Create Table / Migration - connection data will be read from webapp_config.json
./homer-app -create-table-db-config
or
./homer-app -create-table-db-config -webapp-config-path=/etc/webapp_config.json
Populate DB
./homer-app -populate-table-db-config
Upgrade / Migration - connection data will be read from webapp_config.json
./homer-app -upgrade-table-db-config
Re- Populate Config DB
./homer-app -populate-table-db-config -force-populate
Re- Populate Config DB for specific table/tables
./homer-app -populate-table-db-config -force-populate -populate-table=mapping_schema -populate-table=user_settings
Reset UI password for any user using the environment (recommended)
./homer-app -update-ui-user=admin
For compatibility, the password flag is still accepted, but may be visible in process listings and command auditing:
./homer-app -update-ui-user=admin -update-ui-password='<replacement-ui-password>'
Swagger APIs
Requirements
Swagger APIs can be generated from inside the homer-app
To generate swagger.json file run below command insider homer-app
swagger generate spec -m -o ./swagger.json
To Serve swagger.json file run below command
swagger serve -F=swagger swagger.json
DEB, RPM Packages
To build a full package, including the latest frontend code:
make package
The application will deploy to /usr/local/bin with config in /etc
Docker Image
This application is available on dockerhub as sipcapture/webapp
To build a full bundle locally, including the latest frontend code:
make docker
For working examples and ready to run recipes see homer7-docker
This project is part of HOMER
License & Copyright
This project is released under the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Made by Humans
This Open-Source project is made possible by actual Humans without corporate sponsors, angels or patreons.
If you use this software in production, please consider supporting its development with contributions or donations

© 2008-2025 QXIP BV
评论