This guide covers a full production installation of Leo Counter on Windows 10 or Windows 11 using Docker Desktop and theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/juanVillamilEchavarria/Leo_Counter-app/llms.txt
Use this file to discover all available pages before exploring further.
install.ps1 PowerShell script. The script performs the same installation steps as its Linux counterpart — building Docker images, running migrations, seeding the database, and optimising Laravel — with one difference: systemd is not available on Windows, so you manage services with Docker Compose commands directly.
Prerequisites
Docker Desktop
Download and install Docker Desktop for Windows from the official Docker website. After installation:- Launch Docker Desktop from the Start menu.
- Wait for the whale icon in the system tray to show a solid green dot, indicating the engine is running.
- Open a terminal and confirm Docker is reachable:
PowerShell 5.1 or Higher
Windows 10 and 11 ship with Windows PowerShell 5.1. You can verify your version with:WSL 2 (Recommended)
WSL 2 (Windows Subsystem for Linux 2) provides a real Linux kernel for Docker to run against, resulting in significantly faster file I/O and better container performance compared to the Hyper-V backend. Enable it before installing Docker Desktop for the best experience:Then restart your machine. Docker Desktop will automatically detect and use the WSL 2 engine.
Installation
Clone the Repository
Open an elevated PowerShell window and navigate to the directory where you want to install Leo Counter. Then clone the repository:
Allow Local Script Execution
Windows blocks unsigned scripts by default. Temporarily allow local scripts for the current PowerShell session:This setting applies only to the current session and does not permanently change your system policy.
Configure Your .env File
If no Set at minimum the four critical variables:The relevant sections from Save the file. If the installer is already waiting for you, press Enter at the prompt to continue.
.env file exists, the installer copies .env.example automatically and prompts you to edit it. You can also do this manually before running the installer:.env.example are shown below for reference:Run the Installer
Verify the Installation
Open your browser and navigate to All eight containers should show a status of
http://localhost:8080. You should see the Leo Counter registration page. Create your administrator account to complete the setup.You can also verify container health from PowerShell:Up:| Container | Role |
|---|---|
leo_counter_app | Laravel + Apache (main app) |
leo_counter_queue | Background queue worker |
leo_counter_scheduler | Laravel task scheduler |
leo_counter_reverb | Reverb WebSocket server |
mariadb_server | MariaDB database |
leo_counter_redis | Redis cache and queues |
phpmyadmin | PhpMyAdmin visual database manager |
mailhog | Local email capture (SMTP + web UI) |
What install.ps1 Does
The PowerShell script mirrors the Linux install.sh flow, adapted for Docker Desktop and PowerShell idioms:
- Requirement validation — Checks that
dockeris available inPATHand that Docker Desktop is running. .envcreation — Copies.env.exampleto.envif absent and pauses for credentials.- Storage directory creation — Creates
storage/app/public,storage/app/data/movimientos,storage/framework/cache/data,storage/framework/sessions,storage/framework/views,storage/logs, andbootstrap/cache. Adds.gitkeepfiles viaOut-File. - Build argument extraction — Uses a custom
Get-EnvValuefunction that handles quoted values and trailing spaces to reliably parseREVERB_APP_KEY,REVERB_APP_ID,REVERB_APP_SECRET,REVERB_HOST,REVERB_PORT,REVERB_SCHEME, andVITE_API_URLfrom.env. - Docker image build — Runs
docker compose build --no-cachewith all extracted values as--build-argflags, so Vite bakes the correct WebSocket endpoint into the compiled JavaScript. - Support services start — Brings up
db,redis,mailhog, andphpmyadminwithdocker compose up -d. - Database health wait — Polls the MariaDB container’s health status every two seconds for up to 60 seconds.
- Application container start — Starts the
appcontainer and waits for PHP to become responsive. - Laravel setup — Runs inside the container:
config:clear,migrate --force,db:seed --force,storage:link --force, thenconfig:cache,route:cache,view:cache, andevent:cache. - HTTP health check — Uses
Invoke-WebRequestto verify the app responds with HTTP 200 or 302. - Final service start — Runs
docker compose up -dto bring upqueue-worker,scheduler, andreverb.
Unlike the Linux installer,
install.ps1 does not register a systemd service, because systemd is not available on Windows. Use the Docker Compose commands in the next section to manage the application lifecycle.Service Ports
| Service | URL / Address | Purpose |
|---|---|---|
| Leo Counter App | http://localhost:8080 | Main web interface |
| PhpMyAdmin | http://localhost:8082 | MariaDB visual admin |
| Mailhog | http://localhost:8025 | Local email capture |
| Reverb WebSockets | ws://localhost:8085 | Real-time event bus |
Managing Services
Because systemd is not available on Windows, use Docker Compose commands to start and stop Leo Counter:docker compose up -d from the project directory on logon.