<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.ulyssis.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Milanmeu</id>
	<title>ULYSSIS documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.ulyssis.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Milanmeu"/>
	<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/Special:Contributions/Milanmeu"/>
	<updated>2026-04-17T19:52:11Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.15</generator>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1879</id>
		<title>Setting up Indico</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1879"/>
		<updated>2025-11-04T14:01:53Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Install Indico */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev&lt;br /&gt;
&lt;br /&gt;
apt install -y libjpeg-turbo8-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Create the indico database =&lt;br /&gt;
&lt;br /&gt;
To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL user on UCC. If you already have a PostgreSQL user, you can skip this step. More info on:[[Using_PostgreSQL#Creating_a_PostgreSQL_user]].&lt;br /&gt;
&lt;br /&gt;
Now you can create the &amp;lt;code&amp;gt;username_indico&amp;lt;/code&amp;gt; database: [[Using_PostgreSQL#Creating_a_PostgreSQL_database]].&lt;br /&gt;
&lt;br /&gt;
Contact us at ulyssis@ulyssis.org and let us know you would like to get the &amp;lt;code&amp;gt;unaccent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pg_trgm&amp;lt;/code&amp;gt; extensions enabled for your database.&lt;br /&gt;
&lt;br /&gt;
= Configure the Apache webserver using .htaccess =&lt;br /&gt;
&lt;br /&gt;
Create a folder for your installation:&lt;br /&gt;
 mkdir ~/indico&lt;br /&gt;
&lt;br /&gt;
Replace ``YOURHOSTNAME`` in the next files with the hostname on which your Indico instance should be available, e.g. ``indico.yourdomain.com``&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; ~/indico/.htaccess &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]&lt;br /&gt;
 RewriteCond %{HTTP_HOST} !^YOURHOSTNAME$ [NC]&lt;br /&gt;
 RewriteRule ^ https://YOURHOSTNAME%{REQUEST_URI} [R=301,L]&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
= Create a TLS Certificate =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Install Indico =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Celery runs as a background daemon. Add a systemd unit file for it:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now create a user that will be used to run Indico and switch to it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    useradd -rm -g www-data -d /opt/indico -s /bin/bash indico&lt;br /&gt;
    su - indico&lt;br /&gt;
&lt;br /&gt;
The first thing to do is installing pyenv - we use it to install the latest Python version&lt;br /&gt;
as not all Linux distributions include it and like this Indico can benefit from the latest&lt;br /&gt;
Python features.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
 export PYENV_ROOT=&amp;quot;$HOME/.pyenv&amp;quot;&lt;br /&gt;
 export PATH=&amp;quot;$PYENV_ROOT/bin:$PATH&amp;quot;&lt;br /&gt;
 eval &amp;quot;$(pyenv init - bash)&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
You are now ready to install Indico:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    python -m venv --upgrade-deps --prompt indico ~/indico/.venv&lt;br /&gt;
    source ~/indico/.venv/bin/activate&lt;br /&gt;
    pip install setuptools wheel&lt;br /&gt;
    pip install indico&lt;br /&gt;
&lt;br /&gt;
6. Configure Indico&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Once Indico is installed, you can run the configuration wizard.  You can&lt;br /&gt;
keep the defaults for most options, but make sure to use ``https://YOURHOSTNAME``&lt;br /&gt;
when prompted for the Indico URL. Also specify valid email addresses when asked&lt;br /&gt;
and enter a valid SMTP server Indico can use to send emails.  When asked for the&lt;br /&gt;
default timezone make sure this is the main time zone used in your Indico instance.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico setup wizard&lt;br /&gt;
&lt;br /&gt;
 Indico root path: ~/indico &lt;br /&gt;
 Indico URL: https://indico.username.studentenweb.org                                                                                  &lt;br /&gt;
 PostgreSQL database URI: postgresql://username:password@pgsql.ulyssis.org/username_indico&lt;br /&gt;
 Redis URI (celery): redis://redis.ulyssis.org:6379/0                                                                                  &lt;br /&gt;
&lt;br /&gt;
Now finish setting up the directory structure and permissions:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    mkdir ~/log/apache&lt;br /&gt;
    chmod go-rwx ~/* ~/.[^.]*&lt;br /&gt;
    chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp&lt;br /&gt;
    chmod 750 ~/web ~/.venv&lt;br /&gt;
    chmod g+w ~/log/apache&lt;br /&gt;
    echo -e &amp;quot;\nSTATIC_FILE_METHOD = 'xsendfile'&amp;quot; &amp;gt;&amp;gt; ~/etc/indico.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Create database schema&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Finally, you can create the database schema and switch back to *root*:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico db prepare&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Launch Indico&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
You can now start Indico and set it up to start automatically when the&lt;br /&gt;
server is rebooted:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    systemctl restart apache2.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
    systemctl enable apache2.service postgresql.service redis-server.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Get a Certificate from Let's Encrypt&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[Getting_SSL/TLS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Create an Indico user&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Access ``https://YOURHOSTNAME`` in your browser and follow the steps&lt;br /&gt;
displayed there to create your initial user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Install TeXLive&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Follow the :ref:`PDF generation guide &amp;lt;pdf_generation&amp;gt;` to setup PDF document&lt;br /&gt;
generation in Indico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _deb-apache-shib:&lt;br /&gt;
&lt;br /&gt;
Optional: Shibboleth&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
If your organization uses Shibboleth/SAML-based SSO, follow these steps to use&lt;br /&gt;
it in Indico:&lt;br /&gt;
&lt;br /&gt;
1. Install Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    apt install -y libapache2-mod-shib&lt;br /&gt;
    a2enmod shib&lt;br /&gt;
&lt;br /&gt;
2. Configure Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
This is outside the scope of this documentation and depends on your&lt;br /&gt;
environment (Shibboleth, SAML, ADFS, etc).  Please contact whoever&lt;br /&gt;
runs your SSO infrastructure if you need assistance.&lt;br /&gt;
&lt;br /&gt;
3. Enable Shibboleth in Apache&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
Add the following code to your ``/etc/apache2/sites-available/indico.conf``&lt;br /&gt;
right before the ``AliasMatch`` lines:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: apache&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LocationMatch &amp;quot;^(/Shibboleth\.sso|/login/shib-sso/shibboleth)&amp;quot;&amp;gt;&lt;br /&gt;
        AuthType shibboleth&lt;br /&gt;
        ShibRequestSetting requireSession 1&lt;br /&gt;
        ShibExportAssertion Off&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/LocationMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Enable Shibboleth in Indico&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. include:: ../_sso_indico.rst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _PostgreSQL wiki: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository&lt;br /&gt;
.. _Let's Encrypt: https://letsencrypt.org/&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1878</id>
		<title>Setting up Indico</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1878"/>
		<updated>2025-10-28T16:10:21Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Install Indico */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev&lt;br /&gt;
&lt;br /&gt;
apt install -y libjpeg-turbo8-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Create the indico database =&lt;br /&gt;
&lt;br /&gt;
To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL user on UCC. If you already have a PostgreSQL user, you can skip this step. More info on:[[Using_PostgreSQL#Creating_a_PostgreSQL_user]].&lt;br /&gt;
&lt;br /&gt;
Now you can create the &amp;lt;code&amp;gt;username_indico&amp;lt;/code&amp;gt; database: [[Using_PostgreSQL#Creating_a_PostgreSQL_database]].&lt;br /&gt;
&lt;br /&gt;
Contact us at ulyssis@ulyssis.org and let us know you would like to get the &amp;lt;code&amp;gt;unaccent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pg_trgm&amp;lt;/code&amp;gt; extensions enabled for your database.&lt;br /&gt;
&lt;br /&gt;
= Configure the Apache webserver using .htaccess =&lt;br /&gt;
&lt;br /&gt;
Create a folder for your installation:&lt;br /&gt;
 mkdir ~/indico&lt;br /&gt;
&lt;br /&gt;
Replace ``YOURHOSTNAME`` in the next files with the hostname on which your Indico instance should be available, e.g. ``indico.yourdomain.com``&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; ~/indico/.htaccess &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]&lt;br /&gt;
 RewriteCond %{HTTP_HOST} !^YOURHOSTNAME$ [NC]&lt;br /&gt;
 RewriteRule ^ https://YOURHOSTNAME%{REQUEST_URI} [R=301,L]&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
= Create a TLS Certificate =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Install Indico =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Celery runs as a background daemon. Add a systemd unit file for it:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now create a user that will be used to run Indico and switch to it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    useradd -rm -g www-data -d /opt/indico -s /bin/bash indico&lt;br /&gt;
    su - indico&lt;br /&gt;
&lt;br /&gt;
The first thing to do is installing pyenv - we use it to install the latest Python version&lt;br /&gt;
as not all Linux distributions include it and like this Indico can benefit from the latest&lt;br /&gt;
Python features.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
 export PYENV_ROOT=&amp;quot;$HOME/.pyenv&amp;quot;&lt;br /&gt;
 export PATH=&amp;quot;$PYENV_ROOT/bin:$PATH&amp;quot;&lt;br /&gt;
 eval &amp;quot;$(pyenv init - bash)&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
 source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
You are now ready to install Indico:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    python -m venv --upgrade-deps --prompt indico ~/indico/.venv&lt;br /&gt;
    source ~/indico/.venv/bin/activate&lt;br /&gt;
    pip install setuptools wheel&lt;br /&gt;
    pip install indico&lt;br /&gt;
&lt;br /&gt;
6. Configure Indico&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Once Indico is installed, you can run the configuration wizard.  You can&lt;br /&gt;
keep the defaults for most options, but make sure to use ``https://YOURHOSTNAME``&lt;br /&gt;
when prompted for the Indico URL. Also specify valid email addresses when asked&lt;br /&gt;
and enter a valid SMTP server Indico can use to send emails.  When asked for the&lt;br /&gt;
default timezone make sure this is the main time zone used in your Indico instance.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico setup wizard&lt;br /&gt;
&lt;br /&gt;
 Indico root path: ~/indico &lt;br /&gt;
 Indico URL: https://indico.username.studentenweb.org                                                                                  &lt;br /&gt;
 PostgreSQL database URI: postgresql://username:password@pgsql.ulyssis.org/username_indico&lt;br /&gt;
 Redis URI (celery): redis://username:password@redis.ulyssis.org:6379/0                                                                                  &lt;br /&gt;
&lt;br /&gt;
Now finish setting up the directory structure and permissions:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    mkdir ~/log/apache&lt;br /&gt;
    chmod go-rwx ~/* ~/.[^.]*&lt;br /&gt;
    chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp&lt;br /&gt;
    chmod 750 ~/web ~/.venv&lt;br /&gt;
    chmod g+w ~/log/apache&lt;br /&gt;
    echo -e &amp;quot;\nSTATIC_FILE_METHOD = 'xsendfile'&amp;quot; &amp;gt;&amp;gt; ~/etc/indico.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Create database schema&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Finally, you can create the database schema and switch back to *root*:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico db prepare&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Launch Indico&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
You can now start Indico and set it up to start automatically when the&lt;br /&gt;
server is rebooted:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    systemctl restart apache2.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
    systemctl enable apache2.service postgresql.service redis-server.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Get a Certificate from Let's Encrypt&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[Getting_SSL/TLS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Create an Indico user&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Access ``https://YOURHOSTNAME`` in your browser and follow the steps&lt;br /&gt;
displayed there to create your initial user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Install TeXLive&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Follow the :ref:`PDF generation guide &amp;lt;pdf_generation&amp;gt;` to setup PDF document&lt;br /&gt;
generation in Indico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _deb-apache-shib:&lt;br /&gt;
&lt;br /&gt;
Optional: Shibboleth&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
If your organization uses Shibboleth/SAML-based SSO, follow these steps to use&lt;br /&gt;
it in Indico:&lt;br /&gt;
&lt;br /&gt;
1. Install Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    apt install -y libapache2-mod-shib&lt;br /&gt;
    a2enmod shib&lt;br /&gt;
&lt;br /&gt;
2. Configure Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
This is outside the scope of this documentation and depends on your&lt;br /&gt;
environment (Shibboleth, SAML, ADFS, etc).  Please contact whoever&lt;br /&gt;
runs your SSO infrastructure if you need assistance.&lt;br /&gt;
&lt;br /&gt;
3. Enable Shibboleth in Apache&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
Add the following code to your ``/etc/apache2/sites-available/indico.conf``&lt;br /&gt;
right before the ``AliasMatch`` lines:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: apache&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LocationMatch &amp;quot;^(/Shibboleth\.sso|/login/shib-sso/shibboleth)&amp;quot;&amp;gt;&lt;br /&gt;
        AuthType shibboleth&lt;br /&gt;
        ShibRequestSetting requireSession 1&lt;br /&gt;
        ShibExportAssertion Off&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/LocationMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Enable Shibboleth in Indico&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. include:: ../_sso_indico.rst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _PostgreSQL wiki: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository&lt;br /&gt;
.. _Let's Encrypt: https://letsencrypt.org/&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1877</id>
		<title>Setting up Indico</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1877"/>
		<updated>2025-10-28T14:58:12Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Configure the Apache webserver using .htaccess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev&lt;br /&gt;
&lt;br /&gt;
apt install -y libjpeg-turbo8-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Create the indico database =&lt;br /&gt;
&lt;br /&gt;
To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL user on UCC. If you already have a PostgreSQL user, you can skip this step. More info on:[[Using_PostgreSQL#Creating_a_PostgreSQL_user]].&lt;br /&gt;
&lt;br /&gt;
Now you can create the &amp;lt;code&amp;gt;username_indico&amp;lt;/code&amp;gt; database: [[Using_PostgreSQL#Creating_a_PostgreSQL_database]].&lt;br /&gt;
&lt;br /&gt;
Contact us at ulyssis@ulyssis.org and let us know you would like to get the &amp;lt;code&amp;gt;unaccent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pg_trgm&amp;lt;/code&amp;gt; extensions enabled for your database.&lt;br /&gt;
&lt;br /&gt;
= Configure the Apache webserver using .htaccess =&lt;br /&gt;
&lt;br /&gt;
Create a folder for your installation:&lt;br /&gt;
 mkdir ~/indico&lt;br /&gt;
&lt;br /&gt;
Replace ``YOURHOSTNAME`` in the next files with the hostname on which your Indico instance should be available, e.g. ``indico.yourdomain.com``&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; ~/indico/.htaccess &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteCond %{HTTPS} off&lt;br /&gt;
 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]&lt;br /&gt;
 RewriteCond %{HTTP_HOST} !^YOURHOSTNAME$ [NC]&lt;br /&gt;
 RewriteRule ^ https://YOURHOSTNAME%{REQUEST_URI} [R=301,L]&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
= Create a TLS Certificate =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Install Indico =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Celery runs as a background daemon. Add a systemd unit file for it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt; /etc/systemd/system/indico-celery.service &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    [Unit]&lt;br /&gt;
    Description=Indico Celery&lt;br /&gt;
    After=network.target&lt;br /&gt;
&lt;br /&gt;
    [Service]&lt;br /&gt;
    ExecStart=/opt/indico/.venv/bin/indico celery worker -B&lt;br /&gt;
    Restart=always&lt;br /&gt;
    SyslogIdentifier=indico-celery&lt;br /&gt;
    User=indico&lt;br /&gt;
    Group=www-data&lt;br /&gt;
    UMask=0027&lt;br /&gt;
    Type=simple&lt;br /&gt;
    KillMode=mixed&lt;br /&gt;
    TimeoutStopSec=300&lt;br /&gt;
&lt;br /&gt;
    [Install]&lt;br /&gt;
    WantedBy=multi-user.target&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now create a user that will be used to run Indico and switch to it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    useradd -rm -g www-data -d /opt/indico -s /bin/bash indico&lt;br /&gt;
    su - indico&lt;br /&gt;
&lt;br /&gt;
The first thing to do is installing pyenv - we use it to install the latest Python version&lt;br /&gt;
as not all Linux distributions include it and like this Indico can benefit from the latest&lt;br /&gt;
Python features.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    export PATH=&amp;quot;/opt/indico/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init --path)&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init -)&amp;quot;&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
You are now ready to install Indico:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    python -m venv --upgrade-deps --prompt indico ~/.venv&lt;br /&gt;
    source ~/.venv/bin/activate&lt;br /&gt;
    echo 'source ~/.venv/bin/activate' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    pip install setuptools wheel&lt;br /&gt;
    pip install uwsgi&lt;br /&gt;
    pip install indico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Configure Indico&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Once Indico is installed, you can run the configuration wizard.  You can&lt;br /&gt;
keep the defaults for most options, but make sure to use ``https://YOURHOSTNAME``&lt;br /&gt;
when prompted for the Indico URL. Also specify valid email addresses when asked&lt;br /&gt;
and enter a valid SMTP server Indico can use to send emails.  When asked for the&lt;br /&gt;
default timezone make sure this is the main time zone used in your Indico instance.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico setup wizard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now finish setting up the directory structure and permissions:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    mkdir ~/log/apache&lt;br /&gt;
    chmod go-rwx ~/* ~/.[^.]*&lt;br /&gt;
    chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp&lt;br /&gt;
    chmod 750 ~/web ~/.venv&lt;br /&gt;
    chmod g+w ~/log/apache&lt;br /&gt;
    echo -e &amp;quot;\nSTATIC_FILE_METHOD = 'xsendfile'&amp;quot; &amp;gt;&amp;gt; ~/etc/indico.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Create database schema&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Finally, you can create the database schema and switch back to *root*:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico db prepare&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Launch Indico&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
You can now start Indico and set it up to start automatically when the&lt;br /&gt;
server is rebooted:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    systemctl restart apache2.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
    systemctl enable apache2.service postgresql.service redis-server.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Get a Certificate from Let's Encrypt&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[Getting_SSL/TLS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Create an Indico user&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Access ``https://YOURHOSTNAME`` in your browser and follow the steps&lt;br /&gt;
displayed there to create your initial user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Install TeXLive&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Follow the :ref:`PDF generation guide &amp;lt;pdf_generation&amp;gt;` to setup PDF document&lt;br /&gt;
generation in Indico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _deb-apache-shib:&lt;br /&gt;
&lt;br /&gt;
Optional: Shibboleth&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
If your organization uses Shibboleth/SAML-based SSO, follow these steps to use&lt;br /&gt;
it in Indico:&lt;br /&gt;
&lt;br /&gt;
1. Install Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    apt install -y libapache2-mod-shib&lt;br /&gt;
    a2enmod shib&lt;br /&gt;
&lt;br /&gt;
2. Configure Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
This is outside the scope of this documentation and depends on your&lt;br /&gt;
environment (Shibboleth, SAML, ADFS, etc).  Please contact whoever&lt;br /&gt;
runs your SSO infrastructure if you need assistance.&lt;br /&gt;
&lt;br /&gt;
3. Enable Shibboleth in Apache&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
Add the following code to your ``/etc/apache2/sites-available/indico.conf``&lt;br /&gt;
right before the ``AliasMatch`` lines:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: apache&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LocationMatch &amp;quot;^(/Shibboleth\.sso|/login/shib-sso/shibboleth)&amp;quot;&amp;gt;&lt;br /&gt;
        AuthType shibboleth&lt;br /&gt;
        ShibRequestSetting requireSession 1&lt;br /&gt;
        ShibExportAssertion Off&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/LocationMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Enable Shibboleth in Indico&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. include:: ../_sso_indico.rst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _PostgreSQL wiki: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository&lt;br /&gt;
.. _Let's Encrypt: https://letsencrypt.org/&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1876</id>
		<title>Setting up Indico</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1876"/>
		<updated>2025-10-28T14:57:18Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Configure the Apache webserver using .htaccess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev&lt;br /&gt;
&lt;br /&gt;
apt install -y libjpeg-turbo8-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Create the indico database =&lt;br /&gt;
&lt;br /&gt;
To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL user on UCC. If you already have a PostgreSQL user, you can skip this step. More info on:[[Using_PostgreSQL#Creating_a_PostgreSQL_user]].&lt;br /&gt;
&lt;br /&gt;
Now you can create the &amp;lt;code&amp;gt;username_indico&amp;lt;/code&amp;gt; database: [[Using_PostgreSQL#Creating_a_PostgreSQL_database]].&lt;br /&gt;
&lt;br /&gt;
Contact us at ulyssis@ulyssis.org and let us know you would like to get the &amp;lt;code&amp;gt;unaccent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pg_trgm&amp;lt;/code&amp;gt; extensions enabled for your database.&lt;br /&gt;
&lt;br /&gt;
= Configure the Apache webserver using .htaccess =&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/indico&lt;br /&gt;
&lt;br /&gt;
Replace ``YOURHOSTNAME`` in the next files with the hostname on which your Indico instance should be available, e.g. ``indico.yourdomain.com``&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cat &amp;gt; ~/indico/.htaccess &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{HTTPS} off&lt;br /&gt;
&lt;br /&gt;
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^YOURHOSTNAME$ [NC]&lt;br /&gt;
&lt;br /&gt;
RewriteRule ^ https://YOURHOSTNAME%{REQUEST_URI} [R=301,L]&lt;br /&gt;
&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Create a TLS Certificate =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Install Indico =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Celery runs as a background daemon. Add a systemd unit file for it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt; /etc/systemd/system/indico-celery.service &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    [Unit]&lt;br /&gt;
    Description=Indico Celery&lt;br /&gt;
    After=network.target&lt;br /&gt;
&lt;br /&gt;
    [Service]&lt;br /&gt;
    ExecStart=/opt/indico/.venv/bin/indico celery worker -B&lt;br /&gt;
    Restart=always&lt;br /&gt;
    SyslogIdentifier=indico-celery&lt;br /&gt;
    User=indico&lt;br /&gt;
    Group=www-data&lt;br /&gt;
    UMask=0027&lt;br /&gt;
    Type=simple&lt;br /&gt;
    KillMode=mixed&lt;br /&gt;
    TimeoutStopSec=300&lt;br /&gt;
&lt;br /&gt;
    [Install]&lt;br /&gt;
    WantedBy=multi-user.target&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now create a user that will be used to run Indico and switch to it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    useradd -rm -g www-data -d /opt/indico -s /bin/bash indico&lt;br /&gt;
    su - indico&lt;br /&gt;
&lt;br /&gt;
The first thing to do is installing pyenv - we use it to install the latest Python version&lt;br /&gt;
as not all Linux distributions include it and like this Indico can benefit from the latest&lt;br /&gt;
Python features.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    export PATH=&amp;quot;/opt/indico/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init --path)&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init -)&amp;quot;&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
You are now ready to install Indico:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    python -m venv --upgrade-deps --prompt indico ~/.venv&lt;br /&gt;
    source ~/.venv/bin/activate&lt;br /&gt;
    echo 'source ~/.venv/bin/activate' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    pip install setuptools wheel&lt;br /&gt;
    pip install uwsgi&lt;br /&gt;
    pip install indico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Configure Indico&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Once Indico is installed, you can run the configuration wizard.  You can&lt;br /&gt;
keep the defaults for most options, but make sure to use ``https://YOURHOSTNAME``&lt;br /&gt;
when prompted for the Indico URL. Also specify valid email addresses when asked&lt;br /&gt;
and enter a valid SMTP server Indico can use to send emails.  When asked for the&lt;br /&gt;
default timezone make sure this is the main time zone used in your Indico instance.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico setup wizard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now finish setting up the directory structure and permissions:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    mkdir ~/log/apache&lt;br /&gt;
    chmod go-rwx ~/* ~/.[^.]*&lt;br /&gt;
    chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp&lt;br /&gt;
    chmod 750 ~/web ~/.venv&lt;br /&gt;
    chmod g+w ~/log/apache&lt;br /&gt;
    echo -e &amp;quot;\nSTATIC_FILE_METHOD = 'xsendfile'&amp;quot; &amp;gt;&amp;gt; ~/etc/indico.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Create database schema&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Finally, you can create the database schema and switch back to *root*:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico db prepare&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Launch Indico&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
You can now start Indico and set it up to start automatically when the&lt;br /&gt;
server is rebooted:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    systemctl restart apache2.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
    systemctl enable apache2.service postgresql.service redis-server.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Get a Certificate from Let's Encrypt&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[Getting_SSL/TLS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Create an Indico user&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Access ``https://YOURHOSTNAME`` in your browser and follow the steps&lt;br /&gt;
displayed there to create your initial user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Install TeXLive&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Follow the :ref:`PDF generation guide &amp;lt;pdf_generation&amp;gt;` to setup PDF document&lt;br /&gt;
generation in Indico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _deb-apache-shib:&lt;br /&gt;
&lt;br /&gt;
Optional: Shibboleth&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
If your organization uses Shibboleth/SAML-based SSO, follow these steps to use&lt;br /&gt;
it in Indico:&lt;br /&gt;
&lt;br /&gt;
1. Install Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    apt install -y libapache2-mod-shib&lt;br /&gt;
    a2enmod shib&lt;br /&gt;
&lt;br /&gt;
2. Configure Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
This is outside the scope of this documentation and depends on your&lt;br /&gt;
environment (Shibboleth, SAML, ADFS, etc).  Please contact whoever&lt;br /&gt;
runs your SSO infrastructure if you need assistance.&lt;br /&gt;
&lt;br /&gt;
3. Enable Shibboleth in Apache&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
Add the following code to your ``/etc/apache2/sites-available/indico.conf``&lt;br /&gt;
right before the ``AliasMatch`` lines:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: apache&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LocationMatch &amp;quot;^(/Shibboleth\.sso|/login/shib-sso/shibboleth)&amp;quot;&amp;gt;&lt;br /&gt;
        AuthType shibboleth&lt;br /&gt;
        ShibRequestSetting requireSession 1&lt;br /&gt;
        ShibExportAssertion Off&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/LocationMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Enable Shibboleth in Indico&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. include:: ../_sso_indico.rst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _PostgreSQL wiki: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository&lt;br /&gt;
.. _Let's Encrypt: https://letsencrypt.org/&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1875</id>
		<title>Setting up Indico</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1875"/>
		<updated>2025-10-28T14:14:58Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Configure the Apache webserver using .htaccess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev&lt;br /&gt;
&lt;br /&gt;
apt install -y libjpeg-turbo8-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Create the indico database =&lt;br /&gt;
&lt;br /&gt;
To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL user on UCC. If you already have a PostgreSQL user, you can skip this step. More info on:[[Using_PostgreSQL#Creating_a_PostgreSQL_user]].&lt;br /&gt;
&lt;br /&gt;
Now you can create the &amp;lt;code&amp;gt;username_indico&amp;lt;/code&amp;gt; database: [[Using_PostgreSQL#Creating_a_PostgreSQL_database]].&lt;br /&gt;
&lt;br /&gt;
Contact us at ulyssis@ulyssis.org and let us know you would like to get the &amp;lt;code&amp;gt;unaccent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pg_trgm&amp;lt;/code&amp;gt; extensions enabled for your database.&lt;br /&gt;
&lt;br /&gt;
= Configure the Apache webserver using .htaccess =&lt;br /&gt;
&lt;br /&gt;
Replace ``YOURHOSTNAME`` in the next files with the hostname on which your Indico instance should be available, e.g. ``indico.yourdomain.com``&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cat &amp;gt; ~/indico/.htaccess &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{HTTPS} off&lt;br /&gt;
&lt;br /&gt;
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]&lt;br /&gt;
&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^YOURHOSTNAME$ [NC]&lt;br /&gt;
&lt;br /&gt;
RewriteRule ^ https://YOURHOSTNAME%{REQUEST_URI} [R=301,L]&lt;br /&gt;
&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Create a TLS Certificate =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Install Indico =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Celery runs as a background daemon. Add a systemd unit file for it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt; /etc/systemd/system/indico-celery.service &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    [Unit]&lt;br /&gt;
    Description=Indico Celery&lt;br /&gt;
    After=network.target&lt;br /&gt;
&lt;br /&gt;
    [Service]&lt;br /&gt;
    ExecStart=/opt/indico/.venv/bin/indico celery worker -B&lt;br /&gt;
    Restart=always&lt;br /&gt;
    SyslogIdentifier=indico-celery&lt;br /&gt;
    User=indico&lt;br /&gt;
    Group=www-data&lt;br /&gt;
    UMask=0027&lt;br /&gt;
    Type=simple&lt;br /&gt;
    KillMode=mixed&lt;br /&gt;
    TimeoutStopSec=300&lt;br /&gt;
&lt;br /&gt;
    [Install]&lt;br /&gt;
    WantedBy=multi-user.target&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now create a user that will be used to run Indico and switch to it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    useradd -rm -g www-data -d /opt/indico -s /bin/bash indico&lt;br /&gt;
    su - indico&lt;br /&gt;
&lt;br /&gt;
The first thing to do is installing pyenv - we use it to install the latest Python version&lt;br /&gt;
as not all Linux distributions include it and like this Indico can benefit from the latest&lt;br /&gt;
Python features.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    export PATH=&amp;quot;/opt/indico/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init --path)&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init -)&amp;quot;&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
You are now ready to install Indico:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    python -m venv --upgrade-deps --prompt indico ~/.venv&lt;br /&gt;
    source ~/.venv/bin/activate&lt;br /&gt;
    echo 'source ~/.venv/bin/activate' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    pip install setuptools wheel&lt;br /&gt;
    pip install uwsgi&lt;br /&gt;
    pip install indico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Configure Indico&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Once Indico is installed, you can run the configuration wizard.  You can&lt;br /&gt;
keep the defaults for most options, but make sure to use ``https://YOURHOSTNAME``&lt;br /&gt;
when prompted for the Indico URL. Also specify valid email addresses when asked&lt;br /&gt;
and enter a valid SMTP server Indico can use to send emails.  When asked for the&lt;br /&gt;
default timezone make sure this is the main time zone used in your Indico instance.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico setup wizard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now finish setting up the directory structure and permissions:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    mkdir ~/log/apache&lt;br /&gt;
    chmod go-rwx ~/* ~/.[^.]*&lt;br /&gt;
    chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp&lt;br /&gt;
    chmod 750 ~/web ~/.venv&lt;br /&gt;
    chmod g+w ~/log/apache&lt;br /&gt;
    echo -e &amp;quot;\nSTATIC_FILE_METHOD = 'xsendfile'&amp;quot; &amp;gt;&amp;gt; ~/etc/indico.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Create database schema&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Finally, you can create the database schema and switch back to *root*:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico db prepare&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Launch Indico&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
You can now start Indico and set it up to start automatically when the&lt;br /&gt;
server is rebooted:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    systemctl restart apache2.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
    systemctl enable apache2.service postgresql.service redis-server.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Get a Certificate from Let's Encrypt&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[Getting_SSL/TLS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Create an Indico user&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Access ``https://YOURHOSTNAME`` in your browser and follow the steps&lt;br /&gt;
displayed there to create your initial user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Install TeXLive&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Follow the :ref:`PDF generation guide &amp;lt;pdf_generation&amp;gt;` to setup PDF document&lt;br /&gt;
generation in Indico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _deb-apache-shib:&lt;br /&gt;
&lt;br /&gt;
Optional: Shibboleth&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
If your organization uses Shibboleth/SAML-based SSO, follow these steps to use&lt;br /&gt;
it in Indico:&lt;br /&gt;
&lt;br /&gt;
1. Install Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    apt install -y libapache2-mod-shib&lt;br /&gt;
    a2enmod shib&lt;br /&gt;
&lt;br /&gt;
2. Configure Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
This is outside the scope of this documentation and depends on your&lt;br /&gt;
environment (Shibboleth, SAML, ADFS, etc).  Please contact whoever&lt;br /&gt;
runs your SSO infrastructure if you need assistance.&lt;br /&gt;
&lt;br /&gt;
3. Enable Shibboleth in Apache&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
Add the following code to your ``/etc/apache2/sites-available/indico.conf``&lt;br /&gt;
right before the ``AliasMatch`` lines:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: apache&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LocationMatch &amp;quot;^(/Shibboleth\.sso|/login/shib-sso/shibboleth)&amp;quot;&amp;gt;&lt;br /&gt;
        AuthType shibboleth&lt;br /&gt;
        ShibRequestSetting requireSession 1&lt;br /&gt;
        ShibExportAssertion Off&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/LocationMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Enable Shibboleth in Indico&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. include:: ../_sso_indico.rst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _PostgreSQL wiki: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository&lt;br /&gt;
.. _Let's Encrypt: https://letsencrypt.org/&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1874</id>
		<title>Setting up Indico</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1874"/>
		<updated>2025-10-28T14:14:37Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Configure the Apache webserver using .htaccess */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev&lt;br /&gt;
&lt;br /&gt;
apt install -y libjpeg-turbo8-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Create the indico database =&lt;br /&gt;
&lt;br /&gt;
To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL user on UCC. If you already have a PostgreSQL user, you can skip this step. More info on:[[Using_PostgreSQL#Creating_a_PostgreSQL_user]].&lt;br /&gt;
&lt;br /&gt;
Now you can create the &amp;lt;code&amp;gt;username_indico&amp;lt;/code&amp;gt; database: [[Using_PostgreSQL#Creating_a_PostgreSQL_database]].&lt;br /&gt;
&lt;br /&gt;
Contact us at ulyssis@ulyssis.org and let us know you would like to get the &amp;lt;code&amp;gt;unaccent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pg_trgm&amp;lt;/code&amp;gt; extensions enabled for your database.&lt;br /&gt;
&lt;br /&gt;
= Configure the Apache webserver using .htaccess =&lt;br /&gt;
&lt;br /&gt;
Replace ``YOURHOSTNAME`` in the next files with the hostname on which your Indico instance should be available, e.g. ``indico.yourdomain.com``&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cat &amp;gt; ~/indico/.htaccess &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{HTTPS} off&lt;br /&gt;
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^YOURHOSTNAME$ [NC]&lt;br /&gt;
RewriteRule ^ https://YOURHOSTNAME%{REQUEST_URI} [R=301,L]&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Create a TLS Certificate =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Install Indico =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Celery runs as a background daemon. Add a systemd unit file for it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt; /etc/systemd/system/indico-celery.service &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    [Unit]&lt;br /&gt;
    Description=Indico Celery&lt;br /&gt;
    After=network.target&lt;br /&gt;
&lt;br /&gt;
    [Service]&lt;br /&gt;
    ExecStart=/opt/indico/.venv/bin/indico celery worker -B&lt;br /&gt;
    Restart=always&lt;br /&gt;
    SyslogIdentifier=indico-celery&lt;br /&gt;
    User=indico&lt;br /&gt;
    Group=www-data&lt;br /&gt;
    UMask=0027&lt;br /&gt;
    Type=simple&lt;br /&gt;
    KillMode=mixed&lt;br /&gt;
    TimeoutStopSec=300&lt;br /&gt;
&lt;br /&gt;
    [Install]&lt;br /&gt;
    WantedBy=multi-user.target&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now create a user that will be used to run Indico and switch to it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    useradd -rm -g www-data -d /opt/indico -s /bin/bash indico&lt;br /&gt;
    su - indico&lt;br /&gt;
&lt;br /&gt;
The first thing to do is installing pyenv - we use it to install the latest Python version&lt;br /&gt;
as not all Linux distributions include it and like this Indico can benefit from the latest&lt;br /&gt;
Python features.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    export PATH=&amp;quot;/opt/indico/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init --path)&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init -)&amp;quot;&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
You are now ready to install Indico:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    python -m venv --upgrade-deps --prompt indico ~/.venv&lt;br /&gt;
    source ~/.venv/bin/activate&lt;br /&gt;
    echo 'source ~/.venv/bin/activate' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    pip install setuptools wheel&lt;br /&gt;
    pip install uwsgi&lt;br /&gt;
    pip install indico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Configure Indico&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Once Indico is installed, you can run the configuration wizard.  You can&lt;br /&gt;
keep the defaults for most options, but make sure to use ``https://YOURHOSTNAME``&lt;br /&gt;
when prompted for the Indico URL. Also specify valid email addresses when asked&lt;br /&gt;
and enter a valid SMTP server Indico can use to send emails.  When asked for the&lt;br /&gt;
default timezone make sure this is the main time zone used in your Indico instance.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico setup wizard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now finish setting up the directory structure and permissions:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    mkdir ~/log/apache&lt;br /&gt;
    chmod go-rwx ~/* ~/.[^.]*&lt;br /&gt;
    chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp&lt;br /&gt;
    chmod 750 ~/web ~/.venv&lt;br /&gt;
    chmod g+w ~/log/apache&lt;br /&gt;
    echo -e &amp;quot;\nSTATIC_FILE_METHOD = 'xsendfile'&amp;quot; &amp;gt;&amp;gt; ~/etc/indico.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Create database schema&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Finally, you can create the database schema and switch back to *root*:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico db prepare&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Launch Indico&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
You can now start Indico and set it up to start automatically when the&lt;br /&gt;
server is rebooted:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    systemctl restart apache2.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
    systemctl enable apache2.service postgresql.service redis-server.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Get a Certificate from Let's Encrypt&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[Getting_SSL/TLS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Create an Indico user&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Access ``https://YOURHOSTNAME`` in your browser and follow the steps&lt;br /&gt;
displayed there to create your initial user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Install TeXLive&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Follow the :ref:`PDF generation guide &amp;lt;pdf_generation&amp;gt;` to setup PDF document&lt;br /&gt;
generation in Indico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _deb-apache-shib:&lt;br /&gt;
&lt;br /&gt;
Optional: Shibboleth&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
If your organization uses Shibboleth/SAML-based SSO, follow these steps to use&lt;br /&gt;
it in Indico:&lt;br /&gt;
&lt;br /&gt;
1. Install Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    apt install -y libapache2-mod-shib&lt;br /&gt;
    a2enmod shib&lt;br /&gt;
&lt;br /&gt;
2. Configure Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
This is outside the scope of this documentation and depends on your&lt;br /&gt;
environment (Shibboleth, SAML, ADFS, etc).  Please contact whoever&lt;br /&gt;
runs your SSO infrastructure if you need assistance.&lt;br /&gt;
&lt;br /&gt;
3. Enable Shibboleth in Apache&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
Add the following code to your ``/etc/apache2/sites-available/indico.conf``&lt;br /&gt;
right before the ``AliasMatch`` lines:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: apache&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LocationMatch &amp;quot;^(/Shibboleth\.sso|/login/shib-sso/shibboleth)&amp;quot;&amp;gt;&lt;br /&gt;
        AuthType shibboleth&lt;br /&gt;
        ShibRequestSetting requireSession 1&lt;br /&gt;
        ShibExportAssertion Off&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/LocationMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Enable Shibboleth in Indico&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. include:: ../_sso_indico.rst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _PostgreSQL wiki: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository&lt;br /&gt;
.. _Let's Encrypt: https://letsencrypt.org/&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1873</id>
		<title>Setting up Indico</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1873"/>
		<updated>2025-10-28T14:14:05Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Create the indico database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev&lt;br /&gt;
&lt;br /&gt;
apt install -y libjpeg-turbo8-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Create the indico database =&lt;br /&gt;
&lt;br /&gt;
To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL user on UCC. If you already have a PostgreSQL user, you can skip this step. More info on:[[Using_PostgreSQL#Creating_a_PostgreSQL_user]].&lt;br /&gt;
&lt;br /&gt;
Now you can create the &amp;lt;code&amp;gt;username_indico&amp;lt;/code&amp;gt; database: [[Using_PostgreSQL#Creating_a_PostgreSQL_database]].&lt;br /&gt;
&lt;br /&gt;
Contact us at ulyssis@ulyssis.org and let us know you would like to get the &amp;lt;code&amp;gt;unaccent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pg_trgm&amp;lt;/code&amp;gt; extensions enabled for your database.&lt;br /&gt;
&lt;br /&gt;
= Configure the Apache webserver using .htaccess =&lt;br /&gt;
&lt;br /&gt;
Replace ``YOURHOSTNAME`` in the next files with the hostname on which your Indico instance should be available, e.g. ``indico.yourdomain.com``&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; ~/indico/.htaccess &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{HTTPS} off&lt;br /&gt;
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^YOURHOSTNAME$ [NC]&lt;br /&gt;
RewriteRule ^ https://YOURHOSTNAME%{REQUEST_URI} [R=301,L]&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
= Create a TLS Certificate =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Install Indico =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Celery runs as a background daemon. Add a systemd unit file for it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt; /etc/systemd/system/indico-celery.service &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    [Unit]&lt;br /&gt;
    Description=Indico Celery&lt;br /&gt;
    After=network.target&lt;br /&gt;
&lt;br /&gt;
    [Service]&lt;br /&gt;
    ExecStart=/opt/indico/.venv/bin/indico celery worker -B&lt;br /&gt;
    Restart=always&lt;br /&gt;
    SyslogIdentifier=indico-celery&lt;br /&gt;
    User=indico&lt;br /&gt;
    Group=www-data&lt;br /&gt;
    UMask=0027&lt;br /&gt;
    Type=simple&lt;br /&gt;
    KillMode=mixed&lt;br /&gt;
    TimeoutStopSec=300&lt;br /&gt;
&lt;br /&gt;
    [Install]&lt;br /&gt;
    WantedBy=multi-user.target&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now create a user that will be used to run Indico and switch to it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    useradd -rm -g www-data -d /opt/indico -s /bin/bash indico&lt;br /&gt;
    su - indico&lt;br /&gt;
&lt;br /&gt;
The first thing to do is installing pyenv - we use it to install the latest Python version&lt;br /&gt;
as not all Linux distributions include it and like this Indico can benefit from the latest&lt;br /&gt;
Python features.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    export PATH=&amp;quot;/opt/indico/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init --path)&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init -)&amp;quot;&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
You are now ready to install Indico:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    python -m venv --upgrade-deps --prompt indico ~/.venv&lt;br /&gt;
    source ~/.venv/bin/activate&lt;br /&gt;
    echo 'source ~/.venv/bin/activate' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    pip install setuptools wheel&lt;br /&gt;
    pip install uwsgi&lt;br /&gt;
    pip install indico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Configure Indico&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Once Indico is installed, you can run the configuration wizard.  You can&lt;br /&gt;
keep the defaults for most options, but make sure to use ``https://YOURHOSTNAME``&lt;br /&gt;
when prompted for the Indico URL. Also specify valid email addresses when asked&lt;br /&gt;
and enter a valid SMTP server Indico can use to send emails.  When asked for the&lt;br /&gt;
default timezone make sure this is the main time zone used in your Indico instance.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico setup wizard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now finish setting up the directory structure and permissions:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    mkdir ~/log/apache&lt;br /&gt;
    chmod go-rwx ~/* ~/.[^.]*&lt;br /&gt;
    chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp&lt;br /&gt;
    chmod 750 ~/web ~/.venv&lt;br /&gt;
    chmod g+w ~/log/apache&lt;br /&gt;
    echo -e &amp;quot;\nSTATIC_FILE_METHOD = 'xsendfile'&amp;quot; &amp;gt;&amp;gt; ~/etc/indico.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Create database schema&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Finally, you can create the database schema and switch back to *root*:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico db prepare&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Launch Indico&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
You can now start Indico and set it up to start automatically when the&lt;br /&gt;
server is rebooted:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    systemctl restart apache2.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
    systemctl enable apache2.service postgresql.service redis-server.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Get a Certificate from Let's Encrypt&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[Getting_SSL/TLS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Create an Indico user&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Access ``https://YOURHOSTNAME`` in your browser and follow the steps&lt;br /&gt;
displayed there to create your initial user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Install TeXLive&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Follow the :ref:`PDF generation guide &amp;lt;pdf_generation&amp;gt;` to setup PDF document&lt;br /&gt;
generation in Indico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _deb-apache-shib:&lt;br /&gt;
&lt;br /&gt;
Optional: Shibboleth&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
If your organization uses Shibboleth/SAML-based SSO, follow these steps to use&lt;br /&gt;
it in Indico:&lt;br /&gt;
&lt;br /&gt;
1. Install Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    apt install -y libapache2-mod-shib&lt;br /&gt;
    a2enmod shib&lt;br /&gt;
&lt;br /&gt;
2. Configure Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
This is outside the scope of this documentation and depends on your&lt;br /&gt;
environment (Shibboleth, SAML, ADFS, etc).  Please contact whoever&lt;br /&gt;
runs your SSO infrastructure if you need assistance.&lt;br /&gt;
&lt;br /&gt;
3. Enable Shibboleth in Apache&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
Add the following code to your ``/etc/apache2/sites-available/indico.conf``&lt;br /&gt;
right before the ``AliasMatch`` lines:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: apache&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LocationMatch &amp;quot;^(/Shibboleth\.sso|/login/shib-sso/shibboleth)&amp;quot;&amp;gt;&lt;br /&gt;
        AuthType shibboleth&lt;br /&gt;
        ShibRequestSetting requireSession 1&lt;br /&gt;
        ShibExportAssertion Off&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/LocationMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Enable Shibboleth in Indico&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. include:: ../_sso_indico.rst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _PostgreSQL wiki: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository&lt;br /&gt;
.. _Let's Encrypt: https://letsencrypt.org/&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1872</id>
		<title>Setting up Indico</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Setting_up_Indico&amp;diff=1872"/>
		<updated>2025-10-28T14:13:23Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: Created page with &amp;quot;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev  apt install -y libjpeg-turbo8-dev    = Create the indico database =  To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL use...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;apt install -y libpq-dev apache2 libapache2-mod-proxy-uwsgi libapache2-mod-xsendfile libxslt1-dev libxml2-dev libffi-dev libpcre3-dev libyaml-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev xz-utils liblzma-dev uuid-dev build-essential redis-server git libpango1.0-dev&lt;br /&gt;
&lt;br /&gt;
apt install -y libjpeg-turbo8-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Create the indico database =&lt;br /&gt;
&lt;br /&gt;
To use PostgreSQL on you ULYSSIS account, you first need to create a PostgreSQL user on UCC. If you already have a PostgreSQL user, you can skip this step. More info on:[[Using_PostgreSQL#Creating_a_PostgreSQL_user]].&lt;br /&gt;
&lt;br /&gt;
Now you can create the &amp;lt;code&amp;gt;username_indico&amp;lt;/code&amp;gt; database: [[Using_PostgreSQL#Creating_a_PostgreSQL_database]].&lt;br /&gt;
&lt;br /&gt;
Contact us at ulyssis@ulyssis.org and let us know you would like to get the &amp;lt;code&amp;gt;unaccent&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pg_trgm&amp;lt;/code&amp;gt; extensions enabled. &lt;br /&gt;
&lt;br /&gt;
= Configure the Apache webserver using .htaccess =&lt;br /&gt;
&lt;br /&gt;
Replace ``YOURHOSTNAME`` in the next files with the hostname on which your Indico instance should be available, e.g. ``indico.yourdomain.com``&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; ~/indico/.htaccess &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{HTTPS} off&lt;br /&gt;
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]&lt;br /&gt;
RewriteCond %{HTTP_HOST} !^YOURHOSTNAME$ [NC]&lt;br /&gt;
RewriteRule ^ https://YOURHOSTNAME%{REQUEST_URI} [R=301,L]&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
= Create a TLS Certificate =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Install Indico =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Celery runs as a background daemon. Add a systemd unit file for it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt; /etc/systemd/system/indico-celery.service &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    [Unit]&lt;br /&gt;
    Description=Indico Celery&lt;br /&gt;
    After=network.target&lt;br /&gt;
&lt;br /&gt;
    [Service]&lt;br /&gt;
    ExecStart=/opt/indico/.venv/bin/indico celery worker -B&lt;br /&gt;
    Restart=always&lt;br /&gt;
    SyslogIdentifier=indico-celery&lt;br /&gt;
    User=indico&lt;br /&gt;
    Group=www-data&lt;br /&gt;
    UMask=0027&lt;br /&gt;
    Type=simple&lt;br /&gt;
    KillMode=mixed&lt;br /&gt;
    TimeoutStopSec=300&lt;br /&gt;
&lt;br /&gt;
    [Install]&lt;br /&gt;
    WantedBy=multi-user.target&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now create a user that will be used to run Indico and switch to it:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    useradd -rm -g www-data -d /opt/indico -s /bin/bash indico&lt;br /&gt;
    su - indico&lt;br /&gt;
&lt;br /&gt;
The first thing to do is installing pyenv - we use it to install the latest Python version&lt;br /&gt;
as not all Linux distributions include it and like this Indico can benefit from the latest&lt;br /&gt;
Python features.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash&lt;br /&gt;
&lt;br /&gt;
    cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt;'EOF'&lt;br /&gt;
    export PATH=&amp;quot;/opt/indico/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init --path)&amp;quot;&lt;br /&gt;
    eval &amp;quot;$(pyenv init -)&amp;quot;&lt;br /&gt;
    EOF&lt;br /&gt;
&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
You are now ready to install Indico:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    python -m venv --upgrade-deps --prompt indico ~/.venv&lt;br /&gt;
    source ~/.venv/bin/activate&lt;br /&gt;
    echo 'source ~/.venv/bin/activate' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    pip install setuptools wheel&lt;br /&gt;
    pip install uwsgi&lt;br /&gt;
    pip install indico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Configure Indico&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Once Indico is installed, you can run the configuration wizard.  You can&lt;br /&gt;
keep the defaults for most options, but make sure to use ``https://YOURHOSTNAME``&lt;br /&gt;
when prompted for the Indico URL. Also specify valid email addresses when asked&lt;br /&gt;
and enter a valid SMTP server Indico can use to send emails.  When asked for the&lt;br /&gt;
default timezone make sure this is the main time zone used in your Indico instance.&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico setup wizard&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now finish setting up the directory structure and permissions:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    mkdir ~/log/apache&lt;br /&gt;
    chmod go-rwx ~/* ~/.[^.]*&lt;br /&gt;
    chmod 710 ~/ ~/archive ~/cache ~/log ~/tmp&lt;br /&gt;
    chmod 750 ~/web ~/.venv&lt;br /&gt;
    chmod g+w ~/log/apache&lt;br /&gt;
    echo -e &amp;quot;\nSTATIC_FILE_METHOD = 'xsendfile'&amp;quot; &amp;gt;&amp;gt; ~/etc/indico.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7. Create database schema&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Finally, you can create the database schema and switch back to *root*:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    indico db prepare&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Launch Indico&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
You can now start Indico and set it up to start automatically when the&lt;br /&gt;
server is rebooted:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    systemctl restart apache2.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
    systemctl enable apache2.service postgresql.service redis-server.service indico-celery.service indico-uwsgi.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Get a Certificate from Let's Encrypt&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
[[Getting_SSL/TLS]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Create an Indico user&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Access ``https://YOURHOSTNAME`` in your browser and follow the steps&lt;br /&gt;
displayed there to create your initial user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11. Install TeXLive&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Follow the :ref:`PDF generation guide &amp;lt;pdf_generation&amp;gt;` to setup PDF document&lt;br /&gt;
generation in Indico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _deb-apache-shib:&lt;br /&gt;
&lt;br /&gt;
Optional: Shibboleth&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
If your organization uses Shibboleth/SAML-based SSO, follow these steps to use&lt;br /&gt;
it in Indico:&lt;br /&gt;
&lt;br /&gt;
1. Install Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. code-block:: shell&lt;br /&gt;
&lt;br /&gt;
    apt install -y libapache2-mod-shib&lt;br /&gt;
    a2enmod shib&lt;br /&gt;
&lt;br /&gt;
2. Configure Shibboleth&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
This is outside the scope of this documentation and depends on your&lt;br /&gt;
environment (Shibboleth, SAML, ADFS, etc).  Please contact whoever&lt;br /&gt;
runs your SSO infrastructure if you need assistance.&lt;br /&gt;
&lt;br /&gt;
3. Enable Shibboleth in Apache&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
Add the following code to your ``/etc/apache2/sites-available/indico.conf``&lt;br /&gt;
right before the ``AliasMatch`` lines:&lt;br /&gt;
&lt;br /&gt;
.. code-block:: apache&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;LocationMatch &amp;quot;^(/Shibboleth\.sso|/login/shib-sso/shibboleth)&amp;quot;&amp;gt;&lt;br /&gt;
        AuthType shibboleth&lt;br /&gt;
        ShibRequestSetting requireSession 1&lt;br /&gt;
        ShibExportAssertion Off&lt;br /&gt;
        Require valid-user&lt;br /&gt;
    &amp;lt;/LocationMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Enable Shibboleth in Indico&lt;br /&gt;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
&lt;br /&gt;
.. include:: ../_sso_indico.rst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.. _PostgreSQL wiki: https://wiki.postgresql.org/wiki/YUM_Installation#Configure_your_YUM_repository&lt;br /&gt;
.. _Let's Encrypt: https://letsencrypt.org/&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Getting_SSL/TLS&amp;diff=1871</id>
		<title>Getting SSL/TLS</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Getting_SSL/TLS&amp;diff=1871"/>
		<updated>2025-09-28T11:04:20Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ULYSSIS does not sell or offer any other SSL certificates than our self-signed certificate. We will however we will install certificates you have bought or obtained elsewhere.&lt;br /&gt;
&lt;br /&gt;
To install external certificates we require the certificate itself, the private key, and possibly the chain. We prefer you also send us (a link to) the documentation of your supplier. As certificate files, especially private keys, are a delicate matter we suggest you just email us the path in your homedirectory you've put them and we will move them over to the webserver safely. For more information concerning this procedure you can always contact us on ulyssis@ulyssis.org&lt;br /&gt;
&lt;br /&gt;
==Let's Encrypt==&lt;br /&gt;
We currently do not have an automated system for renewing and deploying certificates such as those supplied by Let's Encrypt. We are however looking into automating this process in the future. Since more of our users are starting to use Let's Encrypt, and all of their certificates need to be renewed frequently, we have a specific procedure now.&lt;br /&gt;
&lt;br /&gt;
When wishing to add a certificate with Let's Encrypt to your website, or renew your existing one, first create a folder &amp;lt;code&amp;gt;letsencrypt&amp;lt;/code&amp;gt; in your '''home directory'''. Then add a folder per domain or group of domains:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p ~/letsencrypt/mydomain.be&lt;br /&gt;
&lt;br /&gt;
Certificates should be stored in these folders, according to the following file structure:&lt;br /&gt;
&lt;br /&gt;
 letsencrypt/&lt;br /&gt;
 └── mydomain.be/&lt;br /&gt;
     ├── mydomain.be.chain (the CA file)&lt;br /&gt;
     ├── mydomain.be.crt (the cert file; &amp;quot;public key&amp;quot;)&lt;br /&gt;
     └── mydomain.be.key (the key file; &amp;quot;private key&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If you already possess the necessary files, renaming and copying them accordingly is sufficient. &lt;br /&gt;
'''You still have to email us to install your certificate.''' More information in the last section on this page.&lt;br /&gt;
&lt;br /&gt;
Otherwise, you can generate or renew your certificates using acme.sh. This is explained in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Generating certificates ===&lt;br /&gt;
{{notice|If you use a &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; file in the webroot of the domain name, make sure to add the following lines at the top of the file:|&amp;lt;pre&amp;gt;&amp;lt;IfModule mod_rewrite.c&amp;gt;&lt;br /&gt;
    RewriteRule &amp;quot;^.well-known/acme-challenge&amp;quot; - [L]&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
Because the normal method of generating Let's Encrypt certificates, certbot, requires root access, it's impossible for normal users to do so on our servers. Luckily there are plenty of alternatives which implement the Let's Encrypt protocol. In this tutorial, we'll show how to use the acme.sh program to generate certificates on the ULYSSIS servers. '''If you already followed this section to generate certificates, skip to the next section on renewing certificates.'''&lt;br /&gt;
&lt;br /&gt;
Firstly, execute the following commands to download the acme.sh script in your home directory and make it executable:&lt;br /&gt;
&lt;br /&gt;
 curl -o ~/acme.sh https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh&lt;br /&gt;
 chmod +x ~/acme.sh&lt;br /&gt;
&lt;br /&gt;
Next, determine for which domains and subdomains you want to generate a certificate. You will need to generate a single certificate for each domain and subdomain which points to the same folder on your account (in most cases this is &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; in your home directory).&lt;br /&gt;
&lt;br /&gt;
The following example command will generate a certificate for &amp;lt;code&amp;gt;mydomain.be&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;www.mydomain.be&amp;lt;/code&amp;gt; which points to the &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; folder in the home directory. '''Change the parameters''' as explained below before executing this command!&lt;br /&gt;
&lt;br /&gt;
 ~/acme.sh --issue --cert-file ~/letsencrypt/mydomain.be/mydomain.be.crt --key-file ~/letsencrypt/mydomain.be/mydomain.be.key --ca-file ~/letsencrypt/mydomain.be/mydomain.be.chain -m &amp;quot;email@mydomain.be&amp;quot; -w ~/www -d mydomain.be -d www.mydomain.be --server letsencrypt&lt;br /&gt;
&lt;br /&gt;
The explanation of these many parameters is as follows:&lt;br /&gt;
* &amp;lt;code&amp;gt;--issue&amp;lt;/code&amp;gt; tells acme.sh to generate a new certificate.&lt;br /&gt;
* &amp;lt;code&amp;gt;--cert-file ~/letsencrypt/mydomain.be/mydomain.be.crt&amp;lt;/code&amp;gt; tells acme.sh to store the certificate file in the &amp;lt;code&amp;gt;letsencrypt/mydomain.be&amp;lt;/code&amp;gt; folder in your home directory, using the special file name as required by the file structure. '''This folder should already exist''', please refer to the previous section if you have not created this folder yet.&lt;br /&gt;
* &amp;lt;code&amp;gt;--key-file ~/letsencrypt/mydomain.be/mydomain.be.key&amp;lt;/code&amp;gt; tells acme.sh to store the key file in the &amp;lt;code&amp;gt;letsencrypt/mydomain.be&amp;lt;/code&amp;gt; folder in your home directory, using the special file name as required by the file structure.&lt;br /&gt;
* &amp;lt;code&amp;gt;--ca-file ~/letsencrypt/mydomain.be/mydomain.be.chain&amp;lt;/code&amp;gt; tells acme.sh to store the CA file in the &amp;lt;code&amp;gt;letsencrypt/mydomain.be&amp;lt;/code&amp;gt; folder in your home directory, using the special file name as required by the file structure.&lt;br /&gt;
* &amp;lt;code&amp;gt;-m &amp;quot;email@mydomain.be&amp;quot;&amp;lt;/code&amp;gt; tells acme.sh the email address associated with the certificate. Let's Encrypt will remind this email address (if provided) when the certificate is close to expiring.&lt;br /&gt;
* &amp;lt;code&amp;gt;-w ~/www&amp;lt;/code&amp;gt; tells acme.sh where the domains in this certificate point to. Make sure to change the &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; part if the domains point to a different folder in your home directory.&lt;br /&gt;
* &amp;lt;code&amp;gt;-d mydomain.be&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;-d www.mydomain.be&amp;lt;/code&amp;gt; tell acme.sh that the certificate should protect &amp;lt;code&amp;gt;mydomain.be&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;www.mydomain.be&amp;lt;/code&amp;gt;. The first domain name will be the &amp;quot;main domain&amp;quot;, which is important for renewing. You should '''add all domain names''' pointing to the &amp;lt;code&amp;gt;-w&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
* &amp;lt;code&amp;gt;--server letsencrypt&amp;lt;/code&amp;gt; tells acme.sh to use https://letsencrypt.org/ as Certificate Authority (CA).&lt;br /&gt;
&lt;br /&gt;
After executing this command with the right parameters, your certificate should be generated successfully. When you have to renew the certificate in the future, you should follow the instructions in the next section. '''Don't forget to email us to install your new certificate.''' More information in the last section on this page.&lt;br /&gt;
&lt;br /&gt;
==== Renewing certificates ====&lt;br /&gt;
To renew the certificates of &amp;lt;code&amp;gt;mydomain.be&amp;lt;/code&amp;gt;, just execute:&lt;br /&gt;
 ~/acme.sh --renew -d mydomain.be&lt;br /&gt;
&lt;br /&gt;
For the &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; parameter, you have to provide the '''first''' domain name you provided when generating the certificate (in the previous section, this was &amp;lt;code&amp;gt;mydomain.be&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you are not sure which domain name to use, you can execute the command:&lt;br /&gt;
 ~/acme.sh --list&lt;br /&gt;
&lt;br /&gt;
This will generate a list of available certificates, which looks a bit like this:&lt;br /&gt;
 Main_Domain  KeyLength  SAN_Domains      CA               Created  Renew&lt;br /&gt;
 mydomain.be  &amp;quot;&amp;quot;         www.mydomain.be  LetsEncrypt.org  ...      ...&lt;br /&gt;
 ...          ...        ...              ...              ...      ...&lt;br /&gt;
&lt;br /&gt;
In this example, the main domain is &amp;lt;code&amp;gt;mydomain.be&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The renewed certificates will automatically be copied to the files you provided in the command to generate the certificates (see previous section).&lt;br /&gt;
&lt;br /&gt;
'''After renewing the certificate, you have to email us to install your certificate.''' More information in the next section.&lt;br /&gt;
&lt;br /&gt;
=== Getting your certificates installed ===&lt;br /&gt;
Check whether everything is stored correctly by executing the following command:&lt;br /&gt;
 ulyssis-certificate check mydomain.be&lt;br /&gt;
&lt;br /&gt;
If everything looks good, you should only see lines starting with &amp;lt;code&amp;gt;[ OK ]&amp;lt;/code&amp;gt;. Any line starting with &amp;lt;code&amp;gt;[FAIL]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;[ABRT]&amp;lt;/code&amp;gt; means a check has failed, you must correct this error before asking us to install your certificate. &lt;br /&gt;
&lt;br /&gt;
Once all steps are done and if you are the '''account holder''', '''you can send us an email clearly stating the account name, for which domains we need to add certificates and where the files are stored'''. If you are renewing existing certificates, also clearly state that in your email.&lt;br /&gt;
&lt;br /&gt;
We have largely automated the installation of certificates. If you do not follow these instructions, your request will be denied or you may end up with broken SSL, so make sure you follow this procedure carefully.&lt;br /&gt;
&lt;br /&gt;
[[Category:Webserver]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Registering_a_new_account&amp;diff=1870</id>
		<title>Registering a new account</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Registering_a_new_account&amp;diff=1870"/>
		<updated>2025-06-12T14:48:48Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To register an account, follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to https://ucc.ulyssis.org/accounts and log in using your Central KU Leuven Account.&lt;br /&gt;
# Select the kind of account you wish to register:&lt;br /&gt;
#* Most people will want to register a '''regular account''' for '''personal use'''.&lt;br /&gt;
#* If you are a recognised '''faculty union''' (kring), assembly organisation (overkoepelende organisatie), or '''faculty consultative body''' (facultair overlegorgaan) you are entitled to a free account. You can use the following to verify if you are eligible:&lt;br /&gt;
#** The list of recognised faculty unions (kringen) from LOKO on http://loko.be/verenigingen/. Recognised organisations (vrije verenigingen) are not entitled to a free account, but can get a reduced price account (see below).&lt;br /&gt;
#** The list of recognised assembly organisations (overkoepelende organisaties) on http://loko.be/verenigingen/ (Kringenkoepels).&lt;br /&gt;
#** The list of recognised faculty consultative bodies from the Studentenraad KU Leuven on https://www.sturakuleuven.be/onze-werking/facultaire-overlegorganen/.&lt;br /&gt;
#* If you are a '''recognised organisation''' by LOKO, the KU Leuven or another relevant entity, you may be entitled to an organisation account, which has a reduced price. You can use the following to verify if you are eligible:&lt;br /&gt;
#** The list of associations (vrije verenigingen) recognised by [http://loko.be/verenigingen/ LOKO].&lt;br /&gt;
#** The list of recognised cultural organisations by the [https://admin.kuleuven.be/td/fd/le/culturele-verenigingen-erkend-door-de-cultuurcommissie KU Leuven Culture Committee].&lt;br /&gt;
#** If you are a daughter organisation of one or multiple faculty unions (kringen), for example a fakbar.&lt;br /&gt;
#** Sports organisations recognised by the University Sports Centre can get in contact with us directly with proof of their recognition, as the USC currently doesn't publish any lists.&lt;br /&gt;
#** KU Leuven research groups. Please email us on [mailto:ulyssis@ulyssis.org ulyssis@ulyssis.org] with a link to your faculty/department's list of research groups.&lt;br /&gt;
#** Organisations recognised by their faculty as an (optional) part of the curriculum and that have a permanent character. For example the [https://iiw.kuleuven.be/studeren/opleidingen/techinvent/ventures-teams teams] of the Postgraduate Tech Innovations in Ventures &amp;amp; Teams at Group T.&lt;br /&gt;
#** We do ''not'' recognise the organisations recognised by the [https://admin.kuleuven.be/td/fd/le/politieke-en-andere-verenigingen-erkend-door-het-gebu General Bureau] (GeBu) of the KU Leuven.&lt;br /&gt;
#** If your organisation is recognised by some other entity not listed here, feel free to send us more details on [mailto:ulyssis@ulyssis.org ulyssis@ulyssis.org] and we will review your particular situation.&lt;br /&gt;
#* If you are a '''campus council''' or an organisation '''not''' part of '''campus Leuven''', such as the councils and organisations listed on https://www.sturakuleuven.be/onze-werking/campusraden/ , then you are not eligible for any reduced fee accounts, but you are free to register a personal account. If you are a campus council, you can also reach out to us on [mailto:ulyssis@ulyssis.org ulyssis@ulyssis.org] to discuss subsidising reduced fee access for the organisations of your campus.&lt;br /&gt;
# After picking your account type you have to choose which options you want, as well as a username and a language.&lt;br /&gt;
# Accept the ULYSSIS terms of use and confirm your order.&lt;br /&gt;
# An email will be sent to your KU Leuven email address to confirm your order alongside a request for payment. &lt;br /&gt;
# As soon as we have received and processed your payment, your account will be activated and you will receive instructions to set a password.&lt;br /&gt;
&lt;br /&gt;
[[Category:Account]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Using_(Fast)CGI_for_non-PHP_websites&amp;diff=1869</id>
		<title>Using (Fast)CGI for non-PHP websites</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Using_(Fast)CGI_for_non-PHP_websites&amp;diff=1869"/>
		<updated>2025-01-07T00:16:54Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Python and Django */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You're not stuck with PHP if you want to make a dynamic website. You can use all sorts of frameworks and programming languages with ULYSSIS, as long as it has CGI or FastCGI support.&lt;br /&gt;
&lt;br /&gt;
If you want to use a certain programming language or framework, and you can't get it to work, don't hesitate to contact us at [mailto:ulyssis@ulyssis.org ulyssis@ulyssis.org]. We will of course not write any code for you, but we can give you some pointers or directions.&lt;br /&gt;
&lt;br /&gt;
==CGI==&lt;br /&gt;
&lt;br /&gt;
CGI is a simple way to create a dynamic website. We use Apache's [http://httpd.apache.org/docs/2.4/mod/mod_cgid.html mod_cgid] to provide support for CGI. Note, however, that CGI is inefficient and&lt;br /&gt;
in general we recommend you to use a framework together with FastCGI. There are many frameworks, ranging from very simple and lightweight, to more complex and feature rich.&lt;br /&gt;
&lt;br /&gt;
If, for example, you want Apache to interpret all files with the extension &amp;lt;code&amp;gt;.cgi&amp;lt;/code&amp;gt; as CGI scripts, use the following &amp;lt;tt&amp;gt;.htaccess&amp;lt;/tt&amp;gt; file (to be placed in your &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; folder):&lt;br /&gt;
&amp;lt;pre&amp;gt;Options +ExecCGI&lt;br /&gt;
AddHandler cgi-script .cgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an example of a very simple Python CGI script (called &amp;lt;code&amp;gt;hello.cgi&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
print('Content-Type: text/plain\n')&lt;br /&gt;
print('Hello world!')&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CGI scripts need to be executable, otherwise they won't work:&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod +x hello.cgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FastCGI==&lt;br /&gt;
&lt;br /&gt;
We use Apache's [http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html mod_fcgid] to provide support for FastCGI.&lt;br /&gt;
&lt;br /&gt;
In order to use FastCGI, you will generally need a starter script specific to your programming languae, framework or application. Just do a web search for &amp;quot;''keyword'' mod_fcgid&amp;quot;, where ''keyword'' is the programming language, framework or application you're planning to use, and you will often find good instructions. We've included some examples below&lt;br /&gt;
&lt;br /&gt;
You'll want to treat this starter script as a &amp;lt;code&amp;gt;mod_fcgid&amp;lt;/code&amp;gt; script, and usually, you'll want to redirect everything to this script, so you can use an &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; file that looks like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;Options +ExecCGI&lt;br /&gt;
AddHandler fcgid-script .fcgi&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteRule ^(.*)$ starter.fcgi/$1 [QSA,L]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Replace ''starter.fcgi'' with the name of your starter script. Don't forget to make your starter script executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod +x starter.fcgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
The starter script must be located in the same folder as the &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
{{warning|Warning!|Do not place sensitive files inside the web accessible folder. Make sure they are located in a folder outside the document root, or they will be downloadable through the webserver.}}&lt;br /&gt;
It is adviced to only place the fcgi starter script, &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; and static files (images, stylesheets) inside the document root.&lt;br /&gt;
&lt;br /&gt;
=== Startup time and persistency === &lt;br /&gt;
&lt;br /&gt;
It is important to keep in mind that our Apache webworkers will only run your start script when a request is made. As soon as that first request has been received, it will try and keep a few instances of your application around for future use. This of course affects how you restart your application after changes (see below), but also means that applications with a longer start up time (for example a language such as Python combined with a larger framework) will experience an initial slow request. This slow startup is obviously not a factor for faster languages such as Haskell, C++ or Go.&lt;br /&gt;
&lt;br /&gt;
Sadly, Apache is unable to have FastCGI processes persist beyond a reload or restart. This means in practice that every night around 6h25 when the logs are rotated, which requires Apache to be reloaded, all running fcgi processes will be gracefully terminated. The same thing happens when we make changes to the Apache configuration when a new website or user is added. &lt;br /&gt;
&lt;br /&gt;
For those who have a very high startup time and don't generate enough traffic to not experience issues with this behaviour, it's possible to use a [[Managing_Cron_jobs | cronjob]] to visit the website every night at 6h30 or 7h, or even hourly.&lt;br /&gt;
&lt;br /&gt;
===Restarting your application===&lt;br /&gt;
&lt;br /&gt;
If you've changed your application, you will need to restart it for these changes to take effect. However, because you're editing the application on a different server than where it is running, you do not have access to the running process. You'll have to create some sort of mechanism to restart the process.&lt;br /&gt;
&lt;br /&gt;
In the Django and Go examples below, the starter script has been written so that when it is changed, the application is automatically restarted within 1 second. The same mechanism can be applied to other Python sites. You can change the modification date without actually changing the contents of the starter script by using &amp;lt;code&amp;gt;touch&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;touch starter.fcgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
Replace &amp;lt;code&amp;gt;starter.fcgi&amp;lt;/code&amp;gt; with the name of your starter script.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Python and Django ====&lt;br /&gt;
&lt;br /&gt;
If you want to make a website using Python and [https://www.djangoproject.com/ Django], we recommend that you use a virtual environment. You can use the following steps to get up and running with Django on your ULYSSIS hosting account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Accessing shell servers over SSH|Log in to a shell server]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a new virtualenv, you can create one in &amp;lt;code&amp;gt;~/.venv&amp;lt;/code&amp;gt;, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;python3 -m venv ~/.venv&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Activate this virtualenv:&lt;br /&gt;
&amp;lt;pre&amp;gt;. ~/.venv/bin/activate&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Install Django and flup for FastCGI inside of this virtualenv:&lt;br /&gt;
&amp;lt;pre&amp;gt;pip install django flup6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Create a new Django project:&lt;br /&gt;
&amp;lt;pre&amp;gt;django-admin startproject mysite&amp;lt;/pre&amp;gt;&lt;br /&gt;
Replace ''mysite'' with your project's desired name.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Edit the allowed hosts in your Django project's settings, in &amp;lt;code&amp;gt;mysite/mysite/settings.py&amp;lt;/code&amp;gt;. Look for the line &amp;lt;code&amp;gt;ALLOWED_HOSTS = []&amp;lt;/code&amp;gt; and replace it with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ALLOWED_HOSTS = [ 'username.ulyssis.be', 'username.studentenweb.org' ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Use your ULYSSIS username in place of ''username''.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Put an &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; file in your site's directory, e.g. the &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;Options +ExecCGI&lt;br /&gt;
AddHandler fcgid-script .fcgi&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Create the starter script (replace &amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; with org if you are an organization, and &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt; with your ULYSSIS username):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;#!/home/user/username/.venv/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys, os, os.path&lt;br /&gt;
from threading import Thread&lt;br /&gt;
&lt;br /&gt;
this_file = os.path.realpath(__file__)&lt;br /&gt;
&lt;br /&gt;
site_dir = '/home/user/username/mysite'&lt;br /&gt;
sys.path.insert(0, site_dir)&lt;br /&gt;
os.chdir(site_dir)&lt;br /&gt;
&lt;br /&gt;
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'&lt;br /&gt;
&lt;br /&gt;
def stat_thread():&lt;br /&gt;
    import time, os, signal&lt;br /&gt;
    start_mtime = os.stat(this_file).st_mtime&lt;br /&gt;
    while True:&lt;br /&gt;
        cur_mtime = os.stat(this_file).st_mtime&lt;br /&gt;
        if cur_mtime != start_mtime:&lt;br /&gt;
            os.kill(os.getpid(), signal.SIGTERM)&lt;br /&gt;
        time.sleep(1)&lt;br /&gt;
&lt;br /&gt;
Thread(target=stat_thread).start()&lt;br /&gt;
&lt;br /&gt;
from django.core.servers.basehttp import get_internal_wsgi_application&lt;br /&gt;
from flup.server.fcgi import WSGIServer&lt;br /&gt;
WSGIServer(get_internal_wsgi_application(), debug=False).run()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Call this script &amp;lt;code&amp;gt;mysite.fcgi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Make the starter script executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod +x mysite.fcgi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Go to ''username''.ulyssis.be (or whatever URL you chose to use), and it should show you the default &amp;quot;Welcome to Django&amp;quot; page.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This guide was based on, and you can find more information in the official Django documentation:&lt;br /&gt;
* [https://docs.djangoproject.com/en/stable/intro/tutorial01/ The Django tutorial]&lt;br /&gt;
* [https://web.archive.org/web/20220811150710/https://flask.palletsprojects.com/en/2.0.x/deploying/fastcgi/ Flask documentation for FastCGI]&lt;br /&gt;
&lt;br /&gt;
==== Go ====&lt;br /&gt;
To make a website or web application in Go and host it on your ULYSSIS hosting account, you can use the standard library ''fcgi'' package. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[Accessing shell servers over SSH|Log in to a shell server]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Put an &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; file in your site's directory (e.g. the &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; folder) with a reference to your executable. Here we've chosen &amp;lt;code&amp;gt;mysite.fcgi&amp;lt;/code&amp;gt;, but you can adapt this to your liking.&lt;br /&gt;
&amp;lt;pre&amp;gt;Options +ExecCGI&lt;br /&gt;
AddHandler fcgid-script .fcgi&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA,L]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Write your code, and compile the binary to &amp;lt;code&amp;gt;mysite.fcgi&amp;lt;/code&amp;gt;. Below you can find a basic example of how to register two handlers (of which one is the fallback), then start the FastCGI client, and finally have a function (which is called as a goroutine) to check if the binary has been replaced so old processes don't stick around.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;go&amp;quot;&amp;gt;package main&lt;br /&gt;
&lt;br /&gt;
import (&lt;br /&gt;
	&amp;quot;fmt&amp;quot;&lt;br /&gt;
	&amp;quot;net/http&amp;quot;&lt;br /&gt;
	&amp;quot;net/http/fcgi&amp;quot;&lt;br /&gt;
	&amp;quot;os&amp;quot;&lt;br /&gt;
	&amp;quot;path/filepath&amp;quot;&lt;br /&gt;
	&amp;quot;time&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
func uri_interesting(w http.ResponseWriter, r *http.Request) {&lt;br /&gt;
	w.WriteHeader(http.StatusOK)&lt;br /&gt;
	fmt.Fprintln(w, &amp;quot;&amp;lt;h1&amp;gt;Oh, seems like this link isn't that interesting after all&amp;lt;/h1&amp;gt;&amp;quot;)&lt;br /&gt;
	fmt.Fprintln(w, &amp;quot;&amp;lt;p&amp;gt;Back to the &amp;lt;a href=\&amp;quot;/\&amp;quot;&amp;gt;Homepage&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func uri_default(w http.ResponseWriter, r *http.Request) {&lt;br /&gt;
	if r.URL.Path != &amp;quot;/&amp;quot; {&lt;br /&gt;
		w.WriteHeader(http.StatusNotFound)&lt;br /&gt;
		fmt.Fprintln(w, &amp;quot;&amp;lt;h1&amp;gt;This page doesn't exist&amp;lt;/h1&amp;gt;&amp;quot;)&lt;br /&gt;
		fmt.Fprintln(w, &amp;quot;&amp;lt;p&amp;gt;Back to the &amp;lt;a href=\&amp;quot;/\&amp;quot;&amp;gt;Homepage&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;)&lt;br /&gt;
	} else {&lt;br /&gt;
		w.WriteHeader(http.StatusOK)&lt;br /&gt;
		fmt.Fprintln(w, &amp;quot;&amp;lt;h1&amp;gt;Welcome to this testwebsite!&amp;lt;/h1&amp;gt;&amp;quot;)&lt;br /&gt;
		fmt.Fprintln(w, &amp;quot;&amp;lt;p&amp;gt;This website is written in Go but doesn't really do much.&amp;quot;)&lt;br /&gt;
		fmt.Fprintln(w, &amp;quot;Feel free to visit this &amp;lt;a href=\&amp;quot;/interesting/link\&amp;quot;&amp;gt;Interesting link&amp;lt;/a&amp;gt; or this &amp;lt;a href=\&amp;quot;/non-existent/link\&amp;quot;&amp;gt;non-existent link&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;&amp;quot;)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
	go check_selfreplacement()&lt;br /&gt;
	http.HandleFunc(&amp;quot;/interesting/link&amp;quot;, uri_interesting)&lt;br /&gt;
	http.HandleFunc(&amp;quot;/&amp;quot;, uri_default)&lt;br /&gt;
	if err := fcgi.Serve(nil, nil); err != nil {&lt;br /&gt;
		panic(err)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
func check_selfreplacement() {&lt;br /&gt;
	fcgi_location, _ := os.Executable()&lt;br /&gt;
	fcgi_location, _ = filepath.EvalSymlinks(fcgi_location)&lt;br /&gt;
	start_stat, _ := os.Stat(fcgi_location)&lt;br /&gt;
	for {&lt;br /&gt;
		current_stat, _ := os.Stat(fcgi_location)&lt;br /&gt;
		if start_stat.ModTime() != current_stat.ModTime() {&lt;br /&gt;
			os.Exit(0)&lt;br /&gt;
		}&lt;br /&gt;
		time.Sleep(1 * time.Second)&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If you want to give this example a try, save it as &amp;lt;code&amp;gt;mysite.fcgi.go&amp;lt;/code&amp;gt; and then use &amp;lt;code&amp;gt;go build mysite.fcgi.go&amp;lt;/code&amp;gt; to compile it.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Visit your website to verify everything works&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Webserver]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Overview&amp;diff=1863</id>
		<title>Overview</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Overview&amp;diff=1863"/>
		<updated>2024-10-16T13:30:02Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Mail */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:#f9f9f9;border:1px solid #ddd;font-size:95%;padding:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
Welcome to our documentation website. Many of the common procedures and issues our users experience are described here. If you still encounter problems we haven't covered or you just can't seem to get things to work, even though you followed one of our manuals, feel free to contact us on ulyssis@ulyssis.org for personal support.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;padding-right:10px;&amp;quot;&amp;gt;&lt;br /&gt;
== Account ==&lt;br /&gt;
* [[Registering a new account]]&lt;br /&gt;
* [[Renewing your account]]&lt;br /&gt;
* [[Transferring your account]]&lt;br /&gt;
* [[Resetting your password]]&lt;br /&gt;
* [[Reducing disk usage|Help, my account uses too much disk space]]&lt;br /&gt;
* [[Why do I have to pay 0.00 euro and how?]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;width:45%;float:left&amp;quot;&amp;gt;&lt;br /&gt;
== Files ==&lt;br /&gt;
* [[Accessing your files]]&lt;br /&gt;
* [[Transferring files over SFTP]]&lt;br /&gt;
* [[Making Backups]]&lt;br /&gt;
* [[Secure file permissions]]&lt;br /&gt;
* [[Reducing disk usage]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;padding-right:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Webserver ==&lt;br /&gt;
* [[Webserver changes summer 2024]]&lt;br /&gt;
* [[Using your webspace]]&lt;br /&gt;
* [[Using (Fast)CGI for non-PHP websites]]&lt;br /&gt;
* [[Getting Apache logs]]&lt;br /&gt;
* [[Managing PHP errors]]&lt;br /&gt;
* [[Setting PHP options]]&lt;br /&gt;
* [[Sending email from websites]]&lt;br /&gt;
* [[Adding domain names|Adding domain names (.be, .com, .org, ...)]]&lt;br /&gt;
* [[Getting SSL/TLS|Getting SSL/TLS (HTTPS security)]]&lt;br /&gt;
* [[Shibboleth|Shibboleth (Centrale KU Leuven Login)]]&lt;br /&gt;
* [[Claiming a port]]&lt;br /&gt;
* [[ULYSSIS security measures]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;width:45%;float:left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mail ==&lt;br /&gt;
* [[Introduction to ULYSSIS email]]&lt;br /&gt;
* [[Mailbox]]&lt;br /&gt;
* [[Mailbox in Thunderbird]]&lt;br /&gt;
* [[Forwarders]]&lt;br /&gt;
* [[Using a forwarder as an alias]]&lt;br /&gt;
* [[Add an alias in Gmail]]&lt;br /&gt;
* [[Add an alias in Hotmail/Outlook]]&lt;br /&gt;
* [[Add an alias in Thunderbird]]&lt;br /&gt;
* [[Add an alias in ULYSSIS webmail]]&lt;br /&gt;
* [[Spam]]&lt;br /&gt;
* [[Sending email from websites]]&lt;br /&gt;
* [[ULYSSIS security measures]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;padding-right:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CMSs ==&lt;br /&gt;
* [[Software Version Checker]]&lt;br /&gt;
* [[Setting up WordPress]]&lt;br /&gt;
* [[Setting up Drupal]]&lt;br /&gt;
* [[Setting up Joomla]]&lt;br /&gt;
* [[Setting up MediaWiki]]&lt;br /&gt;
* [[Updating WordPress]]&lt;br /&gt;
* [[Updating MediaWiki]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;width:45%;float:left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security &amp;amp; anti-spam ==&lt;br /&gt;
* [[Secure file permissions]]&lt;br /&gt;
* [[Software Version Checker]]&lt;br /&gt;
* [[Preventing spam on Wordpress]]&lt;br /&gt;
* [[Preventing spam on Joomla]]&lt;br /&gt;
* [[Preventing spam on Drupal]]&lt;br /&gt;
* [[Preventing spam on MediaWiki]]&lt;br /&gt;
* [[Securing MediaWiki using Centrale KU Leuven Login]]&lt;br /&gt;
* [[ULYSSIS security measures]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;padding-right:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Databases ==&lt;br /&gt;
* [[Using PostgreSQL]]&lt;br /&gt;
* [[Using MySQL]]&lt;br /&gt;
* [[Using PHPMyAdmin]]&lt;br /&gt;
* [[Using PHPPgAdmin]]&lt;br /&gt;
* [[Using Adminer]]&lt;br /&gt;
* [[Making Backups]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;width:45%;float:left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Shell ==&lt;br /&gt;
* [[Accessing your files]]&lt;br /&gt;
* [[Transferring files over SFTP]]&lt;br /&gt;
* [[Accessing shell servers over SSH]]&lt;br /&gt;
* [[ULYSSIS public IRC]]&lt;br /&gt;
* [[Useful Linux Commands]]&lt;br /&gt;
* [[Managing Cron jobs]]&lt;br /&gt;
* [[Claiming a port]]&lt;br /&gt;
* [[Installing packages]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;padding-right:10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versioning ==&lt;br /&gt;
* [[GitLab]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;width:45%;float:left&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ULYSSIS Public Services  ==&lt;br /&gt;
* [[ULYSSIS public IRC]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:45%;float:left;padding-right:10px;&amp;quot;&amp;gt;&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
* [[Using the kulemt package]]&lt;br /&gt;
* [[Exporting your KU Leuven class schedule and calendar]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Sending_email_from_websites&amp;diff=1862</id>
		<title>Sending email from websites</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Sending_email_from_websites&amp;diff=1862"/>
		<updated>2024-10-16T13:29:24Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: Add Mail Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sending email is fairly similar on most hosting services. ULYSSIS hosting is not too different in that sense. We do use a queueing system to detect accounts that are being abused by malicious actors to send spam.&lt;br /&gt;
&lt;br /&gt;
== How? ==&lt;br /&gt;
&lt;br /&gt;
In PHP and most other programming languages, content management systems (CMS), and frameworks, you can use the builtin email function. This may be referred to with names such as builtin, default, standard, local or sendmail.&lt;br /&gt;
&lt;br /&gt;
== Delay and limitations ==&lt;br /&gt;
&lt;br /&gt;
Because of the large amount of users on our hosting services, security breaches and misconfigurations due to user mismanagement happen from time to time. As many malicious actors focus their efforts on abusing servers with a good reputation for the distribution of spam, it is not uncommon to find several thousands of emails being sent once a problem occurs. To combat this, ULYSSIS hosting delays sending of emails for up to 5 minutes and verifies a certain amount (50) of email is never surpassed. If at any point the level is surpassed, ULYSSIS is notified and can take action, while probable spam is stopped from being transmitted. Therefore it is important to keep a potential delay in time when expecting email from your website, but also not to send vast amount of email all at once. It is in general good practice to spread the transmission of for example an email list with several hundred participants.&lt;br /&gt;
&lt;br /&gt;
[[Category:Webserver]]&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Thunderbird&amp;diff=1855</id>
		<title>Add an alias in Thunderbird</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Thunderbird&amp;diff=1855"/>
		<updated>2024-10-13T13:30:40Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: /* Add a mailbox to Thuderbird */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SMTPnotice|a forwarder as an alias}}&lt;br /&gt;
&lt;br /&gt;
You may want to send e-mail from Thunderbird using your @ulyssis.org address, or another domain name that you use for your account. Thunderbird allows you to do this. The KU Leuven provides an SMTP server which you can use as a student. Make sure the give your KU Leuven account access to this SMTP server using our tool on https://ulyssis.org/smtp before configuring Thunderbird.&lt;br /&gt;
&lt;br /&gt;
== Add a mailbox to Thuderbird ==&lt;br /&gt;
&lt;br /&gt;
Before you can add an alias to send mails, you should have a mailbox configured in Thunderbird. If you want to add your @ulyssis.org mailbox, you can use our [[Mailbox in Thunderbird]] docs. For other mail providers refer to their documentation or the documentation of Thunderbird. In most cases you can just follow the configuration steps when you first open Thunderbird.&lt;br /&gt;
&lt;br /&gt;
== Adding the KU Leuven SMTP server in Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
If you already have the KU Leuven SMTP server configured in Thunderbird, you can skip this step and proceed to [[#Configure an identity for your e-mail account|Configure an identity for your e-mail account]] below. You may have already added the KU Leuven SMTP server in Thunderbird when you created another alias or if you added your @ulyssis.org mailbox using our [[Mailbox in Thunderbird]] docs.&lt;br /&gt;
&lt;br /&gt;
Go to your '''Account Settings''' (Edit &amp;gt; Account Settings or Tools &amp;gt; Account Settings, depending on your operating system). At the bottom of the left sidebar, you will find an entry named '''Outgoing Server (SMTP)'''. Click this to access your SMTP settings.&lt;br /&gt;
&lt;br /&gt;
In your SMTP settings, you should see a list of existing SMTP servers. We want to add a new entry, so click the '''Add...''' button. In the screen that pops up, fill in the settings of the KU Leuven SMTP server, using the example screenshot below. Replace the displayed user name with your own KULid (m/r/s/u number). You will have to fill in the corresponding password on first use.&lt;br /&gt;
&lt;br /&gt;
[[File:Thunderbird-SMTPS.png]]&lt;br /&gt;
&lt;br /&gt;
== Configure an identity for your e-mail account ==&lt;br /&gt;
Back in the '''Account Settings''' screen, in the left sidebar, click on your e-mail address (not on any of its children). In the screen that opens, there will be a button '''Manage Identities...''' at the bottom. Click it.&lt;br /&gt;
&lt;br /&gt;
In the new screen, there will be one existing identity already: the default identity corresponding with your normal e-mail address. We want to add a new identity, so click the '''Add...''' button. In the screen that pops up, fill in the name and e-mail address you wish to use. At the bottom, make sure you choose the KU Leuven SMTP server as '''Outgoing Server'''. This is shown in the image below. &lt;br /&gt;
&lt;br /&gt;
[[File:Thunderbird-Identity.png]]&lt;br /&gt;
&lt;br /&gt;
If you're adding an identity for a group alias, you may also want to automatically send a copy of any replies or emails you're sending to the alias itself to make sure all others are aware of it. To do that, enable the BCC checkbox under the '''Copies &amp;amp; Folders''' tab. It should automatically contain the alias.&lt;br /&gt;
&lt;br /&gt;
== Sending your first e-mail ==&lt;br /&gt;
When you compose a new e-mail, you can change the sender in the &amp;quot;From&amp;quot; field to the identity you just configured. If everything was installed correctly, Thunderbird will show you a pop-up to enter your KU Leuven password when you try to send the e-mail. In this pop-up, you can choose to save this password for later use.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Thunderbird&amp;diff=1854</id>
		<title>Add an alias in Thunderbird</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Thunderbird&amp;diff=1854"/>
		<updated>2024-10-13T13:29:21Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SMTPnotice|a forwarder as an alias}}&lt;br /&gt;
&lt;br /&gt;
You may want to send e-mail from Thunderbird using your @ulyssis.org address, or another domain name that you use for your account. Thunderbird allows you to do this. The KU Leuven provides an SMTP server which you can use as a student. Make sure the give your KU Leuven account access to this SMTP server using our tool on https://ulyssis.org/smtp before configuring Thunderbird.&lt;br /&gt;
&lt;br /&gt;
== Add a mailbox to Thuderbird ==&lt;br /&gt;
&lt;br /&gt;
Before you can add an alias to send mails, you should have a mailbox configured in Thunderbird. If you want to add your @ulyssis.org mailbox, you can use our [[Mailbox in Thunderbird]] docs. For other mail providers refer to their documentation or the documentation of Thunderbird.&lt;br /&gt;
&lt;br /&gt;
== Adding the KU Leuven SMTP server in Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
If you already have the KU Leuven SMTP server configured in Thunderbird, you can skip this step and proceed to [[#Configure an identity for your e-mail account|Configure an identity for your e-mail account]] below. You may have already added the KU Leuven SMTP server in Thunderbird when you created another alias or if you added your @ulyssis.org mailbox using our [[Mailbox in Thunderbird]] docs.&lt;br /&gt;
&lt;br /&gt;
Go to your '''Account Settings''' (Edit &amp;gt; Account Settings or Tools &amp;gt; Account Settings, depending on your operating system). At the bottom of the left sidebar, you will find an entry named '''Outgoing Server (SMTP)'''. Click this to access your SMTP settings.&lt;br /&gt;
&lt;br /&gt;
In your SMTP settings, you should see a list of existing SMTP servers. We want to add a new entry, so click the '''Add...''' button. In the screen that pops up, fill in the settings of the KU Leuven SMTP server, using the example screenshot below. Replace the displayed user name with your own KULid (m/r/s/u number). You will have to fill in the corresponding password on first use.&lt;br /&gt;
&lt;br /&gt;
[[File:Thunderbird-SMTPS.png]]&lt;br /&gt;
&lt;br /&gt;
== Configure an identity for your e-mail account ==&lt;br /&gt;
Back in the '''Account Settings''' screen, in the left sidebar, click on your e-mail address (not on any of its children). In the screen that opens, there will be a button '''Manage Identities...''' at the bottom. Click it.&lt;br /&gt;
&lt;br /&gt;
In the new screen, there will be one existing identity already: the default identity corresponding with your normal e-mail address. We want to add a new identity, so click the '''Add...''' button. In the screen that pops up, fill in the name and e-mail address you wish to use. At the bottom, make sure you choose the KU Leuven SMTP server as '''Outgoing Server'''. This is shown in the image below. &lt;br /&gt;
&lt;br /&gt;
[[File:Thunderbird-Identity.png]]&lt;br /&gt;
&lt;br /&gt;
If you're adding an identity for a group alias, you may also want to automatically send a copy of any replies or emails you're sending to the alias itself to make sure all others are aware of it. To do that, enable the BCC checkbox under the '''Copies &amp;amp; Folders''' tab. It should automatically contain the alias.&lt;br /&gt;
&lt;br /&gt;
== Sending your first e-mail ==&lt;br /&gt;
When you compose a new e-mail, you can change the sender in the &amp;quot;From&amp;quot; field to the identity you just configured. If everything was installed correctly, Thunderbird will show you a pop-up to enter your KU Leuven password when you try to send the e-mail. In this pop-up, you can choose to save this password for later use.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Gmail&amp;diff=1853</id>
		<title>Add an alias in Gmail</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Gmail&amp;diff=1853"/>
		<updated>2024-10-12T12:24:08Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: Google stuurt geen bevestigingsmail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SMTPnotice|a forwarder as an alias}}&lt;br /&gt;
&lt;br /&gt;
You may want to send e-mail from Gmail using your @ulyssis.org address, or another domain name that you use for your account. Gmail allows you to do this, but asks for SMTP info. We don't provide SMTP on our own mail server, but you can use the SMTP servers of the KU Leuven.&lt;br /&gt;
&lt;br /&gt;
# In Gmail, click on the gear icon at the top right.&lt;br /&gt;
# Click '''See all settings''' (Dutch: '''Alle instellingen bekijken''').&lt;br /&gt;
# Go to the tab '''Accounts and Import''' (Dutch: '''Accounts en import''').&lt;br /&gt;
# Under '''Send mail as:''' (Dutch: '''Mail verzenden als:'''), click on: '''Add another email address''' (Dutch: '''Nog een e-mailadres toevoegen''').&lt;br /&gt;
# Fill in the email address you want to send from, and check '''Treat as an alias.''' (Dutch: '''Beschouwen als alias.''') More info: https://support.google.com/a/answer/1710338&lt;br /&gt;
# Optionally: Enter a '''Name''', the recipient will see this name instead of or next to your email address.&lt;br /&gt;
# Click on '''Next step''' (Dutch: '''Volgende stap''').&lt;br /&gt;
# Fill in the [https://admin.kuleuven.be/icts/english/services/email/imap-configuratie-en KU Leuven SMTP information] ([https://admin.kuleuven.be/icts/services/email/imap-configuratie Dutch]):&lt;br /&gt;
#*'''SMTP server''': '''smtps.kuleuven.be'''&lt;br /&gt;
#* '''Port''': '''465'''&lt;br /&gt;
#* '''Username''': your KU Leuven intranet userid r or u-number e.g. r0123456&lt;br /&gt;
#* '''Password''': your central KU Leuven password&lt;br /&gt;
#* '''Secured connection using''': '''SSL'''&lt;br /&gt;
# Click on the '''Add Account''' (Dutch: '''Account toevoegen''') button.&lt;br /&gt;
# Confirm your request using the link or code, you just received via an email on the address you provided.&lt;br /&gt;
&lt;br /&gt;
You can now send emails in Gmail from this address:&lt;br /&gt;
&lt;br /&gt;
# In Gmail, click '''Compose''' (Dutch: '''Opstellen''').&lt;br /&gt;
# Click on the email address next to '''From''' (Dutch: '''Van''').&lt;br /&gt;
# Select the email address you want to send from.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Hotmail/Outlook&amp;diff=1821</id>
		<title>Add an alias in Hotmail/Outlook</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Hotmail/Outlook&amp;diff=1821"/>
		<updated>2023-05-10T12:39:58Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{notice|Adding an alias to Hotmail/Outlook is not advised|Hotmail/Outlook does not use a relevant SMTP server, for example the one of the KU Leuven, to send emails as an alias. This may cause recipients to automatically reject your email or mark it as spam. You can circumvent this issue by using Thunderbird or another email provider. Please refer to [[Using a forwarder as an alias]] for some potential alternatives.}} &lt;br /&gt;
You may want to send e-mail from Outlook.com using your @ulyssis.org address, or another domain name that you use for your account. Outlook.com allows you to do this by configuring a few settings. Because you should only be able to send mails from an e-mail address you actually own, make sure that you configured receiving mails before starting this process. Outlook.com will send a confirmation mail to the provided e-mail address to confirm that you own it.&lt;br /&gt;
&lt;br /&gt;
# In Outlook.com, click on your profile image.&lt;br /&gt;
# Click '''My Microsoft account''' (Dutch: '''Mijn Microsoft-account''').&lt;br /&gt;
# Go to the tab '''Your info''' (Dutch: '''Je gegevens''').&lt;br /&gt;
# Under '''Account info''' (Dutch: '''Rekeninggegevens''') click on: '''Sign-in preferences''' (Dutch: '''Aanmeldingsvoorkeuren''').&lt;br /&gt;
# You will have to log in again to proceed. Click '''Add email''' (Dutch: '''E-mailadres toevoegen''').&lt;br /&gt;
# Select '''Add an existing email address as a Microsoft account alias''' (Dutch: '''Een bestaand e-mailadres als een Microsoft-accountalias toevoegen''') and fill in the email address you want to send from.&lt;br /&gt;
# Click '''Add alias''' (Dutch: '''Alias toevoegen''').&lt;br /&gt;
# Confirm your request using the link or code, you just received via an email on the address you provided.&lt;br /&gt;
&lt;br /&gt;
You can now send emails in Outlook.com from this address:&lt;br /&gt;
&lt;br /&gt;
# In Outlook.com, click '''New message''' (Dutch: '''Nieuw bericht''').&lt;br /&gt;
# Click on '''From''' (Dutch: '''Van''') and select the email address.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Hotmail/Outlook&amp;diff=1820</id>
		<title>Add an alias in Hotmail/Outlook</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Hotmail/Outlook&amp;diff=1820"/>
		<updated>2023-05-10T12:39:37Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{notice|Adding an alias to Hotmail/Outlook is not advised|Hotmail/Outlook does not use a relevant SMTP server, for example the one of the KU Leuven, to send emails as an alias. This may cause recipients to automatically reject your email or mark it as spam. You can circumvent this issue by using Thunderbird or another email provider. Please refer to [[Using a forwarder as an alias]] for some potential alternatives.}} &lt;br /&gt;
&lt;br /&gt;
You may want to send e-mail from Outlook.com using your @ulyssis.org address, or another domain name that you use for your account. Outlook.com allows you to do this by configuring a few settings. Because you should only be able to send mails from an e-mail address you actually own, make sure that you configured receiving mails before starting this process. Outlook.com will send a confirmation mail to the provided e-mail address to confirm that you own it.&lt;br /&gt;
&lt;br /&gt;
# In Outlook.com, click on your profile image.&lt;br /&gt;
# Click '''My Microsoft account''' (Dutch: '''Mijn Microsoft-account''').&lt;br /&gt;
# Go to the tab '''Your info''' (Dutch: '''Je gegevens''').&lt;br /&gt;
# Under '''Account info''' (Dutch: '''Rekeninggegevens''') click on: '''Sign-in preferences''' (Dutch: '''Aanmeldingsvoorkeuren''').&lt;br /&gt;
# You will have to log in again to proceed. Click '''Add email''' (Dutch: '''E-mailadres toevoegen''').&lt;br /&gt;
# Select '''Add an existing email address as a Microsoft account alias''' (Dutch: '''Een bestaand e-mailadres als een Microsoft-accountalias toevoegen''') and fill in the email address you want to send from.&lt;br /&gt;
# Click '''Add alias''' (Dutch: '''Alias toevoegen''').&lt;br /&gt;
# Confirm your request using the link or code, you just received via an email on the address you provided.&lt;br /&gt;
&lt;br /&gt;
You can now send emails in Outlook.com from this address:&lt;br /&gt;
&lt;br /&gt;
# In Outlook.com, click '''New message''' (Dutch: '''Nieuw bericht''').&lt;br /&gt;
# Click on '''From''' (Dutch: '''Van''') and select the email address.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Gmail&amp;diff=1714</id>
		<title>Add an alias in Gmail</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Gmail&amp;diff=1714"/>
		<updated>2022-06-07T15:12:54Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: Replace with new version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You may want to send e-mail from Gmail using your @ulyssis.org-address, or another domain name that you use for your account. Gmail allows you to do this, but asks for SMTP info. We don't provide SMTP on our own mail server, but you can use the SMTP servers of the KU Leuven.&lt;br /&gt;
Because you should only be able to send mails from an email address you actually own, make sure that you configured receiving mails before starting this process. Gmail will send a confirmation mail to the provided email address to confirm that you own it.&lt;br /&gt;
&lt;br /&gt;
# In Gmail, click on the gear icon at the top right.&lt;br /&gt;
# Click '''See all settings''' (Dutch: '''Alle instellingen bekijken''').&lt;br /&gt;
# Go to the tab '''Accounts and Import''' (Dutch: '''Accounts en import''').&lt;br /&gt;
# Under '''Send mail as:''' (Dutch: '''Mail verzenden als:'''), click on: '''Add another email address''' (Dutch: '''Nog een e-mailadres toevoegen''').&lt;br /&gt;
# Fill in the email address you want to send from, and check '''Treat as an alias.''' (Dutch: '''Beschouwen als alias.''') More info: https://support.google.com/a/answer/1710338&lt;br /&gt;
# Optionally: Enter a '''Name''', the recipient will see this name instead of or next to your email address.&lt;br /&gt;
# Click on '''Next step''' (Dutch: '''Volgende stap''').&lt;br /&gt;
# Fill in the [https://admin.kuleuven.be/icts/english/services/email/imap-configuratie-en KU Leuven SMTP information] ([https://admin.kuleuven.be/icts/services/email/imap-configuratie Dutch]):&lt;br /&gt;
#*'''SMTP server''': '''smtps.kuleuven.be'''&lt;br /&gt;
#* '''Port''': '''465'''&lt;br /&gt;
#* '''Username''': your KU Leuven intranet userid r or u-number e.g. r0123456&lt;br /&gt;
#* '''Password''': your central KU Leuven password&lt;br /&gt;
#* '''Secured connection using''': '''SSL'''&lt;br /&gt;
# Click on the '''Add Account''' (Dutch: '''Account toevoegen''') button.&lt;br /&gt;
# Confirm your request using the link or code, you just received via an email on the address you provided.&lt;br /&gt;
&lt;br /&gt;
You can now send emails in Gmail from this address:&lt;br /&gt;
&lt;br /&gt;
# In Gmail, click '''Compose''' (Dutch: '''Opstellen''').&lt;br /&gt;
# Click on the email address next to '''From''' (Dutch: '''Van''').&lt;br /&gt;
# Select the email address you want to send from.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Hotmail/Outlook&amp;diff=1706</id>
		<title>Add an alias in Hotmail/Outlook</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Hotmail/Outlook&amp;diff=1706"/>
		<updated>2022-04-21T12:07:51Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: Instructies aangepast aan nieuwe Outlook UI.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You may want to send e-mail from Outlook.com using your @ulyssis.org address, or another domain name that you use for your account. Outlook.com allows you to do this by configuring a few settings. Because you should only be able to send mails from an e-mail address you actually own, make sure that you configured receiving mails before starting this process. Outlook.com will send a confirmation mail to the provided e-mail address to confirm that you own it.&lt;br /&gt;
&lt;br /&gt;
# In Outlook.com, click on your profile image.&lt;br /&gt;
# Click '''My Microsoft account''' (Dutch: '''Mijn Microsoft-account''').&lt;br /&gt;
# Go to the tab '''Your info''' (Dutch: '''Je gegevens''').&lt;br /&gt;
# Under '''Account info''' (Dutch: '''Rekeninggegevens''') click on: '''Sign-in preferences''' (Dutch: '''Aanmeldingsvoorkeuren''').&lt;br /&gt;
# You will have to log in again to proceed. Click '''Add email''' (Dutch: '''E-mailadres toevoegen''').&lt;br /&gt;
# Select '''Add an existing email address as a Microsoft account alias''' (Dutch: '''Een bestaand e-mailadres als een Microsoft-accountalias toevoegen''') and fill in the email address you want to send from.&lt;br /&gt;
# Click '''Add alias''' (Dutch: '''Alias toevoegen''').&lt;br /&gt;
# Confirm your request using the link or code, you just received via an email on the address you provided.&lt;br /&gt;
&lt;br /&gt;
You can now send emails in Outlook.com from this address:&lt;br /&gt;
&lt;br /&gt;
# In Outlook.com, click '''New message''' (Dutch: '''Nieuw bericht''').&lt;br /&gt;
# Click on '''From''' (Dutch: '''Van''') and select the email address.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
	<entry>
		<id>https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Outlook.com&amp;diff=1668</id>
		<title>Add an alias in Outlook.com</title>
		<link rel="alternate" type="text/html" href="https://docs.ulyssis.org/index.php?title=Add_an_alias_in_Outlook.com&amp;diff=1668"/>
		<updated>2021-12-18T14:34:59Z</updated>

		<summary type="html">&lt;p&gt;Milanmeu: Add new page for alias in Outlook.com&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You may want to send e-mail from Outlook.com using your @ulyssis.org-address, or another domain name that you use for your account. Outlook.com allows you to do this by configuring a few settings.&lt;br /&gt;
&lt;br /&gt;
# In Outlook.com, click on the gear icon at the top right.&lt;br /&gt;
# Click '''View all Outlook settings''' (Dutch: '''Alle Outlook-instellingen weergeven''').&lt;br /&gt;
# Open the menu '''Mail''' (Dutch: '''E-mail'''), then: '''Sync email''' (Dutch: '''E-mail synchroniseren''').&lt;br /&gt;
# Under '''Email aliases''' (Dutch: '''E-mailaliassen''') select '''Other email accounts''' (Dutch: '''Andere e-mailaccounts''').&lt;br /&gt;
# Fill in the e-mail address you want to send from and your KU Leuven account password.&lt;br /&gt;
# Check '''Manually configure account settings (POP, IMAP, or send-only account)''' (Dutch: '''Accountinstellingen (POP-/IMAP-account of account voor alleen verzenden) handmatig configureren''').&lt;br /&gt;
# Click '''OK''' and fill in the following SMTP information (https://admin.kuleuven.be/icts/services/email/begrippen):&lt;br /&gt;
#* '''User name''': your KU Leuven intranet userid r or u number e.g. r0123456&lt;br /&gt;
#* '''Choose your connection type''': '''SMTP send-only connection settings'''&lt;br /&gt;
#* '''Outgoing (SMTP) server''': '''smtps.kuleuven.be'''&lt;br /&gt;
#* '''Outgoing server port''': '''465'''&lt;br /&gt;
# Optionally: Enter a '''Display name''', the recipient will see this name instead of or next to your email address. &lt;br /&gt;
# Press on '''OK'''.&lt;br /&gt;
&lt;br /&gt;
You can now send emails from this email address.&lt;br /&gt;
&lt;br /&gt;
# In Outlook.com, click '''New message''' (Dutch: ''' Nieuw bericht''').&lt;br /&gt;
# Click on '''From''' (Dutch: '''Van'''), and select '''Other email address...''' (Dutch: '''Ander e-mailadres...''').&lt;br /&gt;
# Enter the email address you want to send from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mail]]&lt;/div&gt;</summary>
		<author><name>Milanmeu</name></author>
	</entry>
</feed>