<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.eprints.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LukeWallin</id>
	<title>EPrints Documentation - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.eprints.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LukeWallin"/>
	<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/Special:Contributions/LukeWallin"/>
	<updated>2026-10-12T15:19:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.8</generator>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Main_Page&amp;diff=17553</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Main_Page&amp;diff=17553"/>
		<updated>2026-10-12T13:30:25Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /*  Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Howto]]__NOTOC__&lt;br /&gt;
= Welcome to the EPrints Wiki =&lt;br /&gt;
&lt;br /&gt;
This wiki contains technical and user-contributed documentation for the [[Introduction|EPrints repository software]].&lt;br /&gt;
&lt;br /&gt;
[http://tryme.demo.eprints-hosting.org/ Demoprints] is our live, online server that allows anyone to try EPrints without having to install it first.  There are also [http://pub.demo.eprints-hosting.org/ examples] of various 'flavours' of EPrints available to view as well as some more information on the [https://eprints.org/ EPrints project] and related activities.&lt;br /&gt;
&lt;br /&gt;
==New to EPrints?==&lt;br /&gt;
&lt;br /&gt;
Found out more through our:&lt;br /&gt;
* [[EPrints Glossary]] - Descriptions of the terminology used within EPrints repository software.&lt;br /&gt;
* [[:Category:Training Video|Video Training Course]] - Videos showing how to use, configure, maintain and develop EPrints repository software.&lt;br /&gt;
* [[EPrints_Manual|Documentation]] - Written documentation for how to use, configure, maintain and develop EPrints repository software.&lt;br /&gt;
* Mailing lists - There are two mail lists that you might like to join and where you can ask for help and share ideas:&lt;br /&gt;
**  '''[[eprints-tech Mailing List|The EPrints Technical Mailing List]]''' &lt;br /&gt;
*** If you have technical questions, or a part of your EPrints installation is not working properly, this group has people who might be able to help!&lt;br /&gt;
*** [[eprints-tech Mailing List|Click here]] for information about [[eprints-tech Mailing List#Subscription_Options|subscribing to this list]] or [[eprints-tech Mailing List#List_Archives|reading its archives]].&lt;br /&gt;
** '''[https://groups.google.com/forum/#!forum/eprints-uk-user-group The EPrints User Group Google Group]'''&lt;br /&gt;
*** This group is for anyone involved in using EPrints.  Ask questions, share ideas, hear about forthcoming meetings.&lt;br /&gt;
* How to [[Main_Page#Contributing_to_the_Wiki|contribute to the EPrints wiki]]&lt;br /&gt;
* EPrints source code on GitHub:&lt;br /&gt;
** Core and major plugins - https://github.com/eprints&lt;br /&gt;
** Community code sharing - https://eprintsug.github.io and the repositories at https://github.com/eprintsug&lt;br /&gt;
&lt;br /&gt;
== Download EPrints ==&lt;br /&gt;
&lt;br /&gt;
{{Download}}&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Installation|Installing]] EPrints on various platforms&lt;br /&gt;
&lt;br /&gt;
==[[New_Repository | Getting Started]]==&lt;br /&gt;
&lt;br /&gt;
* [[EPrints Manual|EPrints 3 Documentation]]&lt;br /&gt;
* [[Perl 101 for EPrints]]&lt;br /&gt;
* [[Frequently Asked Questions]]&lt;br /&gt;
* [[:Category:Howto|How to ...]]&lt;br /&gt;
* [[:Category:Plugins|Plugins and Bazaar packages for EPrints]]&lt;br /&gt;
* [[:Category:Training Video|EPrints Training Course]]&lt;br /&gt;
* [[Abubis - Staying Online with AI Bots]]&lt;br /&gt;
&lt;br /&gt;
==Getting Support==&lt;br /&gt;
&lt;br /&gt;
* [https://www.eprints.org/eprints-services/ EPrints Services] - premium support, training and hosting from EPrints experts&lt;br /&gt;
* [[Contact]] - mailing lists, bug reports etc.&lt;br /&gt;
* [[User group meetings]] - regional meetings for users, which often have notes, presentations and information of general interest&lt;br /&gt;
&lt;br /&gt;
==Add-ons, patches and translations==&lt;br /&gt;
* As of version 3.4 EPrints can be deployed in one of a number of [[EPrints Flavours|flavours]].  The flavours can be supplemented with [[EPrints Ingredients|ingredients]].  These ingredients are [https://github.com/search?q=topic%3Aingredient+org%3Aeprints+org%3Aeprintsug&amp;amp;type=repositories available from GitHub].&lt;br /&gt;
* As of version 3.3 EPrints can now install plugins and translations through the [https://bazaar.eprints.org EPrints Bazaar] the wiki also has information about [[:Category:EPrints Bazaar|packaging plugins for the Bazaar]].&lt;br /&gt;
* The [https://files.eprints.org/ EPrints Files Repository] contains add-on and 3rd party scripts, patches and translations. This also provides an archive of all previous EPrints releases (3.0 onwards).&lt;br /&gt;
* [[:Category:Plugins|Plugins]]: Some Wiki pages about scripts and patches.&lt;br /&gt;
&lt;br /&gt;
{{Register}}&lt;br /&gt;
&lt;br /&gt;
==Contributing to EPrints==&lt;br /&gt;
&lt;br /&gt;
* [[Usability|EPrints usability]]&lt;br /&gt;
* New features in EPrints - [[:Category:Releases|released]] and [[:Category:Planned Releases|proposed]]&lt;br /&gt;
* [[How to contribute|How to contribute to EPrints development]]&lt;br /&gt;
* [https://github.com/eprints/eprints3.4 EPrints 3.4 on GitHub] - Codebase, releases and issues tracker for EPrints 3.4.&lt;br /&gt;
* [https://github.com/eprints/eprints3 EPrints 3.3 on GitHub] - Codebase, releases and issues tracker for EPrints 3.3 (legacy).&lt;br /&gt;
&lt;br /&gt;
== Content management ==&lt;br /&gt;
&lt;br /&gt;
* [[Digital preservation]]: managing content for longer-term access and use&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17551</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17551"/>
		<updated>2026-10-12T13:30:05Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: LukeWallin moved page Staying Online with AI Bots to Abubis - Staying Online with AI Bots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;br /&gt;
&lt;br /&gt;
EPrints Services have been working on a solution that uses Anubis to attempt filter out bots for specific pages, and nginx to add a cache and apply rate and connection limiting. Our solution is tailored to our hosting infrastructure, but should be relatively easy to adapt to a bespoke EPrints installation. This page documents how the solution works and how it is configured.&lt;br /&gt;
&lt;br /&gt;
=== Our Solution ===&lt;br /&gt;
&lt;br /&gt;
The ingredient [https://github.com/eprints/anubis &amp;quot;Anubis&amp;quot;] contains our solution with Anubis and Nginx. Its README will be the most up to date source of information, therefore this will only summarise.&lt;br /&gt;
&lt;br /&gt;
* EPrints is run on its own internal instance of Apache, because it is unstable in Apache's multithreaded mode, and the layers in front exacerbate the effects of a segfault.&lt;br /&gt;
* Apache is used as the front webserver (listening on port 80/443) because this is currently the only way to support Shibboleth Single Sign On and SSL is already configured for Apache.&lt;br /&gt;
* Nginx is used instead of Apache because it natively supports more open connections than Apache (originally it was intended to be the front facing webserver) and it has some very useful rate limiting and caching features.&lt;br /&gt;
* In order to support not caching logged in users, the ingredient has some fixes for core EPrints code for setting and unsetting session cookies. Hopefully the next (3.4.9) release of EPrints will include these fixes.&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Staying_Online_with_AI_Bots&amp;diff=17552</id>
		<title>Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Staying_Online_with_AI_Bots&amp;diff=17552"/>
		<updated>2026-10-12T13:30:05Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: LukeWallin moved page Staying Online with AI Bots to Abubis - Staying Online with AI Bots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Abubis - Staying Online with AI Bots]]&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17550</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17550"/>
		<updated>2026-10-12T13:19:43Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Our Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;br /&gt;
&lt;br /&gt;
EPrints Services have been working on a solution that uses Anubis to attempt filter out bots for specific pages, and nginx to add a cache and apply rate and connection limiting. Our solution is tailored to our hosting infrastructure, but should be relatively easy to adapt to a bespoke EPrints installation. This page documents how the solution works and how it is configured.&lt;br /&gt;
&lt;br /&gt;
=== Our Solution ===&lt;br /&gt;
&lt;br /&gt;
The ingredient [https://github.com/eprints/anubis &amp;quot;Anubis&amp;quot;] contains our solution with Anubis and Nginx. Its README will be the most up to date source of information, therefore this will only summarise.&lt;br /&gt;
&lt;br /&gt;
* EPrints is run on its own internal instance of Apache, because it is unstable in Apache's multithreaded mode, and the layers in front exacerbate the effects of a segfault.&lt;br /&gt;
* Apache is used as the front webserver (listening on port 80/443) because this is currently the only way to support Shibboleth Single Sign On and SSL is already configured for Apache.&lt;br /&gt;
* Nginx is used instead of Apache because it natively supports more open connections than Apache (originally it was intended to be the front facing webserver) and it has some very useful rate limiting and caching features.&lt;br /&gt;
* In order to support not caching logged in users, the ingredient has some fixes for core EPrints code for setting and unsetting session cookies. Hopefully the next (3.4.9) release of EPrints will include these fixes.&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17549</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17549"/>
		<updated>2026-10-12T13:17:05Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;br /&gt;
&lt;br /&gt;
EPrints Services have been working on a solution that uses Anubis to attempt filter out bots for specific pages, and nginx to add a cache and apply rate and connection limiting. Our solution is tailored to our hosting infrastructure, but should be relatively easy to adapt to a bespoke EPrints installation. This page documents how the solution works and how it is configured.&lt;br /&gt;
&lt;br /&gt;
=== Our Solution ===&lt;br /&gt;
&lt;br /&gt;
The ingredient [https://github.com/eprints/anubis &amp;quot;Anubis&amp;quot;] contains our solution with Anubis and Nginx. Its README will be the most up to date source of information, therefore this will only summarise.&lt;br /&gt;
&lt;br /&gt;
* EPrints is run on its own internal instance of Apache, because it is unstable in Apache's multithreaded mode, and the layers in front exacerbate the effects of a segfault.&lt;br /&gt;
* Apache is used as the front webserver (listening on port 80/443) because this is currently the only way to support Shibboleth Single Sign On and SSL is already configured for Apache.&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17548</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17548"/>
		<updated>2026-10-12T13:13:20Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;br /&gt;
&lt;br /&gt;
EPrints Services have been working on a solution that uses Anubis to attempt filter out bots for specific pages, and nginx to add a cache and apply rate and connection limiting. Our solution is tailored to our hosting infrastructure, but should be relatively easy to adapt to a bespoke EPrints installation. This page documents how the solution works and how it is configured.&lt;br /&gt;
&lt;br /&gt;
=== Our Solution ===&lt;br /&gt;
&lt;br /&gt;
The ingredient [https://github.com/eprints/anubis &amp;quot;Anubis&amp;quot;] contains our solution with Anubis and Nginx. Its README will be the most up to date source of information, therefore this will only summarise.&lt;br /&gt;
&lt;br /&gt;
* EPrints is run on its own internal instance of Apache, because it is unstable in Apache's multithreaded mode.&lt;br /&gt;
* Apache is used as the front webserver (listening on port 80/443) because SSL is&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17547</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17547"/>
		<updated>2026-10-12T13:13:10Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;br /&gt;
&lt;br /&gt;
EPrints Services have been working on a solution that uses Anubis to attempt filter out bots for specific pages, and nginx to add a cache and apply rate and connection limiting. Our solution is tailored to our hosting infrastructure, but should be relatively easy to adapt to a bespoke EPrints installation. This page documents how the solution works and how it is configured.&lt;br /&gt;
&lt;br /&gt;
=== Our Solution ===&lt;br /&gt;
&lt;br /&gt;
The ingredient [https://github.com/eprints/anubis &amp;quot;Anubis&amp;quot;] contains our solution with Anubis and Nginx. Its README will be the most up to date source of information, therefore this will only summarise.&lt;br /&gt;
&lt;br /&gt;
 * EPrints is run on its own internal instance of Apache, because it is unstable in Apache's multithreaded mode.&lt;br /&gt;
 * Apache is used as the front webserver (listening on port 80/443) because SSL is&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17546</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17546"/>
		<updated>2026-10-12T13:12:11Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;br /&gt;
&lt;br /&gt;
EPrints Services have been working on a solution that uses Anubis to attempt filter out bots for specific pages, and nginx to add a cache and apply rate and connection limiting. Our solution is tailored to our hosting infrastructure, but should be relatively easy to adapt to a bespoke EPrints installation. This page documents how the solution works and how it is configured.&lt;br /&gt;
&lt;br /&gt;
=== Our Solution ===&lt;br /&gt;
&lt;br /&gt;
The ingredient [https://github.com/eprints/anubis &amp;quot;Anubis&amp;quot;] contains our solution with Anubis and Nginx. Its README will be the most up to date source of information, therefore this will only summarise.&lt;br /&gt;
&lt;br /&gt;
 * EPrints is run on its own internal instance of Apache, because it is unstable in Apache's multithreaded mode.&lt;br /&gt;
 *&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17545</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17545"/>
		<updated>2026-10-12T13:10:05Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;br /&gt;
&lt;br /&gt;
EPrints Services have been working on a solution that uses Anubis to attempt filter out bots for specific pages, and nginx to add a cache and apply rate and connection limiting. Our solution is tailored to our hosting infrastructure, but should be relatively easy to adapt to a bespoke EPrints installation. This page documents how the solution works and how it is configured.&lt;br /&gt;
&lt;br /&gt;
=== Our Solution ===&lt;br /&gt;
&lt;br /&gt;
The ingredient [https://github.com/eprints/anubis &amp;quot;Anubis&amp;quot;] contains our solution with Anubis and Nginx. Its README will be the most up to date source of information&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17544</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17544"/>
		<updated>2026-10-12T12:41:58Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;br /&gt;
&lt;br /&gt;
EPrints Services have been working on a solution that uses Anubis to attempt filter out bots for specific pages, and nginx to add a cache and apply rate and connection limiting. Our solution is tailored to our hosting infrastructure, but should be relatively easy to adapt to a bespoke EPrints installation. This page documents how the solution works and how it is configured.&lt;br /&gt;
&lt;br /&gt;
=== Our Solution ===&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17543</id>
		<title>Abubis - Staying Online with AI Bots</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Abubis_-_Staying_Online_with_AI_Bots&amp;diff=17543"/>
		<updated>2026-10-12T11:00:33Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: Created page with &amp;quot;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==  From 2025(ish) onwards, EPrints instances can struggle to...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardening your EPrints instance so it can survive the onslaught of bizarre behaviour from (presumed) AI bots. ==&lt;br /&gt;
&lt;br /&gt;
From 2025(ish) onwards, EPrints instances can struggle to stay online from DDOS-like behaviour that is flung at it regularly.&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Main_Page&amp;diff=17542</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Main_Page&amp;diff=17542"/>
		<updated>2026-10-12T10:56:44Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /*  Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Howto]]__NOTOC__&lt;br /&gt;
= Welcome to the EPrints Wiki =&lt;br /&gt;
&lt;br /&gt;
This wiki contains technical and user-contributed documentation for the [[Introduction|EPrints repository software]].&lt;br /&gt;
&lt;br /&gt;
[http://tryme.demo.eprints-hosting.org/ Demoprints] is our live, online server that allows anyone to try EPrints without having to install it first.  There are also [http://pub.demo.eprints-hosting.org/ examples] of various 'flavours' of EPrints available to view as well as some more information on the [https://eprints.org/ EPrints project] and related activities.&lt;br /&gt;
&lt;br /&gt;
==New to EPrints?==&lt;br /&gt;
&lt;br /&gt;
Found out more through our:&lt;br /&gt;
* [[EPrints Glossary]] - Descriptions of the terminology used within EPrints repository software.&lt;br /&gt;
* [[:Category:Training Video|Video Training Course]] - Videos showing how to use, configure, maintain and develop EPrints repository software.&lt;br /&gt;
* [[EPrints_Manual|Documentation]] - Written documentation for how to use, configure, maintain and develop EPrints repository software.&lt;br /&gt;
* Mailing lists - There are two mail lists that you might like to join and where you can ask for help and share ideas:&lt;br /&gt;
**  '''[[eprints-tech Mailing List|The EPrints Technical Mailing List]]''' &lt;br /&gt;
*** If you have technical questions, or a part of your EPrints installation is not working properly, this group has people who might be able to help!&lt;br /&gt;
*** [[eprints-tech Mailing List|Click here]] for information about [[eprints-tech Mailing List#Subscription_Options|subscribing to this list]] or [[eprints-tech Mailing List#List_Archives|reading its archives]].&lt;br /&gt;
** '''[https://groups.google.com/forum/#!forum/eprints-uk-user-group The EPrints User Group Google Group]'''&lt;br /&gt;
*** This group is for anyone involved in using EPrints.  Ask questions, share ideas, hear about forthcoming meetings.&lt;br /&gt;
* How to [[Main_Page#Contributing_to_the_Wiki|contribute to the EPrints wiki]]&lt;br /&gt;
* EPrints source code on GitHub:&lt;br /&gt;
** Core and major plugins - https://github.com/eprints&lt;br /&gt;
** Community code sharing - https://eprintsug.github.io and the repositories at https://github.com/eprintsug&lt;br /&gt;
&lt;br /&gt;
== Download EPrints ==&lt;br /&gt;
&lt;br /&gt;
{{Download}}&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Installation|Installing]] EPrints on various platforms&lt;br /&gt;
&lt;br /&gt;
==[[New_Repository | Getting Started]]==&lt;br /&gt;
&lt;br /&gt;
* [[EPrints Manual|EPrints 3 Documentation]]&lt;br /&gt;
* [[Perl 101 for EPrints]]&lt;br /&gt;
* [[Frequently Asked Questions]]&lt;br /&gt;
* [[:Category:Howto|How to ...]]&lt;br /&gt;
* [[:Category:Plugins|Plugins and Bazaar packages for EPrints]]&lt;br /&gt;
* [[:Category:Training Video|EPrints Training Course]]&lt;br /&gt;
* [[Staying Online with AI Bots]]&lt;br /&gt;
&lt;br /&gt;
==Getting Support==&lt;br /&gt;
&lt;br /&gt;
* [https://www.eprints.org/eprints-services/ EPrints Services] - premium support, training and hosting from EPrints experts&lt;br /&gt;
* [[Contact]] - mailing lists, bug reports etc.&lt;br /&gt;
* [[User group meetings]] - regional meetings for users, which often have notes, presentations and information of general interest&lt;br /&gt;
&lt;br /&gt;
==Add-ons, patches and translations==&lt;br /&gt;
* As of version 3.4 EPrints can be deployed in one of a number of [[EPrints Flavours|flavours]].  The flavours can be supplemented with [[EPrints Ingredients|ingredients]].  These ingredients are [https://github.com/search?q=topic%3Aingredient+org%3Aeprints+org%3Aeprintsug&amp;amp;type=repositories available from GitHub].&lt;br /&gt;
* As of version 3.3 EPrints can now install plugins and translations through the [https://bazaar.eprints.org EPrints Bazaar] the wiki also has information about [[:Category:EPrints Bazaar|packaging plugins for the Bazaar]].&lt;br /&gt;
* The [https://files.eprints.org/ EPrints Files Repository] contains add-on and 3rd party scripts, patches and translations. This also provides an archive of all previous EPrints releases (3.0 onwards).&lt;br /&gt;
* [[:Category:Plugins|Plugins]]: Some Wiki pages about scripts and patches.&lt;br /&gt;
&lt;br /&gt;
{{Register}}&lt;br /&gt;
&lt;br /&gt;
==Contributing to EPrints==&lt;br /&gt;
&lt;br /&gt;
* [[Usability|EPrints usability]]&lt;br /&gt;
* New features in EPrints - [[:Category:Releases|released]] and [[:Category:Planned Releases|proposed]]&lt;br /&gt;
* [[How to contribute|How to contribute to EPrints development]]&lt;br /&gt;
* [https://github.com/eprints/eprints3.4 EPrints 3.4 on GitHub] - Codebase, releases and issues tracker for EPrints 3.4.&lt;br /&gt;
* [https://github.com/eprints/eprints3 EPrints 3.3 on GitHub] - Codebase, releases and issues tracker for EPrints 3.3 (legacy).&lt;br /&gt;
&lt;br /&gt;
== Content management ==&lt;br /&gt;
&lt;br /&gt;
* [[Digital preservation]]: managing content for longer-term access and use&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=How_to_add_monthly_downloads_to_abstract&amp;diff=17170</id>
		<title>How to add monthly downloads to abstract</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=How_to_add_monthly_downloads_to_abstract&amp;diff=17170"/>
		<updated>2026-09-21T13:30:29Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Howto]]&lt;br /&gt;
&lt;br /&gt;
create zz_irstats2.pl in archive&lt;br /&gt;
&lt;br /&gt;
# If you are embedding in abstract pages using a phrase set below to 1.&lt;br /&gt;
$c-&amp;gt;{irstats2}-&amp;gt;{abstract_embed} = 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then in abstract xml:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Downloads for the past 3 years --&amp;gt;&lt;br /&gt;
  &amp;lt;h3&amp;gt;Monthly Downloads for the past 3 years&amp;lt;/h3&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;downloadsmonthlygraph&amp;quot; class=&amp;quot;irstats2_googlegraph&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
        document.observe( &amp;quot;dom:loaded&amp;quot;, function() {&lt;br /&gt;
                new EPJS_Stats_GoogleGraph( {&lt;br /&gt;
                        'context': { 'datatype': 'downloads', 'range': '3y', 'set_name': 'eprint', 'set_value': '&amp;lt;epc:print expr=&amp;quot;eprintid&amp;quot;/&amp;gt;' },&lt;br /&gt;
                        'options': { 'graph_type': 'column', 'container_id': 'downloadsmonthlygraph', 'view': 'Google:Graph', 'show_average': '0', 'date_resolution': 'month' }&lt;br /&gt;
                } );&lt;br /&gt;
        });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=How_to_add_monthly_downloads_to_abstract&amp;diff=17169</id>
		<title>How to add monthly downloads to abstract</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=How_to_add_monthly_downloads_to_abstract&amp;diff=17169"/>
		<updated>2026-09-21T13:28:35Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: Created page with &amp;quot;create zz_irstats2.pl in archive  # If you are embedding in abstract pages using a phrase set below to 1. $c-&amp;gt;{irstats2}-&amp;gt;{abstract_embed} = 1;   then in abstract xml:    &amp;lt;!--...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;create zz_irstats2.pl in archive&lt;br /&gt;
&lt;br /&gt;
# If you are embedding in abstract pages using a phrase set below to 1.&lt;br /&gt;
$c-&amp;gt;{irstats2}-&amp;gt;{abstract_embed} = 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
then in abstract xml:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- Downloads for the past 3 years --&amp;gt;&lt;br /&gt;
  &amp;lt;h3&amp;gt;Monthly Downloads for the past 3 years&amp;lt;/h3&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;downloadsmonthlygraph&amp;quot; class=&amp;quot;irstats2_googlegraph&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
        document.observe( &amp;quot;dom:loaded&amp;quot;, function() {&lt;br /&gt;
                new EPJS_Stats_GoogleGraph( {&lt;br /&gt;
                        'context': { 'datatype': 'downloads', 'range': '3y', 'set_name': 'eprint', 'set_value': '&amp;lt;epc:print expr=&amp;quot;eprintid&amp;quot;/&amp;gt;' },&lt;br /&gt;
                        'options': { 'graph_type': 'column', 'container_id': 'downloadsmonthlygraph', 'view': 'Google:Graph', 'show_average': '0', 'date_resolution': 'month' }&lt;br /&gt;
                } );&lt;br /&gt;
        });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Installing_EPrints_on_RHEL/Fedora/CentOS&amp;diff=17168</id>
		<title>Installing EPrints on RHEL/Fedora/CentOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Installing_EPrints_on_RHEL/Fedora/CentOS&amp;diff=17168"/>
		<updated>2026-09-14T09:25:42Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Create initial directory with correct permissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{manual}}&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Red Hat Enterprise (RHEL) / CentOS / Rocky Linux 8 or 9. (EPrints can be installed on RHEL / CentOS / Rocky Linux 10 but there are currently a [[#RHEL / CentOS / Rocky 10|number of issues]], some which should be resolved in later version of these Linux OSs).&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Pre-install and enable the EPEL DNF repository.&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf install epel-release&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pre-install and enable the CodeReady Builder DNF repository.&lt;br /&gt;
** RHEL&lt;br /&gt;
**: &amp;lt;code&amp;gt;subscription-manager repos --enable &amp;quot;codeready-builder-for-rhel-$(releasever)-$(arch)-rpms&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** CentOS Stream / Rocky Linux 8&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf config-manager --set-enabled powertools&amp;lt;/code&amp;gt;&lt;br /&gt;
** CentOS Stream / Rocky Linux 9 and 10&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf config-manager --set-enabled crb&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pre-install MySQL server and client and make sure the former is enabled and running.&lt;br /&gt;
** RHEL / Fedora:&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf install mysql-server mysql mysql-devel&amp;lt;br/&amp;gt;&amp;amp;nbsp;systemctl enable --now mysqld&amp;lt;/code&amp;gt;&lt;br /&gt;
** CentOS / Rocky Linux:&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf install mariadb-server mariadb mariadb-devel&amp;lt;br/&amp;gt;&amp;amp;nbsp;systemctl enable --now mariadb&amp;lt;/code&amp;gt;&lt;br /&gt;
* From the MySQL command prompt, pre-configure an eprints user with password for MariaDB/MySQL, which can be used as the Database super user when creating the database for an archive. (Be sure to change the password from &amp;quot;changeme&amp;quot;):&lt;br /&gt;
*: &amp;lt;code&amp;gt;CREATE USER 'eprints'@'localhost' IDENTIFIED by 'changeme';&amp;lt;br/&amp;gt;&amp;amp;nbsp;GRANT ALL PRIVILEGES ON *.* TO 'eprints'@'localhost' WITH GRANT OPTION;&amp;lt;/code&amp;gt;&lt;br /&gt;
* As root, from a command prompt add the &amp;lt;tt&amp;gt;eprints&amp;lt;/tt&amp;gt; user:&lt;br /&gt;
*: &amp;lt;code&amp;gt;adduser eprints&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
The following RPMs need to be installed using the dnf command:&lt;br /&gt;
 dnf install libxml2 libxslt httpd mod_perl perl-Apache-DBI perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL \&lt;br /&gt;
     perl-Time-HiRes perl-CGI perl-Digest-MD5 perl-Digest-SHA perl-Digest-SHA1 perl-JSON perl-XML-LibXML \&lt;br /&gt;
     perl-XML-LibXSLT perl-XML-SAX perl-MIME-Lite perl-Text-Unidecode perl-JSON perl-Unicode-Collate \&lt;br /&gt;
     perl-LWP-Protocol-https perl-IO-String tetex-latex wget gzip tar ImageMagick poppler-utils \&lt;br /&gt;
     chkconfig unzip cpan python3-html2text expat-devel libxslt-devel&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' If you are running RHEL / CentOS / Rocky Linux 10, '''perl-Apache-DBI''' is no longer available and will need to be installed with CPAN and '''python3-html2text''' will not be available until RHEL / CentOS / Rocky Linux 10.1.  You should exclude these when running the dnf command above.  (See [[#RHEL_.2F_CentOS_.2F_Rocky_10|Operating System Version Specific Requirements for RHEL / CentOS / Rocky Linux 10]] below for more details).&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints 3.4.7 from Source ==&lt;br /&gt;
'''Ideally you will install from source from [https://github.com/eprints/eprints3.4 EPrints Core Git repository], which includes the core codebase and the publications flavour.  However, you may choose to download tarballs of the EPrints core codebase and publications flavour from files.eprints.org as an alternative means of installation.&lt;br /&gt;
&lt;br /&gt;
== Downloading and Deploying EPrints Source ==&lt;br /&gt;
&lt;br /&gt;
=== Create initial directory with correct permissions ===&lt;br /&gt;
As root:&lt;br /&gt;
 mkdir /opt/eprints3&lt;br /&gt;
 chown eprints:eprints /opt/eprints3&lt;br /&gt;
 chmod 2775 /opt/eprints3&lt;br /&gt;
&lt;br /&gt;
=== Cloning from Git ===&lt;br /&gt;
Clone the Git repository from GitHub to &amp;lt;tt&amp;gt;/opt/&amp;lt;/tt&amp;gt; and set the &amp;lt;tt&amp;gt;eprints&amp;lt;/tt&amp;gt; user as the owner.  It is probably best to checkout the latest release rather than using HEAD, which may have known issues:&lt;br /&gt;
&lt;br /&gt;
 dnf install git&lt;br /&gt;
 su eprints&lt;br /&gt;
 git clone https://github.com/eprints/eprints3.4.git /opt/eprints3&lt;br /&gt;
 cd /opt/eprints3/&lt;br /&gt;
 git checkout tags/v3.4.7&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;getting_started_and_apache&amp;quot;&amp;gt;EPrints&amp;lt;/span&amp;gt; is now fully installed at &amp;lt;tt&amp;gt;/opt/eprints3&amp;lt;/tt&amp;gt;. However, you will not yet have a running archive. Follow the [[Getting Started with EPrints 3]] instructions to set this up.&lt;br /&gt;
&lt;br /&gt;
== Post-configuration ==&lt;br /&gt;
Add the &amp;lt;tt&amp;gt;eprints&amp;lt;/tt&amp;gt; user to the &amp;lt;tt&amp;gt;apache&amp;lt;/tt&amp;gt; group and vice-versa.&lt;br /&gt;
 usermod -aG apache eprints&lt;br /&gt;
 usermod -aG eprints apache&lt;br /&gt;
&lt;br /&gt;
Finally, restart Apache:&lt;br /&gt;
  service httpd restart&lt;br /&gt;
&lt;br /&gt;
=== SELinux ===&lt;br /&gt;
There is a fair chance your operating system will have SELinux enabled.  If so, follow the advice at [[EPrints and SELinux]] for how to let EPrints do what it needs to do through SELinux.  Otherwise, you could disable SELinux with the following:&lt;br /&gt;
 setenforce 0&lt;br /&gt;
However, that will only disable it until the next reboot. You should also edit '''/etc/selinux/config''' and make sure the &amp;lt;code&amp;gt;SELINUX=enforcing&amp;lt;/code&amp;gt; is set to:&lt;br /&gt;
 SELINUX=disabled&lt;br /&gt;
&lt;br /&gt;
== Non-critical Dependencies ==&lt;br /&gt;
Some of EPrints non-core functionality may not work out of the box as these dependencies are not included as part of the installation process.  Here is a list of known additional packages (and the DNF repositories in which they can be found) or CPAN modules than can be installed.  The latter should be installed using the ''cpan'' command as the root user.&lt;br /&gt;
 &lt;br /&gt;
* '''perl-Geo-IP (epel)''' - Allows IRstats2 to determine the location of views/downloads for publications. (RHEL/CentOS/Rocky Linux 8 only)&lt;br /&gt;
* '''perl-GeoIP2 (@System and epel)''' - Allows IRstats2 to determine the location of views/downloads for publications. (RHEL/CentOS/Rocky Linux 9+)&lt;br /&gt;
* '''perl-Spreadsheet-WriteExcel (epel)''' - To allow Multiline Excel export.&lt;br /&gt;
* '''CPAN module Text::Refer''' - Required for EndNote import.&lt;br /&gt;
* '''CPAN module TeX::Encode''' - Required for BibTex export needed for publications flavour.&lt;br /&gt;
* '''perl-Image-ExifTool (epel)''' - Sometimes needed to support generation of thumbnails for uploaded documents/images.&lt;br /&gt;
* '''perl-LWP-Protocol-https (base)''' - Needed by DataCite plugin to register repository DOIs.&lt;br /&gt;
&lt;br /&gt;
== Operating System Version Specific Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== RHEL / CentOS / Rocky 8 ===&lt;br /&gt;
{{:Issues with installing EPrints on RHEL / CentOS / Rocky 8}}&lt;br /&gt;
&lt;br /&gt;
=== RHEL / CentOS / Rocky 9 ===&lt;br /&gt;
{{:Issues with installing EPrints on RHEL / CentOS / Rocky 9}}&lt;br /&gt;
&lt;br /&gt;
=== RHEL / CentOS / Rocky 10 ===&lt;br /&gt;
{{:Issues with installing EPrints on RHEL / CentOS / Rocky 10}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
* If setup is successful but then you cannot access EPrints through your web browser this is often due to firewalld being enabled by default on recent versions of RHEL, Fedora and CentOS.  If firewalld is running either disable it (&amp;lt;tt&amp;gt;systemctl disable --now firewalld&amp;lt;/tt&amp;gt;) or [https://docs.rackspace.com/support/how-to/allow-web-traffic-in-a-firewalld-software-firewall/ configure it to allow HTTP/HTTPS traffic].&lt;br /&gt;
* If you are running a version of EPrints below 3.4.6 you cannot run Apache in MPM event mode and you need to use MPM prefork instead.  This is due to Perl's &amp;lt;tt&amp;gt;XML::LibXSLT&amp;lt;/tt&amp;gt; being initiated at the wrong time leading earlier version of EPrints to cause Apache (httpd) to segfault when started.  If you are running an earlier version and want to run Apache in MPM event mode, you can uninstall &amp;lt;tt&amp;gt;XML::LibXSLT&amp;lt;/tt&amp;gt; either as the RPM perl-XML-LibXSLT or possible from CPAN using &amp;lt;code&amp;gt;cpanm --uninstall XML::LibXSLT&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you are having problems uploading files or similar functional issues, this may be due to SELinux being enabled. [[EPrints and SELinux|See advice for enabling SELinux with EPrints]].&lt;br /&gt;
* If you are having trouble getting additional subdomains beyond username.eprints-hosting.org working, then it could be you need wildcards enabled on the DNS records to facilitate the likes of somethingcoolhere.username.eprints-hosting.org urls.&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Installing_EPrints_on_Debian/Ubuntu&amp;diff=17167</id>
		<title>Installing EPrints on Debian/Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Installing_EPrints_on_Debian/Ubuntu&amp;diff=17167"/>
		<updated>2026-09-14T09:25:37Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Downloading and Deploying EPrints Source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{manual}}&lt;br /&gt;
[[Category:Debian and Ubuntu]]&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Ubuntu 22.04 LTS and Ubuntu 24.04 LTS (non-LTS versions not recommended)&lt;br /&gt;
* Debian 11 (Bullseye), Debian 12 (Bookworm) or Debian 13 (Trixie) - These are not as comprehensively tested as Ubuntu LTS versions.&lt;br /&gt;
&lt;br /&gt;
=== Dependencies and Pre-configuration ===&lt;br /&gt;
'''The ideal way to install from source is via git using the Core Git repositories [https://github.com/eprints/eprints3.4 EPrints 3.4] or [https://github.com/eprints/eprints EPrints 3.3], and installing from a source tarball is generally discouraged.'''&lt;br /&gt;
&lt;br /&gt;
'''Installing from source via git is now the recommended  way to install EPrints for production repositories, after having proved to be a useful installation method to those seeking to develop the EPrints code, develop a plugin or develop a Bazaar package too.'''&lt;br /&gt;
&lt;br /&gt;
First, as the root user install all the dependencies for EPrints ('''N.B.''' Some dependencies may not be able in certain versions of Debian/Ubuntu.  See [[#Operating System Version Specific Requirements|Operating System Version Specific Requirements]] towards the end of this page):&lt;br /&gt;
&lt;br /&gt;
 apt install perl libncurses6 libselinux1 apache2 libapache2-mod-perl2 libxml-libxml-perl \&lt;br /&gt;
   libunicode-string-perl libterm-readkey-perl libmime-lite-perl libmime-types-perl libdigest-sha-perl \&lt;br /&gt;
   libdbd-mysql-perl libxml-parser-perl libxml2-dev libxml-twig-perl libarchive-any-perl libjson-perl \&lt;br /&gt;
   liblwp-protocol-https-perl libtext-unidecode-perl lynx wget ghostscript poppler-utils antiword elinks \&lt;br /&gt;
   texlive-base texlive-binaries psutils imagemagick adduser tar gzip unzip libsearch-xapian-perl \&lt;br /&gt;
   libtex-encode-perl libio-string-perl python3-html2text make libexpat1-dev libxslt1-dev&lt;br /&gt;
&lt;br /&gt;
If you are installing on Ubuntu, install MySQL server and client:&lt;br /&gt;
&lt;br /&gt;
  apt install mysql-server mysql-client libmysqlclient-dev&lt;br /&gt;
&lt;br /&gt;
If you are installing on Debian, install MariaDB server and client:&lt;br /&gt;
&lt;br /&gt;
  apt install mariadb-server mariadb-client libmariadb-dev&lt;br /&gt;
&lt;br /&gt;
Next, create the eprints user&lt;br /&gt;
&lt;br /&gt;
 adduser eprints&lt;br /&gt;
&lt;br /&gt;
Now add the eprints user to the www-data group and vice-versa&lt;br /&gt;
&lt;br /&gt;
 usermod -a -G eprints www-data&lt;br /&gt;
 usermod -a -G www-data eprints&lt;br /&gt;
&lt;br /&gt;
=== Downloading and Deploying EPrints Source ===&lt;br /&gt;
&lt;br /&gt;
==== Create initial directory with correct permissions ====&lt;br /&gt;
As root:&lt;br /&gt;
 mkdir /opt/eprints3&lt;br /&gt;
 chown eprints:eprints /opt/eprints3&lt;br /&gt;
 chmod 2775 /opt/eprints3&lt;br /&gt;
&lt;br /&gt;
==== Cloning from Git ====&lt;br /&gt;
&lt;br /&gt;
 apt install git&lt;br /&gt;
 su eprints&lt;br /&gt;
 git clone https://github.com/eprints/eprints3.4.git /opt/eprints3&lt;br /&gt;
 cd /opt/eprints3/&lt;br /&gt;
 git checkout tags/v3.4.7&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Next, as the eprints user copy &amp;lt;code&amp;gt;EPRINTS_PATH/perl_lib/EPrints/SystemSettings.pm.tmpl&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;EPRINTS_PATH/perl_lib/EPrints/SystemSettings.pm&amp;lt;/code&amp;gt;, if it does not already exist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;EPRINTS_PATH&amp;lt;/code&amp;gt; should now always be &amp;lt;code&amp;gt;/opt/eprints3&amp;lt;/code&amp;gt;.  However, historically other paths have been used when EPrints was available as a Deb package.&lt;br /&gt;
&lt;br /&gt;
EPrints is now fully installed at &amp;lt;code&amp;gt;EPRINTS_PATH/&amp;lt;/code&amp;gt;. However, you will not yet have a running archive. Follow the [[Getting Started with EPrints 3]] instructions to set this up.&lt;br /&gt;
&lt;br /&gt;
=== Post-configuration ===&lt;br /&gt;
Next, add the file &amp;lt;code&amp;gt;/etc/apache2/sites-available/eprints.conf&amp;lt;/code&amp;gt; with the following line:&lt;br /&gt;
&lt;br /&gt;
 Include EPRINTS_PATH/cfg/apache.conf&lt;br /&gt;
&lt;br /&gt;
To enable this as root run the command:&lt;br /&gt;
&lt;br /&gt;
 root&amp;gt; a2ensite eprints&lt;br /&gt;
&lt;br /&gt;
Also it may be necessary to disable the default site otherwise the default Apache page will still be shown:&lt;br /&gt;
&lt;br /&gt;
 a2dissite 000-default&lt;br /&gt;
&lt;br /&gt;
Finally, restart Apache:&lt;br /&gt;
&lt;br /&gt;
 service apache2 restart&lt;br /&gt;
&lt;br /&gt;
You should now be able to access your vanilla repository at the hostname you specified when running '''epadmin create''' from the [[Getting Started with EPrints 3]] instructions.  You should then login as the admin user you created during this process and turn on the indexer.  This can be done by clicking on the '''Admin''' link under the Logged in menu, then clicking on the '''System Tools''' tab and finally the '''Start Indexer''' button.&lt;br /&gt;
&lt;br /&gt;
== Operating System Version Specific Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 22.04 LTS ===&lt;br /&gt;
{{:Issues with Installing EPrints on Ubuntu 22.04}}&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu 24.04 LTS ===&lt;br /&gt;
{{:Issues with Installing EPrints on Ubuntu 24.04}}&lt;br /&gt;
&lt;br /&gt;
=== Debian Known Issues ===&lt;br /&gt;
See [[Debian Known Issues]]&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Installing_EPrints_on_RHEL/Fedora/CentOS&amp;diff=17166</id>
		<title>Installing EPrints on RHEL/Fedora/CentOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Installing_EPrints_on_RHEL/Fedora/CentOS&amp;diff=17166"/>
		<updated>2026-09-14T09:17:50Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Installing EPrints 3.4.7 from Source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{manual}}&lt;br /&gt;
[[Category:Installation]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* Red Hat Enterprise (RHEL) / CentOS / Rocky Linux 8 or 9. (EPrints can be installed on RHEL / CentOS / Rocky Linux 10 but there are currently a [[#RHEL / CentOS / Rocky 10|number of issues]], some which should be resolved in later version of these Linux OSs).&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Pre-install and enable the EPEL DNF repository.&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf install epel-release&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pre-install and enable the CodeReady Builder DNF repository.&lt;br /&gt;
** RHEL&lt;br /&gt;
**: &amp;lt;code&amp;gt;subscription-manager repos --enable &amp;quot;codeready-builder-for-rhel-$(releasever)-$(arch)-rpms&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** CentOS Stream / Rocky Linux 8&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf config-manager --set-enabled powertools&amp;lt;/code&amp;gt;&lt;br /&gt;
** CentOS Stream / Rocky Linux 9 and 10&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf config-manager --set-enabled crb&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pre-install MySQL server and client and make sure the former is enabled and running.&lt;br /&gt;
** RHEL / Fedora:&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf install mysql-server mysql mysql-devel&amp;lt;br/&amp;gt;&amp;amp;nbsp;systemctl enable --now mysqld&amp;lt;/code&amp;gt;&lt;br /&gt;
** CentOS / Rocky Linux:&lt;br /&gt;
**: &amp;lt;code&amp;gt;dnf install mariadb-server mariadb mariadb-devel&amp;lt;br/&amp;gt;&amp;amp;nbsp;systemctl enable --now mariadb&amp;lt;/code&amp;gt;&lt;br /&gt;
* From the MySQL command prompt, pre-configure an eprints user with password for MariaDB/MySQL, which can be used as the Database super user when creating the database for an archive. (Be sure to change the password from &amp;quot;changeme&amp;quot;):&lt;br /&gt;
*: &amp;lt;code&amp;gt;CREATE USER 'eprints'@'localhost' IDENTIFIED by 'changeme';&amp;lt;br/&amp;gt;&amp;amp;nbsp;GRANT ALL PRIVILEGES ON *.* TO 'eprints'@'localhost' WITH GRANT OPTION;&amp;lt;/code&amp;gt;&lt;br /&gt;
* As root, from a command prompt add the &amp;lt;tt&amp;gt;eprints&amp;lt;/tt&amp;gt; user:&lt;br /&gt;
*: &amp;lt;code&amp;gt;adduser eprints&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
The following RPMs need to be installed using the dnf command:&lt;br /&gt;
 dnf install libxml2 libxslt httpd mod_perl perl-Apache-DBI perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL \&lt;br /&gt;
     perl-Time-HiRes perl-CGI perl-Digest-MD5 perl-Digest-SHA perl-Digest-SHA1 perl-JSON perl-XML-LibXML \&lt;br /&gt;
     perl-XML-LibXSLT perl-XML-SAX perl-MIME-Lite perl-Text-Unidecode perl-JSON perl-Unicode-Collate \&lt;br /&gt;
     perl-LWP-Protocol-https perl-IO-String tetex-latex wget gzip tar ImageMagick poppler-utils \&lt;br /&gt;
     chkconfig unzip cpan python3-html2text expat-devel libxslt-devel&lt;br /&gt;
&lt;br /&gt;
'''N.B.''' If you are running RHEL / CentOS / Rocky Linux 10, '''perl-Apache-DBI''' is no longer available and will need to be installed with CPAN and '''python3-html2text''' will not be available until RHEL / CentOS / Rocky Linux 10.1.  You should exclude these when running the dnf command above.  (See [[#RHEL_.2F_CentOS_.2F_Rocky_10|Operating System Version Specific Requirements for RHEL / CentOS / Rocky Linux 10]] below for more details).&lt;br /&gt;
&lt;br /&gt;
== Installing EPrints 3.4.7 from Source ==&lt;br /&gt;
'''Ideally you will install from source from [https://github.com/eprints/eprints3.4 EPrints Core Git repository], which includes the core codebase and the publications flavour.  However, you may choose to download tarballs of the EPrints core codebase and publications flavour from files.eprints.org as an alternative means of installation.&lt;br /&gt;
&lt;br /&gt;
== Create initial directory with correct permissions ==&lt;br /&gt;
As root:&lt;br /&gt;
 mkdir /opt/eprints3&lt;br /&gt;
 chown eprints:eprints /opt/eprints3&lt;br /&gt;
 chmod 2775 /opt/eprints3&lt;br /&gt;
&lt;br /&gt;
=== Cloning from Git ===&lt;br /&gt;
Clone the Git repository from GitHub to &amp;lt;tt&amp;gt;/opt/&amp;lt;/tt&amp;gt; and set the &amp;lt;tt&amp;gt;eprints&amp;lt;/tt&amp;gt; user as the owner.  It is probably best to checkout the latest release rather than using HEAD, which may have known issues:&lt;br /&gt;
&lt;br /&gt;
 dnf install git&lt;br /&gt;
 su eprints&lt;br /&gt;
 git clone https://github.com/eprints/eprints3.4.git /opt/eprints3&lt;br /&gt;
 cd /opt/eprints3/&lt;br /&gt;
 git checkout tags/v3.4.7&lt;br /&gt;
&lt;br /&gt;
If you want a publications flavoured repository (you probably will, this is the most common flavour deployed), then you will also need to download, unpack and move that into the appropriate location:&lt;br /&gt;
 wget https://files.eprints.org/3288/2/eprints-3.4.7-flavours.tar.gz&lt;br /&gt;
 tar -xzvf eprints-3.4.7-flavours.tar.gz&lt;br /&gt;
 mv eprints-3.4.7/flavours/pub_lib /opt/eprints3/flavours&lt;br /&gt;
 chmod -R g+w /opt/eprints3/flavours/pub_lib&lt;br /&gt;
 chown -R eprints:eprints /opt/eprints3/flavours/pub_lib&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&amp;lt;span id=&amp;quot;getting_started_and_apache&amp;quot;&amp;gt;EPrints&amp;lt;/span&amp;gt; is now fully installed at &amp;lt;tt&amp;gt;/opt/eprints3&amp;lt;/tt&amp;gt;. However, you will not yet have a running archive. Follow the [[Getting Started with EPrints 3]] instructions to set this up.&lt;br /&gt;
&lt;br /&gt;
== Post-configuration ==&lt;br /&gt;
Add the &amp;lt;tt&amp;gt;eprints&amp;lt;/tt&amp;gt; user to the &amp;lt;tt&amp;gt;apache&amp;lt;/tt&amp;gt; group and vice-versa.&lt;br /&gt;
 usermod -aG apache eprints&lt;br /&gt;
 usermod -aG eprints apache&lt;br /&gt;
&lt;br /&gt;
Finally, restart Apache:&lt;br /&gt;
  service httpd restart&lt;br /&gt;
&lt;br /&gt;
=== SELinux ===&lt;br /&gt;
There is a fair chance your operating system will have SELinux enabled.  If so, follow the advice at [[EPrints and SELinux]] for how to let EPrints do what it needs to do through SELinux.  Otherwise, you could disable SELinux with the following:&lt;br /&gt;
 setenforce 0&lt;br /&gt;
However, that will only disable it until the next reboot. You should also edit '''/etc/selinux/config''' and make sure the &amp;lt;code&amp;gt;SELINUX=enforcing&amp;lt;/code&amp;gt; is set to:&lt;br /&gt;
 SELINUX=disabled&lt;br /&gt;
&lt;br /&gt;
== Non-critical Dependencies ==&lt;br /&gt;
Some of EPrints non-core functionality may not work out of the box as these dependencies are not included as part of the installation process.  Here is a list of known additional packages (and the DNF repositories in which they can be found) or CPAN modules than can be installed.  The latter should be installed using the ''cpan'' command as the root user.&lt;br /&gt;
 &lt;br /&gt;
* '''perl-Geo-IP (epel)''' - Allows IRstats2 to determine the location of views/downloads for publications. (RHEL/CentOS/Rocky Linux 8 only)&lt;br /&gt;
* '''perl-GeoIP2 (@System and epel)''' - Allows IRstats2 to determine the location of views/downloads for publications. (RHEL/CentOS/Rocky Linux 9+)&lt;br /&gt;
* '''perl-Spreadsheet-WriteExcel (epel)''' - To allow Multiline Excel export.&lt;br /&gt;
* '''CPAN module Text::Refer''' - Required for EndNote import.&lt;br /&gt;
* '''CPAN module TeX::Encode''' - Required for BibTex export needed for publications flavour.&lt;br /&gt;
* '''perl-Image-ExifTool (epel)''' - Sometimes needed to support generation of thumbnails for uploaded documents/images.&lt;br /&gt;
* '''perl-LWP-Protocol-https (base)''' - Needed by DataCite plugin to register repository DOIs.&lt;br /&gt;
&lt;br /&gt;
== Operating System Version Specific Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== RHEL / CentOS / Rocky 8 ===&lt;br /&gt;
{{:Issues with installing EPrints on RHEL / CentOS / Rocky 8}}&lt;br /&gt;
&lt;br /&gt;
=== RHEL / CentOS / Rocky 9 ===&lt;br /&gt;
{{:Issues with installing EPrints on RHEL / CentOS / Rocky 9}}&lt;br /&gt;
&lt;br /&gt;
=== RHEL / CentOS / Rocky 10 ===&lt;br /&gt;
{{:Issues with installing EPrints on RHEL / CentOS / Rocky 10}}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
* If setup is successful but then you cannot access EPrints through your web browser this is often due to firewalld being enabled by default on recent versions of RHEL, Fedora and CentOS.  If firewalld is running either disable it (&amp;lt;tt&amp;gt;systemctl disable --now firewalld&amp;lt;/tt&amp;gt;) or [https://docs.rackspace.com/support/how-to/allow-web-traffic-in-a-firewalld-software-firewall/ configure it to allow HTTP/HTTPS traffic].&lt;br /&gt;
* If you are running a version of EPrints below 3.4.6 you cannot run Apache in MPM event mode and you need to use MPM prefork instead.  This is due to Perl's &amp;lt;tt&amp;gt;XML::LibXSLT&amp;lt;/tt&amp;gt; being initiated at the wrong time leading earlier version of EPrints to cause Apache (httpd) to segfault when started.  If you are running an earlier version and want to run Apache in MPM event mode, you can uninstall &amp;lt;tt&amp;gt;XML::LibXSLT&amp;lt;/tt&amp;gt; either as the RPM perl-XML-LibXSLT or possible from CPAN using &amp;lt;code&amp;gt;cpanm --uninstall XML::LibXSLT&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If you are having problems uploading files or similar functional issues, this may be due to SELinux being enabled. [[EPrints and SELinux|See advice for enabling SELinux with EPrints]].&lt;br /&gt;
* If you are having trouble getting additional subdomains beyond username.eprints-hosting.org working, then it could be you need wildcards enabled on the DNS records to facilitate the likes of somethingcoolhere.username.eprints-hosting.org urls.&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Transitioning_from_IRUS_to_OpenAIRE_Usage_Counts&amp;diff=17046</id>
		<title>Transitioning from IRUS to OpenAIRE Usage Counts</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Transitioning_from_IRUS_to_OpenAIRE_Usage_Counts&amp;diff=17046"/>
		<updated>2026-04-27T09:32:42Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: updated eprints repo link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
# Register your repository in the [https://provide.openaire.eu/home OpenAIRE Provide service]&lt;br /&gt;
# Install [https://github.com/eprintsug/EPrintsOpenAIRE/ EPrintsOpenAIRE export extension] (v1.1.0+)&lt;br /&gt;
## Bazaar: https://bazaar.eprints.org/1309/ &lt;br /&gt;
## Ingredient: https://github.com/eprintsug/EPrintsOpenAIRE/releases/tag/v1.1.0-ingredient&lt;br /&gt;
## EPM / Git Repo: https://github.com/eprintsug/EPrintsOpenAIRE/releases/tag/v1.1.0-epm&lt;br /&gt;
# Make sure repository is getting harvested in OpenAIRE Provide (TODO (JS): screenshots of process, run limited harvest first!!)&lt;br /&gt;
# Install tracker NB we need to consolidate these (which are in approx. chronological order):&lt;br /&gt;
## https://github.com/Rudjer-Boskovic-Institute/EPrints-OAPiwik &lt;br /&gt;
## https://github.com/openaire/EPrints-OAPiwik (forked from the above)&lt;br /&gt;
## https://github.com/alex-ball/EPrints-OAPing&lt;br /&gt;
## https://github.com/eprints/EPrints-Matomo ''I think this is where the official release will live?''&lt;br /&gt;
# Check data is being received - OpenAIRE is only updated monthly&lt;br /&gt;
# remove/disable IRUS tracker&lt;br /&gt;
&lt;br /&gt;
== Instructions for sending historic data ==&lt;br /&gt;
See notes in Eprints-OAPiwik?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
# [https://www.openaire.eu/?view=article&amp;amp;id=2343&amp;amp;catid=255 UsageCounts – How to track the usage activity of your repository]&lt;br /&gt;
# [https://usagecounts.openaire.eu/resources#apis OpenAIRE - Provide - APIs and reports (COUNTER v4 compliant!?)]&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Recaptcha3_field&amp;diff=17041</id>
		<title>Recaptcha3 field</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Recaptcha3_field&amp;diff=17041"/>
		<updated>2026-03-19T14:19:34Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fieldtypes}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Allows a Captcha using [https://developers.google.com/recaptcha/docs/v3 Google's reCAPTCHAv3 service] to be added to a form to protect it from being spammed by bots.&lt;br /&gt;
&lt;br /&gt;
Add the following configuration to a file called &amp;lt;code&amp;gt;cfg/cfg.d/recaptcha3.pl&amp;lt;/code&amp;gt; in your archive, if it does not already exist.&lt;br /&gt;
 $c-&amp;gt;{recaptcha3}-&amp;gt;{private_key} = &amp;quot;CHANGEME&amp;quot;;&lt;br /&gt;
 $c-&amp;gt;{recaptcha3}-&amp;gt;{public_key} = &amp;quot;CHANGEME&amp;quot;;&lt;br /&gt;
 $c-&amp;gt;{recaptcha3}-&amp;gt;{min_score} = 0.5;&lt;br /&gt;
&lt;br /&gt;
As this field uses the Google's reCAPTCHAv3 service and renders a Captcha, (a test that humans can easily pass, but robots shouldn't be able to), you will need to use a Google account to generate a private and public key (also known by Google as a '''secret key''' and '''site key''' respectively) for the above configuration.  This can be done via Google's '''[https://www.google.com/recaptcha/admin/create Site Registration Tool]'''.  By sure to use '''Score based (v3)''' option when registering. &lt;br /&gt;
&lt;br /&gt;
If you are setting up a Recaptcha3 field for protecting request copy forms, you will need to add the following configuration to a file in your archive's &amp;lt;code&amp;gt;cfg/cfg.d/&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
 $c-&amp;gt;add_dataset_field( &amp;quot;request&amp;quot;, {&lt;br /&gt;
   name =&amp;gt; &amp;quot;captcha&amp;quot;,&lt;br /&gt;
   replace_core =&amp;gt; 1,&lt;br /&gt;
   type =&amp;gt; &amp;quot;recaptcha3&amp;quot;,&lt;br /&gt;
 });&lt;br /&gt;
Also make a copy of &amp;lt;code&amp;gt;lib/workflows/request/default.xml&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;your/archive/cfg/workflows/request/default.xml&amp;lt;/code&amp;gt; and uncomment &amp;lt;code&amp;gt;&amp;lt;component surround=&amp;quot;None&amp;quot;&amp;gt;&amp;lt;field ref=&amp;quot;captcha&amp;quot; /&amp;gt;&amp;lt;/component&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you find you are still getting spam from the form to which you have applied a Recaptcha3 field, then try increasing &amp;lt;code&amp;gt;$c-&amp;gt;{recaptcha3}-&amp;gt;{min_score}&amp;lt;/code&amp;gt; to a higher value such as &amp;lt;code&amp;gt;0.7&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Inheritance ==&lt;br /&gt;
* [[:Category:EPrints_Metadata_Fields|Metadata Field]]&lt;br /&gt;
** [[Id field]]&lt;br /&gt;
*** [[Recaptcha3 field]]&lt;br /&gt;
&lt;br /&gt;
== Additional Properties ==&lt;br /&gt;
As for [[Id field#Additional_Phrases|Id fields]].&lt;br /&gt;
&lt;br /&gt;
== Required Phrases ==&lt;br /&gt;
&amp;lt;tt&amp;gt;validate:recaptcha3_mismatch&amp;lt;/tt&amp;gt; - Phrase to display if reCAPTCHAv3 submission errored in some way.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
Recaptcha3 fields are not stored in the database they are just so reCAPTCHAv3 can be added to certain forms.  The result of the reCAPTCHAv3 does not need to be stored.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
See [[API:EPrints/MetaField/Recaptcha3|API page]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Most basic example.&lt;br /&gt;
 {&lt;br /&gt;
     name =&amp;gt; 'captcha',&lt;br /&gt;
     type =&amp;gt; 'recaptcha3',&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Recaptcha3_field&amp;diff=17040</id>
		<title>Recaptcha3 field</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Recaptcha3_field&amp;diff=17040"/>
		<updated>2026-03-19T14:19:00Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fieldtypes}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Allows a Captcha using [https://developers.google.com/recaptcha/docs/v3 Google's reCAPTCHAv3 service] to be added to a form to protect it from being spammed by bots.&lt;br /&gt;
&lt;br /&gt;
Add the following configuration to a file called &amp;lt;code&amp;gt;cfg/cfg.d/recaptcha3.pl&amp;lt;/code&amp;gt; in your archive, if it does not already exist.&lt;br /&gt;
 $c-&amp;gt;{recaptcha3}-&amp;gt;{private_key} = &amp;quot;CHANGEME&amp;quot;;&lt;br /&gt;
 $c-&amp;gt;{recaptcha3}-&amp;gt;{public_key} = &amp;quot;CHANGEME&amp;quot;;&lt;br /&gt;
 $c-&amp;gt;{recaptcha3}-&amp;gt;{min_score} = 0.5;&lt;br /&gt;
&lt;br /&gt;
As this field uses the Google's reCAPTCHAv3 service and renders a Captcha, (a test that humans can easily pass, but robots shouldn't be able to), you will need to use a Google account to generate a private and public key (also known by Google as a '''secret key''' and '''site key''' respectively) for the above configuration.  This can be done via Google's '''[https://www.google.com/recaptcha/admin/create Site Registration Tool]'''.  By sure to use '''Score based (v3)''' option when registering. &lt;br /&gt;
&lt;br /&gt;
If you are setting up a Recaptcha3 field for protecting request copy forms, you will need to add the following configuration to a file in your archive's &amp;lt;code&amp;gt;cfg/cfg.d/&amp;lt;/code&amp;gt; directory.&lt;br /&gt;
 $c-&amp;gt;add_dataset_field( &amp;quot;request&amp;quot;, {&lt;br /&gt;
   name =&amp;gt; &amp;quot;captcha&amp;quot;,&lt;br /&gt;
   replace_core =&amp;gt; 1,&lt;br /&gt;
   type =&amp;gt; &amp;quot;recaptcha3&amp;quot;,&lt;br /&gt;
 });&lt;br /&gt;
Also make a copy of &amp;lt;code&amp;gt;lib/workflows/request/default.xml&amp;lt;code&amp;gt; in &amp;lt;code&amp;gt;your/archive/cfg/workflows/request/default.xml&amp;lt;/code&amp;gt; and uncomment &amp;lt;component surround=&amp;quot;None&amp;quot;&amp;gt;&amp;lt;field ref=&amp;quot;captcha&amp;quot; /&amp;gt;&amp;lt;/component&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you find you are still getting spam from the form to which you have applied a Recaptcha3 field, then try increasing &amp;lt;code&amp;gt;$c-&amp;gt;{recaptcha3}-&amp;gt;{min_score}&amp;lt;/code&amp;gt; to a higher value such as &amp;lt;code&amp;gt;0.7&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Inheritance ==&lt;br /&gt;
* [[:Category:EPrints_Metadata_Fields|Metadata Field]]&lt;br /&gt;
** [[Id field]]&lt;br /&gt;
*** [[Recaptcha3 field]]&lt;br /&gt;
&lt;br /&gt;
== Additional Properties ==&lt;br /&gt;
As for [[Id field#Additional_Phrases|Id fields]].&lt;br /&gt;
&lt;br /&gt;
== Required Phrases ==&lt;br /&gt;
&amp;lt;tt&amp;gt;validate:recaptcha3_mismatch&amp;lt;/tt&amp;gt; - Phrase to display if reCAPTCHAv3 submission errored in some way.&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
Recaptcha3 fields are not stored in the database they are just so reCAPTCHAv3 can be added to certain forms.  The result of the reCAPTCHAv3 does not need to be stored.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
See [[API:EPrints/MetaField/Recaptcha3|API page]].&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Most basic example.&lt;br /&gt;
 {&lt;br /&gt;
     name =&amp;gt; 'captcha',&lt;br /&gt;
     type =&amp;gt; 'recaptcha3',&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Category:Installation&amp;diff=17021</id>
		<title>Category:Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Category:Installation&amp;diff=17021"/>
		<updated>2026-01-26T15:51:13Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: adding link for Generic_Linux_Installation to installing from source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The default installation of EPrints is on a stand-alone linux system, but this is not the only way EPrints can (and has) been installed.&lt;br /&gt;
&lt;br /&gt;
'''The EPrints team currently recommends installing EPrints in one of the following ways:'''&lt;br /&gt;
&lt;br /&gt;
* '''[[Installing EPrints on Debian/Ubuntu]]'''&lt;br /&gt;
* '''[[Installing EPrints on_RHEL/Fedora/CentOS]]'''&lt;br /&gt;
* '''[[Generic_Linux_Installation|Installing from source]]'''&lt;br /&gt;
&lt;br /&gt;
Here are some other ways:&lt;br /&gt;
&lt;br /&gt;
* [[non-root_proxy|Proxied to a non-root user account]]: Where the server and all associated code is installed without root/admin access to anything&lt;br /&gt;
* [[How to set up EPrints on virtual directories other than root|Hosted on virtual directories other than root]] - sharing with other Web applications on the same server&lt;br /&gt;
&lt;br /&gt;
This category contains a range of other sets of instructions for different operating systems and versions of EPrints. Most of them are not supported but may still work. {{EPrintsTech}}&lt;br /&gt;
&lt;br /&gt;
If you want to write installation instructions for a system other than those listed here please do so. Remember to tag the page with &amp;lt;nowiki&amp;gt;[[Category:Installation]]&amp;lt;/nowiki&amp;gt; so that it appears in this list. &lt;br /&gt;
&lt;br /&gt;
'''If you use one of the installation guides below and it doesn't work, edit the page to say what went wrong and how you fixed it. This will help others (and maybe yourself) tackle these problems in the future. [[Template:Register|Here you can register for an eprints.org account]] to edit the wiki.'''&lt;br /&gt;
&lt;br /&gt;
== Distribution Notes ==&lt;br /&gt;
&lt;br /&gt;
Known issues and gotchas on various Linux distributions&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Distibution&lt;br /&gt;
! Support&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| RHEL / Centos / Rocky 8&lt;br /&gt;
| Supported&lt;br /&gt;
| Some minor issues. See [[Issues with installing EPrints on RHEL / CentOS / Rocky 8]].&lt;br /&gt;
|-&lt;br /&gt;
| RHEL / Centos / Rocky 9&lt;br /&gt;
| Supported&lt;br /&gt;
| Some minor issues. See [[Issues with installing EPrints on RHEL / CentOS / Rocky 9]]. EPrints Services test builds against this release.&lt;br /&gt;
|-&lt;br /&gt;
| RHEL / Centos / Rocky 10&lt;br /&gt;
| Supported&lt;br /&gt;
| Some minor issues. See [[Issues with installing EPrints on RHEL / CentOS / Rocky 10]].&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu 22.04 LTS&lt;br /&gt;
| Supported&lt;br /&gt;
| Some minor issues. See [[Issues with Installing EPrints on Ubuntu 22.04]].&lt;br /&gt;
|-&lt;br /&gt;
| Ubuntu 24.04 LTS&lt;br /&gt;
| Supported&lt;br /&gt;
| Some minor issues. See [[Issues with Installing EPrints on Ubuntu 24.04]].&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Shibboleth_Debug_Logging&amp;diff=17002</id>
		<title>Shibboleth Debug Logging</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Shibboleth_Debug_Logging&amp;diff=17002"/>
		<updated>2025-11-17T11:28:06Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As described on the main [[Shibboleth]] page.  EPrints uses the Shibboleth Service Provider (SP) provided by shibboleth.net.  This includes a logger that can be configured at '''/etc/shibboleth/shibd.logger''' and which logs to '''/var/log/shibboleth/shibd.log'''.  This typically only logs errors and warnings and the occasionally informationl log message, typically when starting or stopping.  However, if you are having problems with the Shibboleth SP, particularly when setting up, it may be useful to enable debug.  To do this&lt;br /&gt;
&lt;br /&gt;
1. Edit the '''/etc/shibboleth/shibd.logger''' and uncomment the following lines:&lt;br /&gt;
 # tracing of SAML messages and security policies&lt;br /&gt;
 #log4j.category.OpenSAML.MessageDecoder=DEBUG&lt;br /&gt;
 #log4j.category.OpenSAML.MessageEncoder=DEBUG&lt;br /&gt;
 #log4j.category.OpenSAML.SecurityPolicyRule=DEBUG&lt;br /&gt;
 #log4j.category.XMLTooling.SOAPClient=DEBUG&lt;br /&gt;
 # interprocess message remoting&lt;br /&gt;
 #log4j.category.Shibboleth.Listener=DEBUG&lt;br /&gt;
 # mapping of requests to applicationId&lt;br /&gt;
 #log4j.category.Shibboleth.RequestMapper=DEBUG&lt;br /&gt;
 # high level session cache operations&lt;br /&gt;
 #log4j.category.Shibboleth.SessionCache=DEBUG&lt;br /&gt;
 # persistent storage and caching&lt;br /&gt;
 #log4j.category.XMLTooling.StorageService=DEBUG&lt;br /&gt;
So they look like&lt;br /&gt;
 # tracing of SAML messages and security policies&lt;br /&gt;
 log4j.category.OpenSAML.MessageDecoder=DEBUG&lt;br /&gt;
 log4j.category.OpenSAML.MessageEncoder=DEBUG&lt;br /&gt;
 log4j.category.OpenSAML.SecurityPolicyRule=DEBUG&lt;br /&gt;
 log4j.category.XMLTooling.SOAPClient=DEBUG&lt;br /&gt;
 # interprocess message remoting&lt;br /&gt;
 log4j.category.Shibboleth.Listener=DEBUG&lt;br /&gt;
 # mapping of requests to applicationId&lt;br /&gt;
 log4j.category.Shibboleth.RequestMapper=DEBUG&lt;br /&gt;
 # high level session cache operations&lt;br /&gt;
 log4j.category.Shibboleth.SessionCache=DEBUG&lt;br /&gt;
 # persistent storage and caching&lt;br /&gt;
 log4j.category.XMLTooling.StorageService=DEBUG&lt;br /&gt;
&lt;br /&gt;
2. Test the Shibboleth SP is correctly configured&lt;br /&gt;
 shibd -t&lt;br /&gt;
&lt;br /&gt;
3. Restart the Shibboleth SP&lt;br /&gt;
 systemctl restart shibd&lt;br /&gt;
&lt;br /&gt;
There is various debugging that has been enabled by these changes.  Particularly useful are the first two line:&lt;br /&gt;
 log4j.category.OpenSAML.MessageDecoder=DEBUG&lt;br /&gt;
 log4j.category.OpenSAML.MessageEncoder=DEBUG&lt;br /&gt;
This will allow you to see the XML messages sent to and from the Shibboleth Identity Provider (IdP), such as MicroSoft Entra or OpenAthens.  &lt;br /&gt;
&lt;br /&gt;
== Debugging User Attributes Mapping Issues ==&lt;br /&gt;
This debugging can be particularly useful if you are trying to work attributes in your attribute-map.xml are not being mapped as expected.  If you tail the log file '''/var/log/shibboleth/shibd.log''' and then try to login using the Shibboleth, you should see a line in the logs that starts:&lt;br /&gt;
 &amp;lt;samlp:Response ...&lt;br /&gt;
If you copy the whole of that line into a text file in /tmp/ and save it.  Then you can run xmllint on it to format the output.  E.g.&lt;br /&gt;
 xmllint --format /tmp/saml-response.xml&lt;br /&gt;
If attributes are being mapped, in the formatted output you should be able to see section that starts with an '''AttributeStatment''' XML tag.  E.g.&lt;br /&gt;
 &amp;lt;AttributeStatement&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute Name=&amp;quot;http://schemas.microsoft.com/identity/claims/tenantid&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeValue&amp;gt;01234567-89ab-cdef-0123-456789abcdef&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute Name=&amp;quot;http://schemas.microsoft.com/identity/claims/objectidentifier&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeValue&amp;gt;fedcba98-7654-3210-fedc-ba9876543210&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute Name=&amp;quot;http://schemas.microsoft.com/identity/claims/identityprovider&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeValue&amp;gt;https://sts.windows.net/89abcdef-0123-4567-89ab-cdef01234567/&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute Name=&amp;quot;http://schemas.microsoft.com/claims/authnmethodsreferences&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeValue&amp;gt;http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeValue&amp;gt;http://schemas.microsoft.com/claims/multipleauthn&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute Name=&amp;quot;urn:oid:0.9.2342.19200300.100.1.3&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeValue&amp;gt;j.bloggs@example.org&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute Name=&amp;quot;urn:oid:2.5.4.4&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeValue&amp;gt;Bloggs&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute Name=&amp;quot;urn:oid:2.5.4.42&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeValue&amp;gt;Joe&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
 &amp;lt;/AttributeStatement&amp;gt;&lt;br /&gt;
If you cannot find users attributes you are expecting to see based on what you have configurured in your Shibboleth SP's attribute-map.xml, then you will need to get the maintainer of Shibboleth IdP to make sure these attributes are released or otherwise release attributes that store the sane user metadata.  At this point you can re-run this debugging to see what user attributes you are now getting and update your Shibboleth SP's attribute-map.xml as appropriate.&lt;br /&gt;
&lt;br /&gt;
'''When you have finished debugging.  It is sensible to comment out the debug lines in '''/etc/shibboleth/shibd.logger''' again and restart the Shibboleth SP.'''&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=Branding_with_confidence&amp;diff=16765</id>
		<title>Branding with confidence</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=Branding_with_confidence&amp;diff=16765"/>
		<updated>2025-05-01T13:44:58Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Changing the theme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Branding]]&lt;br /&gt;
&lt;br /&gt;
One of the most common EPrints customisations is to add your own institution's branding and &amp;quot;look and feel&amp;quot; to the interface - this may include logos, page layouts, stylesheets and colour schemes.&lt;br /&gt;
&lt;br /&gt;
It is generally advised that you have command line access to the server so you can add/edit these files for branding directly.  Alternatively you may have some means of mapping EPrints on a network drive so you can edit these files with a graphical text editor or your own computer.  It is possible to use the ''Config. Tools -&amp;gt; View Configuration'' section of the EPrints Admin web interface.  However, this is discouraged, as anything beyond minor changes runs the risk of breaking EPrints in a way where you can no longer access these ''View Configuration'' pages to revert the changes you have made.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Branding fast track==&lt;br /&gt;
&lt;br /&gt;
This section describes techniques for very quickly changing the appearance of your EPrints repository. These techniques could be useful, for example, to quickly brand a demonstration repository so that your audience can identify with it.&lt;br /&gt;
&lt;br /&gt;
===Adding a logo===&lt;br /&gt;
&lt;br /&gt;
'''Example 1'''&lt;br /&gt;
&lt;br /&gt;
The simplest approach, (which will require command line access to the server, as this cannot be done safely through the ''Config. Tools -&amp;gt; View Configuration'' section of the EPrints Admin web interface), is to overwrite the default EPrints logo with a copy of your own logo. Copy your logo (e.g. using SCP or SFTP) to: &lt;br /&gt;
&lt;br /&gt;
 EPRINTS_PATH/archives/ARCHIVEID/cfg/static/images/sitelogo.png&lt;br /&gt;
&lt;br /&gt;
And refresh the web page. Your logo should now be displayed in place of the default EPrints logo.&lt;br /&gt;
&lt;br /&gt;
'''Example 2'''&lt;br /&gt;
&lt;br /&gt;
The image that EPrints uses for the site logo is defined in the branding configuration file. You can change this setting to point to the logo image on your institution's Web page.&lt;br /&gt;
&lt;br /&gt;
Open the branding configuration file in a text editor (e.g. Vim or Nano) if you are editing it from the command line:&lt;br /&gt;
&lt;br /&gt;
 EPRINTS_PATH/archives/ARCHIVEID/cfg/cfg.d/branding.pl&lt;br /&gt;
&lt;br /&gt;
You can alternatively edit this file via the '''Config. Tools -&amp;gt; View Configuration''' section of the EPrints Admin web interface, under just:&lt;br /&gt;
&lt;br /&gt;
 cfg/cfg.d/branding.pl&lt;br /&gt;
&lt;br /&gt;
Find the site_logo configuration setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
$c-&amp;gt;{site_logo} = &amp;quot;/images/sitelogo.png&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the setting to point to your own logo image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
$c-&amp;gt;{site_logo} = &amp;quot;http://www.soton.ac.uk/img/furniture/royal/corp_logo.gif&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reload the EPrints configuration by typing:&lt;br /&gt;
&lt;br /&gt;
 EPRINTS_PATH/bin/epadmin reload ARCHIVEID&lt;br /&gt;
&lt;br /&gt;
If you are doing this via the EPrints Admin web interface click on the '''Reload Configuration''' button under the '''Config. Tools''' tab.&lt;br /&gt;
&lt;br /&gt;
'''Example 3'''&lt;br /&gt;
&lt;br /&gt;
You can also adjust the &amp;lt;tt&amp;gt;site_logo&amp;lt;/tt&amp;gt; configuration setting to point any local image file using a text editor at the command line. Place a copy (e.g. using SCP of SFTP) of your logo image somewhere in the &amp;lt;tt&amp;gt;EPRINTS_PATH/archives/ARCHIVEID/cfg/static/images/&amp;lt;/tt&amp;gt; directory and then update the branding configuration file to point to it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
$c-&amp;gt;{site_logo} = &amp;quot;/images/mylogo.gif&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reload the EPrints configuration by typing:&lt;br /&gt;
&lt;br /&gt;
 EPRINTS_PATH/bin/epadmin reload ARCHIVEID&lt;br /&gt;
&lt;br /&gt;
===Changing the theme===&lt;br /&gt;
&lt;br /&gt;
Open the branding configuration file in a text editor:&lt;br /&gt;
(Note if this file does not exist, copy it from lib/cfg.d/branding.pl)&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/cfg.d/branding.pl&lt;br /&gt;
&lt;br /&gt;
Find the theme configuration setting:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# $c-&amp;gt;{theme} = &amp;quot;green&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the setting to use the chosen theme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
$c-&amp;gt;{theme} = &amp;quot;green&amp;quot;;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Currently EPrints 3 only includes the default and &amp;quot;green&amp;quot; theme, but look out for more themes in future versions of EPrints and on the http://files.eprints.org/ community repository.&lt;br /&gt;
&lt;br /&gt;
==Taking control==&lt;br /&gt;
&lt;br /&gt;
This section describes techniques for taking complete control of the appearance of your repository.&lt;br /&gt;
&lt;br /&gt;
===Changing the page layout===&lt;br /&gt;
&lt;br /&gt;
Every page in your repository is displayed using a single template. A custom layout can be applied to your repository pages by editing this template.&lt;br /&gt;
&lt;br /&gt;
Copy the default layout to your repository:&lt;br /&gt;
&lt;br /&gt;
 cp lib/templates/default.xml archives/ARCHIVEID/cfg/templates/default.xml&lt;br /&gt;
&lt;br /&gt;
Open the template file for your repository:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/templates/default.xml&lt;br /&gt;
&lt;br /&gt;
The template is an XHTML file with some additional syntax (see [[API:EPrints/Apache/Template]]).&lt;br /&gt;
&lt;br /&gt;
====Pins====&lt;br /&gt;
&lt;br /&gt;
You will notice a number of epc:pin elements. These tell EPrints how to combine the template with page-specific content to build each individual page.&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;ep_tm_page_content&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h1 class=&amp;quot;ep_tm_pagetitle&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;epc:pin ref=&amp;quot;title&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;epc:pin ref=&amp;quot;page&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This part of the template lays out the main content area of the page (the ''page'' pin) which is centered on the page.&lt;br /&gt;
&lt;br /&gt;
You can incorporate the epc:pin elements however you like into your new layout (although note that the head pin should always be inside the head section of the template, and the pagetop pin should be at the start of the body section). You can also define new pins (see below).&lt;br /&gt;
&lt;br /&gt;
====Configuration Strings====&lt;br /&gt;
&lt;br /&gt;
There are also a number of epc:print elements in the default template which are useful for including configuration values in the template.&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;@import url(&amp;lt;epc:print expr=&amp;quot;$config{base_url}&amp;quot;/&amp;gt;/style/auto.css);&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This extract from the head section of the template shows how an epc:print element is used to refer to the base URL of the repository. This avoids hardcoding URLs into the template (which is good for maintainability - if the repository URL should change, you do not have to change the template).&lt;br /&gt;
&lt;br /&gt;
Configuration values can also be used inside attributes, using the {...} syntax.&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;{$config{frontpage}}&amp;quot;&amp;gt;&amp;lt;img alt=&amp;quot;Logo&amp;quot; src=&amp;quot;{$config{site_logo}}&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This extract shows how the URL of both the front page of the repository and the logo are derived from the configuration rather than being hard coded directly into the template.&lt;br /&gt;
&lt;br /&gt;
====Template checklist====&lt;br /&gt;
&lt;br /&gt;
A typical repository page layout will include:&lt;br /&gt;
&lt;br /&gt;
# the correct XML declaration at the top of the file&lt;br /&gt;
# a head section (load default and custom stylesheets, ''title'' and ''head'' pins)&lt;br /&gt;
# a body section, containing:&lt;br /&gt;
## ''pagetop'' pin&lt;br /&gt;
## header (repository title and logo)&lt;br /&gt;
## navigation menu (links to browse, search etc.)&lt;br /&gt;
## quick search box&lt;br /&gt;
## toolbar (''login_status'' and ''toolbar'' pins)&lt;br /&gt;
## main content area (''title'' and ''page'' pins)&lt;br /&gt;
## footer (copyright notice etc.)&lt;br /&gt;
&lt;br /&gt;
====Loading the new template====&lt;br /&gt;
&lt;br /&gt;
Load your new template by running:&lt;br /&gt;
&lt;br /&gt;
 bin/epadmin reload ARCHIVEID&lt;br /&gt;
&lt;br /&gt;
====Dealing with template errors====&lt;br /&gt;
&lt;br /&gt;
A common cause of errors when loading a new template is that the template is not ''well formed''. The template is in XHTML syntax, and therefore must follow the rules for writing well-formed XML documents:&lt;br /&gt;
&lt;br /&gt;
* http://en.wikipedia.org/wiki/XML#Well-formed_documents&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
You get the following error when reloading the template:&lt;br /&gt;
&lt;br /&gt;
 parser error : Opening and ending tag mismatch: img line 25 and div&lt;br /&gt;
&lt;br /&gt;
Open the template file, and look for an img tag on line 25:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;img src=&amp;quot;/images/mylogo.gif&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The problem is that the img tag is opened, but there is no closing img tag. The img element is empty, so we can add a self-closing tag to make the eleemtn well formed:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;img src=&amp;quot;/images/mylogo.gif&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
 parser error : Opening and ending tag mismatch: p line 60 and body&lt;br /&gt;
&lt;br /&gt;
Open the template file and look for the p tag on line 60:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;This repository is maintained by the &amp;lt;b&amp;gt;Library and Computing team&amp;lt;/b&amp;gt;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is no closing p tag. The p element is not empty, so we add a closing p tag at the end of the paragraph to make the element well formed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;This repository is maintained by the &amp;lt;b&amp;gt;Library and Computing team&amp;lt;/b&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Adding extra images===&lt;br /&gt;
&lt;br /&gt;
If your new layout requires additional images, or if you want to add additional images to the default layout, you need to place a copy of each image in your repository's image directory:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/static/images/&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
Place a copy of small_logo.gif in:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/static/images/&lt;br /&gt;
&lt;br /&gt;
Use the image in the template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;{$config{base_url}}/images/small_logo.gif&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Working with stylesheets===&lt;br /&gt;
&lt;br /&gt;
EPrints has [[EPrints_Directory_Structure/eprints3/lib/static/style/auto|several stylesheet files]], each of which contains style rules for a specific aspect of the repository. By default these stylesheets are applied to every repository page, in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
The default stylesheets can be found here:&lt;br /&gt;
&lt;br /&gt;
 lib/static/style/auto/&lt;br /&gt;
&lt;br /&gt;
====Overriding default style rules====&lt;br /&gt;
&lt;br /&gt;
You may decide that you want to override a particular rule in one of the default stylesheets. Rather than edit the default stylesheet directly (since the edited rule will then be applied to any other repositories running on the same server), you should override the rule in your repository's overrides file:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/static/style/auto/zzz_local.css&lt;br /&gt;
&lt;br /&gt;
Remember that the stylesheets are applied in alphabetical order, so this file will be applied last.&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
 h1 {&lt;br /&gt;
         margin: 0px 0px 10px 0px;&lt;br /&gt;
         font: bold 130% Arial,Sans-serif;&lt;br /&gt;
         text-align: center;&lt;br /&gt;
         color: #606060;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rule is from general.css and defines how the h1 (heading level 1) element should be displayed (in the default template, h1 is used to display the title of the page).&lt;br /&gt;
&lt;br /&gt;
Edit the local overrides file for your repository:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/static/style/auto/zzz_local.css&lt;br /&gt;
&lt;br /&gt;
Override the ''font'' part of the h1 style:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
 h1 {&lt;br /&gt;
         font: bold 200% Arial,Sans-serif;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This renders the page title on each page in a larger font.&lt;br /&gt;
&lt;br /&gt;
====Overriding default stylesheets====&lt;br /&gt;
&lt;br /&gt;
If you want to override a default stylesheet in its entirety, you should copy it into your repository's stylesheet directory and edit it there.&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
Make a copy of the default stylesheet general.css:&lt;br /&gt;
&lt;br /&gt;
 cp lib/static/style/auto/general.css archives/ARCHIVEID/cfg/static/style/auto/&lt;br /&gt;
&lt;br /&gt;
Edit the repository copy:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/static/style/auto/general.css&lt;br /&gt;
&lt;br /&gt;
After making changes to the repository copy of general.css, apply the new stylesheet by running:&lt;br /&gt;
&lt;br /&gt;
 bin/generate_static ARCHIVEID&lt;br /&gt;
&lt;br /&gt;
====Adding institutional stylesheets====&lt;br /&gt;
&lt;br /&gt;
Your institutional Web site may already have a stylesheet or set of stylesheets that you want to apply to your repository.&lt;br /&gt;
&lt;br /&gt;
Copy the institutional stylesheets into your repository stylesheet directory:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/static/style/&lt;br /&gt;
&lt;br /&gt;
Process the stylesheets by running:&lt;br /&gt;
&lt;br /&gt;
 bin/generate_static ARCHIVEID&lt;br /&gt;
&lt;br /&gt;
The stylesheets are then available to use in the template file.&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;head&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;@import url(&amp;lt;epc:print expr=&amp;quot;$config{base_url}&amp;quot;/&amp;gt;/style/auto.css);&amp;lt;/style&amp;gt;&lt;br /&gt;
  &amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;@import url(&amp;lt;epc:print expr=&amp;quot;$config{base_url}&amp;quot;/&amp;gt;/style/my_inst.css);&amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we add a stylesheet link to our institutional stylesheet my_inst.css to the head section of the template. Note that we apply my_inst.css ''after'' the repository stylesheets (applied in order by auto.css) so that the institutional style rules override the repository style rules.&lt;br /&gt;
&lt;br /&gt;
====Adding extra style-related images====&lt;br /&gt;
&lt;br /&gt;
If your new stylesheet requires additional images (eg. background images for tables or divs), you need to place a copy of each image in your repository style/image directory:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/static/style/images/&lt;br /&gt;
&lt;br /&gt;
Note that this keeps the style-related images separate from other images used by your repository pages, such as logos.&lt;br /&gt;
&lt;br /&gt;
The images can then be used in your stylesheet.&lt;br /&gt;
&lt;br /&gt;
===Adding dynamic content===&lt;br /&gt;
&lt;br /&gt;
You can add dynamic content to the template by adding extra epc:pin elements.&lt;br /&gt;
&lt;br /&gt;
Dynamic pins can be created in the dynamic template configuration file:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/cfg.d/dynamic_template.pl&lt;br /&gt;
&lt;br /&gt;
'''Example&lt;br /&gt;
&lt;br /&gt;
Open the template file for your repository:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/lang/en/templates/default.xml&lt;br /&gt;
&lt;br /&gt;
Add a new pin called ''todays_date'' to the template; here we add the pin next to the user's login status:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;ep_tm_page_content&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h1 class=&amp;quot;ep_tm_pagetitle&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;epc:pin ref=&amp;quot;title&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;epc:pin ref=&amp;quot;page&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;epc:pin ref=&amp;quot;todays_date&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open the dynamic template configuration file for your repository:&lt;br /&gt;
&lt;br /&gt;
 archives/ARCHIVEID/cfg/cfg.d/dynamic_template.pl&lt;br /&gt;
&lt;br /&gt;
Find and uncomment the function that creates the content for the dynamic pins:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
 $c-&amp;gt;{dynamic_template}-&amp;gt;{function} = sub {&lt;br /&gt;
    my( $repository, $parts ) = @_;&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add a line which creates the content for the ''todays_date'' pin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
$c-&amp;gt;{dynamic_template}-&amp;gt;{function} = sub {&lt;br /&gt;
 my( $repository, $parts ) = @_;&lt;br /&gt;
 $parts-&amp;gt;{todays_date} = $repository-&amp;gt;make_text( scalar localtime );&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reload the dynamic template configuration:&lt;br /&gt;
&lt;br /&gt;
 bin/epadmin reload ARCHIVEID&lt;br /&gt;
&lt;br /&gt;
The date should now be displayed on your repository pages.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Branding, the next level]]&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=User:LukeWallin&amp;diff=16725</id>
		<title>User:LukeWallin</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=User:LukeWallin&amp;diff=16725"/>
		<updated>2025-02-18T15:21:50Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Employee of EPrints Services.&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.eprints.org/w/index.php?title=EPrints_and_SELinux&amp;diff=16724</id>
		<title>EPrints and SELinux</title>
		<link rel="alternate" type="text/html" href="https://wiki.eprints.org/w/index.php?title=EPrints_and_SELinux&amp;diff=16724"/>
		<updated>2025-02-18T15:21:29Z</updated>

		<summary type="html">&lt;p&gt;LukeWallin: /* Changing Directory Permissions and SELinux Contexts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to write a rough set of instructions for how to get a CentOS 7 system setup with SELinux enforcing so EPrints 3.4 (with site_lib) runs without any issues.  This guidance will be applicable to other versions of CentOS as well as RHEL and Fedora.  Furthermore, it may be applicable for enabling SELinux on other Linux operatings ystems.&lt;br /&gt;
&lt;br /&gt;
'''N.B. All commands described below need to be run as the root user or using sudo.'''&lt;br /&gt;
&lt;br /&gt;
== Apache Configuration ==&lt;br /&gt;
* Set the httpd user and group to Apache (rather than eprints like is currently used on our hosted CentOS 7 VMs) in '''/etc/httpd/conf/httpd.conf'''.&lt;br /&gt;
 User apache&lt;br /&gt;
 Group apache&lt;br /&gt;
&lt;br /&gt;
== System Users and Groups ==&lt;br /&gt;
* Add eprints to the apache group and apache to the eprints group (so that '''/etc/group''' for these looks something like the following, order does not matter):&lt;br /&gt;
 apache:x:48:eprints&lt;br /&gt;
 eprints:x:1000:apache&lt;br /&gt;
&lt;br /&gt;
== Changing Directory Permissions and SELinux Contexts ==&lt;br /&gt;
In general when a new EPrints root is deployed in /opt/eprints3/ this directory has been setup to have eprints as its owner and group with permissions set to 2775 (drwxrwsr-x).  This should generally ensure that all subdirectories will share the same permissions when checked out from SVN/Git and all files will get the permissions 0664 (-rw-rw-r--).  If directories of files to not have at least these permissions (with the exception of and SSL keys) then these permissions should be added.  svn:executable should be set on appropriate files so when they are checked out they should have 0775 (-rwxrwxr-x) permissions.&lt;br /&gt;
&lt;br /&gt;
What will need to be changed are the SELinux contexts of various directory.  This is the list compiled so far for the changes required.  It is assumed the command are run from the /opt/eprints3/ directory:&lt;br /&gt;
&lt;br /&gt;
(if the directory does not exist, there is no need to run that line)&lt;br /&gt;
&lt;br /&gt;
 chcon -R -t httpd_sys_content_t archives/&lt;br /&gt;
 chcon -R -t httpd_sys_content_t flavours/&lt;br /&gt;
 chcon -R -t httpd_sys_content_t ingredients/&lt;br /&gt;
 chcon -R -t httpd_sys_content_t site_lib/&lt;br /&gt;
 chcon -R -t httpd_sys_rw_content_t archives/ARCHIVENAME/cfg/&lt;br /&gt;
 chcon -R -t httpd_sys_rw_content_t archives/ARCHIVENAME/documents/&lt;br /&gt;
 chcon -R -t httpd_sys_rw_content_t archives/ARCHIVENAME/html/&lt;br /&gt;
 chcon -R -t httpd_sys_rw_content_t archives/ARCHIVENAME/var/&lt;br /&gt;
 chcon -R -t httpd_sys_rw_content_t lib/&lt;br /&gt;
 chcon -R -t httpd_sys_rw_content_t tmp/&lt;br /&gt;
 chcon -R -t httpd_sys_rw_content_t var/&lt;br /&gt;
&lt;br /&gt;
== Setting SELinux Booleans ==&lt;br /&gt;
You will definitely need to modify the SELinux boolean so that Apache (httpd) to be able to send email:&lt;br /&gt;
 setsebool -P httpd_can_sendmail 1&lt;br /&gt;
Unless you are running an absolutely vanilla repository you will almost certainly need to allow APache (httpd) to connect to the network:&lt;br /&gt;
 setsebool -P httpd_can_network_connect 1&lt;br /&gt;
In particular this should allow EPrints to connect to LDAP to authenticate user login and allow connecting to remote detabases.  There are also the following options for these two things but ''httpd_can_network_connect'' should be sufficient.&lt;br /&gt;
 setsebool -P httpd_can_connect_ldap 1&lt;br /&gt;
 setsebool -P httpd_can_network_connect_db 1&lt;br /&gt;
By default the following booleans for httpd should be set on:&lt;br /&gt;
 httpd_enable_cgi&lt;br /&gt;
 httpd_builtin_scripting&lt;br /&gt;
 httpd_graceful_shutdown&lt;br /&gt;
There is no need to turn any of these off.  However, the ''httpd_builtin_scripting'' is probably not needed as ModPerl uses ''httpd_enable_cgi'', which definitely should not be turned off. Having ''httpd_graceful_shutdown'' is useful for reloading Apache after making changes to EPrints configuration.&lt;br /&gt;
&lt;br /&gt;
== Extra settings for OpenOffice/Coversheets ==&lt;br /&gt;
'''This assumes switching to use packaged LibreOffice and UNO converter as detailed [[Coversheets#LibreOffice|here]].'''&lt;br /&gt;
&lt;br /&gt;
* The following changes are need so that httpd can execute things for coversheets:&lt;br /&gt;
&lt;br /&gt;
 chcon -t httpd_sys_script_exec_t &amp;quot;/PATH/TO/stitchPDFs&amp;quot;&lt;br /&gt;
 setsebool -P httpd_execmem 1&lt;br /&gt;
&lt;br /&gt;
* Ensure the httpd can manage TCP port 2002 that OpenOffice listens on:&lt;br /&gt;
 semanage port -a -t http_port_t -p tcp 2002&lt;br /&gt;
&lt;br /&gt;
* Add executables and invocation lines for openoffice to /opt/eptints3/EPrints/SystemSettings.pm&lt;br /&gt;
 # invocation&lt;br /&gt;
 openoffice' =&amp;gt; '/usr/lib64/libreoffice/program/soffice.bin',&lt;br /&gt;
 # executable&lt;br /&gt;
 openoffice' =&amp;gt; '$(openoffice) &amp;quot;-accept=socket,host=localhost,port=2002;urp;StarOffice.ServiceManager&amp;quot; -norestore -nofirststartwizard -nologo -headless',&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Make sure $ENV{'HOME'} as well as $ENV{'TMPDIR'} is set to /opt/eprints3/tmp/ in the appropriate session.pl&lt;br /&gt;
&lt;br /&gt;
== Extra settings for MePrints ==&lt;br /&gt;
 chcon -t httpd_sys_rw_content_t &amp;quot;/opt/eprints3/archives/ARCHIVENAME/meprints&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
I have tested and have been able to successfully install the following Bazaar plugin:&lt;br /&gt;
* Dates, Dates, Dates&lt;br /&gt;
* Generic Reporting Framework&lt;br /&gt;
* IRStats2&lt;br /&gt;
* RIOXX2&lt;br /&gt;
* REFCC (hefce_oa)&lt;br /&gt;
* Coversheets&lt;br /&gt;
* OpenOffice&lt;br /&gt;
* MePrints&lt;br /&gt;
However there are some issue with OpenOffice saying it is running when it is not and not being able to get soffice.bin actually running as a result.  You can upload and frontfile.odt file as a coversheet and this will get stored under cfg/static/coversheets/ in the archive.&lt;br /&gt;
&lt;br /&gt;
If you install MePrints you subsequently need to create archives/ARCHIVENAME/meprints directory and then run:&lt;br /&gt;
&lt;br /&gt;
 chcon -R -t httpd_sys_rw_content_t archives/ARCHIVENAME/meprints/&lt;br /&gt;
&lt;br /&gt;
Otherwise, the above Bazaar plugins need to be tested to make sure they are full functional along with other functionality of the repository like: the phrase editor, &amp;quot;edit this page&amp;quot;, storage manger, subjects editor, send test email, etc.&lt;br /&gt;
&lt;br /&gt;
== Policy file ==&lt;br /&gt;
First install the following packages:&lt;br /&gt;
 yum install checkpolicy policycoreutils-python&lt;br /&gt;
Then put all these files under /home/eprints/policy/ and run '''redeploy_policy.sh''' as the root user:&lt;br /&gt;
 bash /home/eprints/policy/redeploy_policy.sh&lt;br /&gt;
After this be sure to run '''restorecon''' on your EPrints path&lt;br /&gt;
 restorecon -R /opt/eprints3&lt;br /&gt;
&lt;br /&gt;
=== eprints.fc ===&lt;br /&gt;
It is assumed that the the path for your EPrints installation is ''/opt/eprints3'' if that is not the case or even that you have symlinked ''/opt/eprints3'' to where EPrints is actually installed the file below will not work as intended.  However you can fix this with a simple find and replace. &lt;br /&gt;
 # SELinux file contexts for EPrints&lt;br /&gt;
 &lt;br /&gt;
 /opt/eprints3/archives(/.*)?                    unconfined_u:object_r:httpd_sys_content_t:s0&lt;br /&gt;
 /opt/eprints3/flavours(/.*)?                    unconfined_u:object_r:httpd_sys_content_t:s0&lt;br /&gt;
 /opt/eprints3/ingredients(/.*)?                 unconfined_u:object_r:httpd_sys_content_t:s0&lt;br /&gt;
 /opt/eprints3/site_lib(/.*)?                    unconfined_u:object_r:httpd_sys_content_t:s0&lt;br /&gt;
 /opt/eprints3/archives/[^/]*/bin(/.*)?          unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
 /opt/eprints3/archives/[^/]*/cfg(/.*)?          unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
 /opt/eprints3/archives/[^/]*/cgi(/.*)?          unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
 /opt/eprints3/archives/[^/]*/documents(/.*)?    unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
 /opt/eprints3/archives/[^/]*/html(/.*)?         unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
 /opt/eprints3/archives/[^/]*/var(/.*)?          unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
 /opt/eprints3/lib(/.*)?                         unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
 /opt/eprints3/tmp(/.*)?                         unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
 /opt/eprints3/var(/.*)?                         unconfined_u:object_r:httpd_sys_rw_content_t:s0&lt;br /&gt;
&lt;br /&gt;
=== eprints.te ===&lt;br /&gt;
 module eprints 1.2;&lt;br /&gt;
 &lt;br /&gt;
 require {&lt;br /&gt;
         type cgroup_t;&lt;br /&gt;
         type fusefs_t;&lt;br /&gt;
         type http_port_t;&lt;br /&gt;
         type httpd_sys_content_t;&lt;br /&gt;
         type httpd_sys_rw_content_t;&lt;br /&gt;
         type httpd_sys_script_exec_t;&lt;br /&gt;
         type httpd_sys_script_t;&lt;br /&gt;
         type httpd_t;&lt;br /&gt;
         type init_t;&lt;br /&gt;
         type modules_object_t;&lt;br /&gt;
         type mysqld_db_t;&lt;br /&gt;
         type mysqld_etc_t;&lt;br /&gt;
         type mysqld_t;&lt;br /&gt;
         type mysqld_var_run_t;&lt;br /&gt;
         type nrpe_t;&lt;br /&gt;
         type shadow_t;&lt;br /&gt;
         type smtp_port_t;&lt;br /&gt;
         type unconfined_service_t;&lt;br /&gt;
         type var_run_t;&lt;br /&gt;
         class dir { add_name create getattr open read remove_name rmdir search setattr write };&lt;br /&gt;
         class file { create execute execute_no_trans getattr ioctl map open read rename unlink write };&lt;br /&gt;
         class lnk_file { getattr read };&lt;br /&gt;
         class sock_file { write };&lt;br /&gt;
         class tcp_socket{ name_connect };&lt;br /&gt;
         class unix_stream_socket { connectto };&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Required by the HTTP webserver&lt;br /&gt;
 allow httpd_t http_port_t:tcp_socket { name_connect };&lt;br /&gt;
 allow httpd_t httpd_sys_content_t:dir { add_name create remove_name setattr write };&lt;br /&gt;
 allow httpd_t httpd_sys_content_t:file { create rename unlink write };&lt;br /&gt;
 allow httpd_t smtp_port_t:tcp_socket { name_connect };&lt;br /&gt;
 allow httpd_t unconfined_service_t:dir { getattr };&lt;br /&gt;
 &lt;br /&gt;
 # Requiired by init processes&lt;br /&gt;
 allow init_t httpd_sys_content_t:file { create execute execute_no_trans ioctl open read };&lt;br /&gt;
 allow init_t httpd_sys_rw_content_t:dir { add_name remove_name };&lt;br /&gt;
 allow init_t httpd_sys_rw_content_t:file { ioctl open read unlink write };&lt;br /&gt;
 allow init_t mysqld_t:unix_stream_socket { connectto };&lt;br /&gt;
 &lt;br /&gt;
 # Required for Icinga NRPE checks&lt;br /&gt;
 allow nrpe_t httpd_sys_content_t:dir { read };&lt;br /&gt;
 allow nrpe_t httpd_sys_content_t:file { getattr };&lt;br /&gt;
 allow nrpe_t httpd_sys_rw_content_t:dir { search };&lt;br /&gt;
 allow nrpe_t httpd_sys_rw_content_t:file { getattr open read };&lt;br /&gt;
 allow nrpe_t modules_object_t:dir { search };&lt;br /&gt;
 allow nrpe_t modules_object_t:file { getattr };&lt;br /&gt;
 allow nrpe_t modules_object_t:lnk_file { getattr read };&lt;br /&gt;
 allow nrpe_t mysqld_t:unix_stream_socket { connectto };&lt;br /&gt;
 allow nrpe_t mysqld_db_t:dir { search };&lt;br /&gt;
 allow nrpe_t mysqld_etc_t:dir { getattr open read search };&lt;br /&gt;
 allow nrpe_t mysqld_etc_t:file { getattr open read };&lt;br /&gt;
 allow nrpe_t mysqld_var_run_t:sock_file { write }; &lt;br /&gt;
 &lt;br /&gt;
 # Only needed for coversheets, considering commenting out otherwise.&lt;br /&gt;
 allow httpd_t shadow_t:file { getattr open read };&lt;br /&gt;
 &lt;br /&gt;
 # Only needed for Shibboleth authentication, consider commenting out otherwise.&lt;br /&gt;
 allow httpd_t var_run_t:sock_file { write };&lt;br /&gt;
 &lt;br /&gt;
 # Only needed for SSH FuseFS, consider commeting out otherwise.&lt;br /&gt;
 allow httpd_t fusefs_t:dir { add_name create read remove_name rmdir setattr write };&lt;br /&gt;
 allow httpd_t fusefs_t:file { create getattr ioctl map open read rename unlink write };&lt;br /&gt;
&lt;br /&gt;
=== redeploy_policy.sh ===&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 rm -f eprints.mod eprints.pp &lt;br /&gt;
 &lt;br /&gt;
 # Build the policy package (.pp) file from type enforcement (.te) and file contexts (.fc) files.&lt;br /&gt;
 checkmodule -M -m -o eprints.mod eprints.te&lt;br /&gt;
 semodule_package -o eprints.pp -m eprints.mod -f eprints.fc&lt;br /&gt;
 &lt;br /&gt;
 # Install it.&lt;br /&gt;
 semodule -i eprints.pp&lt;/div&gt;</summary>
		<author><name>LukeWallin</name></author>
		
	</entry>
</feed>