{"id":23021605,"url":"https://github.com/raupulus/api-fryntiz","last_synced_at":"2025-08-14T09:33:02.322Z","repository":{"id":95712552,"uuid":"138612918","full_name":"raupulus/api-fryntiz","owner":"raupulus","description":"  Proyecto de API con información en tiempo real sobre mis páginas web. Mirro de https://gitlab.com/raupulus/api-fryntiz","archived":false,"fork":false,"pushed_at":"2024-12-12T21:15:50.000Z","size":16380,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-12T22:24:35.455Z","etag":null,"topics":["api","curriculum","flightaware","keycounter","laravel","laravel-application","laravel-framework","php","smartplant","vue","vue3","vuejs","weather-station"],"latest_commit_sha":null,"homepage":"https://api.fryntiz.dev","language":"PHP","has_issues":false,"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/raupulus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.txt","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-25T15:20:36.000Z","updated_at":"2024-12-12T21:15:57.000Z","dependencies_parsed_at":"2024-12-12T22:34:09.628Z","dependency_job_id":null,"html_url":"https://github.com/raupulus/api-fryntiz","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fapi-fryntiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fapi-fryntiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fapi-fryntiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fapi-fryntiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raupulus","download_url":"https://codeload.github.com/raupulus/api-fryntiz/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229816376,"owners_count":18128562,"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":["api","curriculum","flightaware","keycounter","laravel","laravel-application","laravel-framework","php","smartplant","vue","vue3","vuejs","weather-station"],"created_at":"2024-12-15T12:18:42.549Z","updated_at":"2025-08-14T09:33:02.305Z","avatar_url":"https://github.com/raupulus.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Api de propósito general\n\n## Secciones\n\n- Estación Meteorológica\n- Contador de pulsaciones para teclado/ratón\n- SmartPlant para control y monitorización de plantas\n- Radar de vuelos para aviones en las proximidades\n\n## Pendiente\n\n- Preparar vista de emails generales\n- Terminar de revisar vista de email para verificar newsletter\n\n## Instalación\n\ngit clone https://gitlab.com/raupulus/api-fryntiz.git\n\n- Editar .env\n- Crear Base de datos (postgresql)\n\ncd /var/www/web/api-fryntiz\nsudo -u postgres createdb -O web -T template1 api_fryntiz\ncp .env.example .env\nnano .env\n\ncomposer install --no-dev\nphp artisan migrate\nphp artisan db:seed\nphp artisan passport:install\nphp artisan key:generate\n\n#ln -s $PWD/storage/app/public $PWD/public/storage\nphp artisan storage:link\n\nnpm install --production\n\nsudo chown -R www-data:www-data /var/www/web/api-fryntiz\nsudo find /var/www/web/api-fryntiz/ -type f -exec chmod 644 {} \\;\nsudo find /var/www/web/api-fryntiz/ -type d -exec chmod 775 {} \\;\n\nsudo mkdir /var/log/apache2/api-fryntiz\nsudo cp /var/www/web/api-fryntiz/api-fryntiz.conf /etc/apache2/sites-available/\nsudo a2ensite api-fryntiz.conf\n\necho '127.0.0.1       fryntiz.dev' | sudo tee -a /etc/hosts\necho '127.0.0.1       api.fryntiz.dev' | sudo tee -a /etc/hosts\n\nsudo systemctl reload apache2\n\nsudo certbot --authenticator webroot --installer apache \\\n-w /var/www/web/api-fryntiz/public \\\n-d www.api.fryntiz.dev -d api.fryntiz.dev\n\n\nsudo certbot certonly --webroot -w /var/www/web/api-fryntiz/public \\\n-d www.api.fryntiz.dev -d api.fryntiz.dev\n\n\n## API Estación meteorológica\n\nRuta de acceso: /weatherstation\n\n## API Contador de teclas (Keycounter)\n\nRuta de acceso: /keycounter\n\n## API Smart Plant\n\nRuta de acceso: /smartplant\n\n## API Airflight\n\nRuta de acceso: /airflight\n\n## Cronjobs\n\nAñadir tarea cron para ejecutar cada minuto el comando de laravel para ejecutar los cronjobs:\n\n```bash\n## Laravel api-fryntiz\n* * * * * fryntiz cd /var/www/public/api-fryntiz \u0026\u0026 php artisan schedule:run \u003e\u003e /dev/null 2\u003e\u00261\n```\n\nAsí laravel podrá gestionar las tareas programadas controladas por código internamente.\n\n## Websockets\n\nAntes de continuar, todo lo que ves a continuación es para instalar websockets en un servidor con Debian Stable, en caso de usar otro sistema operativo o versión de Debian, puede que no funcione o haya que adaptar los comandos.\n\nDe cualquier forma, me salto las partes de configuración para la seguridad por ser de ámbito general y esto es un proyecto de código abierto, no un tutorial de seguridad. Lo mínimo que deberías plantear es tener un certificado SSL válido y que la aplicación no se ejecute como root, si no como un nuevo usuario con permisos limitados al menos para la parte de websockets. También deberías tener un firewall activo y configurado para evitar ataques. En el servidor de nginx/apache o el que uses deberías limitar el acceso a la aplicación por IP o rango de IPs (cualquier mecanismo para evitar accesos no autorizados que consuman recursos y/o puedan escalar acceso).\n\nEl ejemplo para la configuración de apache lo puedes encontrar en el archivo *api-fryntiz.conf* en la raíz del proyecto.\n\nPara habilitar los websockets se hay que instalar algún gestor de tareas como *supervisor*\n\n```bash\nsudo apt install supervisor\n```\n\nY crear un archivo de configuración en */etc/supervisor/conf.d/api-fryntiz.conf* con el siguiente contenido cambiando ruta y usuario:\n\n```\n[program:api_fryntiz_websockets]\ncommand=/usr/bin/php /var/www/public/api-fryntiz/artisan websockets:serve --port 6001\nnumprocs=1\nautostart=true\nautorestart=true\nuser=fryntiz\n```\n\nY reiniciar el servicio de supervisor\n\n```bash\nsudo supervisorctl update\nsudo supervisorctl restart api_fryntiz_websockets\nsudo supervisorctl status api_fryntiz_websockets\n```\n\nMás información en [https://beyondco.de/docs/laravel-websockets/getting-started/installation](https://beyondco.de/docs/laravel-websockets/getting-started/installation)\n\n\nIncrementar límites de conexiones al websockets, esto normalmente es un límite del sistema operativo, en este caso Debian Stable:\n\n```bash\nsudo nano  /etc/security/limits.d/laravel-echo.conf\n```\n\nCambia el nombre del archivo y del usuario por el que corresponda, en este caso es laravel-echo como ejemplo.\n\nDentro deberá tener el siguiente contenido adaptado a tu caso:\n\n```bash\n#\u003cdomain\u003e    \u003ctype\u003e  \u003citem\u003e    \u003cvalue\u003e\n\nlaravel-echo       soft    nofile        10000\n```\n\nSuele estar limitado a 1024.\n\nPara más seguridad y evitar problemas, es mejor haber utilizado un usuario específico para la aplicación y no el usuario root o cualquier otro administrador.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraupulus%2Fapi-fryntiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraupulus%2Fapi-fryntiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraupulus%2Fapi-fryntiz/lists"}