{"id":22899668,"url":"https://github.com/downtoworld/laravel-devops","last_synced_at":"2025-05-08T01:08:53.873Z","repository":{"id":204462314,"uuid":"711601961","full_name":"DownToWorld/laravel-devops","owner":"DownToWorld","description":"Laravel Cloudflare Tunnels Based Production Docker-Compose","archived":false,"fork":false,"pushed_at":"2024-06-12T10:18:52.000Z","size":39,"stargazers_count":15,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-12-13T21:54:50.336Z","etag":null,"topics":["ci","cloudflare","devops","docker","docker-compose","laravel","production"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DownToWorld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-10-29T18:58:30.000Z","updated_at":"2024-06-22T12:49:09.000Z","dependencies_parsed_at":"2024-06-12T12:39:33.611Z","dependency_job_id":"fb5f9747-5d9e-4d3a-a3f0-02b5a0face31","html_url":"https://github.com/DownToWorld/laravel-devops","commit_stats":null,"previous_names":["downtoworld/laravel-devops"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DownToWorld%2Flaravel-devops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DownToWorld%2Flaravel-devops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DownToWorld%2Flaravel-devops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DownToWorld%2Flaravel-devops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DownToWorld","download_url":"https://codeload.github.com/DownToWorld/laravel-devops/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229633556,"owners_count":18101877,"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":["ci","cloudflare","devops","docker","docker-compose","laravel","production"],"created_at":"2024-12-14T01:15:27.031Z","updated_at":"2024-12-14T01:15:27.731Z","avatar_url":"https://github.com/DownToWorld.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Installation\n```\ncomposer require \"downtoworld/laravel-devops:*\"\n```\n\nPublish the **required** files:\n```\nphp artisan vendor:publish --tag=laravel-devops\n```\n\n### Example with Portainer and Cloudflare Tunnels\n- Create the Docker network `cloudflared` (bridge)\n- Deploy the Docker container as specified @ Cloudflare -\u003e Zero Trust -\u003e Access -\u003e Tunnels -\u003e Create a tunnel (**Additionally**: attach the container to the previously created network by specifying `--network cloudflared`)\n- Create a Git-repo based Stack @ Portainer webUI\n    - At **Compose path** specify: `docker-compose-prod.yml`\n    - Enable **GitOps updates**\n    - Fill the required environment variables:\n        - `APP_NAME`: *several Laravel configurations use it for prefixing*\n        - `APP_KEY`: *can be generated on your local environment*\n        - `APP_DOMAIN`: domain of the app in production Example: *yourdomain.com*\n        - `APP_DOCKER_STACK`: the name of the stack you are configuring @ Portainer. Example: *mystack*\n        - [*You can also configure here any Laravel env variables like `APP_NAME` or `APP_DEBUG`*]\n    - *Deploy the stack*\n- Add public hostnames to the tunnel @ Cloudflare:\n    - **Webpage (Nginx)**: *yourdomain.com* HTTP *mystack*-nginx-1:80\n    - **S3 Storage (Minio)**: *cdn.yourdomain.com* HTTP *mystack*-minio-1:9000\n    - **Websocket server (Soketi)**: *ws.yourdomain.com* HTTPS (tls-check-disabled and ws-enabled options) *mystack*-soketi-1:6001\n\n### Accessing private services (MySQL, Redis, etc) locally\n- Run `docker run -d --name cloudflare-docker-dns --restart always --network cloudflared -e DNS_FORWARDER=127.0.0.11 cytopia/bind` and copy it's assigned IP (*your-assigned-ip*) from Portainer UI.\n- Go to Portainer networks and copy `cloudflared` assigned IPV4 IPAM Subnet (*your-network-ip-range*)\n- Go to Cloudflare -\u003e Zero Trust -\u003e Access -\u003e Tunnels and configure a new `Private network` at your tunnel with `CIDR`: *your-network-ip-range*\n- Go to Cloudflare Zero Trust Settings -\u003e WARP Client -\u003e Configure \"Default\" Device Settings:\n    - Add a Local Domain Fallback: `domain`: cloudflared `DNS Servers`: *your-assigned-ip*\n    - Set Split Tunnels to `Include IPs and domains` and add `Selector`: IP Address `Value`: *your-network-ip-range*\n- Give your email access at Cloudflare Zero Trust Settings -\u003e WARP Client -\u003e Device enrollment permissions.\n- Install [Cloudflare WARP](https://1.1.1.1/) on your computer, connect it to your Zero Trust org and enable it.\n- Now you can access all your cloudflared-network-connected docker containers locally as `mystack-service-1.cloudflared:port`\n\nThe list of services you can access:\n- *mystack*-mysql-1.cloudflared:3306 `User`: root `Password`: secret\n- *mystack*-redis-1.cloudflared:6379 no-password\n- http://*mystack*-seq-1.cloudflared\n- http://*mystack*-minio-1.cloudflared:8900\n- http://*mystack*-mailpit-1.cloudflared:8025\n- http://*mystack*-meilisearch-1.cloudflared:7700\n\n### Environment variables\nApplication environment variables can be managed at `docker-compose-prod.env` file.\n\n### Queue and Scheduler\n**Scheduler** and **Horizon** supervisors are running separately on their containers.\n\n### PHP Versions, Extensions and INI files\n8.2 version is running by default but can be switched to `8.1` or `7.4` using the `APP_PHP_VERSION` environment variable.\n\n### Thank yous\n- Big one for Cloudflare Team for making this possible for free.\n- Portainer project made it possible with their GitOps updates.\n- ServerSideUp team made it possible with their PHP Docker images.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdowntoworld%2Flaravel-devops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdowntoworld%2Flaravel-devops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdowntoworld%2Flaravel-devops/lists"}