# Base APP_DIR=/srv/app # Sets Docker Compose project name to avoid resource conflicts between projects. Defaults to the folder name "ckan-docker" if not set. #COMPOSE_PROJECT_NAME=ckan-docker-mytheme # Host Ports CKAN_PORT_HOST=5000 # Common proxy server for Apache or NGINX. # Change all the PROXY_SERVER_PORT_HOST to PROXY_SERVER_HTTPS_PORT_HOST if you can use HTTPS instead of HTTP (Only for NGINX and not development compose) PROXY_SERVER_BASE_PORT_HOST=81 PROXY_SERVER_HTTPS_PORT_HOST=8443 # Server port for the proxy server. Better using the SSL port for production, in DEV or if using balancer: PROXY_SERVER_PORT_HOST=PROXY_SERVER_BASE_PORT_HOST PROXY_SERVER_PORT_HOST=${PROXY_SERVER_HTTPS_PORT_HOST} NGINX_PORT_HOST=${PROXY_SERVER_BASE_PORT_HOST} NGINX_SSLPORT_HOST=${PROXY_SERVER_HTTPS_PORT_HOST} APACHE_PORT_HOST=${PROXY_SERVER_BASE_PORT_HOST} PYCSW_PORT_HOST=8000 # Solr SOLR_IMAGE_VERSION=2.9-solr9-spatial SOLR_PORT=8983 SOLR_CKAN_DATABASE=ckan CKAN_SOLR_URL=http://solr:${SOLR_PORT}/solr/${SOLR_CKAN_DATABASE} TEST_CKAN_SOLR_URL=http://solr:${SOLR_PORT}/solr/${SOLR_CKAN_DATABASE} # Redis REDIS_VERSION=7-alpine REDIS_PORT=6379 REDIS_CKAN_DATABASE=1 CKAN_REDIS_URL=redis://redis:${REDIS_PORT}/${REDIS_CKAN_DATABASE} TEST_CKAN_REDIS_URL=redis://redis:${REDIS_PORT}/${REDIS_CKAN_DATABASE} # NGINX NGINX_PORT=80 NGINX_SSLPORT=443 NGINX_LOG_DIR=/var/log/nginx # Apache HTTP Server APACHE_VERSION=2.4-alpine APACHE_PORT=80 APACHE_LOG_DIR=/var/log/apache #NGINX/APACHE ## Check CKAN__ROOT_PATH and CKANEXT__DCAT__BASE_URI and CKANEXT__SCHEMINGDCAT_GEOMETADATA_BASE_URI. If you don't need to use domain locations, it is better to use the nginx configuration. Leave blank or use the root `/`. If you dont need PROXY_SERVER_PORT_HOST (e.g. is 80), edit the PROXY_SERVER_URL and remove :${PROXY_SERVER_PORT_HOST} PROXY_SERVER_NAME=localhost # URL protocol. Change to https if you use SSL PROXY_SERVER_PROTOCOL=http PROXY_SERVER_URL=${PROXY_SERVER_PROTOCOL}://${PROXY_SERVER_NAME}:${PROXY_SERVER_PORT_HOST} PROXY_CKAN_LOCATION=/catalog PROXY_PYCSW_LOCATION=/csw # pycsw PYCSW_PORT=8000 CKAN_URL=${PROXY_SERVER_URL}${PROXY_CKAN_LOCATION} PYCSW_URL=${PROXY_SERVER_URL}${PROXY_PYCSW_LOCATION} # SCHEMAS: ckan2pycsw/model/dataset.py - Dataset type PYCSW_CKAN_SCHEMA=iso19139_geodcatap PYCSW_OUPUT_SCHEMA=iso19139_inspire # ckan-pycsw schedule ## ckan2pycsw days between each scheduler job PYCSW_CRON_DAYS_INTERVAL=2 # ckan2pycsw hour of start of the scheduler job (0-23) PYCSW_CRON_HOUR_START=4 ## Timezone TZ=UTC # CKAN databases POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres POSTGRES_DB=postgres POSTGRES_HOST=db CKAN_DB_USER=ckandbuser CKAN_DB_PASSWORD=ckandbpassword CKAN_DB=ckandb DATASTORE_READONLY_USER=datastore_ro DATASTORE_READONLY_PASSWORD=datastore DATASTORE_DB=datastore CKAN_SQLALCHEMY_URL=postgresql://${CKAN_DB_USER}:${CKAN_DB_PASSWORD}@${POSTGRES_HOST}/${CKAN_DB} CKAN_DATASTORE_WRITE_URL=postgresql://${CKAN_DB_USER}:${CKAN_DB_PASSWORD}@${POSTGRES_HOST}/${DATASTORE_DB} CKAN_DATASTORE_READ_URL=postgresql://${DATASTORE_READONLY_USER}:${DATASTORE_READONLY_PASSWORD}@${POSTGRES_HOST}/${DATASTORE_DB} # Test database connections CKAN_TEST_DB=ckan_test DATASTORE_TEST_DB=datastore_test TEST_CKAN_SQLALCHEMY_URL=postgres://${CKAN_DB_USER}:${CKAN_DB_PASSWORD}@${POSTGRES_HOST}/${CKAN_TEST_DB} TEST_CKAN_DATASTORE_WRITE_URL=postgresql://${CKAN_DB_USER}:${CKAN_DB_PASSWORD}@${POSTGRES_HOST}/${DATASTORE_TEST_DB} TEST_CKAN_DATASTORE_READ_URL=postgresql://${DATASTORE_READONLY_USER}:${DATASTORE_READONLY_PASSWORD}@${POSTGRES_HOST}/${DATASTORE_TEST_DB} # Dev settings USE_HTTPS_FOR_DEV=false CKAN_DEV_COMPOSE_SERVICE=ckan-dev # CKAN core ## If use docker-compose.ghcr.yml only "*.*.*" versions available in: https://github.com/mjanez/ckan-docker/pkgs/container/ckan-docker CKAN_VERSION=2.10.5 CKAN_SITE_ID=default # CKAN_SITE_URL = http:/ or https:/ + PROXY_SERVER_NAME. Optionally the APACHE_HOST_PORT if different from 80 CKAN_SITE_URL=${PROXY_SERVER_URL} CKAN__ROOT_PATH=${PROXY_CKAN_LOCATION}/{{LANG}} CKAN__FAVICON=${PROXY_CKAN_LOCATION}/base/images/ckan.ico CKAN__SITE_LOGO=${PROXY_CKAN_LOCATION}/images/default/ckan-logo.png # CKAN site info CKAN__SITE_TITLE="CKAN Open Data" CKAN__SITE_DESCRIPTION="ckan-docker *spatial Open Data portal" CKAN__SITE_INTRO_TEXT="[![ckan-docker-spatial](https://img.shields.io/badge/ckan_docker_spatial-CKAN_${CKAN_VERSION}-brightgreen?style=social&logo=github#center)](https://github.com/mjanez/ckan-docker)\n[`ckan-docker *spatial`](https://github.com/mjanez/ckan-docker) is a ready-to-use development environment for [CKAN](https://github.com/ckan/ckan), the world’s leading open-source data portal platform." CKAN__SITE_ABOUT=${CKAN__SITE_INTRO_TEXT} # Custom licenses that are aligned with DCAT-AP (Also works with DEV Mode) LICENSES_GROUP_URL=file://${APP_DIR}/src/ckanext-schemingdcat/ckanext/schemingdcat/public/static/licenses.json CKAN___BEAKER__SESSION__SECRET=CHANGE_ME # See https://docs.ckan.org/en/latest/maintaining/configuration.html#api-token-settings CKAN___API_TOKEN__JWT__ENCODE__SECRET=string:CHANGE_ME CKAN___API_TOKEN__JWT__DECODE__SECRET=string:CHANGE_ME CKAN_SYSADMIN_NAME=ckan_admin CKAN_SYSADMIN_PASSWORD=test1234 CKAN_SYSADMIN_EMAIL=your_email@example.com CKAN_STORAGE_PATH=/var/lib/ckan CKAN_LOGS_PATH=/var/log CKAN_SMTP_SERVER=smtp.corporateict.domain:25 CKAN_SMTP_STARTTLS=True CKAN_SMTP_USER=user CKAN_SMTP_PASSWORD=pass CKAN_SMTP_MAIL_FROM=ckan@${PROXY_SERVER_NAME} ## Customize which text formats the text_view plugin will show CKAN__PREVIEW__JSON_FORMATS="json jsonld" # html htm rdf+xml owl+xml xml n3 n-triples turtle plain atom csv tsv rss txt json CKAN__PREVIEW__XML_FORMATS="xml rdf rdf+xml owl+xml atom rss turtle ttl n3 n-triples" CKAN__PREVIEW__TEXT_FORMATS="text plain text/plain text/turtle csv tsv rss txt json" CKAN__PREVIEW__LOADABLE="html htm rdf+xml owl+xml xml n3 n-triples turtle plain atom csv tsv rss txt json arcgis_rest" # ckanext-spatial: Allow Solr local params: https://github.com/ckan/ckanext-spatial/issues/328 CKAN__SEARCH__SOLR_ALLOWED_QUERY_PARSERS=field # CORS Settings. If True, all origins will be allowed (the response header Access-Control-Allow-Origin is set to ‘*’). If False, only origins from the ckan.cors.origin_whitelist setting will be allowed. CKAN__CORS__ORIGIN_ALLOW_ALL=False CKAN__CORS__ORIGIN_WHITELIST="" # Enables or disable collaborators in individual datasets (https://docs.ckan.org/en/2.9/maintaining/authorization.html#dataset-collaborators) CKAN__AUTH__ALLOW_DATASET_COLLABORATORS=False CKAN__AUTH__ALLOW_ADMIN_COLLABORATORS=False # Default number of facets shown in search results. Default 10. SEARCH__FACETS__DEFAULT=4 # Enable or disable the DataStore SQL search backend. Default is False. CKAN__DATASTORE__SQLSEARCH__ENABLED=True ## Resource Proxy settings ### Preview size limit, default: 1MB CKAN__RESOURCE_PROXY__MAX_FILE_SIZE=50048576 ## Size of chunks to read/write__ CKAN__RESOURCE_PROXY__CHUNK_SIZE=4096 ## Default timeout for fetching proxied items CKAN__RESOURCE_PROXY__TIMEOUT=10 CKAN__VIEWS__DEFAULT_VIEWS="image_view video_view audio_view webpage_view text_view datatables_view wmts_view geojson_view geo_view shp_view pdf_view" # Localization CKAN__LOCALE_DEFAULT="en" CKAN__LOCALE_ORDER="en es pt_BR ja it cs_CZ ca fr el sv sr sr@latin no sk fi ru de pl nl bg ko_KR hu sa sl lv" CKAN__LOCALES_OFFERED="en es pt_BR ja it cs_CZ ca fr el sv sr sr@latin no sk fi ru de pl nl bg ko_KR hu sa sl lv" # Extensions CKAN__PLUGINS="activity stats image_view video_view audio_view webpage_view text_view datatables_view resourcedictionary datastore xloader spatial_metadata spatial_query spatial_harvest_metadata_api csw_harvester waf_harvester doc_harvester resource_proxy geo_view geojson_view wmts_view shp_view dcat dcat_rdf_harvester dcat_json_harvester dcat_json_interface schemingdcat schemingdcat_datasets schemingdcat_groups schemingdcat_organizations schemingdcat_ckan_harvester schemingdcat_xls_harvester harvest pdf_view pages fluent envvars" # ckanext-harvest CKAN__HARVEST__MQ__TYPE=redis CKAN__HARVEST__MQ__HOSTNAME=redis CKAN__HARVEST__MQ__PORT=${REDIS_PORT} CKAN__HARVEST__MQ__REDIS_DB=${REDIS_CKAN_DATABASE} # Clean-up mechanism for the harvest log table. The default is 30 days. CKAN__HARVEST__LOG_TIMEFRAME=40 # ckanext-xloader CKANEXT__XLOADER__JOBS__DB_URI=postgresql://${CKAN_DB_USER}:${CKAN_DB_PASSWORD}@${POSTGRES_HOST}/${CKAN_DB} # ckanext-dcat CKANEXT__DCAT__BASE_URI=${CKAN_URL} # Default profile(s). Instead of this envvar, it's possible to specify all the profile(s) availables to be used for serialization using the profiles parameter: http://localhost:5000/catalog.xml?profiles=euro_dcat_ap,spain_dcat CKANEXT__DCAT__RDF_PROFILES='euro_dcat_ap_2' # The custom endpoint **must** start with a forward slash (`/`) and contain the `{_format}` placeholder. The endpoint is added to the CKAN_SITE_URL and CKAN__ROOT_PATH, example: http://localhost:5000/catalog/catalog.rdf CKANEXT__DCAT__DEFAULT_CATALOG_ENDPOINT='/catalog.{_format}' # ckanext-spatial (Solr Backend - solr9-spatial: https://docs.ckan.org/projects/ckanext-spatial/en/latest/spatial-search.html#choosing-a-backend-for-the-spatial-search) CKANEXT__SPATIAL__SEARCH_BACKEND=solr-spatial-field CKAN__SPATIAL__SRID=3857 CKANEXT__SPATIAL__COMMON_MAP__TYPE=custom CKANEXT__SPATIAL__COMMON_MAP__CUSTOM__URL=http://a.tile.openstreetmap.org/{z}/{x}/{y}.png CKANEXT__SPATIAL__COMMON_MAP__ATTRIBUTION='Map tiles by OpenStreetMap (CC BY SA)' # ckanext-geoview CKANEXT__GEOVIEW__GEOJSON__MAX_FILE_SIZE=100000000 CKANEXT__GEOVIEW__OL_VIEWER__FORMATS="wms wfs geojson gml kml" CKANEXT__GEOVIEW__SHP_VIEWER__SRID=3857 CKANEXT__GEOVIEW__SHP_VIEWER__ENCODING=UTF-8 # ckanext-schemingdcat ## CSW Endpoint for spatial metadata CKANEXT__SCHEMINGDCAT_GEOMETADATA_BASE_URI=${PYCSW_URL} ## Scheming: setup_scheming.sh CKANEXT__SCHEMINGDCAT_DATASET_SCHEMA="ckanext.schemingdcat:schemas/geodcat_ap/eu_geodcat_ap_full.yaml" CKANEXT__SCHEMINGDCAT_GROUP_SCHEMAS="ckanext.schemingdcat:schemas/geodcat_ap/eu_geodcat_ap_group.json" CKANEXT__SCHEMINGDCAT_ORGANIZATION_SCHEMAS="ckanext.schemingdcat:schemas/geodcat_ap/eu_geodcat_ap_org.json" CKANEXT__SCHEMINGDCAT_PRESETS="ckanext.schemingdcat:schemas/default_presets.json ckanext.fluent:presets.json" ## Facets: setup_scheming.sh CKANEXT__SCHEMINGDCAT_FACET_LIST="dataset_scope theme groups theme_eu language dcat_type groups publisher_name publisher_type spatial_uri owner_org res_format frequency tags tag_uri conforms_to" CKANEXT__SCHEMINGDCAT_ORGANIZATION_CUSTOM_FACETS=True CKANEXT__SCHEMINGDCAT_GROUP_CUSTOM_FACETS=True CKANEXT__SCHEMINGDCAT_DEFAULT_PACKAGE_ITEM_ICON="theme" CKANEXT__SCHEMINGDCAT_DEFAULT_PACKAGE_ITEM_SHOW_SPATIAL=True CKANEXT__SCHEMINGDCAT_SHOW_METADATA_TEMPLATES_TOOLBAR=False CKANEXT__METADATA_TEMPLATES_SEARCH_IDENTIFIER="schemingdcat_xls-template" CKANEXT__SCHEMINGDCAT_ENDPOINTS_YAML="endpoints.yaml" CKANEXT__SCHEMINGDCAT__SOCIAL_GITHUB="https://github.com/mjanez/ckanext-schemingdcat" CKANEXT__SCHEMINGDCAT__SOCIAL_X="https://x.com/ckanproject" CKANEXT__SCHEMINGDCAT__SOCIAL_LINKEDIN="https://www.linkedin.com/company/ckanproject" # ckanext-pages CKANEXT__PAGES__ALOW_HTML=False CKANEXT__PAGES__ORGANIZATION=True CKANEXT__PAGES__GROUP=True CKANEXT__PAGES__ABOUT_MENU=False CKANEXT__PAGES__GROUP_MENU=True CKANEXT__PAGES__ORGANIZATION_MENU=True # ckan-pycsw CSW_IDENTIFICATION_TITLE="Sample Geospatial Catalogue" CSW_IDENTIFICATION_ABSTRACT="OGC CSW server powered by pycsw" CSW_PROVIDER_NAME="ckan-docker development team" CSW_PROVIDER_URL="https://github.com/mjanez/ckan-docker" CSW_CONTACT_NAME="ckan-docker development team" CSW_CONTACT_POSITION="Site Administrator" CSW_CONTACT_ADDRESS="ckan-docker development team" CSW_CONTACT_CITY="Madrid" CSW_CONTACT_STATE_OR_PROVINCE="Madrid" CSW_CONTACT_POSTAL_CODE="28001" CSW_CONTACT_COUNTRY="Spain" CSW_CONTACT_EMAIL=${CKAN_SYSADMIN_EMAIL} CSW_CONTACT_URL=${CKAN_URL} ## Date of the last update of the metadata. ISO 8601 format): YYYY-MM-DD CSW_INSPIRE_DATE="2024-01-01" ## Keywords separated by commas based on the GEMET Thesaurus keywordValue: https://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd CSW_INSPIRE_GEMET_KEYWORDS="Utility and governmental services" # The level of INSPIRE conformance for spatial data sets and services (conformant, notConformant, notEvaluated) CSW_INSPIRE_CONFORMITY="notEvaluated" CSW_INSPIRE_CONTACT_NAME=${CSW_CONTACT_NAME} CSW_INSPIRE_CONTACT_EMAIL=${CKAN_SYSADMIN_EMAIL} # Temporal extent of the service (in ISO 8601 format). Either a single date (i.e. YYYY-MM-DD), or an extent (i.e. YYYY-MM-DD/YYYY-MM-DD) CSW_INSPIRE_TEMP_EXTENT="2024-01-01"