This guide provides a concise, up-to-date overview for installing and running Specify 7 using the compose recipes in this repository (Docker and Podman).
These instructions should be followed by an IT administrator.
Overview
This repository contains container compose recipes for deploying Specify 7 in a few common scenarios. Content is grouped under docker/ and podman/ and includes:
-
An “all-in-one” composition (app, DB, asset server, web) for small or evaluation installs.
-
A multiple-database / virtual-hosting example for hosting multiple Specify instances on one host.
-
Templates and helper scripts for cloud and SSL setups in
docker/specifycloudandpodman/specifycloud.
Use these compositions as starting points. You can customize environment variables, SSL, storage paths, and enabled services to match your infrastructure and policies.
Requirements
-
Host OS: modern Linux distribution is recommended for production; macOS can be used for local evaluation. If using a Windows server, you must use Windows Subsystem for Linux.
-
Container runtime: Docker Engine (with
docker compose) or Podman (withpodman-composewhere provided). -
Minimum resources for small to medium installs: 4 CPU cores, 8-16 GB RAM, and sufficient disk for database and assets. See the official recommended server specs:
Specify 7 Recommended Server Specifications -
Network: ports 80/443 (HTTP/HTTPS) for web access, internal network access between services (app ↔ DB ↔ worker).
Production Quickstart
For members of the Specify Collections Consortium, if you are looking to deploy a production instance of Specify, we recommend following these steps:
-
Pull a local copy of the
docker-compositionsrepository. If you do not yet have access, click here to send an email, including your GitHub username and member collection, to our team.Note that you will see a 404 page if your account has not been given access. Once you have been granted access and have authenticated with GitHub via CLI locally, you can run the following:
git clone https://github.com/specify/docker-compositions.git -
Choose a scenario directory under
docker/orpodman/:
docker/all-in-one/— single-host evaluation.podman/all-in-one/— Podman equivalents.
-
Copy and edit the environment file or templates as needed (
specify.env,docker-compose.yml,nginx.conf). -
Adjust persistent volumes and database initialization scripts if you plan to keep data across restarts.
-
Start the composition (Docker example):
cd docker/all-in-one docker compose up -dIf your system uses the legacy
docker-composebinary, replace the command withdocker-compose up -d.Podman example (if using podman-compose):
cd podman/all-in-one podman-compose up -d -
Tail logs to verify services come up:
docker compose logs -f -
Once the web service is healthy, open the configured hostname in your browser.
Maintenance
Now that Specify 7 is installed, thoroughly review and bookmark the following:
Notes
- These compose files are intended as reference / convenience recipes. For production deployments consider:
- Running services under an orchestrator (Kubernetes, Docker Swarm, or systemd-managed containers).
- Using external managed databases for reliability and backups.
- Proper TLS termination (load balancer or reverse proxy), monitoring, backups, and log rotation.
- Review the
specifycloud/templates for automated cloud and SSL helper scripts.
Troubleshooting
- If you see HTTP 500 errors after an upgrade, consult the Specify 7 upgrade/troubleshooting threads on Discourse.
- Check container logs (
docker compose logs), nginx logs, and DB logs for errors. - If you are still having trouble, you can reach out to support@specifysoftware.org with a message that includes:
- Your
docker-compose.ymlfile and any associated configuration files - Your container logs for all services defined in your YML file
- Any additional information
- Your
Development Deployment
If you are a developer, you can create a deployment that enables code hot-reload and interactive debugging. This is useful for development and troubleshooting but is NOT recommended for production due to relaxed security and possible memory/debugging overhead.
Contributing
Contributions to these compose recipes are welcome from members. Please follow the repository’s contribution guidelines and open a pull request against the production branch.
When proposing changes, include:
- A clear description of the scenario and why the change is needed.
- Migration steps for data when relevant.
- Any breaking changes to configuration or environment variables.
Make sure to read the entire guide to contributing code linked above before opening a pull request! Thank you for your interest in contributing!
