This document outlines the software and hardware requirements of OpenSpecimen.
Network topology diagram
- Tomcat 9.x
- Apache 2.4 (Optional)
- MySQL 5.8.x
- Any Operating System that supports Java 8 runtime
- Java 8 runtime environment
- Any SMTP server for sending email from OpenSpecimen
|Server||Operating System||Technical Specifications|
Prod database server
|Linux ( CentOS or RedHat)||Quad-core CPU, 8GB RAM, 100 GB SSD HDD|
Production app server
|Linux ( CentOS or RedHat)||Quad-core CPU, 8GB RAM, 100 GB any HDD|
|Linux ( CentOS or RedHat)||Dual-core CPU, 4GB RAM, 100 GB any HDD|
Printing server (for BarTender or NiceLabel)
- For QA / test environments a single server machine can be used to deploy both the database and app server (JBoss/Tomcat)
- For production environments, the database and app server (JBoss/Tomcat) should be deployed on two different machines
You will need to purchase a network printing software with automation capabilities like BarTender, NiceLabel, etc. You can use any network-enabled printer like Brady, Zebra of any make.
To integrate with other databases like RedCap, OpenClinica, Epic, Velos, Oncore, etc, you will need a plugin developed by Krishagni. Email firstname.lastname@example.org for more details. You can also develop your own plugins using the APIs if you have an in-house development team.
Frequently Asked Questions
Q: What language is the code written in?
Q: How much memory is needed?
A: In short, if both apps and databases are installed on the same machine, then we suggest to equip the machine with a minimum of 4 GB for smoother operation. In reality, the amount of memory needed is determined by the profile of the load like a number of concurrent users, count of specimens, throughput and response time requirements, etc.
Q: What are the minimum OS/app server requirement for the app?
A: Server is developed using Java language; therefore the web app has no direct dependency on the operating system. Any operating system that supports Java 8 runtime will do.
Any version of Tomcat >= 7.0 that supports servlet 3.0 specification will work
Starting OpenSpecimen v5.2 onward, any version of Tomcat >= 8 that supports servlet 4.0 specification will work.
Q: Does it have any platform-specific code or dependencies on low-level programs like Perl / ruby/python/chron/shell etc?
Q: Does it need any specific browser plugins?
Q: How is it compiled and packaged?
A: Groovy based Gradle build tool is used to compile and package the source code into a web app artifact (.war). The release distribution is provided in compressed artefact (.zip) containing the app, and its dependencies like Tomcat, JDBC drivers, etc
Q: How will bug-fixes and upgrades be handled?
Depending on the severity of bugs, bugs are either
- fixed and made available through planned releases (which happens on a monthly basis) or
- hot fixed on release branch impacting the adopter.
Alternatively, adopters can create pull requests for bug fixes and submit, which the Krishagni team will review and merge into mainline
Q: How is the source code pull request managed?
A: Source code is open and is accessible to the world. However, the commits are reviewed and merged into mainline by the Krishagni team. Adopters have an option to fork and maintain their own code line. In doing so, adopters risk missing out on features contributed/developed on the mainline. This practice is highly discouraged, however, being an open-source project always remains an option to the adopters. Email email@example.com to discuss anything about your specific pull requests.
Q: Where are the DDLs for OpenSpecimen?
A: OpenSpecimen uses Liquibase framework change set scripts to seamlessly manage differences between DDLs of different databases. As such we do not explicitly maintain DDL SQL statements.
Liquibase scripts are a source of truth. Liquibase scripts are available in the Github repository.
Q: Where are the database sizing requirements?
Q: How will DDL and other database changes be managed?
A: Database changes are managed using Liquibase framework scripts, which are executed by OpenSpecimen during server bootstrap. Every time, change scripts are run, new changesets, if any, will get applied to the database. This ensures database schema is up-to-date and compatible with the version of OpenSpecimen being run. There is no additional step required by the DBA to carry out on every release.
Q: Do you need root-level access?
A: For most tasks, sudo access is good enough. For some tasks like setting up OpenSpecimen as a service needs root access.
Q: What ports should be opened on Apache, Tomcat and database servers?
A: Following ports should be open:
- Port 443 on Apache webserver machine
- Port 8009 on Tomcat machine. This is required if Apache and Tomcat are running on different machines. Communication between Apache and Tomcat is established using AJP/1.3
- Port 3306 on MySQL database server machine. This is required if Tomcat and MySQL are running on different machines
- Port 1521 on Oracle database server machine. This is required if Tomcat and Oracle are running on different machines.
- Port 22 on all machines for support staff to do login using SSH.
Q: What is your minimum server specification needed?
A: Min 4GB RAM per server with standard server VM configuration.
Q: Can we autopatch the OS?
A: Yes. I assume by OS you mean Operating System and not OpenSpecimen.
Q: Is the RHEL 7 version of Linux suitable?
Q: After installation, how often will you need to access the server to run patches and updates?
A: Typically ongoing basis.
Q: Which ports do you need to be opened in our firewall?
A: None on the firewall unless you want to give web access to external researchers. If you want to do it, then open port 443.
Q: What sudo rules will be required by the support staff?
A: The support staff should have sudo rights to perform the following actions:
- Install OpenSpecimen as a service using
systemctl(RHEL lineage) /
service(Debian lineage) commands.
- Restart OpenSpecimen service.
- Configure and restart the Apache webserver.
- Configure and restart database server (Oracle / MySQL)
- Configure and restart MTA like Postfix. Optional. Required only if an intermediate MTA is used.