This commit is contained in:
2025-04-21 19:21:06 -05:00
parent a4db3a38d8
commit 113d1cd0fd
307 changed files with 5 additions and 5 deletions

View File

@@ -0,0 +1,158 @@
# LibreNMS for Cloudron - Build Notes
This document provides instructions for building, testing, and deploying the LibreNMS package to your Cloudron instance.
## Package Contents
The LibreNMS Cloudron package includes:
- **CloudronManifest.json**: The main configuration file for the Cloudron application
- **Dockerfile**: Sets up the container with all required dependencies
- **start.sh**: The entry point script that initializes and configures LibreNMS
- **nginx.conf**: Web server configuration for LibreNMS
- **supervisord.conf**: Process management for multiple services
- **config.php**: Default LibreNMS configuration
## Building the Package
1. Create a new directory for the package:
```bash
mkdir librenms-cloudron
cd librenms-cloudron
```
2. Copy all files into this directory:
- CloudronManifest.json
- Dockerfile
- start.sh
- nginx.conf
- supervisord.conf
- config.php
3. Download the LibreNMS logo:
```bash
curl -o logo.png https://raw.githubusercontent.com/librenms/librenms/master/html/images/librenms_logo_light.svg
```
4. Ensure proper file permissions:
```bash
chmod +x start.sh
```
5. Build the Cloudron package:
```bash
cloudron build
```
## Testing the Package
1. Install the app on your Cloudron for testing:
```bash
cloudron install —app librenms
```
2. Access the LibreNMS web interface at the URL provided by Cloudron.
3. Log in with the default credentials:
- Username: `admin`
- Password: `admin`
4. Verify functionality by:
- Adding a test device
- Checking discovery and polling
- Configuring alerts
- Testing authentication (especially if using Cloudron SSO)
## Deploying to Production
1. Update the CloudronManifest.json with appropriate values:
- Update `version` if needed
- Adjust `memoryLimit` based on your production needs
- Update `contactEmail` with your support email
2. Rebuild the package:
```bash
cloudron build
```
3. Install on your production Cloudron:
```bash
cloudron install —app librenms
```
## Authentication Configuration
### OIDC Authentication (Recommended)
The package automatically configures OIDC authentication when Cloudron SSO is enabled. This provides:
- Single sign-on with your Cloudron users
- Automatic user provisioning
- Group-based access control
### LDAP Authentication
If OIDC is not enabled, the package can use Cloudrons LDAP server. This is configured automatically by the start.sh script.
### Manual Authentication
If neither OIDC nor LDAP is used, the package defaults to MySQL authentication with a local admin user.
## Data Persistence
The following data is stored in persistent volumes:
- **/app/data/rrd**: RRD files for graphing
- **/app/data/logs**: LibreNMS logs
- **/app/data/config**: Configuration files
- **/app/data/plugins**: Custom plugins
## Troubleshooting
If you encounter issues:
1. Check the logs:
```bash
cloudron logs -f librenms
```
2. Verify database connection:
```bash
cloudron exec —app librenms — mysql -h “$CLOUDRON_MYSQL_HOST” -P “$CLOUDRON_MYSQL_PORT” -u “$CLOUDRON_MYSQL_USERNAME” -p”$CLOUDRON_MYSQL_PASSWORD” -e “SHOW TABLES” “$CLOUDRON_MYSQL_DATABASE”
```
3. Check file permissions:
```bash
cloudron exec —app librenms — ls -la /app/data
```
4. Restart the application:
```bash
cloudron restart —app librenms
```
## Upgrading
To upgrade LibreNMS:
1. Update the git clone command in the Dockerfile to use the latest version tag
2. Update the version in CloudronManifest.json
3. Rebuild and upgrade the package:
```bash
cloudron build
cloudron update —app librenms
```
## Security Considerations
- The default admin password should be changed immediately after installation
- Consider using Cloudron SSO to leverage your existing authentication system
- SNMP port 161 is exposed for device monitoring - ensure proper network security
## Resource Usage
LibreNMS resource requirements depend on the number of monitored devices:
- For <100 devices: Default memory limit (734MB) should be sufficient
- For 100-500 devices: Consider increasing memory limit to 1GB or more
- For >500 devices: Consider distributed polling with multiple instances