{"id":24064175,"url":"https://github.com/endurancecode/endurancetrio-timing-exporter","last_synced_at":"2026-02-02T15:12:12.171Z","repository":{"id":211803295,"uuid":"729980683","full_name":"EnduranceCode/endurancetrio-timing-exporter","owner":"EnduranceCode","description":"Collects and manages race timing data","archived":false,"fork":false,"pushed_at":"2024-10-27T23:12:14.000Z","size":206,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-23T17:52:27.365Z","etag":null,"topics":["java","rest-api","spring","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EnduranceCode.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":"2023-12-10T23:29:00.000Z","updated_at":"2024-10-27T23:12:15.000Z","dependencies_parsed_at":"2024-07-20T13:47:53.763Z","dependency_job_id":"f1ef0aeb-76a7-4e35-a3db-3dceff615845","html_url":"https://github.com/EnduranceCode/endurancetrio-timing-exporter","commit_stats":null,"previous_names":["endurancecode/endurancetrio-timing-exporter"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/EnduranceCode/endurancetrio-timing-exporter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EnduranceCode%2Fendurancetrio-timing-exporter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EnduranceCode%2Fendurancetrio-timing-exporter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EnduranceCode%2Fendurancetrio-timing-exporter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EnduranceCode%2Fendurancetrio-timing-exporter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EnduranceCode","download_url":"https://codeload.github.com/EnduranceCode/endurancetrio-timing-exporter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EnduranceCode%2Fendurancetrio-timing-exporter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29013950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T14:58:54.169Z","status":"ssl_error","status_checked_at":"2026-02-02T14:58:51.285Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["java","rest-api","spring","spring-boot"],"created_at":"2025-01-09T10:07:36.639Z","updated_at":"2026-02-02T15:12:12.120Z","avatar_url":"https://github.com/EnduranceCode.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EnduranceTrio Timing Exporter\n\n**REST API to receive and manage the data produced by race timing systems**\n\n## Table Of Contents\n\n1. [Introduction](#introduction)\n2. [Development](#development)\n    1. [Technologies](#technologies)\n    2. [Installation](#installation)\n3. [Deployment](#deployment)\n    1. [Prerequisites](#prerequisites)\n    2. [Server setup](#server-setup)\n    3. [Build and installation](#build-and-installation)\n4. [License](#license)\n\n## Introduction\n\n**EnduranceTrio Timing Exporter** is a REST API that receives and manages the data produced by\nsports timing systems. The initial development was made for the [MYLAPS](https://www.mylaps.com/)\ntiming system. The support for the [Race Result](https://www.raceresult.com/) system was added\nlater. The goal is to keep adding support for other timing systems that are available on the market.\n\n## Development\n\n### Technologies\n\n**EnduranceTrio Timing Exporter** is a [Spring Boot](https://spring.io/projects/spring-boot)\napplication and uses a [MySQL](https://www.mysql.com/) database.\n\n### Installation\n\n#### Clone the repository\n\nMake sure that you have [Java 11](https://javaalmanac.io/jdk/11/) and\n[MySQL](https://www.mysql.com/) installed in your development machine and then clone this repository\nwith the following command:\n\n    git clone git@github.com:EnduranceCode/endurancetrio-timing-exporter.git\n\n#### Set up the database\n\n#### Set the MySQL Server Time Zone to UTC+00:00\n\n[Set MySQL server time zone](https://www.scaler.com/topics/mysql-time-zone/) to `UTC+00:00` in your\nserver configuration `my.cnf` file. On Ubuntu, open the `/etc/mysql/my.cnf` file with\nthe [nano text editor](https://www.nano-editor.org/) executing the following command:\n\n    sudo nano /etc/mysql/my.cnf\n\nIf the `my.cnf` file doesn't have the `[mysqld]` section, add it as shown below:\n\n    [mysqld]\n    default-time-zone='+00:00'\n\nSave the modifications with the command `CTRL + O` and then exit\nthe [nano text editor](https://www.nano-editor.org/) with the command `CTRL + X`.\n\nTo apply the changes, restart the MySQL service, and verify that everything is working as expected,\nwith the following commands:\n\n    sudo systemctl restart mysql\n    systemctl status mysql\n\n##### Create a MySQL database\n\nLogin into the [MySQL](https://www.mysql.com/) server, replace the ***{LABEL}*** in the below\ncommand as appropriate and then execute it to\n[create](https://www.mysqltutorial.org/mysql-create-database/) the **EnduranceTrio Timing Exporter**\ndatabase.\n\n    CREATE DATABASE {DATABASE_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{DATABASE_NAME}** : The name chosen for the new database;\n\n##### Create a MySQL user\n\nTo [create a user](https://www.mysqltutorial.org/mysql-create-user.aspx) for the\n**EnduranceTrio Timing Exporter** database management, replace the ***{LABELS}*** in the below \ncommand as appropriate and then execute it.\n\n    CREATE USER '{USERNAME}'@'localhost' IDENTIFIED WITH caching_sha2_password BY '{PASSWORD}';\n\n\u003e **Labels Definition**\n\u003e\n\u003e + **{USERNAME}** : The new account name in the MySQL Server;\n\u003e + **{PASSWORD}** : The password of the new account in the MySQL Server.\n\n##### Grant privileges to the EnduranceTrio Timing Exporter MySQL user\n\nTo [grant the necessary privileges](https://www.mysqltutorial.org/mysql-grant.aspx) to the\n**EnduranceTrio Timing Exporter** database user, replace the ***{LABELS}*** in the below command as\nappropriate and then execute it.\n\n    GRANT ALL PRIVILEGES ON {DATABASE_NAME}.* TO '{USERNAME}'@'localhost';\n\n\u003e **Labels Definition**\n\u003e\n\u003e + **{DATABASE_NAME}** : The database where the MySQL user will be granted privileges;\n\u003e + **{USERNAME}** : The account name in the MySQL Server to whom the privileges will be assigned.\n\n##### Configure the application's database access\n\nTo configure the **EnduranceTrio Timing Exporter**  access to the database, take the following\nsteps:\n\n1. Copy the file [`confidential-template.yaml`](./src/main/resources/confidential-template.yaml)\n   located in the `resources` folder and rename it to `confidential.yaml`;\n2. Replace the {DATABASE_NAME} placeholder with the **EnduranceTrio Timing Exporter** database name;\n3. Replace the {DATABASE_USER} placeholder with the **EnduranceTrio Timing Exporter** database\n   user's username;\n4. Replace the {DATABASE_NAME} placeholder with the **EnduranceTrio Timing Exporter**database user's\n   password;\n5. Delete the comments block, at the top of the file, that contains these instructions.\n\n##### Manage the application's database migrations\n\nThe file [`DATABASE.md`](./src/main/resources/db/DATABASE.md), stored in the folder\n[`src/main/resources/db/`](./src/main/resources/db), documents the process to manage\nthe **EnduranceTrio Timing Exporter** database migrations.\n\n## Deployment\n\nThe following sections will walk you through the steps to deploy and run the application on an\nUbuntu server using Apache as a reverse proxy.\n\n### Prerequisites\n\n- [Java 11](https://javaalmanac.io/jdk/11/) or later installed and configured on the Ubuntu server;\n- [Apache Server](https://httpd.apache.org/)\n  [installed and configured](https://github.com/EnduranceCode/server-setup-guide/blob/master/02-apache-server-installation.md#21-install-apache)\n  on the Ubuntu server;\n- [MySQL Server](https://httpd.apache.org/)\n  [installed and configured](https://github.com/EnduranceCode/server-setup-guide/blob/master/03-mysql-server-installation.md#3-mysql-server-installation)\n  on the Ubuntu server;\n- A domain or subdomain pointing to the server's IP address;\n- (Optional) Let's Encrypt SSL certificate for secure connections;\n\n### Server setup\n\n#### Database setup\n\nSet the MySQL Server Time Zone to `UTC+00:00` as explained on\nthe [Development database setup section](#set-the-mysql-server-time-zone-to-utc00--00) of this\ndocument.\n\nTo create the **EnduranceTrio Timing Exporter** database and user, replace the ***{LABELS}*** in the\nupcoming commands as appropriate and then execute it on the Ubuntu server.\n\n    CREATE DATABASE {DATABASE_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;\n    CREATE USER '{USERNAME}'@'localhost' IDENTIFIED WITH caching_sha2_password BY '{PASSWORD}';\n    GRANT ALL PRIVILEGES ON {DATABASE_NAME}.* TO '{USERNAME}'@'localhost';\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{DATABASE_NAME}** : The database name defined in the `confidential.yaml` file;\n\u003e + **{USERNAME}** : The database user's username defined in the `confidential.yaml` file;\n\u003e + **{PASSWORD}** : The database user's password defined in the `confidential.yaml` file.\n\n#### Configure the access of the sports timing systems to the database\n\n##### Allow remote connections to the database\n\nTo allow\nthe [remote connections](https://www.digitalocean.com/community/tutorials/how-to-allow-remote-access-to-mysql)\nof the supported sports timing systems to the **EnduranceTrio Timing Exporter** database, you will\nalso need to edit the MySQL server configuration. Open the MySQL main configuration\nfile (`mysqld.cnf`) with the [nano text editor](https://www.nano-editor.org/) using the following\ncommand:\n\n    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf\n\nThen, add (or edit) the following snippet inside `[mysqld]` section:\n\n    bind-address = 0.0.0.0\n\nSave the modifications with the command `CTRL + O` and then exit\nthe [nano text editor](https://www.nano-editor.org/) with the command `CTRL + X`.\n\nTo apply the changes, restart the MySQL service, and then verify that everything is working as\nexpected, with the following commands:\n\n    sudo systemctl restart mysql\n    systemctl status mysql\n\nFinally, execute the upcoming command to configure the [ufw](https://launchpad.net/ufw) firewall to\nallow connections, to the MySQL port 3306, from all IP addresses.\n\n    ufw allow 3306/tcp\n\n##### Configure the access of MYLAPS Timing \u0026 Scoring Software app to the database\n\nThe **EnduranceTrio Timing Exporter** application is able to manage the data produced\nby [MYLAPS](https://www.mylaps.com/) devices, but it can only access this data when\nthe **EnduranceTrio Timing Exporter** database is added as an *exporter* of\nthe [Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/) application. With\nthis procedure, the [Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/)\napplication will be able to write the data, collected from the [MYLAPS](https://www.mylaps.com/)\ndecoders, into the **EnduranceTrio Timing Exporter** database.\n\nTo follow the [least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege)\nprinciple, the [Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/)\nconnection to the **EnduranceTrio Timing Exporter** database must be done with a user that only has\n*write permissions* for the tables used by the\n[Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/) application. Those\ntables are the following:\n\n+ Chips\n+ Markers\n+ NewMail\n+ Results\n+ Times\n\nTo create the [Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/) user\non the **EnduranceTrio Timing Exporter** database, login into the [MySQL](https://www.mysql.com/)\nserver, replace the ***{LABELS}*** in the below commands as appropriate and then execute it.\n\n    CREATE USER '{USERNAME}'@'{HOST}' IDENTIFIED WITH caching_sha2_password BY '{PASSWORD}';\n    GRANT SELECT, INSERT, UPDATE ON {DATABASE_NAME}.Chips TO '{USERNAME}'@'{HOST}';\n    GRANT SELECT, INSERT, UPDATE ON {DATABASE_NAME}.Markers TO '{USERNAME}'@'{HOST}';\n    GRANT SELECT, INSERT, UPDATE ON {DATABASE_NAME}.NewMail TO '{USERNAME}'@'{HOST}';\n    GRANT SELECT, INSERT, UPDATE, ALTER ON {DATABASE_NAME}.Results TO '{USERNAME}'@'{HOST}';\n    GRANT SELECT, INSERT, UPDATE ON {DATABASE_NAME}.Times TO '{USERNAME}'@'{HOST}';\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{USERNAME}** : The user account name to be used by the MYLAPS\n    [Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/) application to\n    store its data on the **EnduranceTrio Timing Exporter** database;\n\u003e + **{HOST}** : The host used by the MYLAPS\n    [Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/) application to\n    connect to the **EnduranceTrio Timing Exporter** database, e.g. `localhost` or `%`;\n\u003e + **{PASSWORD}** : The password of the\n    [Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/) application account\n    on the **EnduranceTrio Timing Exporter** database;\n\u003e + **{DATABASE_NAME}** : The **EnduranceTrio Timing Exporter** database name, as defined in the\n    `confidential.yaml` file;\n\u003e\n\u003e Whenever possible,\n\u003e the [Timing \u0026 Scoring Software](https://www.mylaps.com/timing-scoring-software/)\n\u003e connection to the **EnduranceTrio Timing Exporter** database should be done using\n\u003e [`SSH`](https://en.wikipedia.org/wiki/Secure_Shell). When this is possible, the **{HOST}**\n\u003e ***{LABEL}*** should be replaced with `localhost`. When the\n\u003e [`SSH`](https://en.wikipedia.org/wiki/Secure_Shell) connection is not possible, the **{HOST}**\n\u003e ***{LABEL}*** must be replaced with `%` to provide access from all IPs.\n\n##### Configure the access of Race Result software to the database\n\nThe **EnduranceTrio Timing Exporter** application is able to manage the data produced\nby [Race Result](https://www.raceresult.com/) devices, but it can only access this data when the\n**EnduranceTrio Timing Exporter** database is added as\nan [*exporter*](https://www.raceresult.com/en-us/support/kb?id=8445-Raw-Data-Exporters) of\nthe [Race Result Software](https://www.raceresult.com/en/software/). With this\nprocedure, the [Race Result Software](https://www.raceresult.com/en/software/) will be able to write\nthe data, collected from the [Race Result](https://www.raceresult.com/) decoders, into\nthe **EnduranceTrio Timing Exporter** database.\n\nTo follow the [least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege)\nprinciple, the [Race Result Software](https://www.raceresult.com/en/software/)\nconnection to the **EnduranceTrio Timing Exporter** database must be done with a user that only has\n*write permissions* for the table `RaceResult` that needs to be used by the\n[Race Result Software](https://www.raceresult.com/en/software/) to export the decoders readings.\n\nTo create the [Race Result Software](https://www.raceresult.com/en/software/) user\non the **EnduranceTrio Timing Exporter** database, login into the [MySQL](https://www.mysql.com/)\nserver, replace the ***{LABELS}*** in the below commands as appropriate and then execute it.\n\n    CREATE USER '{USERNAME}'@'%' IDENTIFIED WITH caching_sha2_password BY '{PASSWORD}';\n    GRANT INSERT ON {DATABASE_NAME}.RaceResult TO '{USERNAME}'@'%';\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{USERNAME}** : The user account name to be used\n    by the [Race Result Software](https://www.raceresult.com/en/software/) to store its data\n    on the **EnduranceTrio Timing Exporter** database;\n\u003e + **{PASSWORD}** : The password of the\n    [Race Result Software](https://www.raceresult.com/en/software/) account\n    on the **EnduranceTrio Timing Exporter** database;\n\u003e + **{DATABASE_NAME}** : The **EnduranceTrio Timing Exporter** database name, as defined in the\n    `confidential.yaml` file;\n\n#### Create a user on the server to execute EnduranceTrio Timing Exporter\n\nIt's a good practice to create a dedicated user to run the **EnduranceTrio Timing Exporter**\napplication. This enhances security by isolating the application from the system and other user\nprocesses.\n\nTo create this new user, replace the ***{LABELS}*** in the upcoming command as appropriate and then\nexecute it.\n\n    sudo adduser {APP_USER}\n\nAdd the user's password and the additional required information as prompted.\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{APP_USER}** : The Linux user that wil execute the **EnduranceTrio Timing Exporter** app on\n    the Ubuntu server, e.g. `timing-exporter`;\n\n#### Create a folder to store the EnduranceTrio Timing Exporter JAR file\n\nThere isn't a strict rule on the \"best\" folder to store an application's JAR file on an Ubuntu\nserver, but the `/opt` folder is often used for installing third-party software or packages.\n\nTo create a folder to store the **EnduranceTrio Timing Exporter** JAR file on the Ubuntu server\nand set the correct Linux owner and group, replace the ***{LABELS}*** in the upcoming command as\nappropriate and then execute it.\n\n    sudo mkdir /opt/timing-exporter\n    sudo chown {APP_USER}:{APP_USER} -R /opt/timing-exporter/\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{APP_USER}** : The Linux user that wil execute the **EnduranceTrio Timing Exporter** app on\n    the Ubuntu server, e.g. `timing-exporter`;\n\n### Build and installation\n\n#### Build the EnduranceTrio Timing Exporter JAR file\n\nTo build the JAR file, execute, from the root folder of this repository, the following command:\n\n    ./mvnw clean install\n\n#### Copy the EnduranceTrio Timing Exporter JAR file to your Ubuntu server\n\nCopy the JAR file, generated on the previous step, to the Ubuntu server. Use SCP to copy the\nfile. Replace the ***{LABELS}*** in the upcoming command as appropriate and then execute it from the\nroot folder of this repository.\n\n    scp target/timing-exporter*.jar {REMOTE_USERNAME}@{SERVER_IP}:~/timing-exporter.jar\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{REMOTE_USERNAME}** : The Linux user on the Ubuntu server;\n\u003e + **{SERVER_IP}** : The Ubuntu server IP address;\n\nOn the Ubuntu server, replace the ***{LABELS}*** in the upcoming command as appropriate and\nthen execute it to copy the **EnduranceTrio Timing Exporter** JAR file to the previously created\nfolder.\n\n    sudo mv ~/timing-exporter.jar /opt/timing-exporter/\n    sudo chown {APP_USER}:{APP_USER} -R /opt/timing-exporter/\n    sudo chmod 500 /opt/timing-exporter/timing-exporter.jar\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{APP_USER}** : The Linux user that wil execute the **EnduranceTrio Timing Exporter** app on\n    the Ubuntu server, e.g. `timing-exporter`;\n\n#### systemd setup\n\nWe will run the **EnduranceTrio Timing Exporter** application as a *systemd* service on the Ubunt\nserver. This will make the application more reliable, due to the additional resilience to failures\nof our setup.\n\nTo create a *systemd* service file (`timing-exporter.service`) in the folder `/etc/systemd/system/`\nof the Ubuntu server, use the following command:\n\n    sudo nano /etc/systemd/system/timing-exporter.service\n\nReplace the ***{LABELS}*** in the upcoming snippet as appropriate and then paste it on the\npreviously created file (`timing-exporter.service`).\n\n    [Unit]\n    Description=EnduranceTrio Timing Exporter\n    After=syslog.target\n    \n    [Service]\n    User=timing-exporter\n    ExecStart=java -jar /opt/timing-exporter/timing-exporter.jar\n    SuccessExitStatus=143\n    Restart=always\n    RestartSec=5\n    \n    [Install]\n    WantedBy=multi-user.target\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{APP_USER}** : The Linux user that will execute the **EnduranceTrio Timing Exporter** app on\n    your **Ubuntu** server, e.g. `timing-exporter`;\n\nSave the changes with the command `CTRL + O` and then exit\nthe [nano text editor](https://www.nano-editor.org/) with the command `CTRL + X`.\n\nApply the changes and start the new service using the following commands:\n\n    sudo systemctl daemon-reload\n    sudo systemctl start timing-exporter\n    sudo systemctl enable timing-exporter\n\nTo confirm that new service is running properly, check the output of the following command:\n\n    sudo systemctl status timing-exporter.service\n\n#### Configure Apache Reverse Proxy\n\nTo configure Apache as a reverse proxy to redirect requests to the **EnduranceTrio Timing Exporter**\napplication, you need to enable the modules `proxy` and `mod_proxy` with the following commands:\n\n    sudo a2enmod proxy\n    sudo a2enmod proxy_http\n    sudo systemctl restart apache2\n\nAssuming that you already have a\n[Virtual Host configured](https://github.com/EnduranceCode/server-setup-guide/blob/master/05-server-management.md#51-apache--create-a-virtual-host)\non the Ubuntu server, open the Virtual Host configuration file and add the bellow code snippet\nafter the `DocumentRoot` directive.\n\n        ProxyPreserveHost On\n        ProxyPass /timing-exporter http://localhost:8081/\n        ProxyPassReverse /timing-exporter http://localhost:8081/\n\nSave the changes with the changes and close the file. Then, validate the Apache Server configuration\nwith the following command:\n\n    sudo apachectl configtest\n\nTo activate the new Virtual Host configuration, replace the ***{LABEL}***  in the below commands as\nappropriate and then execute it.\n\n    sudo a2dissite {VIRTUAL_HOST_CONFIG_FILE}\n    sudo a2ensite {VIRTUAL_HOST_CONFIG_FILE}\n    sudo systemctl reload apache2\n\n\u003e **Label Definition**\n\u003e\n\u003e + **{VIRTUAL_HOST_CONFIG_FILE}** : The Virtual Host configuration file;\n\nTo add a [Let's Encrypt](https://letsencrypt.org/) certificate to your Apache configuration, you can\n[use Certbot](https://github.com/EnduranceCode/server-setup-guide/blob/master/05-server-management.md#52-apache--secure-apache-with-lets-encrypt),\nwhich is a tool for automatically obtaining and renewing SSL certificates from Let's Encrypt.\n\n## License\n\n**EnduranceTrio Timing Exporter** is licensed under the terms of [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendurancecode%2Fendurancetrio-timing-exporter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fendurancecode%2Fendurancetrio-timing-exporter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendurancecode%2Fendurancetrio-timing-exporter/lists"}