📚 13,885 Journals 🏷️ 522 Subjects 🆓 8,493 No APC
Submit Your Journal  |  About
⚙️ Technical Guide

OJS Setup & Configuration Complete Guide

From installation to indexing-ready — everything you need to set up Open Journal Systems for a professional, credible academic journal.

OJS 3.3 Compatible OJS 3.4 Compatible OJS 3.5 Compatible
📖

What is OJS?

Open Journal Systems by PKP

Open Journal Systems (OJS) is the world's most widely used open source journal management and publishing platform, developed by the Public Knowledge Project (PKP). It powers over 25,000 journals globally.

OJS manages the complete editorial workflow — from author submission to peer review, editing, layout, and final publication — all within a single web-based system.

25,000+
Journals worldwide
100+
Languages supported
Free
Completely open source
PKP
Maintained by PKP (SFU)
1

Server Requirements

Before installation

Minimum Requirements

  • PHP 8.0 or higher (PHP 8.1+ recommended for OJS 3.4+)
  • MySQL 5.7+ or MariaDB 10.3+ or PostgreSQL 12+
  • Apache 2.4+ or Nginx (with proper rewrite rules)
  • mod_rewrite enabled (Apache) / try_files (Nginx)
  • PHP extensions: mbstring, xml, json, curl, zip, gd or imagick
  • 1 GB RAM minimum (2 GB+ recommended)
  • 5 GB disk space minimum for files/uploads

Recommended PHP Settings

; php.ini recommended settings upload_max_filesize = 50M post_max_size = 50M memory_limit = 512M max_execution_time = 300 max_input_vars = 10000 date.timezone = "Asia/Kolkata"
2

Installation

Command line method (recommended)

# 1. Download latest OJS release wget https://pkp.sfu.ca/ojs/download/ojs-3.4.0.tar.gz # 2. Extract to web root tar -xzf ojs-3.4.0.tar.gz -C /var/www/html/ mv /var/www/html/ojs-3.4.0 /var/www/html/journal # 3. Set permissions chown -R www-data:www-data /var/www/html/journal chmod -R 755 /var/www/html/journal chmod -R 777 /var/www/html/journal/cache chmod -R 777 /var/www/html/journal/public # 4. Create files directory outside web root (secure) mkdir -p /var/ojs-files chown -R www-data:www-data /var/ojs-files
✅ Tip: Always store your files_dir outside the web root for security. This prevents direct URL access to uploaded manuscripts and reviewer files.

Web Installer Steps

  1. Navigate to your domain — you'll see the OJS web installer
  2. Select language and fill in database credentials (MySQL host, name, user, password)
  3. Set files directory (the path outside web root you created above)
  4. Create administrator account (choose a strong password)
  5. Complete installation — OJS creates all database tables automatically
3

Essential Configuration (config.inc.php)

Key settings after installation

; config.inc.php — important settings ; Email — use SMTP for reliable delivery default_smtp_server = smtp.yourhost.com smtp_port = 587 smtp_auth = PLAIN smtp_username = noreply@yourjournal.com smtp_password = yourpassword ; Security salt = a-long-random-string-change-this api_key_secret = another-unique-random-string ; Performance scheduled_tasks = On caching_type = file ; or memcache if available
⚠️ Important: Change the salt and api_key_secret values to unique random strings immediately after installation. Never use default values in production.
4

Journal Setup in Admin Panel

Configuring your journal properly

🎯
Masthead
Set journal title, ISSN (print + online), publisher name, and journal abbreviation. These appear in all citations and metadata exports.
📜
Policies
Define focus/scope, peer review process, editorial review period, open access statement. Must be detailed for DOAJ/Scopus.
✍️
Submission
Configure submission checklist, author guidelines, file types, required metadata fields. Enable ORCID integration.
📧
Emails
Customize all system email templates. Add proper sender names, signature, and journal-specific instructions for authors/reviewers.
🔍
Search & Indexing
Enable OAI-PMH protocol (Settings > Distribution > Access). Enable Google Scholar sitemap. Configure DOI plugin.
🔒
User Roles
Set up roles: Journal Manager, Editor, Section Editor, Reviewer, Author. Configure editorial workflow stages.
5

Essential Plugins to Install

Must-have plugins for a professional journal

Identifiers · Built-in
DOI Plugin
Assigns DOIs to articles, issues, and galleys. Configure with CrossRef credentials for automatic registration.
Import/Export · Built-in
CrossRef Export
Automatically deposits article metadata and DOIs to CrossRef. Required for doi.org resolution and citation tracking.
Author · Plugin Gallery
ORCID Profile
Collects and verifies author ORCID iDs at submission. Boosts author trust and indexing quality.
Galley · Plugin Gallery
Lens Viewer
Renders HTML and JATS XML articles in an elegant reading interface. Improves reader experience significantly.
Search · Built-in
Google Scholar Indexing
Ensures proper metatags for Google Scholar crawling. Critical for discoverability.
Harvesting · Built-in
OAI-PMH
Enables BASE, OpenDOAR, and other harvesters to collect your metadata. Essential for broad indexing.
Submission · Plugin Gallery
Plagiarism Checker
Integrates iThenticate for submission screening. Required documentation for Scopus/WoS.
Theme · Plugin Gallery
Custom Header
Add Google Analytics, custom CSS, or scripts to all pages. Useful for analytics integration.
Galley · Plugin Gallery
JATS XML Galley
Upload and display JATS XML files. Required for PMC/PubMed submission. Enables rich metadata.
Block · Plugin Gallery
Keyword Cloud
Displays keyword cloud on journal homepage. Helps with discoverability and visual presentation.
Reports · Built-in
Usage Statistics
Detailed article-level download and view statistics. Useful for authors and indexing applications.
Access · Built-in
Subscription Manager
For hybrid journals with some subscription content. Manage individual and institutional subscriptions.
6

DOI & CrossRef Setup

Assigning and registering DOIs

Step-by-Step DOI Setup

  1. Join CrossRef as a member (~$275/year for small publishers)
  2. In OJS: Settings → Distribution → Identifiers → Enable DOIs
  3. Set DOI prefix (provided by CrossRef, e.g., 10.12345)
  4. Configure DOI suffix pattern: %j.v%vi%i.%a
  5. Enable CrossRef Export plugin from Plugin Gallery
  6. Enter CrossRef API credentials in plugin settings
  7. Set automatic deposit after publication (recommended)
  8. Test with a sample article before going live

DOI Suffix Patterns

Common suffix patterns: %j.v%vi%i.%a → journal.v1i1.100 %j.%Y.%a → journal.2024.100 %a → simple article ID only
✅ Tip: Use the pattern that includes volume and issue for easy human-readable DOIs. Example: 10.12345/myjournal.v5i2.123
7

Theme & Visual Design

Making your journal look professional

Recommended Themes

Default Manuscript Theme
Clean, academic look. Built-in, no installation needed. Good base.
Healthsciences Theme
Medical/health journals. Good for clinical journals targeting PubMed.
Immersion Theme
Modern, full-featured. Great for high-volume journals. Built-in.
Custom Theme
Best option for professional branding. Requires developer work.

Design Checklist

  • Upload professional journal logo (SVG/PNG, white background)
  • Add journal cover image (recommended 400×550px)
  • Set journal favicon
  • Configure homepage with announcement and current issue display
  • Customize primary/link colors to match journal branding
  • Add social media links in footer
  • Ensure mobile responsiveness on all devices
  • Test dark mode if theme supports it
8

OJS Configuration for Indexing

Make your OJS installation indexing-ready

OAI-PMH Protocol
Settings → Distribution → Access → Enable OAI. This allows BASE, Google Scholar, and harvesters to collect your metadata automatically.
Dublin Core Metadata
Built-in plugin — ensure it's enabled. Adds proper meta tags for all articles that help indexers identify content structure.
Sitemap Generation
Settings → Website → Enable sitemap. Submit your sitemap to Google Search Console for faster crawling.
Robots.txt
Ensure your robots.txt doesn't block indexer bots. Many default server configs accidentally block academic crawlers.
HTTPS & Speed
SSL must be properly configured. Page speed affects Google Scholar indexing. Optimize images and enable caching.
Clean URLs
Enable clean URLs in config.inc.php (restful_urls = On). Improves SEO and looks more professional.

🛠️ Common OJS Issues & Solutions

⚡ Emails not sending
Check SMTP settings in config.inc.php. Ensure SMTP port 587 (TLS) or 465 (SSL) is open on your server. Test using OJS's built-in email test feature (Admin → Site Settings → Send test email).
⚡ 500 Error after update
Usually a PHP version incompatibility or file permission issue. Check OJS error log at cache/fc-locale/. Run php lib/pkp/tools/upgrade.php upgrade from command line.
⚡ Slow performance
Enable file caching in config.inc.php. Run the acron plugin for scheduled tasks. Clear cache regularly via Admin → Clear Cache. Consider Redis if on high-traffic server.
⚡ Can't upload files
Check PHP upload_max_filesize and post_max_size in php.ini. Ensure /files directory has write permissions (777 or www-data:www-data ownership).
⚡ DOIs not resolving
Verify CrossRef deposit was successful in the CrossRef Export plugin log. Check DOI prefix format. It takes 24–72 hours for new DOIs to resolve.
⚡ OAI-PMH not working
Enable OAI in Settings → Distribution. Visit /ojs/index.php/journal/oai?verb=Identify to test. Ensure your journal is set to "published" not "draft".
⚙️

Need OJS Setup Help?

We provide professional OJS installation, migration, custom theming, and configuration services. 10+ years of experience across 62+ journals.

Get OJS Help → Indexing Guide