DSpace 7 is an open-source digital repository software system that is designed to help institutions manage and showcase their digital assets, including research papers, academic publications, datasets, multimedia content, and more. It is the latest major version of DSpace, which is widely used by universities, libraries, and other organizations to create digital repositories and archives.
DSpace 7 includes a robust search and discovery system with advanced filtering options, making it easier for users to find and access the content they need.
The Dspace backend installation requires packages that include:
Java JDK 11 or 17 (OpenJDK or Oracle JDK)
Apache Maven 3.3.x or above (Java build tool)
Apache Ant 1.10.x or later (Java build tool)
Relational Database (PostgreSQL or Oracle)
Apache Solr 8.x (full-text index/search service)
Node.js 12 and later
Servlet Engine (Apache Tomcat 9, Jetty, Caucho Resin or equivalent)
Git (code version control)
We will begin by creating a dedicated user for Dspace on our system.
sudo adduser dspace
Add the user to the sudo group:
sudo usermod -aG sudo dspace
Now switch to the created user:
sudo su - dspace
We will then install Java and make the required configurations. The easiest way of installing Java 11 on Ubuntu is by executing the below commands:
sudo apt update -y
sudo apt install openjdk-11-jdk -y
Once installed, verify with the commands:
java -version
openjdk version "11.0.20.1" 2023-08-24
OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
javac -version
javac 11.0.20.1
The next thing is to export the JAVA_HOME. Open the below file and add the lines:
nano ~/.bashrc
[...]
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
export PATH=$PATH:$JAVA_HOME/bin
Save the changes and source the profile:
source ~/.bashrc
echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-11-openjdk-amd64/bin
Dspace uses PostgreSQL to store its data. Dspace has been tested on PostgreSQL 11, 12 and 13. For this guide, we will use PostgreSQL 13 which can be installed by following the guide below:
**Install PostgreSQL on Ubuntu **
Ensure all the required packages have been installed:
sudo apt install postgresql postgresql-contrib libpostgresql-jdbc-java -y
Once installed, we will allow the host to access the PostgreSQL server:
echo "host dspace dspace 127.0.0.1/32 md5" | sudo tee -a /etc/postgresql/*/main/pg_hba.conf
We will also set several user permissions:
> sudo sed -i 's/ident/trust/' /etc/postgresql/*/main/pg_hba.conf
> sudo sed -i 's/md5/trust/' /etc/postgresql/*/main/pg_hba.conf
> sudo sed -i 's/peer/trust/' /etc/postgresql/*/main/pg_hba.conf
After that, restart the PostgreSQL service:
sudo systemctl restart postgresql
Switch to the Postgres user:
sudo su - postgres
Create a database user and database for DSpace:
createuser dspace
createdb dspace -E UNICODE
Now access the shell:
psql -d dspace
Create the pgcrypto extension:
CREATE EXTENSION pgcrypto;
Create the password for the user and assigned the required permissions:
ALTER ROLE dspace WITH PASSWORD 'Passw0rd';
ALTER DATABASE dspace OWNER TO dspace;
GRANT ALL PRIVILEGES ON DATABASE dspace TO dspace;
Exit the shell:
\q
Exit the Postgres user:
exit
Restart PostgreSQL:
sudo systemctl restart postgresql
To install Apache Solr 8 on Ubuntu, you need to download it from the Apache Solr downloads page. You can also download it using the command line:
wget -c https://dlcdn.apache.org/lucene/solr/8.11.2/solr-8.11.2.tgz
Extract file
tar xvf solr-*.tgz
Install Apache Solr:
sudo bash solr-8.11.2/bin/install_solr_service.sh solr-8.11.2.tgz
A symbolic link is created in /opt/solr after this.
Tomcat is also one of the main requirements of DSpace. For this guide, we will install Apache Tomcat 9 which exists in the default Ubuntu repositories:
sudo apt install tomcat9
Here, we need to define our JAVA_HOME and memory limits:
sudo nano /etc/default/tomcat9
In the file, make the below changes:
JAVA_OPTS="-Djava.awt.headless=true -Xmx2048m -Xms1024m -XX:MaxPermSize=1024m"
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
We also need to modify the below file:
sudo nano /etc/tomcat9/server.xml
Modify the lines below:
<Connector port="8080"
minSpareThreads="25"
enableLookups="false"
redirectPort="8443"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"/>
Maven is used to compile the Dspace 7 code, It also downloads all the required dependencies for Dspace. Ant on the other hand installs the compiled code.
To install them on Ubuntu, use the command:
sudo apt install ant ant-optional maven git -y
Verify the installation:
mvn -v
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.20.1, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-79-generic", arch: "amd64", family: "unix"
ant -version
Apache Ant(TM) version 1.10.12 compiled on January 17 1970
Proceed and download the latest version of DSpace Backend from the DSpace GitHub Repository. For this guide, we will use v7.2 which can be pulled with the command:
wget -c https://github.com/DSpace/DSpace/archive/refs/tags/dspace-7.6.1.tar.gz
Extract the archive:
tar -zxvf dspace-*.tar.gz
Rename the folder to a simpler name:
mv DSpace-dspace-* dspace-7-src
Now navigate to the directory:
cd dspace-7-src
Create a directory for the deployment:
sudo mkdir /opt/dspace-7
Set the ownership to the DSpace user:
sudo chown dspace:dspace -R /opt/dspace-7
Create a configuration file from the default available one:
cp dspace/config/local.cfg.EXAMPLE dspace/config/local.cfg
Modify this configuration file:
nano dspace/config/local.cfg
Make the below adjustments:
dspace.dir=/opt/dspace-7
dspace.server.url = http://YOUR-SERVER-IP:8080/server
dspace.ui.url = http://YOUR-SERVER-IP:4000
dspace.name = DSpace at ComputingforGeeks
solr.server = http://localhost:8983/solr
db.url = jdbc:postgresql://localhost:5432/dspace
db.driver = org.postgresql.Driver
db.username = dspace
db.password = Passw0rd
Once the adjustments have been made, start building Dspace:
mvn package
Sample Output:
Build Succesfull
Navigate to the created installer directory:
cd dspace/target/dspace-installer
Deploy the generated code:
ant fresh_install
Sample Output:
BUILD SUCCESFULL
Once complete, configure Tomcat9 to serve DSpace:
cd /var/lib/tomcat9/webapps
sudo ln -s /opt/dspace-7/webapps/server server
You also need to copy the configs to Solr:
sudo cp -r /opt/dspace-7/solr/* /opt/solr/server/solr/configsets
Restart Apache Solr:
sudo systemctl restart solr
Run database migrations:
cd /opt/dspace-7
./bin/dspace database migrate
Next we create admin user.
/opt/dspace-7/bin/dspace create-administrator
Creating an initial administrator account
E-mail address: [email protected]
First name: test
Last name: user
Password will not display on screen.
Password:
Again to confirm:
Is the above data correct? (y or n): y
Administrator account created
Now you can access the DSPace Backed using the URL http://IP_Address:8080/server
When installing the Dspace 7 Front End, you need some packages. One of these packages is NodeJS. Dspace 7 works with Node.js (v16 or v18) and required Dspace 7 and above.
Here, we will install Node.JS using NVM installed with the command:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
Source the profile:
source ~/.bashrc
Now install Node.JS 16 LTS
nvm install v16
Check the node.js version:
node --version
v16.20.0
npm -v
8.19.4
Install NPM from the PAT repo:
sudo apt install npm
Also, install Yarn and PM2:
sudo npm install --global yarn
sudo npm install --global pm2
Download DSpace Frontend from the GitHub releases page. You can also pull it with Wget:
cd ~
wget -c https://github.com/DSpace/dspace-angular/archive/refs/tags/dspace-7.6.tar.gz
Once downloaded, extract it:
tar -zxvf dspace-*.tar.gz
Rename the directory with a more straightforward name:
mv dspace-angular-dspace-* dspace-7-angular
Navigate into the directory:
cd dspace-7-angular
Instal all the required dependencies:
yarn install
Once installed, start the build process:
yarn build:prod
Sample Output:
done!
Now copy the generated files to it to a dedicated directory in /opt
sudo cp -r ../dspace-7-angular/ /opt/dspace-7-angular
Set the correct permissions:
sudo chown dspace:dspace -R /opt/dspace-7-angular/
Now we need to configure PM2:
cd /opt/dspace-7-angular/
nano dspace-ui.json
In the file, add the below lines
{
"apps": [
{
"name": "dspace-angular",
"cwd": "/opt/dspace-7-angular",
"script": "yarn",
"args": "run serve:ssr",
"interpreter": "none"
}
]
}
Save the file and create a config so that the Frontedn can communicate with the backed:
nano config/config.yml
Modify the values to match your Dspace server:
rest:
ssl: false
host: DSpace-IP_Address
port: 8080
nameSpace: /server
Start the Dspace Front end:
pm2 start dspace-ui.json
At this point, you will have the Dspace listening on port 4000, localhost
To be able to access the Dspace Frontend using the domain name or IP address, we need to configure a reverse proxy. For this guide, we will use Nginx.
Install Nginx on Ubuntu with the command:
sudo apt install nginx -y
Create a virtual host file:
sudo nano /etc/nginx/conf.d/dspace_ui.conf
Add the below lines replacing your domain name/IP address appropriately:
server {
listen 80;
server_name YOUR-DOMAIN-NAME;
access_log /var/log/nginx/dspace-access.log;
error_log /var/log/nginx/dspace-error.log;
location / {
proxy_pass http://localhost:4000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Once created, restart nginx:
sudo service nginx restart
Now you should be able to access your Dspace 7 Frontend using your domain name or IP address. For example //dspace.navitrack.co.tz
In case you find error 500, you need to modify the dspace.ui.url on your Dspace Backend to match what you are trying to access the
server with. You can then log in using the admin we created earlier. First, accept the license terms and thats it!!