Bitnami Redmine

    redmine-stack.png

    Redmine is a flexible project management web application. Written using Ruby on Rails framework, it is cross-platform and cross-database. Its main features are:

    • Multiple projects support
    • Flexible role based access control.
    • Flexible issue tracking system
    • Gantt chart and calendar
    • News, documents and files management
    • Feeds and email notifications.
    • Per project wiki
    • Per project forums
    • Simple time tracking functionality
    • Custom fields for issues, projects and users
    • SCM integration (SVN, CVS, Mercurial and Darcs)
    • Multiple LDAP authentication support
    • User self-registration support
    • Multilanguage support
    • Multiple databases support

     

    Bitnami Redmine Stack was configured using Passenger on Linux and OS X and Thin servers on Windows for versions higher than 1.4.3. In this page you can find the documentation related to this configuration.

    If you are using Bitnami Redmine lower than 1.4.3 version, please check this documentation.

    Please, take a look to the Quick Start Guide to know the basic use of this Stack.

    Bitnami structure and configuration

    The applications in Bitnami are installed in the 'apps' folder that you can find in the installation directory. In virtual machines, cloud images and in Bitnami Cloud hosting servers the installation directory is /opt/bitnami.

    The main folders that you can find inside 'apps/redmine' are the following:

    • conf: folder that includes the apache configuration files for redmine
    • htdocs: this folder includes the redmine files (Gemfile and Rakefile files, redmine configuration files, plugins folder, gems, etc).

    The location of the redmine configuration files (database configuration, email settings, etc) is the 'apps/redmine/htdocs/config' folder.

    You can find more details about the Bitnami directory structure here.

    How to start/stop the servers?

    You can use either the graphical manager tool or the command-line tool to start and stop the servers.

    Graphical Tool

    Bitnami stacks include a graphical tool to manage the servers easily (native installers only). Using this tool, you can start, stop and restart the servers and check the log files.

    manager-servers.png

     

     

     

     

     

     

     

     

     

     

    On Windows:

    • Double-click the "manager-windows.exe" file in your installation directory.  
    • You can also start the Manager tool using the Start Menu path Start -> Program Files -> Bitnami Stack -> Manager.

    On Linux and Mac OS X:

    • Double-click the "manager-osx" or "manager-linux-*" tool in your installation directory. 
    Command-line Tool

    Each Bitnami stack includes a control script that lets you easily stop, start and restart servers. Refer to the section for your platform to learn more.

    Cloud Server

    The script is located at /opt/bitnami/ctlscript.sh. Call it without any arguments to restart all services:

    $ sudo /opt/bitnami/ctlscript.sh start
    

    Or use it to restart a specific service only by passing the service name as argument - for example 'mysql':

    $ sudo /opt/bitnami/ctlscript.sh restart mysql
    

    Virtual Machine

    The script is located at /opt/bitnami/ctlscript.sh. Call it without any arguments to restart all services:

    $ sudo /opt/bitnami/ctlscript.sh start
    

    Or use it to restart a specific service only by passing the service name as argument - for example 'mysql':

    $ sudo /opt/bitnami/ctlscript.sh restart mysql
    

    Native Installer

    The control script is only available for Linux and Mac OS X native installers. The script is located in your installation directory and named ctlscript.sh. Call it without any arguments to restart all services.

    On Linux:
    If your installation directory is /home/USER/wordpress-4.0.1-0, call the control script with the ‘start’ argument to start all servers. For example:

    $ cd /home/USER/wordpress-4.0.1-0
    $ ./ctlscript.sh start
    

    Or use it to restart a specific service only by passing the service name as argument - for example 'mysql':

    $ cd /home/USER/wordpress-4.0.1-0
    $ ./ctlscript.sh restart mysql
    

    On Mac OS X:
    If your installation directory is /Applications/wordpress-4.0.1-0, call the control script with the ‘start’ argument to start all servers. For example:

    $ cd /Applications/wordpress-4.0.1-0
    $ ./ctlscript.sh start
    

    Or use it to restart a specific service only by passing the service name as argument - for example 'mysql':

    $ cd /Applications/wordpress-4.0.1-0
    $ ./ctlscript.sh restart mysql
    

    Tabs end

    How to change the default prefix?

    If you want to change Redmine to the root url you should follow the next next section. In this section you can see how to replace the URL "/redmine" with "/new_url".

    linux_platform.png  mac_platform.pngOn Linux and OS X, you should modify the following options in the "opt/bitnami/apps/redmine/config/httpd-prefix.conf" file. Note if you are using a native installer, replace "/opt/bitnami" with your installation directory.

    Alias /new_url/ "/opt/bitnami/apps/redmine/htdocs/public/"
    Alias /new_url "/opt/bitnami/apps/redmine/htdocs/public"
    Include "/opt/bitnami/apps/redmine/conf/httpd-app.conf"
    

    It is also necessary to update the installdir/apps/redmine/conf/httpd-app.conf:

    <Directory "/opt/bitnami/apps/redmine/htdocs/public">
        PassengerEnabled on
        Options -MultiViews
        AllowOverride All
        <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
        </IfVersion>
        <IfVersion >= 2.3>
        Require all granted
        </IfVersion>
        SetEnv RAILS_RELATIVE_URL_ROOT "/new_url"
        PassengerAppRoot "/opt/bitnami/apps/redmine/htdocs"
    </Directory>
    
    PassengerPreStart http://127.0.0.1:80/new_url
    

    Then, restart the server:

    sudo /opt/bitnami/ctlscript.sh restart apache
    


    win_platform.png On Windows it is necessary to modify the Apache configuration. Edit "installdir/apps/redmine/conf/redmine.conf" the file to modify the "/redmine" setting:

    ProxyPass /redmine balancer://redminecluster
    ProxyPassReverse /redmine balancer://redminecluster
    
    <Proxy balancer://redminecluster>
      BalancerMember http://127.0.0.1:3001/redmine
      BalancerMember http://127.0.0.1:3002/redmine
    </Proxy>

    You should modify the "installdir/apps/redmine/scripts/serviceinstall.bat" and change the prefix entry "--prefix /redmine".  You should also update the prefix in the "installdir/apps/redmine/htdocs/config/additional_environment.rb" file.

    Then run the following command from a command prompt with Admin privileges:

    > cd “C:\Bitnami\redmine-<version>\apps\redmine\scripts”
    > serviceinstall.bat UNINSTALL
    > serviceinstall.bat INSTALL
    

    Then restart the Apache server using the Manager graphical application.

    How to change the default URL?

    Automatic Approach

    This approach is based on the Bitnami Configuration Tool (bnconfig).

    Bitnami Cloud Hosting

    The best way to change your URL in BCH is to go to your application tab and modify it there. In the Bitnami Cloud Hosting console, select Servers, choose your server, Manage and go to the Applications tab. Press there the pencil next to the application which URL you want to modify and choose .

    Refer to this guide for more information.

    Cloud Images and Virtual Machines

    Moving the application to /

     If your application is running in "/redmine" you can remove the prefix from the URL executing the following command:

    $ sudo /opt/bitnami/apps/redmine/bnconfig --appurl /
    

    (use --help to check if that option is available for your application)

    Now you will be able to access to the application at http://YOUR_DOMAIN instead of http://YOUR_DOMAIN/redmine.

    Updating the IP or hostname

    Some applications require to update the IP/domain if the machine IP/domain changes. The bnconfig tool also has an option which updates the IP automatically during boot, called machine_hostname (use --help to check if that option is available for your application). Note that this tool changes the URL to http://NEW_DOMAIN/redmine

    sudo /opt/bitnami/apps/redmine/bnconfig --machine_hostname NEW_DOMAIN
    

    If you already moved your application to the root URL you should include both options at the same time.

    sudo /opt/bitnami/apps/redmine/bnconfig --appurl / --machine_hostname NEW_DOMAIN
    

    If you have configured your machine to use an static domain name or IP, you should rename or remove the "/opt/bitnami/apps/redmine/bnconfig" file.

    sudo mv /opt/bitnami/apps/redmine/bnconfig /opt/bitnami/apps/redmine/bnconfig.disabled
    

    Native Installer

    Remember to use your actual installation directory instead of installdir.

    Moving the application to /

    If your application is running in "/redmine" you can remove the prefix from the URL executing the following command:

    On Linux,

    installdir/apps/redmine/bnconfig --appurl /
    

    On Mac OS X, 

    installdir/apps/redmine/bnconfig.app/Contents/MacOS/installbuilder.sh --appurl /
    

    On Windows,

    installdir/apps/redmine/bnconfig.exe --appurl /
    

    (use --help to check if that option is available for your application)

    Now you will be able to access to the application at http://YOUR_DOMAIN instead of http://YOUR_DOMAIN/redmine.

    Updating the IP or hostname

    Some applications require to update the IP/domain if the machine IP/domain changes. The bnconfig tool also has an option which updates the IP , called machine_hostname (use --help to check if that option is available for your application). Note that this tool changes the URL to http://NEW_DOMAIN/redmine.

    installdir/apps/redmine/bnconfig --machine_hostname NEW_DOMAIN
    

    If you already moved your application to the root URL you should include both options at the same time.

    installdir/apps/redmine/bnconfig --appurl / --machine_hostname NEW_DOMAIN
    

    Tabs end

    Manual Approach

    If you want to move the Redmine application from the prefix http://example.com/redmine to the root url (i.e http://example.com), you can follow the steps described below: 

    Cloud and Virtual Machines

    Comment out the line "SetEnv RAILS_RELATIVE_URL_ROOT"  and remove the /redmine part in the PassengerPreStart URL in the file /opt/bitnami/apps/redmine/conf/httpd-app.conf

    <Directory "/opt/bitnami/apps/redmine/htdocs/public">
        Options -MultiViews
        <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
        </IfVersion>
        <IfVersion >= 2.3>
        Require all granted
        </IfVersion>
        # SetEnv RAILS_RELATIVE_URL_ROOT "/redmine"
        PassengerAppRoot "/opt/bitnami/apps/redmine/htdocs"
        <IfModule pagespeed_module>
            ModPagespeedDisallow "*"
        </IfModule>
    </Directory>
    
    PassengerPreStart http://127.0.0.1/
    

    Comment out the aliases and add the public redmine/ directory as DocumentRoot in the file /opt/bitnami/apps/redmine/conf/httpd-prefix.conf :

    # Alias /redmine/ "/opt/bitnami/apps/redmine/htdocs/public/"
    # Alias /redmine "/opt/bitnami/apps/redmine/htdocs/public"
    
    DocumentRoot "/opt/bitnami/apps/redmine/htdocs/public"
    
    Include "/opt/bitnami/apps/redmine/conf/httpd-app.conf"
    

    Native Installer

    When copying these instructions, take into account that you have to change installdir to reflect the correct installation directory.

      mac_platform.pngOn Linux and OS linux_platform.pngX, you have to change the  installdir/apps/redmine/conf/httpd-app.conf  and installdir/apps/redmine/conf/httpd-prefix.conf files to modify the /redmine URL to the root URL. 

    Comment out the line "SetEnv RAILS_RELATIVE_URL_ROOT"  and remove the /redmine part in the PassengerPreStart URL in the file installdir/apps/redmine/config/httpd-app.conf

    <Directory "installdir/apps/redmine/htdocs/public">
        Options -MultiViews
        <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
        </IfVersion>
        <IfVersion >= 2.3>
        Require all granted
        </IfVersion>
        # SetEnv RAILS_RELATIVE_URL_ROOT "/redmine"
        PassengerAppRoot "installdir/apps/redmine/htdocs"
        <IfModule pagespeed_module>
            ModPagespeedDisallow "*"
        </IfModule>
    </Directory>
    
    PassengerPreStart http://127.0.0.1:8080/
    

    Comment out the aliases and add the public redmine/ directory as the DocumentRoot in the file installdir/apps/redmine/conf/httpd-prefix.conf:

    # Alias /redmine/ "/opt/bitnami/apps/redmine/htdocs/public/"
    # Alias /redmine "/opt/bitnami/apps/redmine/htdocs/public"
    
    DocumentRoot "/opt/bitnami/apps/redmine/htdocs/public"
    
    Include "/opt/bitnami/apps/redmine/conf/httpd-app.conf"
    
    win_platform.png

    On Windows it is necessary to modify the Apache configuration and the Thin services.

    Edit the file installdir/apps/redmine/conf/httpd-prefix.conf. Remove the /redmine suffixes and specify the DocumentRoot:

    DocumentRoot "installdir/apps/redmine/htdocs/public/"
    
    RewriteEngine On
    RewriteRule ^/(.*)$ balancer://redminecluster%{REQUEST_URI} [P,QSA,L]
    
    ProxyPass / balancer://redminecluster
    ProxyPassReverse / balancer://redminecluster
    
    <Proxy balancer://redminecluster>
       BalancerMember http://127.0.0.1:3001
       BalancerMember http://127.0.0.1:3002
    </Proxy>
    

    Then, modify the file installdir/apps/redmine/scripts/serviceinstall.bat and remove the prefix parameter --prefix /redmine. You should also remove installdir/apps/redmine/htdocs/config/additional_environment.rb which has the prefix too.

    Once changed, reinstall the service running the following command from a command prompt with Admin privileges:

    > cd “C:\Bitnami\redmine-<version>\apps\redmine\scripts”
    > serviceinstall.bat UNINSTALL
    > serviceinstall.bat INSTALL
    

    Tabs end

     
    Once done, restart the Apache server, either using the graphical manager or the command below (on Linux):
    sudo /opt/bitnami/ctlscript.sh restart apache
    

    How to create a full backup of Redmine?

    Backup

    Bitnami stacks are self-contained and the simplest option for performing a backup is to copy or compress the Bitnami stack installation directory. To do so in a safe manner, you will need to stop all servers, so this method may not be appropriate if you have people accessing the application continuously.

    Cloud Server

    Follow these steps:

    • Change to the directory in which you wish to save your backup.
      cd /your/directory
      
    • Stop all servers.
      $ sudo /opt/bitnami/ctlscript.sh stop
      
    • Create a compressed file with the stack contents.
      $ sudo tar -pczvf application-backup.tar.gz /opt/bitnami
    • Restart all servers.
      $ sudo /opt/bitnami/ctlscript.sh start

    You should now download or transfer the application-backup.tar.gz file to a safe location.

    Virtual Machine

    Follow these steps:

    • Change to the directory in which you wish to save your backup.
      cd /your/directory
      
    • Stop all servers.
      $ sudo /opt/bitnami/ctlscript.sh stop
    • Create a compressed file with the stack contents.
      $ sudo tar -pczvf application-backup.tar.gz /opt/bitnami
    • Restart all servers.
      $ sudo /opt/bitnami/ctlscript.sh start
      

    You should now download or transfer the application-backup.tar.gz file to a safe location.

    Native Installer (Windows)

    Follow these steps:

    • Stop all servers using the shortcuts in the Start Menu or the graphical manager tool.
    • Create a compressed file with the stack contents. You can use a graphical tool like 7-Zip or WinZip.
    • Stop all servers using the shortcuts in the Start Menu or the graphical manager tool.

    You should now download or transfer the application-backup.zip file to a safe location.

    Native Installer (Linux and Mac OS X)

    Follow these steps:

    • Change to the directory in which you wish to save your backup.
      cd /your/directory
      
    • Stop all servers.
      $ sudo installdir/ctlscript.sh stop
      
    • Create a compressed file with the stack contents.
      $ sudo tar -pczvf application-backup.tar.gz installdir
      
    • Restart all servers.
      $ sudo installdir/ctlscript.sh start
      

    You should now download or transfer the application-backup.tar.gz file to a safe location.

    Tabs end

    Restore

    Bitnami stacks are self-contained, so to restore a stack, you only need to uncompress the backup file in the same location. It is important to use the same path that was used when the stack was originally installed.

    Cloud Server

    Follow these steps:

    • Change to the directory containing your backup.
      cd /your/directory
      
    • Stop all servers.
      $ sudo /opt/bitnami/ctlscript.sh stop
    • Rename the current directory to save it.
      $ sudo mv /opt/bitnami /opt/bitnamiBackup
    • Uncompress the backup file to the original directory.
      $ sudo tar -pxzvf application-backup.tar.gz -C /
    • Start all servers.
      $ sudo /opt/bitnami/ctlscript.sh start
      

    Virtual Machine

    Follow these steps:

    • Change to the directory containing your backup.
      cd /your/directory
      
    • Stop all servers.
      $ sudo /opt/bitnami/ctlscript.sh stop
    • Rename the current directory to save it.
      $ sudo mv /opt/bitnami /opt/bitnamiBackup
    • Uncompress the backup file to the original directory.
      $ sudo tar -pxzvf application-backup.tar.gz -C /
    • Start all servers.
      $ sudo /opt/bitnami/ctlscript.sh start
      

    Native Installer (Windows)

    Follow these steps:

    • Uncompress the backup file to the original directory.
    • Install services by launching a new command prompt and executing the following commands. Administrator privileges are required.
      $ cd installdir
      $ serviceinstall.bat INSTALL
      

    You can now start or stop servers using the graphical manager tool.

    Native Installer (Linux and Mac OS X)

    Follow these steps:

    • Change to the directory containing your backup.
      cd /your/directory
      
    • Stop all servers.
      $ sudo /opt/bitnami/ctlscript.sh stop
      
    • Rename the current directory to save it.
      $ sudo mv installdir installdirBackup
    • Uncompress the backup file to the original directory.
      $ sudo tar -pxzvf application-backup.tar.gz -C /
      
    • Start all servers.
      $ sudo installdir/ctlscript.sh start
      

    Tabs end

    IMPORTANT: When restoring, remember to maintain the original permissions for the files and folders. For example, if you originally installed the stack as 'root', make sure that the restored files are owned by 'root'.


    If you want to create only a database backup, refer to these instructions for MySQL and PostgreSQL.

    How to upgrade Redmine?

    It is strongly recommended that you create a backup before starting the update process. If you have important data, it is advisable that you create and try to restore a backup to ensure that everything works properly. You can get more info about  how to create a full backup here.

    Of course, before executing any command, you have to start the bitnami_console script or the shortcut on Windows before typing the following commands.

    There are two different ways to upgrade your application.

    1. If you want to upgrade the application and all Stack components PHP, Ruby, MySQL, Apache… You can follow the steps described at How to upgrade the full Stack migrating the data?
    2. In case you only want to upgrade the application code without modifying any other Stack components. You can find below the steps to upgrade only the Redmine application.

    In the Redmine case, these are the steps to migrate the database from an old version to a new one. You can launch a new Redmine version instance or download the latest Redmine installer from http://bitnami.com/stack/redmine. Note this guide uses "/opt/bitnami" as the default installation directory, you can use a different one if you have installed it in a different folder.

    • Copy the database backup to the new Bitnami version server.

    • Stop all servers and start only MySQL. Note that the installation directory could be different. This is the default installation directory for Virtual Machines and Cloud images.

      $ sudo /opt/bitnami/ctlscript.sh stop
      $ sudo /opt/bitnami/ctlscript.sh start mysql
      
    • Remove the previous database and create the new one. You can configure the database user password with a secure password.

      $ mysql -u root -p 
      Password: ****
      mysql> drop database bitnami_redmine;
      mysql> create database bitnami_redmine;
      mysql> grant all privileges on bitnami_redmine.* to 'bn_redmine'@'localhost' identified by 'DATABASE_PASSWORD';
      
    • Restore the new database:

      $ mysql -u root -p bitnami_redmine < backup.sql
      
    • Edit the Redmine configuration file to update the database user password (the same that you set previously) "/opt/bitnami/apps/redmine/htdocs/config/database.yml"
    production:
      adapter: mysql2
      database: bitnami_redmine
      host: localhost
      username: bn_redmine
      password: "DATABASE_PASSWORD"
      encoding: utf8

     

    • Migrate the database to the latest version:
    $ cd /opt/bitnami/apps/redmine/htdocs 
    $ ruby bin/rake db:migrate RAILS_ENV=production
    

     

    Troubleshooting:

    If you see the following error, go to your database and remove the specified table and run the migrate command again.

    Mysql::Error: Table 'changeset_parents' already exists: CREATE TABLE `changeset_parents` (`changeset_id` int(11) NOT NULL, `parent_id` int(11) NOT NULL) ENGINE=InnoDB
    
    $ mysql -u root -p 

    mysql> use bitnami_redmine;

    mysql> drop table changeset_parents;

    • Copy the ""/opt/bitnami/apps/redmine/htdocs/files" folder from the old installation to the new one. 
    • If you have installed plugins in the previous version, copy the folders from "vendor/plugins" directory into new installation directory, in "plugins" folder.
    • Check the plugins also support this new version and run the following command
    $ ruby bin/rake redmine:plugins RAILS_ENV="production"
    
    • Finally you should clean the cache and the sessions:
    $ ruby bin/rake tmp:cache:clear
    $ ruby bin/rake tmp:sessions:clear
    
    • Restart the servers and you can access to your new Redmine.
    ​$ sudo /opt/bitnami/ctlscript.sh restart

     

    Troubleshooting:

    If you upgrade it from a 1.x version and you see something similar to this error creating an issue:

    MysqlStatement::Error Value for field `value` cannot be NULL INSERT INTO custom_value ...
    

    Go to your custom values in the admin panel, try to edit and save them again. That should fix the issue.

    How to install a plugin on Redmine?

    Before installing a plugin make sure that the plugin is compatible with your redmine version. If you get the plugin from the Redmine Plugin Directory  you can check the "Compatible with:" field for each plugin.

    Download the plugin and copy the directory into installdir/apps/redmine/htdocs/plugins.

    If the plugin requires a migration, run the following commands to upgrade your database. It is advisable to make a db backup before.

    On Windows, you should start the "Use Redmine" command prompt from the Windows Start Menu. On Linux or OS X, you should run this command from a "use_redmine" console.

    $ cd installdir
    $ ./use_redmine
    $ cd apps/redmine/htdocs
    $ bundle install --without development test postgresql sqlite
    $ ruby bin/rake redmine:plugins RAILS_ENV=production
    

    Restart Redmine application.

     

    Note: Since Redmine 2.4.0-0 version, this process could be a little bit different. If you receive the error below after executing bundle install, try executing `bundle install --no-deployment` as suggested in the error message.

    You are trying to install in deployment mode after changing your Gemfile. Run `bundle install` elsewhere and add the updated Gemfile.lock to version control.
    If this is a development machine, remove the Gemfile freeze by running `bundle install --no-deployment`.

    After copying the plugin into installdir/apps/redmine/htdocs/plugins.

    $ cd installdir
    $ ./use_redmine
    $ cd apps/redmine/htdocs
    $ bundle install --without development test postgresql sqlite --no-deployment
    $ bundle install --without development test postgresql sqlite --deployment
    $ ruby bin/rake redmine:plugins RAILS_ENV=production
    

    Restart Redmine application.

    Windows troubleshooting

    If you are using the Bitnami Redmine installer for Windows and your thin servers don't run after installing a plugin you can run them manually to see what is the error.

    • Go to Bitnami Redmine console at Start -> Program Files -> Bitnami Redmine Stack -> Use Redmine
    • Go to apps/redmine/htdocs
    • Run the following command:
    bundle exec thin start -e production -p 3001 --prefix /redmine
    

    Now you can see the error starting the servers or accesing through your web browser at http://127.0.0.1:3001/redmine.

    How to install the RedmineCRM plugin?

    The RedmineCRM plugin allows you to keep track of the contacts and companies, communications with them and deals in the pipeline. The main features are:

    - Contacts

    - Deals

    - Notes

    - Contacts issues/tasks

    - Email sending

    You can download this plugin at  RedmineCRM. The installation steps are the following. Note that this quick guide uses "/opt/bitnami" as the default installation directory.

    • Download the plugin and uncompress it in the plugins folder:
    $ unzip redmine_contacts*.zip -d /opt/bitnami/apps/redmine/htdocs/plugin
    
    • Then install the required gems:
    $ cd /opt/bitnami/apps/redmine/htdocs
    $ bundle install --no-deployment --without development test
    • Migrate the database
    $ ruby bin/rake redmine:plugins NAME=redmine_contacts RAILS_ENV=production
    
    • Restart the Apache server and check the plugin is already installed in the Admin -> Plugins section.
    $ sudo /opt/bitnami/ctlscript.sh restart apache
    

    How to install the Redmine Dropbox plugin?

    The Redmine Dropbox plugin only supports Redmine 1.x version currently. Check this guide.

    How to install the Redmine Ultraviolet plugin?

    Some of plugins require to be compiled, for instance, the Redmine Ultraviolet Syntax Highlighting plugin (http://www.redmine.org/plugins/redmine_ultraviolet). It is necessary that you machine have the compilation tools (gcc, make and their dependencies). If you are running a Virtual Appliance or an AMI, you should do the following:

    $ sudo apt-get install gcc make
    $ sudo apt-get install libonig-dev
    $ sudo gem install ultraviolet
    

    Now you can download the plugin and install it in Redmine application

    $ sudo git clone git://github.com/epitron/redmine_ultraviolet.git
    $ sudo mv redmine_ultraviolet /installdir/apps/redmine/htdocs/vendor/plugins
    $ sudo /installdir/ctlscript.sh restart apache
    

    That's all, you can enable any Ultraviolet theme in the administrator account.

    How to install the Redmine Custom Workflows plugin?

    Before installing the Redmine Custom Workflows plugin (http://www.redmine.org/plugins/custom-workflows), please, follow this steps to create a backup. Once your backup is done, follow this steps:

    • If you are using Bitnami Cloud Hosting, our AMIs or our VMs, skip this step. If you are using our Native Installers, run this command:
    cd /installdir/ ; ./use_redmine
    • Go to the Redmine plugins directory:
    cd /opt/bitnami/apps/redmine/htdocs/plugins
    • Download the latest Custom Workflows version. Copy the link from the "Changelog" section and use this command:
    wget PASTE_THE_LINK
    • Unzip the plugin:
    unzip redmine_custom_workflows-[version].zip
    • Rename the extracted folder
    mv redmine_custom_workflows-[version] redmine_custom_workflows
    • Install the plugin
    bundle exec rake redmine:plugins NAME=redmine_custom_workflows RAILS_ENV=production
    • Restart Redmine
    sudo /opt/bitnami/ctlscript.sh restart
    • Sign in to your Redmine installation and go to "Administration" -> "Custom Workflows" to configure the new plugin.

    How to install the Redmine Agile plugin?

    The Bitnami Redmine+Agile Stack provides a one-click install solution for Redmine plus Agile plugin. Download installers and virtual machines, or run your own Redmine+Agile server in the cloud.

    If you prefer to manually install the Redmine Agile Plugin, we recommend you to create a backup first. Once your backup is done, follow this steps: 

    • If you are using Bitnami Cloud Hosting, our AMIs or our VMs, skip this step. If you are using our Native Installers, run this command:
    cd /installdir/ ; ./use_redmine
    • Go to the Redmine plugins directory and move the .zip archive containing the plugin files:
    cd /opt/bitnami/apps/redmine/htdocs/plugins
    • Go back to the htdocs directory:
    cd /opt/bitnami/apps/redmine/htdocs/
    
    • Install plugin required gems running bundle command:
    bundle install --without development test
    • Migrate Redmine Agile database:
    bundle exec rake redmine:plugins NAME=redmine_agile RAILS_ENV=production
    • Restart services for changes to take effect:
    sudo /opt/bitnami/ctlscript.sh restart
    • Sign in to your Redmine installation and go to "Administration" -> Agile to configure the new plugin.
    • Go to "Projects" -> "your_project" -> "Settings" -> "Modules" to enable Agile plugin in your project.

    How to configure the email settings of Redmine?

    You can configure the email settings in the "installdir/apps/redmine/htdocs/config/configuration.yml" file. In older versions you should use the "installdir/apps/redmine/htdocs/config/email.yml" file. Please note that installdir stands for /opt/bitnami in the machines launched with Bitnami Cloud Hosting.

    The sample configuration for GMail account is shown below:

    default:
      email_delivery:
        delivery_method: :smtp
        smtp_settings:
          address: smtp.gmail.com
          port: 587
          domain: your_domain.com
          authentication: :login
          user_name: your_email@gmail.com
          password: your_password
    

    In case you receive an error message saying something like "530 5.7.0 Must issue a STARTTLS command first ...", make sure you have the enable_starttls_auto property set after the password line

         enable_starttls_auto: true
    

     

    Once the configuration.yml file is changed, you need to restart the mongrel process.

    $ sudo installdir/ctlscript.sh restart apache
    

     

    In Redmine 2.0 or greater, if you see a similar error to this: "An error occurred while sending mail (SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol)" you should remove the "tls: true" option from the configuration.yml file. Then, in this case, you only have to restart Apache:

    $ sudo installdir/ctlscript.sh restart apache
    

    If you are using a SMTP server that do not require authentication, it is possible that you should add the following option:

    openssl_verify_mode: 'none'
    

    You can also change the link that appears in the email. Go to Administration -> Settings -> General -> Host name and path and you can write your domain name and port.

    You can also find more info at the Redmine wiki page and Redmine blog.

    How to enable SSL?

    You can see how to configure Apache to enable SSL connections at How to enable SSL to access through https?

     

    win_platform.png On Windows: In addition to this, for Redmine it is necessary to add the "RequestHeader" option in the /installdir/apps/redmine/conf/httpd-prefix.conf file:

     

    <Proxy balancer://redminecluster
      RequestHeader set X_FORWARDED_PROTO 'https'
      BalancerMember http://127.0.0.1:3001/redmine
      BalancerMember http://127.0.0.1:3002/redmine
    </Proxy>
    

    How to see the Subversion repository from Redmine application or from web browser directly?

    Redmine application itself lets to check the Repository changes and link to the number case. You only have to configure the Repository URL from the project settings.

    SCM: Subversion
    URL: http://your_repository
    Login: repository_login
    Password: repository_password
    

    Redmine-svn.png

    If you do not have any repository yet, you can create it manually. This guide describes how you can create a Subversion repository in your machine.

    If you also want to see the repository directly from the web browser, you can configure Apache server to serve the repository. You can find the exact steps here.

    How to configure Redmine for advanced integration with Git

    This Redmine configuration makes it possible for users created in the Redmine application to also use the Git repository. For example, new users in the Redmine application will also be able to "push" changes to the Git project repository. This guide is based on the Felix Schäfer guide posted at the Redmine Wiki.

    Before starting this guide, take into account that these steps are not necessary if all you wish to do is track the repository changes in the Redmine application. If you only wish to track repository changes and link to issues, you only need to configure the project to point to your repository. To do this, go to the project dashboard, select the "Settings -> Repository" tab and add a new repository by specifying its URL and SCM.

     
    NOTE: This guide assumes that you are performing the steps below on a cloud server or virtual machine which uses /opt/bitnami as the location for the Bitnami stack and already has a bitnami user account. If you are performing these steps using a native installer, replace /opt/bitnami with the correct location of your Redmine stack directory and replace the bitnami and daemon user accounts with the account name that the stack was installed under.
     
    1. Create a Git repository. This guide will create a repository named test under the projects/ directory. This directory should have write privileges for the daemon user. Note the name of the repository as you will need to use the same name as the identifier for your Redmine project in a later step.
    $ cd /opt/bitnami
    $ sudo mkdir projects
    $ sudo mkdir projects/test
    $ cd projects/test
    $ sudo git init --bare
    $ cd ../../
    $ sudo chown -R bitnami:daemon projects
    $ sudo chmod -R g+rwX projects/test
    

    2. Download the Grack project from GitHub:

    $ cd /opt/bitnami/apache2/htdocs/
    $ git clone http://github.com/schacon/grack.git
    $ sudo chown bitnami:daemon grack
    
     
    Edit the grack/config.ru file to specify where is your Git project:
    $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/lib')
    use Rack::ShowExceptions
    require 'git_http'
    config = {
      :project_root => "/opt/bitnami/projects/",
      :adapter => Grack::GitAdapter,
      :git_path => '/opt/bitnami/git/bin/git',
      :upload_pack => true,
      :receive_pack => true,
    }
    run GitHttp::App.new(config)
     
    3. You can now test the basic behaviour. Start the Grack server and try to clone the repository and push the changes from a different machine. If you are using a local installer, use 127.0.0.1 as the host IP address. If not, use 0.0.0.0 (as shown below):
    $ cd /opt/bitnami/apache2/htdocs/grack
    $ rackup --host 0.0.0.0 -p 8080 config.ru &
    
     
    If all goes well, you should see a message that the Thin web server is running and listening for connections, as below:
    >> Thin web server (v1.5.1 codename Straight Razor)
    >> Maximum connections set to 1024
    >> Listening on 0.0.0.0:8080, CTRL+C to stop
    
     
    IMPORTANT: Also ensure that port 8080 is open in the firewall as otherwise, the next step will fail.
    4. Next, clone the repository, add your name and email address, and push changes from a different machine. Remember to replace the SERVER_IP_ADDRESS placeholder below with the actual IP address of your Redmine server, and the EMAIL_ADDRESS and NAME placeholders with your email address and real name.
    $ cd /tmp/
    $ git clone http://SERVER_IP_ADDRESS:8080/test
    $ cd test
    $ git config user.email "EMAIL_ADDRESS"
    $ git config user.name "NAME"
    $ echo "test" > test_file
    $ git add test_file
    $ git commit -m "test" test_file
    $ git push origin master
    
     
    If all goes well, you will see something like this:
    Counting objects: 3, done.
    Writing objects: 100% (3/3), 200 bytes, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To http://SERVER_IP_ADDRESS:8080/test
    * [new branch]      master -> master
    
     
    5. Stop the Grack server and configure Apache to use Passenger. First, create two directories in the grack/ folder and install necessary dependencies:
    $ mkdir /opt/bitnami/apache2/htdocs/grack/public
    $ mkdir /opt/bitnami/apache2/htdocs/grack/tmp
    $ cd /opt/bitnami/apache2/htdocs/grack/
    $ bundle install
    

    Edit the /opt/bitnami/apache2/conf/bitnami/bitnami.conf file and add the code to the end of the file, replacing YOUR_DOMAIN_NAME with your own domain name or the domain name of your cloud server/virtual machine:

    <VirtualHost *:80>
        ServerName git.YOUR_DOMAIN_NAME
        PassengerEnabled on
        PassengerAppRoot "/opt/bitnami/apache2/htdocs/grack/"   
        DocumentRoot "/opt/bitnami/apache2/htdocs/grack/public"
        <Directory "/opt/bitnami/apache2/htdocs/grack/public">
            Options None
            AllowOverride None
            <IfVersion < 2.3 >
            Order allow,deny
            Allow from all
            </IfVersion>
            <IfVersion >= 2.3>
            Require all granted
            </IfVersion>   
        </Directory> 
    </VirtualHost>
    
     
    Restart the Apache server as below:
    $ sudo /opt/bitnami/ctlscript.sh restart apache
    
     
    6. Next, clone the repository again, add your name and email address, and push changes from a different machine. Remember to replace the SERVER_IP_ADDRESS placeholder below with the actual IP address of your Redmine server, and the EMAIL_ADDRESS and NAME placeholders with your email address and real name.
    $ cd /tmp/
    $ rm -rf test/
    $ git clone http://git.YOUR_DOMAIN_NAME/test
    $ cd test
    $ git config user.email "EMAIL_ADDRESS"
    $ git config user.name "NAME"
    $ echo "test 2" > test_file_2
    $ git add test_file_2
    $ git commit -m "test 2" test_file_2
    $ git push origin master
    

    If all goes well, you will see something like this:

    Counting objects: 3, done.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (2/2), 234 bytes | 0 bytes/s, done.
    Total 2 (delta 0), reused 0 (delta 0)
    To http://git.YOUR_DOMAIN_NAME/test
       328f124..68d1bb4  master -> master
    
     
    7. The next step is to configure Git access control using the Redmine.pm module. Begin by copying the Redmine.pm file to the appropiate Perl folder:
    $ sudo cp /opt/bitnami/apps/redmine/htdocs/extra/svn/Redmine.pm /opt/bitnami/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi/Apache/
    $ sudo cp /opt/bitnami/apps/redmine/htdocs/extra/svn/Redmine.pm /opt/bitnami/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi/Apache2/
    
     
    8. Enable the module in the /opt/bitnami/apache2/conf/httpd.conf by adding the following line.
    LoadModule perl_module modules/mod_perl.so
    
     
    You will also need to add the following lines to the /opt/bitnami/apache2/bin/envvars file. Note that the libary path shown below (/opt/bitnami/perl/lib/5.16.3/x86_64-linux-thread-multi/CORE/) varies depending on the platform, so it's a good idea to verify that it exists or modify it as needed.
    LD_LIBRARY_PATH="/opt/bitnami/perl/lib/5.16.3/x86_64-linux-thread-multi/CORE/:$LD_LIBRARY_PATH"
    export LD_LIBRARY_PATH
    
     
    9. Finally, update the previously-created VirtualHost in the /opt/bitnami/apache2/conf/bitnami/bitnami.conf file as shown below. The REDMINE_DB_USERNAME and REDMINE_DB_PASSWORD credentials can be obtained from the /opt/bitnami/apps/redmine/htdocs/config/database.yml file, from the username and password fields for the production database:
     
    <VirtualHost *:80>
         ServerName git.YOUR_DOMAIN_NAME
         PassengerEnabled on
         PassengerAppRoot "/opt/bitnami/apache2/htdocs/grack/"  
         DocumentRoot "/opt/bitnami/apache2/htdocs/grack/public"
         <Directory "/opt/bitnami/apache2/htdocs/grack/public">
            Options None
            AllowOverride None
            <IfVersion < 2.3 >
            Order allow,deny
            Allow from all
            </IfVersion>
            <IfVersion >= 2.3>
            Require all granted
            </IfVersion>       
         </Directory>
        
         PerlLoadModule Apache::Redmine
        
         <Location "/">
           AuthType Basic
           AuthName "Redmine git repositories"
           Require valid-user
          
           PerlAccessHandler Apache::Authn::Redmine::access_handler
           PerlAuthenHandler Apache::Authn::Redmine::authen_handler
           RedmineDSN "DBI:mysql:database=bitnami_redmine;host=localhost;mysql_socket=/opt/bitnami/mysql/tmp/mysql.sock"
           RedmineDbUser "REDMINE_DB_USERNAME"
           RedmineDbPass "REDMINE_DB_PASSWORD"
           RedmineGitSmartHttp yes
         </Location>
    </VirtualHost>
    
     
    After making this change, restart the Apache server as below:
    $ sudo /opt/bitnami/ctlscript.sh restart apache
    
     
    10. Log in to Redmine and create a new project. It is important to note that the project identifier configured at this stage must match the repository name created in Step 1. In this example, the project identifier is test. Also ensure that the project is configured as private.

    project-1.png

    Note that the project must be configured to work as private for this configuration to work due to a Redmine bug. Click "Create" to save your changes and create the project.
     
    11. From the project dashboard in Redmine, click the "Settings -> Repositories" tab and then click the "New repository" link. Select the "SCM" as "Git" and specify the path to the repository. In this example, the path will be /opt/bitnami/projects/test. Click "Create" to save your changes.
     

    project-2.png

    12. From the project dashboard in Redmine, click the "Settings -> Members" tab and add one or more users to the project with role "Developer". Save your changes.

    project-3.png

     

    The users added to the repository should now be able to develop in the test repository using their Redmine application passwords. To test this, try cloning and pushing a change to the repository as one of the specified users as described in Step 6. If you are successful, you will also be able to see the changes in the Redmine project's repository view, as shown below:

    project-4.png

    How to configure Redmine for advanced integration with Subversion

    Before starting this guide, take into account that this is not necessary to see the repository changes in the Redmine application. If you only want to see the repository changes and link to the issues, it is only necessary to configure the project repository: Project -> Settings -> Repository -> URL and Control Version System.

    This Redmine configuration is for automatic repository creation and rights management. Since 1.1.3-1 version, Redmine Stack ships all required modules for this configuration. Notice that if you are using Virtual Appliances or AMIs the installdir variable is "/opt/bitnami". It could be necessary to use the "sudo" command if the Stack was installed by the root user.

    This guide has been updated to work with Redmine 2.1.4.

    • Make sure that the mod_dav module is enabled in your apache configuration (httpd.conf). This module should be loaded before the modules mentioned in the next step.
    LoadModule dav_module modules/mod_dav.so
    
    • Add the following lines in Apache configuration file (httpd.conf):
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule perl_module modules/mod_perl.so
    
    • You will also need to add the following lines to the /opt/bitami/apache2/bin/envvars file (the route may change depending on the version, please, check if it exists)
      LD_LIBRARY_PATH="/opt/bitnami/perl/lib/5.16.3/x86_64-linux-thread-multi/CORE/:$LD_LIBRARY_PATH"
      export LD_LIBRARY_PATH
      
    • Copy the Redmine.pm file into the Perl modules folder:
    $ cp /installdir/apps/redmine/htdocs/extra/svn/Redmine.pm installdir/perl/lib/site_perl/5.8.8/*/Apache2/
    
    • Create a folder for the repository, for instance:
    $ mkdir /installdir/repository
    $ mkdir /installdir/repository/svn
    $ chown root:daemon installdir/repository/ [or "your_user:your_user" if you installed the Stack without root privileges]
    $ chown root:daemon installdir/repository/svn/ [or "your_user:your_user" if you installed the Stack without root privileges]
    $ chmod 0755 /installdir/repository
    $ chmod 0750 /installdir/repository/svn
    
    • Add to the installdir/apps/redmine/conf/httpd-app.conf file.
    PerlLoadModule Apache2::Redmine
    <Location /svn>
      DAV svn
      SVNParentPath "/installdir/repository/svn" 
      Order deny,allow
      Deny from all
      Satisfy any
    
      PerlAccessHandler Apache::Authn::Redmine::access_handler
      PerlAuthenHandler Apache::Authn::Redmine::authen_handler
      AuthType Basic
      AuthName "Redmine SVN Repository" 
    
      #read-only access   
      <Limit GET PROPFIND OPTIONS REPORT>
         Require valid-user 
         Allow from all
         # Allow from another-ip
         Satisfy any
      </Limit>
      # write access
      <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
      </LimitExcept>
    
      ## for mysql
      RedmineDSN "DBI:mysql:database=bitnami_redmine;host=localhost;mysql_socket=/installdir/mysql/tmp/mysql.sock" 
    
      RedmineDbUser "bitnami" 
      RedmineDbPass "bitnami_database_password"    
      #You can find this value at /installdir/apps/redmine/htdocs/config/database.yml
    </Location>
    
    • Restart the servers:
    $ /installdir/ctlscript.sh restart
    
    • Log in the Redmine application as Administrator and go to "Settings" -> "Repositories" -> "Enable WS for repository management".
    • Click on "Generate a key" and save it.
    • Add the following line in the crontab. You can edit the crontab using the command "crontab -e"
    */2 * * * * /installdir/ruby/bin/ruby /installdir/apps/redmine/htdocs/extra/svn/reposman.rb --redmine localhost:YOUR_APACHE_PORT/redmine --svn-dir /installdir/repository/svn --owner root --group daemon --command="/installdir/subversion/bin/svnadmin create --pre-1.6-compatible --fs-type fsfs" --url http://YOUR_PUBLIC_IP_ADDRESS:YOUR_APACHE_PORT/svn --key="YOUR_API_KEY" --verbose >> /var/log/reposman.log 
    
    • If you have configured Redmine to accress through SSL, you can specify "--redmine http://127.0.0.1:3001/redmine" in the previous crontab line.
    • You can check that everything works properly creating a project from the Redmine application and checking the /var/log/reposman.log file.

    Thanks to "Jedbifa" who posted a complete guide in the Bitnami forums.

    How to use Mercurial with Redmine

    Redmine only allows you to use Mercurial Repositories cloned in your local machine, as explained in their official guide http://www.redmine.org/projects/redmine/wiki/RedmineRepositories#Mercurial-repository

    The paths used below are the ones you have to use in Virtual Machines and Cloud Images. Check if your Redmine Stack is installed in a different path.

    Step 1: Install the mercurial package

    sudo apt-get install mercurial
    

    Step 2: Create the repository directory and clone it there and give it the proper permissions

    sudo mkdir /opt/bitnami/mercurialRepo
    cd /opt/bitnami/mercurialRepo
    sudo hg clone YOUR_REPO_URL
    sudo chown -R root:daemon /opt/bitnami/mercurialRepo
    

    Step 3: Add your repository to Redmine

    In your project, go to Settings>Repositories>New repository

    SCM: Mercurial
    Identifier: Whatever
    Path to repository: /opt/bitnami/mercurialRepo/repoName
    

    Push now on create

    Step 4: Check repository

    If you go now to Repository, you will find there the files, commits done with comments, etc.

    How to debug errors?

    The Redmine log files are created in /installdir/apps/redmine/htdocs/log directory. You can check these files to see the exact error in the application.

    How to install Redmine People plugin?

    Before installing the Redmine People plugin ((http://www.redminecrm.com/projects/people/pages/1), please, follow this steps to create a backup. Once your backup is done, follow this steps:

    • If you are using Bitnami Cloud Hosting, our AMIs or our VMs, skip this step. If you are using our Native Installers, run this command:
    cd /installdir/ ; ./use_redmine
    • Go to the Redmine plugins directory:
    cd /opt/bitnami/apps/redmine/htdocs/plugins
    • Download the latest People version. Copy the link from the "Free Download" button and use this command:
    wget PASTE_THE_LINK
    • Unzip the plugin:
    unzip redmine_people*
    • Install the needed gems:
    bundle install --without development test --no-deployment
    • Install the plugin
    bundle exec rake redmine:plugins NAME=redmine_people RAILS_ENV=production
    • Restart Redmine
    /opt/bitnami/ctlscript.sh restart
    • Sign in to your Redmine installation and go to "Administration -> Plugins -> Redmine People plugin" and setup plugin global settings.

    How to configure fail2ban to work with Redmine?

    If you want to limit the number of attemps that the users could try to log in to Redmine (and avoid brute-force attacks), you could try to install fail2ban and configure it to work with Bitnami Redmine.
     
    To do it, first of all we need to install fail2ban:
    sudo apt-get update
    sudo apt-get install fail2ban
     
    Once it has been installed, we must modify /opt/bitnami/apps/redmine/htdocs/config/environment.rb to allow the Redmine Logger add timestamps to the production.log file . To do it, we must add the following lines:
    class Logger
      def format_message(severity, timestamp, progname, msg)
        "#{timestamp} (#{$$}) #{msg}\n"
      end
    end

    After modify environment.rb, we must restart the Apache server:

    sudo /opt/bitnami/ctlscript.sh restart apache
    
     
    Now, we must configure fail2ban properly. To do so, please follow the steps below:
    • Create the /etc/fail2ban/filter.d/redmine.conf and add the following code:
    [Definition]
    
    failregex = Failed [-/\w]+ for .* from <HOST>
    ignoreregex =
    • Create /etc/fail2ban/jail.local and add the code below:
    [redmine]
    enabled = true
    filter = redmine
    port = http,https
    logpath = /opt/bitnami/apps/redmine/htdocs/log/production.log
    maxretry = 5
    findtime = 600
    bantime = 600

    This fail2ban configuration will ban the IP of any user that tried to access five (maxretry) different times during the last 10 minutes (findtime) without success. Note that the ban only will affect to the ports 80 and 443, and the user with the banned IP will not be able to contact the web server during 10 minutes (bantime)

    Before apply the configuration (restart the fail2ban server), we must test if the regex configuration is properly configured. To do it, go to your Bitnami Redmine login page, write an unexistand user/password credentials and try to login to get a login error.

    Just after do it, run this command:

    fail2ban-regex /opt/bitnami/apps/redmine/htdocs/log/production.log /etc/fail2ban/filter.d/redmine.conf 

    If the last two lines of the output show you at least 1 matched it means that the regex is properly configured:

    Lines: 412 lines, 0 ignored, 1 matched, 397 missed
    Missed line(s):: too many to print.  Use --print-all-missed to print all 397 lines

    Finally, you can apply the configuration:

    sudo /etc/init.d/fail2ban restart

    To be sure that all is working, you could try to login five different times with unexistand credentials. At the 5th unsuccessfull attempt, you will be banned during 10 minutes.

    Tag page (Edit tags)
    • No tags
    Pages that link here
    Page statistics
    799055 view(s), 200 edit(s) and 57698 character(s)

    Comments

    You must login to post a comment.