Specify 7 Installation Instructions

:open_book: 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).

:gear: 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/specifycloud and podman/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 (with podman-compose where 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:

  1. Pull a local copy of the docker-compositions repository. 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
    
  2. Choose a scenario directory under docker/ or podman/:

  • docker/all-in-one/ — single-host evaluation.
  • podman/all-in-one/ — Podman equivalents.
  1. Copy and edit the environment file or templates as needed (specify.env, docker-compose.yml, nginx.conf).

  2. Adjust persistent volumes and database initialization scripts if you plan to keep data across restarts.

  3. Start the composition (Docker example):

    cd docker/all-in-one
    docker compose up -d
    

    If your system uses the legacy docker-compose binary, replace the command with docker-compose up -d.

    Podman example (if using podman-compose):

    cd podman/all-in-one
    podman-compose up -d
    
  4. Tail logs to verify services come up:

    docker compose logs -f
    
  5. 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.yml file and any associated configuration files
    • Your container logs for all services defined in your YML file
    • Any additional information

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!