A Go web application that provides a self-service interface for creating Grafana organizations and users.
- Password Protected: Requires authentication to access the provisioning interface
- Self-Service: Users can request their own Grafana organization with just their name
- Automatic Setup: Creates unique organization, user account, and proper permissions
- Isolated Access: Users only have access to their own organization, not the root organization
- Web Interface: Simple HTML forms for easy interaction
- Authentication: Users must provide the app password to access the dashboard
- Organization Request: Users enter their name to request an organization
- Automatic Provisioning:
- Creates a unique organization based on the user's name
- Creates a user account with generated credentials
- Adds the user as an admin of their organization
- Removes access to the root organization
- Credentials Provided: Users receive their login credentials and Grafana URL
Set these environment variables:
GRAFANA_URL: Grafana instance URL (default:http://grafana:3000)GRAFANA_ADMIN_USER: Grafana admin username (default: admin)GRAFANA_ADMIN_PASSWORD: Grafana admin password (default: admin)APP_PASSWORD: Password to access this provisioner app (default: provisioner123)PORT: Port to run the web server on (default: 8090)SESSION_KEY: Session encryption key (auto-generated if not set)
- Start the stack:
docker compose up -d - Access the provisioner: http://localhost:8090
- Login with the app password
- Enter your name to request an organization
- Use the provided credentials to login to Grafana
GET /: Login pagePOST /login: AuthenticationGET /dashboard: Main dashboard (requires authentication)POST /request-org: Create organization and userGET /logout: Logout and clear session
- Session-based authentication
- Basic auth for Grafana API calls
- Automatic removal from root organization
- Unique username/organization generation to prevent conflicts
- Secure password generation