Reproduce CiviCRM configuration: best practice
That's a good question that should have a canonical answer but doesn't.
Here's a recent similar question and answer: method for versioning configuration of civicrm?
I suspect there are other good references out there, please add them here.
Part of the challenge, which is not unique to CiviCRM, is that the definition of &quot;configuration&quot; can be grey in some areas.
Here is a list of tools and techniques that can capture and copy some parts of commonly considered &quot;configuration&quot;:
1: The civicrm_domain and civicrm_setting tables.
You can back up these two tables and then restore them to a different site. This is a hack and could get you in trouble, but worth trying. Between the two of them, you've got most of the core &quot;settings&quot; type values.
2: Build your own extension to save your custom fields.
The instructions for building your own extension using civix show you how to generate an extension that saves the configuration of your custom fields.
3: civicrm_report_instance table
This can be backed up and restored on it's own, it's fairly safe.
4: civicrm_extension table
This is the list of installed extensions with configuration. You'll need to also have the matching extension directory.
5.1: Extension: org.civicoop.configitems

https://lab.civicrm.org/extensions/configitems

This extension allows you to export some site configuration to JSON, which you can package as a related custom extension for your site. (See also Jaap's answer on this question.)
5.2: Extension: CiviConfigure (eu.tttp.setting)
There's an extension which appears to be designed to solve this problem for settings (may not handle eg Contribution Pages which are entities?), but it's out of date, here:

https://civicrm.org/extensions/civiconfigure
https://github.com/eileenmcnaughton/eu.tttp.setting

5.3: CiviCRM Config Export (nz.co.fuzion.configexport)
Imports/exports config &amp; entities to YML.

https://github.com/fuzionnz/civicrm-configexport

6 bin/csv/export.php
A script you can use to export option values and tags and such. Assembly requied.
7: API
You can use the api to retrieve and set various entities, e.g. using the cv tool.
8: CiviCase specific
For CiviCase, one of the original arguments for using external files was for versioning and managing dev/production. You can still use xml files for its config.
...
I've left this as an open community wiki and encourage others to add to this list.