Tutorial Lengkap Instalasi EPrints 3.4 pada Ubuntu 20.04 LTS

Advertisements

EPrints adalah repositori yang dirancang untuk menyimpan hasil penelitian, dengan tujuan agar hasil penelitian tersebut dapat ditemukan dengan mudah dan dijadikan referensi dimasa yang akan datang. EPrints dapat memanajemen semua objek digital hasil penelitian, mulai dari PDF hingga kumpulan data (datasets).

Universitas atau perguruan tinggi biasanya memiliki EPrints yang mereka kelola secara mandiri. Dengan tujuan untuk mengarsipkan skripsi, hasil riset, paper mahasiswa, dan sebagainya.

Instalasi EPrints itu gampang-gampang susah, agak tricky dan tutorial tentang instalasi EPrints yang tersedia di internet yang selama ini admin temukan masih kurang mudah untuk dimengerti. Oleh karena itulah, dalam kesempatan kali ini admin akan sharing sedikit tentang Tutorial Lengkap Instalasi EPrints 3.4 pada Ubuntu 20.04.

Persiapan Instalasi EPrints di Ubuntu 20.04

“Bahan-bahan” yang harus disiapkan sebelum mengikuti tutorial ini adalah sebagai berikut:

  • VPS atau dedicated yang fresh install Linux Ubuntu 20.04 (pilih yang versi LTS terakhir) dan memiliki dedicated IPv4 address
  • Fully Qualified Domain Name (FQDN) yang A record-nya sudah ter-pointing ke IPv4 address milik VPS (dalam tutorial ini kita akan gunakan hostname repository.fazar.net)
  • Kopi atau teh untuk disruput :)

EPrints bisa diinstal pada VPS dengan spesifikasi minimal 1 GB, 1 vCPU, dan storage dengan kapasitas 20 GB. Saran admin, ada baiknya sobat juga mempertimbangkan kualitas VPS hosting yang akan digunakan. Provider rekomendasi admin adalah Vultr atau IDCloudhost.

Tutorial Lengkap Instalasi EPrints 3.4 pada Ubuntu 20.04

Asumsi saya, seluruh perintah SSH pada tutorial ini dijalankan dengan akses root, sehingga tidak membutuhkan sudo. Namun jika sobat login sebagai user dengan akses terbatas, mungkin sobat perlu menambahkan sudo pada setiap perintah yang akan dimasukkan.

Instalasi EPrints

Lakukan upgrade semua packages yang ada

apt update && apt upgrade -y

Jika terdapat upgrade untuk kernel, maka sebaiknya sobat reboot dulu VPS yang sobat gunakan.

Tambahkan repo EPrints

echo "deb http://deb.eprints.org/3.4/stable/ ./" > /etc/apt/sources.list.d/eprints.list
wget -O /etc/apt/trusted.gpg.d/eprints.gpg http://deb.eprints.org/keyFile.gpg

Lakukan instalasi EPrints versi 3.4.4

apt update && apt-get install eprints=3.4.4 -y

Setelah EPrints berhasil terinstal, maka akan muncul pesan seperti ini

Setting up eprints (3.4.4) ...
######################################################################
##                                                                  ##
##                       Welcome to EPrints 3                       ##
##                                                                  ##
######################################################################
##                                                                  ##
## For installation advice and known isses please check:            ##
##   https://wiki.eprints.org/w/Installing_EPrints_on_Debian/Ubuntu ##
##                                                                  ##
## Getting Started:                                                 ##
##   Before you can start using eprints you need to configure your  ##
## install, follow these simple steps:                              ##
##                                                                  ##
##   # su eprints                                                   ##
##       You have to logged in as the eprints user to operate       ##
##       with eprints                                               ##
##   # cd                                                           ##
##       To the eprints home directory (/usr/share/eprints)         ##
##                                                                  ##
##   # ./bin/epadmin create                                         ##
##       Follow the instruction to create your archive.             ##
##                                                                  ##
##   # exit                                                         ##
##                                                                  ##
##   # a2ensite eprints                                             ##
##                                                                  ##
##   # apache2ctl restart                                           ##
##                                                                  ##
##                         ##### DONE #####                         ##
##                                                                  ##
##  For more documentation please see the eprints wiki:             ##
##    https://wiki.eprints.org/w/Documentation                      ##
##                                                                  ##
######################################################################
Setting up libxml-sax-expat-perl (0.51-1) ...

Langkah selanjutnya adalah lakukan download flavoured repository

wget https://files.eprints.org/2715/2/eprints-3.4.4-flavours.tar.gz
tar -xzvf eprints-3.4.4-flavours.tar.gz -C /usr/share/eprints/
mv /usr/share/eprints/eprints-3.4.4/flavours /usr/share/eprints/
rmdir /usr/share/eprints/eprints-3.4.4/

Sampai disini instalasi EPrints 3.4.4 sudah selesai. Namun belum dapat digunakan karena belum dikonfigurasi.

Pengaturan Database Umum

EPrints menggunakan database mySQL dan disini kita harus menambahkan password mySQL untuk user root karena secara default, user root tidak memiliki password. Silakan masukkan perintah berikut ini secara berurutan (jangan lupa mengganti password sesuai keinginan sobat sendiri!)

mysql -u root
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PasswordAnda';
FLUSH PRIVILEGES;
exit

Konfigurasi EPrint di Ubuntu 20.04

Note: Jika sobat melihat <ENTER> maka yang dimaksud adalah silakan tekan tombol enter pada keyboard.

EPrints akan berjalan dengan user eprints. Oleh karena itu, kita perlu merubah user dari root menjadi eprints.

su -l eprints

Buat repository baru dengan memasukkan perintah berikut ini:

./bin/epadmin create pub

Sobat akan diminta memasukkan repoid. Silakan masukkan identitas repository yang sobat inginkan. Dalam contoh ini kita menggunakan nama myrepo.

Create a pub Repository

Please select an ID for the repository, which will be used to create a directory
and identify the repository. Lower case letters, numbers and underscores, may not start with
a number or underscore. examples: "lemurprints", "test3" or "research_archive"

Archive ID? myrepo <ENTER>

Selanjutnya, kita akan membuat vital settings, pencet saja enter.

We need to create /usr/share/eprints/archives/myrepo, doing it now ...

Creating initial files:
Installing: /usr/share/eprints/archives/myrepo/cfg
Installing: /usr/share/eprints/archives/myrepo/cfg/static
Installing: /usr/share/eprints/archives/myrepo/cfg/static/images
Installing: /usr/share/eprints/archives/myrepo/cfg/static/javascript
Installing: /usr/share/eprints/archives/myrepo/cfg/static/javascript/auto
Installing: /usr/share/eprints/archives/myrepo/cfg/static/style
Installing: /usr/share/eprints/archives/myrepo/cfg/static/style/auto
Installing: /usr/share/eprints/archives/myrepo/cfg/cfg.d
Installing: /usr/share/eprints/archives/myrepo/cfg/lang
Installing: /usr/share/eprints/archives/myrepo/cfg/lang/en
Installing: /usr/share/eprints/archives/myrepo/cfg/lang/en/phrases
Wrote /usr/share/eprints/archives/myrepo/cfg/cfg.d/00_flavour.pl

Ok. I've created the initial config files and directory structure.
I've also created a "disk0" directory under documents/ if you want
your full texts to be stored on a different partition then remove
the disk0, and create a symbolic link to the directory you wish to
store the full texts in. Additional links may be placed here to be
used when the first is full.

Configure vital settings? [yes] ? <ENTER>

Tentukan hostname yang akan digunakan. Dalam contoh ini kita menggunakan repository.fazar.net

Please enter the fully qualified hostname of the repository.
For a production system we recommend against using the real hostname of the
machine.
Example: myrepo.footle.ac.uk

Hostname? repository.fazar.net <ENTER>

Sobat akan diminta untuk memasukkan pengaturan webserver. Kita akan menggunakan pengaturan default saja. Pada saat diminta email, masukkan alamat email sobat.

Please enter the port of the webserver. This is probably 80, but you may wish
to run apache on a different port if you are experimenting.

Webserver Port [80] ? <ENTER>

Please enter all the aliases which could reach the repository, and indicate if
you would like EPrints to write a Redirect Rule to redirect requests to this
alias to the correct URL.
Some suggestions:
repository.fazar
repository

Enter a single hash (#) when you're done.

Alias (enter # when done) [#] ? <ENTER>

Please enter the path part of the repository's base URL. This should probably
be '/'.

Path [/] ? <ENTER>

If you will use https for your user pages (including login) enter the https hostname
here, or leave blank when using http only.

HTTPS Hostname [] ? <ENTER>

Administrator Email? ([email protected]) <ENTER>

Masukkan nama repository dan organisasi

Enter the name of the repository in the default language. If you wish to enter
other titles for other languages or enter non ascii characters then you may
enter something as a placeholder and edit the XML config file which this
script generates.

Archive Name [Test Repository] ? (Nama Repository Sobat) <ENTER>

Enter the name of the organisation in the default language. Again, if you wish to enter
other titles for other languages or enter non ascii characters then you may
enter something as a placeholder and edit the XML config file which this
script generates.

Organisation Name [Organisation of Test] ? (Nama Organisasi) <ENTER>

Write these core settings? [yes] ? <ENTER>

Pengaturan database untuk EPrints

Configure database? [yes] ? <ENTER>

Configuring Database for: myrepo <ENTER>
Database Name [myrepo] ? <ENTER>
MySQL Host [localhost] ? <ENTER>

You probably don't need to set socket and port (unless you do!?).
MySQL Port (# for no setting) [#] ? <ENTER>
MySQL Socket (# for no setting) [#] ? <ENTER>
Database User [myrepo] ? <ENTER>
Database Password [RANDOMPASSWORDS] ? <ENTER>
Database Engine [InnoDB] ? <ENTER>

Write these database settings? [yes] ? <ENTER>
Wrote /usr/share/eprints/archives/myrepo/cfg/cfg.d/database.pl

EPrints can create the database, and grant the correct permissions.

Create database "myrepo" [yes] ? <ENTER>
Database Superuser Username [root] ? <ENTER>
Database Superuser Password? (masukkan password mySQL root) <ENTER>
Create database tables? [yes] ? <ENTER>
Creating database tables ...

Selanjutnya sobat akan diminta untuk menambahkan user pertama repository. Silakan tambahkan user dengan akses admin.

Create an initial user? [yes] ? <ENTER>
Creating a new user in myrepo

Enter a username [admin] ? <ENTER>
Select a user type (user|editor|admin) [admin] ? <ENTER>
Enter Password? (masukkan password untuk akses admin) <ENTER>
Email? (masukkan alamat email admin. mis. [email protected]) <ENTER>

EPrints akan menanyakan apakah sobat akan dibuatkan halaman-halaman web repository.

Do you want to build the static web pages? [yes] ? <ENTER>
Do you want to import the LOC subjects and sample divisions? [yes] ? <ENTER>

Terakhir, EPrints akan menambahkan konfigurasi untuk Apache Webserver

Do you want to update the apache config files? (you still need to add the 'Include' line) [yes] ? <ENTER>

Saat ini seharusnya EPrints sudah terkonfigurasi dengan benar. Silakan ketikkan perintah exit untuk keluar dari user eprints.

Penyesuaian Konfigurasi Apache

Jika sobat mengakses alamat repository lewat browser, dalam hal ini http://repository.fazar.net maka sobat hanya akan melihat halaman default dari Apache. Oleh sebab itu, sobat harus mengganti ServerName default Apache menjadi IPv4 address.

nano /etc/apache2/sites-enabled/000-default.conf

Ubah bagian #ServerName www.example.com menjadi ServerName <IPv4 address>, misalnya ServerName 107.xxx.xxx.xxx

        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        ServerName 107.xxx.xxx.xxx

Selanjutnya tambahkan vhost untuk EPrints dan reload Apache.

a2ensite eprints && systemctl reload apache2

Instalasi EPrints telah selesai, dan seharusnya EPrints sobat sudah dapat diakses dengan menggunakan hostname yang telah ditentukan. Yay, berhasil! Silakan sobat sruput dulu kopi atau teh yang sudah disediakan.

tutorial lengkap instalasi eprints 3 4 pada ubuntu 20 04 a
Repository non-HTTPS

Aktivasi HTTPS pada EPrint 3.4

Sebelumnya kita sudah berhasil melakukan instalasi EPrint 3.4.4 dengan mulus. Namun, web EPrints hanya bisa diakses melalui HTTP – sebuah protokol yang sudah mulai usang dan ditinggalkan karena tidak aman.

Google sendiri lebih mengutamakan hasil pencarian pada website-website yang sudah mendukung protokol HTTPS. Oleh karena itulah, penting untuk memiliki instalasi EPrint yang juga mendukung HTTPS.

Aktivasi Module Apache2

Sobat wajib untuk mengaktifkan 2 module Apache yang dibutuhkan untuk konfigurasi HTTPS, yaitu module ssl dan headers. Module ssl digunakan Apache untuk handling sertifikat SSL, sedangkan module headers digunakan untuk mengaktifkan HSTS (HTTP Strict Transport Security).

a2enmod ssl && a2enmod headers && systemctl restart apache2

Instalasi certbot

Certbot merupakan skrip yang mempermudah proses aktivasi dan penerbitan SSL gratisan. Meskipun gratis, tapi kualitas dari sertifikat keluaran LetsEncrypt sudah cukup canggih dan tidak diragukan. Selain itu, certbot juga mampu memperbarui sertifikat SSL secara otomatis.

Untuk menginstal certbot pada Ubuntu 20.04, silakan ikuti prosedur berikut ini!

Hapus instalasi certbot (jika ada) dan instal snapd

apt-get remove certbot -y && apt install snapd -y

Install snap core dan pastikan terupgrade ke versi terakhir

snap install core && snap refresh core

Install certbot dengan menggunakan snap

snap install --classic certbot

Buat softlink certbot, sehingga certbot bisa dijalankan dengan lebih mudah

ln -s /snap/bin/certbot /usr/bin/certbot

Instalasi sertifikat SSL pada EPrints

Buat file baru yang mengizinkan akses acme challenge pada EPrints

nano /usr/share/eprints/lib/cfg.d/z_rewrite_url_LetsEncrypt.pl

Pastekan script berikut ini, kemudian save!

# import Apache constant e.g. 'OK'
use EPrints::Apache::AnApache;

$c->add_trigger( EP_TRIGGER_URL_REWRITE, sub {
        my( %o ) = @_;

        # if the incoming request matches the LetsEncrypt challenge URL...
        if( $o{uri} =~ m!^${o{urlpath}}/\.well-known/acme-challenge/! )
        {
                # and the LetsEncrypt renewal process has put the file in EPRINTS_ROOT/archives/ARCHIVEID/html/.well-known/acme-challenge/
                if( -f $o{repository}->get_conf( "htdocs_path" ).$o{uri} )
                {
                        # reply with an HTTP '200' 
                        ${$o{return_code}} = OK;
                        # and return the file reqested
                        $o{request}->filename( $o{repository}->get_conf( "htdocs_path" ).$o{uri} );
                }
                # and say that we've handled the request - so no more triggers should be run.
                return EP_TRIGGER_DONE;
        }
} );

Rubah ownership dan permission file tersebut agar dapat dieksekusi oleh EPrints

chown eprints:www-data /usr/share/eprints/lib/cfg.d/z_rewrite_url_LetsEncrypt.pl
chmod 664 /usr/share/eprints/lib/cfg.d/z_rewrite_url_LetsEncrypt.pl

Selanjutnya, mari kita coba untuk menerbitkan sertifikat SSL dengan certbot

certbot --apache certonly

Maka akan muncul prompt registrasi certbot dan opsi memilih vhost yang telah diaktifkan

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): (masukkan email) <ENTER>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y <ENTER>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N <ENTER>
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: repository.fazar.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1 <ENTER>

Jika certbot berhasil menerbitkan sertifikat SSL maka akan muncul pesan seperti ini

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/repository.fazar.net/fullchain.pem
Key is saved at: /etc/letsencrypt/live/repository.fazar.net/privkey.pem
This certificate expires on 2023-02-03.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Catat path CERTIFICATE dan KEY pada notepad atau sejenisnya! Selanjutnya kita akan switch user ke eprints lagi dan melakukan konfigurasi.

su -l eprints 
mkdir archives/myrepo/ssl/

Buat file baru dengan nama ssl.conf

nano archives/myrepo/ssl/ssl.conf

Isikan dengan konfigurasi berikut ini (sesuaikan dengan hostname dan repoid yang telah sobat tentukan sebelumnya)

<VirtualHost *:443>

     ServerName repository.fazar.net:443
 
     # Enable HSTS
     Header always set Strict-Transport-Security "max-age=63072000;"
 
     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/repository.fazar.net/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/repository.fazar.net/privkey.pem
 
     SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
 
     LogLevel warn
     ErrorLog /var/log/apache2/ssl_error_log    
     TransferLog /var/log/apache2/ssl_access_log
     CustomLog /var/log/apache2/ssl_request_log \
         "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 
     Include /usr/share/eprints/cfg/apache_ssl/myrepo.conf
 
     PerlTransHandler +EPrints::Apache::Rewrite

</VirtualHost>

Oke, selanjutnya tambahkan file baru (sesuaikan lagi repoid nya, ya gaes!)

nano archives/myrepo/cfg/cfg.d/https.pl

Isi dengan baris-baris berikut ini

$c->{securehost} = $c->{host};
$c->{secureport} = 443;
$c->{http_root} = undef;

Kemudian generate konfigurasi Apache baru

bin/generate_apacheconf --system --replace

Kemudian switch user kembali menjadi root dengan mengetikkan exit. Silakan sruput minum lagi, bossque!

Edit konfigurasi Apache untuk EPrints.

 nano /etc/apache2/sites-available/eprints

Kemudian ubah isinya seperti ini (perhatikan kembali repoid nya, ya!)

Include /usr/share/eprints/cfg/apache.conf
Include /usr/share/eprints/archives/myrepo/ssl/ssl.conf

Karena banyak konfigurasi yang diutak-atik maka sebaiknya kita cek dulu konfigurasi Apache yang telah dibuat.

apachectl configtest

Pastikan muncul tulisan “Syntax OK”. Jika ada error, silakan koreksi error-nya dulu. Dan, setelah semuanya beres, kita lakukan langkah terakhir, yaitu restart Apache2.

apachectl restart

Silakan akses halaman HTTPS dari repository yang telah sobat buat!

tutorial lengkap instalasi eprints 3 4 pada ubuntu 20 04 b
Yay! Repository EPrints dengan HTTPS

Bagaimana dengan skor SSL-nya? Well, seharusnya sih A+ dengan konfigurasi yang telah dibuat diatas.

tutorial lengkap instalasi eprints 3 4 pada ubuntu 20 04 c 1
Keren, sob! Skor SSL-nya A+

Oke demikian Tutorial Lengkap Instalasi EPrints 3.4 pada Ubuntu 20.04 plus HTTPS dengan skor A+ komplit! Semoga bisa bermanfaat untuk sobat semuanya. Ingin menambahkan atau ingin bertanya? Silakan tinggalkan komentar dibawah ini.

Advertisements

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *