{"id":21425216,"url":"https://github.com/utrechtuniversity/epos-msl","last_synced_at":"2025-07-14T08:32:11.202Z","repository":{"id":81546771,"uuid":"125509091","full_name":"UtrechtUniversity/epos-msl","owner":"UtrechtUniversity","description":"EPOS Multi-scale laboratories CKAN deployment","archived":false,"fork":false,"pushed_at":"2025-07-01T06:17:43.000Z","size":321,"stargazers_count":7,"open_issues_count":1,"forks_count":2,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-07-01T07:25:33.703Z","etag":null,"topics":["ansible","apache2","ckan","epos","postgresql","redis","solr"],"latest_commit_sha":null,"homepage":"https://epos-msl.uu.nl","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UtrechtUniversity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-03-16T11:45:08.000Z","updated_at":"2025-07-01T06:17:46.000Z","dependencies_parsed_at":"2024-04-04T09:29:31.391Z","dependency_job_id":"8c900aef-cf74-4ae8-b381-7815eaf9d455","html_url":"https://github.com/UtrechtUniversity/epos-msl","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/UtrechtUniversity/epos-msl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UtrechtUniversity%2Fepos-msl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UtrechtUniversity%2Fepos-msl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UtrechtUniversity%2Fepos-msl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UtrechtUniversity%2Fepos-msl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UtrechtUniversity","download_url":"https://codeload.github.com/UtrechtUniversity/epos-msl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UtrechtUniversity%2Fepos-msl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265262637,"owners_count":23736439,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","apache2","ckan","epos","postgresql","redis","solr"],"created_at":"2024-11-22T21:27:30.331Z","updated_at":"2025-07-14T08:32:11.193Z","avatar_url":"https://github.com/UtrechtUniversity.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EPOS-MSL catalog\n\nThis repository contains the [Docker Compose](https://docs.docker.com/compose/) setup for\nthe [EPOS-MSL metadata catalog](https://epos-msl.uu.nl/about), as well as the [Ansible](https://docs.ansible.com)\nplaybook for deploying the application to a server.\n\n## Design\n\nEPOS-MSL is based on [CKAN](https://www.ckan.org). It uses several modules / extensions to customize CKAN for the EPOS catalog.\n\n### MSL CKAN extension\n\nThe [MSL CKAN core extension](https://github.com/UtrechtUniversity/msl_ckan_core) contains specific settings and configuration\nfor the EPOS MSL catalog.\n\n### MSL CKAN Util extension\n\nThe [MSL CKAN util extension](https://github.com/UtrechtUniversity/msl_ckan_util) contains functionality used in the EPOS catalog\nthat can be reused in other catalogs, specifically custom facets and repeating fields.\n\n## Requirements\n\n### Requirements for local development (Docker setup)\n\n* [Docker Compose](https://docs.docker.com/compose/)\n* The images have been developed for the amd64 architecture\n\n### Requirements for deploying to server\n\n* [Ansible](https://docs.ansible.com/ansible/intro_installation.html) (\u003e= 2.9)\n* [Vagrant](https://www.vagrantup.com/docs/installation/) (2.x - only for local VM)\n* Enterprise Linux 9 (e.g. AlmaLinux or RHEL)\n* The images have been developed for the amd64 architecture\n\n## Local development in containers (Docker)\n\nIf you use Windows, ensure that core.autocrlf is set to false in your git client before you clone the EPOS-MSL\nrepository: _git config --global core.autocrlf false_ Otherwise the Docker images may not work due to line\nending changes.\n\n### Building the images\n\nIf you want to test any local updates, you need to re-build the images:\n\n```\ncd docker\n./build-local-images.sh\n```\n\n### Running the application using Docker\n\nFirst add an entry to your `/etc/hosts` file (or equivalent) so that queries for the development setup\ninterface resolve to your loopback interface. For example:\n\n```\n127.0.0.1 epos-msl.ckan\n```\n\nUnless you want to build the images locally (see above), you need to pull them from the registry:\n\n```\ncd docker\ndocker compose pull\n```\n\nThen start the Docker Compose setup:\n```\ndocker compose up\n```\n\nThen wait until CKAN and MSL-API have started. This may take a couple of minutes. Navigate to\nhttps://epos-msl.ckan in your browser. The development VM runs with\nself-signed certificates, so you'll need to accept the security warning in your browser.\n\n## Local development VM\n\nFirst create the VMs using Vagrant:\n\n```bash\nvagrant up\n```\n\nOn a Windows host, first SSH into the Ansible controller virtual machine (skip this step on GNU/Linux or macOS):\n```bash\nvagrant ssh epos-msl-controller\ncd ~/epos-msl\n```\n\nDeploy EPOS-MSL to development virtual machine:\n```bash\nansible-playbook playbook.yml\n```\n\nAdd the following host to /etc/hosts (GNU/Linux or macOS) or %SystemRoot%\\System32\\drivers\\etc\\hosts (Windows):\n```\n192.168.60.10 epos-msl.ckan\n```\n\n## MSL-API operations\n\n### Seeding test admin panel account(s)\n\nThe MSL-API component contains a specific seeder for adding admin accounts. The account credentials can be\nadjusted using the `epos_msl_admin_account_data` Ansible parameter. You need to run the UserSeeder to import\nthese accounts into MSL-API:\n\n```bash\ndocker exec -it mslapi_web /bin/bash\ncd /var/www/msl_api\nsudo -u www-data php artisan db:seed --class=UserSeeder\n```\n\nYou should now be able to login to the admin panel.\n\n\n### Restarting the queue processor\n\nAfter changing settings in the MSL-API .env file, please reload the configuration an restart the queue worker:\n\n```bash\ndocker exec -it mslapi_web /bin/bash\ncd /var/www/msl_api\nsudo -u www-data php artisan config:cache\nsudo -u www-data php artisan queue:restart\n```\n\n### Sending a test email\n\nIn order to test the email settings, you can send a test email from MSL-API:\n\n```bash\ndocker exec -it mslapi_web /bin/bash\ncd /var/www/msl_api\nsudo -u www-data php artisan app:test-mail some.email.address@organization.com\n```\n\n## Deploying the application to a server\n\nIn order to deploy the application to a server, create a custom Ansible configuration and\nprovide settings for the parameters listed in the section below.\n\n### Configuration parameters\n\nThe main Ansible configuration parameters are:\n\n|Setting                                 | Meaning                                                              |\n|----------------------------------------|----------------------------------------------------------------------|\n|epos_msl_ckan_database_password         | CKAN database password                                               |\n|epos_msl_host_name                      | Hostname of the application that users connect to                    |\n|epos_msl_host_ip                        | IP address that the application will run on                          |\n|epos_msl_host_port                      | TCP port that the application will run on                            |\n|epos_msl_mysql_root_password            | MySQL root password (MySQL is used for the MSL-API database)         |\n|epos_msl_mslapi_db_password             | MSL-API database password                                            |\n|epos_msl_fast_api_token                 | FastAPI token for MSL-API                                            |\n|epos_msl_mta_role                       | Type of MTA: use mailpit for local setup; postfix for production     |\n|epos_msl_postfix_relayhost_fqdn         | Postfix relay mail server name                                       |\n|epos_msl_postfix_relayhost_port         | Postfix: TCP port of mail server to use                              |\n|epos_msl_postfix_relayhost_username     | Postfix: username on relay mail server (if authentication enabled)   |\n|epos_msl_postfix_relayhost_password     | Postfix: password on relay mail server (if authentication enabled)   |\n|epos_msl_postfix_relayhost_auth_enabled | Postfix: enable authentication (yes/no, default: yes)                |\n|epos_msl_postfix_relayhost_tls_enabled  | Postfix: whether to use TLS (yes/no, default: yes)                   |\n|epos_msl_postfix_myhostname             | Postfix: own server name to send in EHLO/HELO messages               |\n|epos_msl_postfix_origin                 | Postfix: origin domain                                               |\n|epos_msl_mail_from_address              | Sender address to use for mail messages                              |\n|epos_msl_cert_mode                      | Currently supported modes: selfsigned or static                      |\n|epos_msl_static_cert                    | TLS certificate for reverse proxy (if static mode is selected)       |\n|epos_msl_static_cert_key                | TLS certificate key for rev proxy (if static mode is selected)       |\n|epos_msl_admin_account_data             | MSL-API admin accounts, in CSV format (name;email;password hash)     |\n\n## License\n\nThis project is licensed under the GPL-v3 license.\nThe full license can be found in [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futrechtuniversity%2Fepos-msl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Futrechtuniversity%2Fepos-msl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futrechtuniversity%2Fepos-msl/lists"}