sameersbn / sameersbn/docker-gitlab
OAuth2 Generic not working
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 8.1k
- Forks
- 2.1k
- Avg merge
- 17h 47m
- Merged PRs (30d)
- 7
Description
Hello,
I have a little problem with my gitlab installation.
First of all I'm stuck on 16.6.2 because I'm running it on a Synology NAS and I'm facing the typical too old kernel problem so I can't update to any later version.
I'm trying to add authentication using Keycloak to my Gitlab instance.
Since I'm on 16.6.2 I also don't have the "OIDC" integration available in this package here. But I have OAuth2 Generic.
So I set up all the required ENV Variables, but when I try to boot my Gitlab Puma always crashes and restarts, I'm getting the following in my Puma logs:
{"timestamp":"2025-08-16T11:29:44.655Z","pid":2410,"message":"Puma starting in cluster mode..."}
{"timestamp":"2025-08-16T11:29:44.685Z","pid":2410,"message":"* Puma version: 6.4.0 (ruby 3.0.6-p216) (\"The Eagle of Durango\")"}
{"timestamp":"2025-08-16T11:29:44.686Z","pid":2410,"message":"* Min threads: 1"}
{"timestamp":"2025-08-16T11:29:44.686Z","pid":2410,"message":"* Max threads: 16"}
{"timestamp":"2025-08-16T11:29:44.686Z","pid":2410,"message":"* Environment: production"}
{"timestamp":"2025-08-16T11:29:44.687Z","pid":2410,"message":"* Master PID: 2410"}
{"timestamp":"2025-08-16T11:29:44.687Z","pid":2410,"message":"* Workers: 3"}
{"timestamp":"2025-08-16T11:29:44.688Z","pid":2410,"message":"* Restarts: (✔) hot (✖) phased"}
{"timestamp":"2025-08-16T11:29:44.688Z","pid":2410,"message":"* Preloading application"}
{"timestamp":"2025-08-16T11:31:15.628Z","pid":2410,"message":"! Unable to load application: ArgumentError: Missing :action key on routes definition, please check your routes."}
bundler: failed to load command: puma (/home/git/gitlab/vendor/bundle/ruby/3.0.0/bin/puma)
/home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:302:in `check_part': Missing :action key on routes definition, please check your routes. (ArgumentError)
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:291:in `check_controller_and_action'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:223:in `normalize_options!'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:132:in `initialize'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:85:in `new'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:85:in `build'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:1984:in `add_route'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:1956:in `decomposed_match'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:1920:in `block in map_match'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:1914:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:1914:in `map_match'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:1662:in `match'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:452:in `block in devise_omniauth_callback'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:446:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:446:in `devise_omniauth_callback'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:268:in `block (4 levels) in devise_for'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:268:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:268:in `block (3 levels) in devise_for'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:472:in `with_devise_exclusive_scope'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:267:in `block (2 levels) in devise_for'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:370:in `block in devise_scope'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:871:in `scope'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/mapper.rb:1000:in `constraints'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:369:in `devise_scope'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:266:in `block in devise_for'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:242:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails/routes.rb:242:in `devise_for'
from /home/git/gitlab/config/routes/user.rb:42:in `draw_route'
from /home/git/gitlab/lib/gitlab/patch/draw_route.rb:30:in `instance_eval'
from /home/git/gitlab/lib/gitlab/patch/draw_route.rb:30:in `draw_route'
from /home/git/gitlab/lib/gitlab/patch/draw_route.rb:17:in `draw_ce'
from /home/git/gitlab/lib/gitlab/patch/draw_route.rb:11:in `draw'
from /home/git/gitlab/config/routes.rb:278:in `block (2 levels) in <top (required)>'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/route_set.rb:428:in `instance_exec'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/route_set.rb:428:in `eval_block'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/route_set.rb:410:in `draw'
from /home/git/gitlab/config/routes.rb:7:in `block in <top (required)>'
from /home/git/gitlab/lib/initializer_connections.rb:18:in `raise_if_new_database_connection'
from /home/git/gitlab/config/routes.rb:6:in `<top (required)>'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/application/routes_reloader.rb:50:in `load'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/application/routes_reloader.rb:50:in `block in load_paths'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/application/routes_reloader.rb:50:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/application/routes_reloader.rb:50:in `load_paths'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/application/routes_reloader.rb:24:in `reload!'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/application.rb:149:in `reload_routes!'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/devise-4.9.3/lib/devise/rails.rb:17:in `block in <class:Engine>'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/activesupport-7.0.8/lib/active_support/lazy_load_hooks.rb:92:in `block in execute_hook'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/activesupport-7.0.8/lib/active_support/lazy_load_hooks.rb:85:in `with_execution_control'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/activesupport-7.0.8/lib/active_support/lazy_load_hooks.rb:90:in `execute_hook'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/activesupport-7.0.8/lib/active_support/lazy_load_hooks.rb:76:in `block in run_load_hooks'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/activesupport-7.0.8/lib/active_support/lazy_load_hooks.rb:75:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/activesupport-7.0.8/lib/active_support/lazy_load_hooks.rb:75:in `run_load_hooks'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/application/finisher.rb:73:in `block in <module:Finisher>'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:32:in `instance_exec'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:32:in `run'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:61:in `block in run_initializers'
from /usr/local/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
from /usr/local/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
from /usr/local/lib/ruby/3.0.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `tsort_each_child'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `call'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `tsort_each_child'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `call'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `tsort_each_child'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `call'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `tsort_each_child'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `call'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:50:in `tsort_each_child'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `call'
from /usr/local/lib/ruby/3.0.0/tsort.rb:415:in `each_strongly_connected_component_from'
from /usr/local/lib/ruby/3.0.0/tsort.rb:349:in `block in each_strongly_connected_component'
from /usr/local/lib/ruby/3.0.0/tsort.rb:347:in `each'
from /usr/local/lib/ruby/3.0.0/tsort.rb:347:in `call'
from /usr/local/lib/ruby/3.0.0/tsort.rb:347:in `each_strongly_connected_component'
from /usr/local/lib/ruby/3.0.0/tsort.rb:226:in `tsort_each'
from /usr/local/lib/ruby/3.0.0/tsort.rb:205:in `tsort_each'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/initializable.rb:60:in `run_initializers'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/railties-7.0.8/lib/rails/application.rb:372:in `initialize!'
from /home/git/gitlab/config/environment.rb:7:in `<top (required)>'
from config.ru:5:in `require'
from config.ru:5:in `block in <main>'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/rack-2.2.8/lib/rack/builder.rb:116:in `eval'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/rack-2.2.8/lib/rack/builder.rb:116:in `new_from_string'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/rack-2.2.8/lib/rack/builder.rb:105:in `load_file'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/rack-2.2.8/lib/rack/builder.rb:66:in `parse_file'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/puma-6.4.0/lib/puma/configuration.rb:368:in `load_rackup'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/puma-6.4.0/lib/puma/configuration.rb:290:in `app'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/puma-6.4.0/lib/puma/runner.rb:162:in `load_and_bind'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/puma-6.4.0/lib/puma/cluster.rb:359:in `run'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/puma-6.4.0/lib/puma/launcher.rb:194:in `run'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/puma-6.4.0/lib/puma/cli.rb:75:in `run'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/gems/puma-6.4.0/bin/puma:10:in `<top (required)>'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/bin/puma:25:in `load'
from /home/git/gitlab/vendor/bundle/ruby/3.0.0/bin/puma:25:in `<top (required)>'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/cli/exec.rb:58:in `load'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/cli/exec.rb:58:in `kernel_load'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/cli/exec.rb:23:in `run'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/cli.rb:492:in `exec'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/cli.rb:34:in `dispatch'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/cli.rb:28:in `start'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/exe/bundle:37:in `block in <top (required)>'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
from /usr/local/lib/ruby/gems/3.0.0/gems/bundler-2.4.21/exe/bundle:29:in `<top (required)>'
from /usr/local/bin/bundle:23:in `load'
from /usr/local/bin/bundle:23:in `<main>'
The error message Unable to load application: ArgumentError: Missing :action key on routes definition, please check your routes. seems to indicate, that something fails when it tries to add the oauth related routes.
When I leave all configs as is, and just rename / remove my oauth generic Client ID and CLient Secret env variables so that the entrypoint script assumes it's not set up, Gitlab is booting and working fine again.
Any ideas on how to solve that issue or to work around it? Maybe without an upgrade of the package.
Would it work fine in a newer release?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with config/routes/user.rb:42 and the devise_omniauth_callback entries shown in the Puma trace, then reproduce the failure using the reported OAuth2 Generic environment variables. Done means the GitLab Puma application loads without the missing :action route error when this authentication configuration is enabled.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, ruby
- Domain
- authentication, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100