Online event coordination and survey application
Ruby CSS Makefile Shell
Switch branches/tags
Nothing to show
Clone or download
Failed to load latest commit information.
locale small bugfixes in translations Jan 5, 2018
.gitignore new maintenance-mode feature Apr 15, 2016
.htaccess better encoding solution May 17, 2016
License Copyright information adopted Jan 21, 2010
Makefile Makefile: install cgi scripts with executable bits set Jan 4, 2018 fix typos Feb 16, 2017
about.cgi bugfix in translation string Oct 22, 2017
access_control.rb Fix setting of .htdigest permissions Nov 19, 2015
advanced.rb small bugfix Jan 3, 2018
atom.rb port atom feed to ruby 2 Jan 16, 2016
authorization_required.cgi port to ruby2.1 Nov 12, 2014
charset.rb encoding comment for ruby-1.9 (thanks to Troy Sankey and IOhannes m z… Feb 21, 2014
check.cgi more debug info in check.cgi May 4, 2018
classic.css better display of large tables Jul 7, 2011
config_defaults.rb better encoding solution May 17, 2016
config_sample.rb drop bzr support Oct 14, 2016
customize.cgi implemented choose-css Nov 26, 2009
customize.rb customize.rb: improved usability of selected value Jan 23, 2017
date_locale.rb Change Eesti locale to et Oct 7, 2016
default.css better display of large tables Jul 7, 2011
delete_poll.rb add translation to one text + update German Aug 14, 2016
dudle.rb addded arabic language Jan 3, 2018 add a cleanup cronjob which deletes old polls Apr 14, 2016
edit_columns.rb bugfix: could not delete column with spaces Mar 1, 2011
error.cgi do not load extensions on errors Oct 14, 2016
example.cgi forget history in examples Oct 14, 2016
favicon.ico favicon added Oct 20, 2008
hash.rb fix unittests May 27, 2010
history.rb error pages have unified look Sep 26, 2010
html.rb added tag for right to left languages Aug 4, 2017
index.cgi do not track symlinks Oct 14, 2016
invite_participants.rb possibility to immediately delete users May 26, 2010
log.rb reverse_each seems not available on older ruby versions Jan 28, 2010
maintenance.cgi new maintenance-mode feature Apr 15, 2016
not_found.cgi bugfix: not found caused exception Oct 22, 2017
overview.rb forgot to add one string May 17, 2011
participate.rb complete change of configuration Apr 18, 2011
poll.rb add vote-class Dec 28, 2016
pollhead.rb Bugfix for & in participant names Apr 14, 2016
print.css remove useless hover in print.css Jul 21, 2011
timepollhead.rb do not display empty extra line in edit columns Dec 10, 2017
timestring.rb bugfix: new ruby version caused exception Dec 10, 2017
vcs_git.rb use tempfile instead of own random number Oct 22, 2017
vcs_test.rb drop bzr support Oct 14, 2016


  • Benjamin Kellermann
  • a lot of contributors of small code pieces


GNU AGPL v3 or higher (see file License)


  • ruby >=1.9
  • git >=1.6.5
  • ruby-gettext (for localization)
  • gettext, potool, make (optional, if you want to generate localization files)


  1. Place this application into a directory where cgi-scripts are evaluated.

  2. If you want to change some configuration, state it in the file config.rb (see config_sample.rb for help) to start with a default configuration.

  3. The webserver needs the permission to write into the directory

  4. You need .mo files in order to use localisation. You have 2 possibilities:

    1. Run this small script to fetch the files from the main server:

      for i in locale/??; do
      	wget -O $i/`basename $i`/
    2. Build them on your own. This requires gettext, ruby-gettext, potool, and make to be installed.

      sudo aptitude install gettext potool make
  5. In order to let access control work correctly, the webserver needs auth_digest support. It therefore may help to type:

    sudo a2enmod auth_digest
  6. In order to get atom-feed support you need ruby-ratom to be installed. E.g.:

    sudo aptitude install ruby-dev libxml2-dev zlib1g-dev
    sudo gem install ratom
  7. To make titles with umlauts working you need to check the encoding in .htaccess, e.g.

    SetEnv LC_ALL "en_US.UTF-8"
  8. It might be the case, that you have to set some additional Variables in your .htaccess:

    SetEnv GIT_AUTHOR_NAME="http user"
  9. If you installed dudle to a subdirectory (i.e. http://$YOUR_SERVER/$SOMEDIR/...), than you want to adopt the ErrorDocument directives in your .htaccess. (You need an absolute path here!)

  10. Try to open http://$YOUR_SERVER/check.cgi to check if your config seems to work.

  11. You may want to install a cronjob to cleanup dudle polls. See for an example.

  12. You can enable a maintenance mode if you need to change something with your installation. Using this mode, all users will see a static message and are not able to change anything. In order to enable this mode, create a file named /maintenance.html which may include a custom message. E.g.:

    echo "<div>We are updating the servers and expect to be online on 0 am, January 1st, 1970 (UTC).</div>" > $DUDLE_INSTALLATION_PATH/maintenance.html

Docker image

There are two docker image available

Pimp your Installation


If you set $DUDLE_POEDIT_AUTO to your lang, poedit will launch automatically when building the application. E.g.:

git pull
make # will launch poedit if new french strings are to be translated
  • To add a new translation
  • first add a new folder for your language under $DUDLE_HOME_FOLDER/locale,
  • copy the dudle.pot file into your folder and name it dudle.po
  • translate sentences and phrases in your dudle.po file
  • add an entry for your language in dudle/dudle.rb at line 245