-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Setup and Configuration Issues with oxide-rfd
Summary
While attempting to set up oxide-rfd, we encountered multiple significant issues that hindered deployment and made the system difficult to configure properly. This issue documents all problems encountered to help improve the project's usability and documentation.
Environment
- Deployment: Docker containers
- Build mode: Production
- Repository fork: https://gitlab.com/digilab.overheid.nl/ecosystem/oxide-rfd
Issues
1. Missing Docker Container Support
Problem: The project does not provide official Docker container configurations, making deployment more difficult than necessary.
Impact: Users need to create their own Dockerfiles from scratch, which is time-consuming and error-prone.
Our Solution: We created custom Dockerfiles for each component:
- API: https://gitlab.com/digilab.overheid.nl/ecosystem/oxide-rfd/-/blob/main/api.Dockerfile
- Processor: https://gitlab.com/digilab.overheid.nl/ecosystem/oxide-rfd/-/blob/main/processor.Dockerfile
- Site: https://gitlab.com/digilab.overheid.nl/ecosystem/oxide-rfd/-/blob/main/site.Dockerfile
- Migrator: https://gitlab.com/digilab.overheid.nl/ecosystem/oxide-rfd/-/blob/main/migrator.Dockerfile
Additional Issue: The documentation makes no mention of the database migrator component, which is essential for setting up and maintaining the database schema. We discovered this requirement through trial and error.
Recommendation:
- Provide official Docker support with example compose files and Dockerfiles for all components
- Explicitly document the migrator component and its role in the setup process
- Include migration instructions in the deployment documentation
2. Outdated API Configuration Example
Problem: The API configuration example in the documentation is outdated and uses deprecated key types.
Details:
- Old format:
type = local - New format requires:
type = local_signerandtype = local_verifier
Impact: Users following the documentation will encounter configuration errors and need to debug the correct format themselves.
Recommendation: Update all configuration examples to reflect the current API requirements.
3. Configuration Parsing/Merging Issues
Problem: The configuration parsing and merging logic appears to be buggy, forcing users to define the entire configuration structure as secrets rather than splitting between config files and environment variables/secrets.
Expected Behavior: Users should be able to:
- Define non-sensitive configuration in config files
- Override sensitive values with environment variables/secrets
- Have the system properly merge these sources
Actual Behavior: The merging doesn't work reliably, forcing parts of configuration into a single source (typically secrets).
Impact: This violates configuration best practices and makes the system harder to manage across different environments.
4. Environment Variable Parsing for Nested Configuration
Problem: The configuration system does not properly parse nested environment variables.
Attempted Formats:
- Single underscore:
AUTH_GITHUB_TOKEN - Double underscore:
AUTH__GITHUB__TOKEN
Result: Neither format worked for nested configuration values.
Expected Behavior: One of these standard formats should work for nested config (e.g., AUTH__GITHUB__TOKEN for auth.github.token).
Impact: Users cannot use environment variables for configuration override, which is a standard practice in containerized deployments.
5. First Login Process Issues
Problem: The initial authentication setup is problematic in production builds.
Details:
- Documentation suggests running the program with a build-time flag
- This approach doesn't work when building in production mode
- There appears to be no runtime flag alternative
Note: This could potentially be user error, but the current documentation and tooling don't make the correct approach clear.
Recommendation:
- Provide a runtime flag for initial authentication setup
- Clearly document the first-login process for production deployments
- Consider alternative bootstrap authentication methods
6. CLI Authentication Flow Broken
Problem: The rfd-cli auth login github command exits immediately without waiting for user verification.
Expected Behavior:
- Command initiates GitHub OAuth flow
- User completes authentication in browser
- CLI waits for callback/verification
- CLI confirms successful authentication
Actual Behavior:
- Command starts
- Command exits immediately
- No authentication is completed
Impact: Users cannot authenticate via the CLI, blocking command-line workflows.
7. RFD Scanner/Processor Not Creating New RFDs
Problem: The scanner and processor detect new RFDs in pull requests and create job entries, but the RFDs are not actually created or displayed in the frontend.
Observed Behavior:
- New RFDs with PRs are detected
- Jobs appear in the database
jobstable - Logging shows processing activity
- However: No RFDs are created in the database
- Result: Nothing appears in the frontend
Impact: The core functionality of processing new RFDs is broken, making the system unusable for its primary purpose.
Debugging Information Needed:
- Are there error logs that aren't being surfaced?
- Is there a database schema mismatch?
- Are permissions issues preventing RFD creation?
8. Token Refresh Broken in Site
Problem: When authentication tokens expire, the site does not attempt to refresh them automatically.
Expected Behavior:
- User's token expires during session
- Site detects expiration
- Site automatically requests new token
- User session continues seamlessly
Actual Behavior:
- User's token expires
- Site does not refresh the token
- User can only see public RFDs
- User must manually log out and log back in to restore access
Impact: Poor user experience requiring frequent re-authentication. This breaks standard OAuth token refresh flows.
Recommendation: Implement proper token refresh logic before expiration or on 401 responses.
9. GitHub Webhook Secret Configuration Missing
Problem: GitHub webhooks are failing with an error indicating that a secret needs to be set, but there is no documentation on how or where to configure this secret.
Error Received: Error message about needing to set a webhook secret (exact error message would be helpful if available).
Documentation Gap:
- No mention of webhook secret configuration in setup documentation
- No example configuration showing where to set the secret
- No guidance on how to generate or format the secret
Expected Information:
- Configuration parameter name for the webhook secret
- Where to set it (config file, environment variable, etc.)
- How to generate an appropriate secret value
- How to configure the same secret in GitHub's webhook settings
Impact: GitHub integration is non-functional, preventing automatic RFD updates from repository events.
Questions:
- Is this related to the configuration parsing issues (Issue 3, 4)?
- Should this be set as an environment variable?
- Is there a specific format or length requirement for the secret?
Summary of Critical Issues
The most blocking issues are:
- RFD Scanner/Processor not creating RFDs (Issue 7) - Core functionality broken
- GitHub webhooks broken (Issue 9) - GitHub integration non-functional
- CLI authentication broken (Issue 6) - Cannot use CLI tools
- Token refresh not working (Issue 8) - Poor user experience
- Configuration system issues (Issues 3, 4) - Makes deployment difficult
Request for Maintainers
We would appreciate:
- Guidance on whether we've misconfigured something
- Timeline for fixes if these are known issues
- Documentation updates for workarounds if available
- Consideration of our Docker configurations as a starting point for official support
We're happy to contribute fixes for some of these issues if given guidance on the preferred approach.
Additional Context
Our fork with Docker configurations and workarounds: https://gitlab.com/digilab.overheid.nl/ecosystem/oxide-rfd
Thank you for maintaining this project. Despite these issues, we see significant value in the RFD system and hope to get it fully operational.