osmith has uploaded this change for review.

View Change

redmine: set session_store to active_record_store

Change the session store to fix the
"ActionDispatch::Cookies::CookieOverflow" errors we are getting.

IMPORTANT: after deploying this change, the following commands must be
executed once manually to create the session table:

# docker compose exec redmine bash
$ rails generate active_record:session_migration
$ rake db:migrate

Related: OS#5476
Change-Id: Iacec800b9179cfac894f41e9eb1a5cca7e56ff1c
---
A redmine/0001-Set-session_store-to-active_record_store.patch
M redmine/Dockerfile
M redmine/docker-entrypoint-osmo.sh
3 files changed, 57 insertions(+), 0 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/37/41137/1
diff --git a/redmine/0001-Set-session_store-to-active_record_store.patch b/redmine/0001-Set-session_store-to-active_record_store.patch
new file mode 100644
index 0000000..47efd2c
--- /dev/null
+++ b/redmine/0001-Set-session_store-to-active_record_store.patch
@@ -0,0 +1,44 @@
+From 84ab3fe831c138e452f6edbeff03c26524cff8ca Mon Sep 17 00:00:00 2001
+From: Oliver Smith <osmith@sysmocom.de>
+Date: Fri, 19 Sep 2025 10:51:06 +0200
+Subject: [PATCH] Set session_store to active_record_store
+
+Related: https://www.redmineup.com/pages/help/getting-started/how-to-fix-cookiesoverflow-error
+Related: OS#5476
+---
+ Gemfile | 3 +++
+ config/application.rb | 3 +--
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/Gemfile b/Gemfile
+index 7746ece04..3082054e0 100644
+--- a/Gemfile
++++ b/Gemfile
+@@ -16,6 +16,9 @@ gem 'rbpdf', '~> 1.21.3'
+ gem 'addressable'
+ gem 'rubyzip', '~> 2.3.0'
+
++# OS#5476
++gem 'activerecord-session_store', '~> 2.0.0'
++
+ # Ruby Standard Gems
+ gem 'csv', '~> 3.2.6'
+ gem 'net-imap', '~> 0.3.4'
+diff --git a/config/application.rb b/config/application.rb
+index 5e93df122..c0d2deb39 100644
+--- a/config/application.rb
++++ b/config/application.rb
+@@ -87,9 +87,8 @@ module RedmineApp
+ config.log_level = Rails.env.production? ? :info : :debug
+
+ config.session_store(
+- :cookie_store,
++ :active_record_store,
+ :key => '_redmine_session',
+- :path => config.relative_url_root || '/',
+ :same_site => :lax
+ )
+
+--
+2.43.0
+
diff --git a/redmine/Dockerfile b/redmine/Dockerfile
index 0fea460..c3545bf 100644
--- a/redmine/Dockerfile
+++ b/redmine/Dockerfile
@@ -18,6 +18,9 @@
ADD commitlog-references-oshash-5.1.3.diff /tmp/commitlog-references-oshash-5.1.3.diff
RUN cd /usr/src/redmine && patch -p1 < /tmp/commitlog-references-oshash-5.1.3.diff

+ADD 0001-Set-session_store-to-active_record_store.patch /tmp/
+RUN cd /usr/src/redmine && patch -p1 < /tmp/0001-Set-session_store-to-active_record_store.patch
+
ADD docker-entrypoint-osmo.sh /
ENTRYPOINT ["/docker-entrypoint-osmo.sh"]
CMD ["rails", "server", "-b", "0.0.0.0"]
diff --git a/redmine/docker-entrypoint-osmo.sh b/redmine/docker-entrypoint-osmo.sh
index 8206d29..546e1f3 100755
--- a/redmine/docker-entrypoint-osmo.sh
+++ b/redmine/docker-entrypoint-osmo.sh
@@ -11,6 +11,16 @@
echo
done &) &

+# Daily: delete all sessions that have not been updated in the last 30 days
+# https://www.redmineup.com/pages/help/getting-started/how-to-fix-cookiesoverflow-error
+(while :; do
+ sleep 1d
+ echo
+ echo "=== Running db:sessions:trim (OS#5476) ==="
+ rake db:sessions:trim
+ echo
+done &) &
+
# Run the original docker-entrypoint.sh script. Exec is important, so "tini"
# inside the original script becomes pid 1 to clean up zombies from redmine.
# https://github.com/docker-library/redmine/

To view, visit change 41137. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: docker-playground
Gerrit-Branch: master
Gerrit-Change-Id: Iacec800b9179cfac894f41e9eb1a5cca7e56ff1c
Gerrit-Change-Number: 41137
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith@sysmocom.de>