It is important to keep your Indico instance up to date to have the latest bug fixes and features. Upgrading can be done with almost no user-facing downtime.
When upgrading a production system it is highly recommended to create a database backup before starting.
Upgrading between 3.x versions¶
First of all, stop the Celery worker. To do so, run this as root:
systemctl stop indico-celery.service
Now switch to the indico user and activate the virtualenv:
su - indico source ~/.venv/bin/activate
If you are on CentOS, update your PATH to avoid errors in case the new Indico version needs to install an updated version of the PostgreSQL client library (psycopg2):
You are now ready to install the latest version of Indico:
pip install -U indico
If you installed the official plugins, update them too:
pip install -U indico-plugins
It is a good idea to ensure you are using the latest recommended Python version:
indico setup upgrade-python
Some versions may include database schema upgrades. Make sure to perform them immediately after upgrading. If there are no schema changes, the command will simply do nothing.
indico db upgrade indico db --all-plugins upgrade
Some database structure changes require an exclusive lock on
some tables in the database. Unless you have very high activity
on your instance, this lock can be acquired quickly, but if the
upgrade command seems to hang for more than a few seconds, you can
restart uWSGI by running
systemctl restart uwsgi.service as
root (in a separate shell, i.e. don’t abort the upgrade command!)
which will ensure nothing is accessing Indico for a moment.
Unless you just restarted uWSGI, it is now time to reload it so the new version is actually used:
Also start the Celery worker again (once again, as root):
systemctl start indico-celery.service
Upgrading from 2.x to 3.x¶
The upgrade from 2.x to 3.x is a major change since Indico now requires Python 3. We also strongly recommend upgrading your database to PostgreSQL 13 or newer.
As of Indico 3.2, the upgrade will fail on Postgres 10 and older.
If you are using any custom plugins they will most likely no longer work and need to be updated. Contact the developers of these plugins to see whether they already have a version compatible with Python 3 and Indico 3.
Due to the significant changes in the environment, we recommend using a freshly installed server/VM with the latest long-term-supported version of your preferred Linux distribution.
If you are using CentOS, staying with CentOS 7 is recommended as CentOS 8 actually has a much earlier end-of-life date (end of 2021) than CentOS 7 (mid 2024), and running Indico with Apache on CentOS 8 is currently not supported.
When following the production installation guide, there are a few places where you need to do something differently:
Instead of running
indico db prepare, restore a dump of your old Postgres database
You still need to run
indico setup wizardto create some of the directories, but compare the generated config file with your old one and update any settings you may have changed manually (e.g. for LDAP or SSO authentication)
You need to perform the database structure upgrades just like during any other Indico upgrade:
indico db upgradeand
indico db --all-plugins upgrade
Copy the contents of the
/opt/indico/archivefolder from your old instance and ensure owner, group and permissions are correct. This step is critical as this folder contains all the files uploaded to Indico
If you need any help with the upgrade or encounter any issues, please open a thread in our forum.
Upgrading from 2.x to 3.x in-place¶
If you are not experienced with Linux system administration, we highly recommend you to either ask someone from your IT department for assistance and/or follow our recommendation of using a new server/VM to install Indico v3.
In case you prefer to perform the upgrade in place on your existing server, you will need to compare the installation guides of 2.3 and 3.x and apply the differences manually. This should be fairly easy for someone with Linux system administration experience, but here are some important points:
Create a backup of both your Postgres database and
Stop, disable and and uninstall uWSGI and delete the old config file. To support the latest Python version uWSGI is now installed into the Indico virtual environment using
~/.venvfolder of the Indico user and recreate it using the commands from the setup guide
Make sure to update your webserver config to use the more modern TLS defaults