In the academic and research world, managing digital assets is no longer optional, it is essential. Higher education institutions and research organizations require a secure, indexed, and easily accessible platform to store scholarly works, theses, dissertations, and research data. This is where an Institutional Repository plays a vital role.
In the academic and research world, managing digital assets is no longer optional, it is essential. Higher education institutions and research organizations require a secure, indexed, and easily accessible platform to store scholarly works, theses, dissertations, and research data. This is where an Institutional Repository plays a vital role.
What is EPrints?
EPrints is an open-source software platform specifically designed to build open-access repositories. Developed by the School of Electronics and Computer Science at the University of Southampton, UK, EPrints has become a gold standard in digital archive management.
Fundamentally, EPrints enables institutions to collect, preserve, and disseminate their intellectual assets online. Its flexibility extends beyond research literature—EPrints can also handle complex scientific data, theses, reports, and multimedia assets. Its large global community ensures ongoing support and the continuous development of features relevant to modern academic needs.
Key Features of EPrints 3.4
Version 3.4 introduces significant improvements over previous releases, focusing on system efficiency and user experience. Key highlights include:
- Flexible Workflow Management: Deposit, review, and publication processes can be customized based on institutional policies.
- Advanced Indexing: Supports OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting), ensuring your repository is discoverable by academic search engines such as Google Scholar.
- Responsive Design (v3.4): A more modern and mobile-friendly interface compared to older versions.
- Document Preview: Allows users to preview documents directly without downloading them.
- Metadata Export: Supports popular bibliographic formats (BibTeX, EndNote, MODS, etc.).
User Testimonials
The credibility of EPrints is widely recognized. Thousands of repositories worldwide use this platform.
“EPrints is the most flexible platform for our institutional repository. Its customization capabilities allow us to tailor workflows and interfaces to our university’s specific needs.” — User from the global academic community
Major institutions such as Caltech and NOAA (National Oceanic and Atmospheric Administration) are known to use EPrints for managing data archives and publications.
System Requirements & Preparation
Before starting the installation, ensure your server meets the following requirements. EPrints 3.4 heavily relies on the LAMP stack (Linux, Apache, MySQL, Perl).
Server Specifications
- OS: Ubuntu 24.04 LTS (recommended)
- RAM: Minimum 2GB (4GB recommended for production)
- Disk: Based on repository storage needs
Prerequisites:
- SSH access (root/sudo)
- A domain or subdomain pointed (A Record) to the server IP (e.g., eprints.domain.tld)
This guide uses Ubuntu 24.04 + Apache + MySQL, following official recommendations.
Step 1: Update the System & Install Dependencies
The first step is to ensure the Ubuntu package repositories are updated and to install all Perl libraries and supporting tools required by EPrints.
Update the operating system:
sudo apt update
sudo apt upgrade -y Install dependency packages (Perl modules, Apache, image/document manipulation tools):
sudo apt install perl libncurses6 libselinux1 apache2 libapache2-mod-perl2 libxml-libxml-perl \
libunicode-string-perl libterm-readkey-perl libmime-lite-perl libmime-types-perl libdigest-sha-perl \
libdbd-mysql-perl libxml-parser-perl libxml2-dev libxml-twig-perl libarchive-any-perl libjson-perl \
liblwp-protocol-https-perl libtext-unidecode-perl lynx wget ghostscript poppler-utils antiword elinks \
texlive-base texlive-base-bin psutils imagemagick adduser tar gzip unzip libsearch-xapian-perl \
libtex-encode-perl libio-string-perl libcgi-pm-perl libdbd-mysql-perl git xpdf python3-html2text make -y Install MySQL Server:
sudo apt install mysql-server -y Step 2: Database Configuration
We need to create a dedicated user in MySQL so EPrints can communicate with the database.
Log in to the MySQL console:
sudo mysql Create the eprints user with full privileges (Replace strongpassword with a secure password):
CREATE USER 'eprints'@'localhost' IDENTIFIED by 'strongpassword';
GRANT ALL PRIVILEGES ON *.* TO 'eprints'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit Step 3: Create System User & Apache Configuration
For security reasons, EPrints should be run by a separate system user, not root.
Create the system user eprints:
sudo useradd -d /opt/eprints3 -s /bin/bash eprints Prepare the installation directory and set permissions:
sudo mkdir /opt/eprints3
sudo chown eprints:eprints /opt/eprints3
sudo chmod 2775 /opt/eprints3 Important: We must change the user running Apache to match the EPrints user. Edit the envvars configuration:
sudo nano /etc/apache2/envvars Find the lines APACHE_RUN_USER and APACHE_RUN_GROUP, and change them to:
export APACHE_RUN_USER=eprints
export APACHE_RUN_GROUP=eprints Restart Apache to apply the user change:
sudo systemctl restart apache2 Step 4: Download & Install EPrints
Now we will download the EPrints source code directly from their official GitHub.
Switch to the eprints user:
sudo su - eprints Clone the EPrints repository to the /opt/eprints3 directory:
git clone https://github.com/eprints/eprints3.4.git /opt/eprints3 Enter the directory and checkout the stable version 3.4.7:
cd /opt/eprints3
git checkout tags/v3.4.7 Step 5: Create Repository (Initialization)
This is the core of the installation. We will use the epadmin command to create a new repository configuration.
Run the repository creation command:
bin/epadmin create pub Follow the interactive guide below (adjust the input with your data):
- Archive ID: repository
- Configure vital settings? [yes]: Press ENTER
- Hostname: eprints.domain.tld (Adjust to your domain)
- Webserver Port [80]: Press ENTER
- Alias: Press ENTER (type # when done if prompted)
- Path [/]: Press ENTER
- HTTPS Hostname: eprints.domain.tld
- Secure Webserver Port [443]: Press ENTER
- Administrator Email: [email protected]
- Archive Name: University Name Repository
- Organisation Name: University/Institution Name
- Write these core settings? [yes]: Press ENTER
Configure Database when prompted:
- Configure database? [yes]: Press ENTER
- Database Name: repository
- MySQL Host [localhost]: Press ENTER
- MySQL Port/Socket: Press ENTER (default)
- Database User: repository (or leave default)
- Database Password: Enter a random/strong password for this specific DB
- Database Engine [InnoDB]: Press ENTER
- Write these database settings? [yes]: Press ENTER
- Create database “repository”? [yes]: Press ENTER
Enter the MySQL Superuser credentials created in Step 2:
- Database Superuser Username: eprints
- Database Superuser Password: Enter the ‘strongpassword’ from Step 2
- Create database tables? [yes]: Press ENTER
Create an EPrints Web Administrator account (to login to the dashboard later):
- Create an initial user? [yes]: Press ENTER
- Username: admin
- User type: admin
- Password: Create a web login password
- Email: [email protected]
Finalization:
- Answer [yes] (ENTER) to build static web pages, import LOC subjects, and update apache config files.
Exit the eprints user:
exit Step 6: Apache Integration
For Apache to recognize the newly created EPrints configuration, we need to include it in the global Apache configuration.
Add the include path to apache2.conf:
echo "Include /opt/eprints3/cfg/apache.conf" | sudo tee -a /etc/apache2/apache2.conf Restart Apache:
sudo systemctl restart apache2 At this point, you can access http://eprints.domain.tld, but it is still using standard HTTP.
Step 7: SSL Installation (HTTPS)
For data security and user trust, using HTTPS is mandatory. We will use Certbot (Let’s Encrypt) and a secure manual SSL configuration.
Install Certbot:
sudo apt install certbot python3-certbot-apache -y Request SSL certificate (Use certonly mode because we will configure the vhost manually):
sudo certbot --non-interactive \
-m [email protected] \
--agree-tos \
--no-eff-email \
--apache certonly \
-d eprints.domain.tld Configure EPrints SSL Virtual Host: Switch back to the eprints user:
sudo su - eprints Create the directory and configuration file:
mkdir -p /opt/eprints3/archives/repository/ssl
nano /opt/eprints3/archives/repository/ssl/securevhost.conf Paste the following configuration (this uses a strong Cipher Suite):
<VirtualHost *:443>
ServerName eprints.domain.tld:443
ErrorLog /var/log/apache2/eprints.domain.tld_error.log
TransferLog /var/log/apache2/eprints.domain.tld_access.log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLCertificateFile /etc/letsencrypt/live/eprints.domain.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/eprints.domain.tld/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/eprints.domain.tld/chain.pem
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog /var/log/apache2/eprints.domain.tld_access.log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Include /opt/eprints3/cfg/apache_ssl/repository.conf
PerlTransHandler +EPrints::Apache::Rewrite
</VirtualHost> Regenerate EPrints Apache configuration:
/opt/eprints3/bin/generate_apacheconf --system --replace Enable SSL on Apache System: Exit to sudo user (exit), then run:
Add the EPrints SSL configuration to the global Apache config:
echo "Include /opt/eprints3/archives/repository/ssl/securevhost.conf" | sudo tee -a /etc/apache2/apache2.conf Enable SSL module and restart the service:
sudo a2enmod ssl
sudo systemctl restart apache2 SSL has been installed, and EPrints is now accessible at https://eprints.domain.tld.
Conclusion
Congratulations! You have successfully installed EPrints 3.4 on an Ubuntu 24.04 server with a secure HTTPS configuration. Your repository can now be accessed via https://eprints.domain.tld.
The next steps involve logging in as an administrator, customizing the branding (institution logo and colors), and setting up the “Divisions” structure (Faculties/Departments) to be ready for research paper deposits. With this strong open-source foundation, your institution now has full control over its digital assets.




