# Instalação local ## Requisitos do host | Ferramenta | Para quê | Observação | |---|---|---| | Docker Engine 24+ / Docker Desktop 4.30+ | toda a stack do servidor | Windows: Docker Desktop com backend **WSL 2** | | Docker Compose v2.17+ | `additional_contexts` no build | já vem no Docker Desktop / `docker-compose-plugin` | | Git | submodules | | | curl, bash | scripts | Windows: Git Bash (vem com o Git) | | ~15 GB livres | imagens + dados dos clientes | o build do web copia ~2 GB de assets | | 8 GB RAM (16 recomendado) | build do OpenMU e do cliente web | | **Nada** de PostgreSQL, Node, Bun, .NET ou nginx precisa estar instalado no host para o servidor. O projeto usa só o cliente web (o cliente desktop foi removido, D15). ### Windows: instalando o Docker Desktop 1. Habilite a virtualização na BIOS (já verificado: `VirtualizationFirmwareEnabled=True` nesta máquina). 2. PowerShell **como administrador**: `wsl --install` e reinicie. 3. Instale o Docker Desktop (https://docs.docker.com/desktop/setup/install/windows-install/) — aceite os termos de uso (gratuito para uso pessoal/pequenas empresas; verifique a licença para o seu caso). 4. Em *Settings → Resources → WSL integration* nada é necessário; os comandos rodam no Git Bash/PowerShell. Se aparecer em loop o aviso "Remote Desktop — Could not load the Remote Desktop Services ActiveX control", desligue o WSLg: crie `%USERPROFILE%\.wslconfig` com `[wsl2]` e `guiApplications=false`, rode `wsl --shutdown` e reabra o Docker Desktop (ver troubleshooting). 5. Teste: `docker run --rm hello-world`. ## Passo a passo ```bash git clone --recurse-submodules mu-custom cd mu-custom ./scripts/bootstrap-local.sh # .env com senhas aleatórias + submodules + compose config docker compose up -d --build # 1ª vez: ~10-20 min (build OpenMU + web) ./scripts/healthcheck.sh ./scripts/smoke-test.sh # testes funcionais, inclusive login real ``` Sem `--recurse-submodules`? Rode `git submodule update --init`. A **primeira inicialização** do OpenMU cria o banco, aplica migrations e popula todos os dados do Season 6 (itens, mapas, monstros, 3 game servers, contas de teste). Leva alguns minutos; o healthcheck tem `start_period` de 5 min. ## URLs e credenciais locais | O quê | URL | Credencial | |---|---|---| | Jogo (web) | http://play.localhost | contas do jogo (ex. `test0` / `test0`) | | Admin Panel | http://admin.localhost | `OPENMU_ADMIN_USER` / `OPENMU_ADMIN_PASSWORD` do `.env` | | Docs | http://docs.localhost | — | | WebSocket | ws://ws.localhost | (usado pelo cliente) | `*.localhost` resolve para 127.0.0.1 no Chrome, Edge e Firefox sem editar `hosts`. Se usar outra porta HTTP (`HTTP_PORT=8080`), ajuste também `WEB_WS_PORT=8080` e rebuild do `web-client`. ### Contas de teste Criadas automaticamente na 1ª inicialização; **senha = nome da conta**: `test0`…`test9` (níveis 1–91), `test300`, `test400` (master), `testgm`, `testgm2` (GM), `testunlock`, `quest1-3`, `ancient`, `socket`. Em servidor público: `./scripts/disable-test-accounts.sh` (o `install-vps.sh` já faz). ### Criar conta - **Admin Panel** → *Accounts* → *Create*. - **API** (para um site/portal): crie uma API key de papel *Operator* em *API keys* e `POST /api/accounts` com `{"loginName","password","eMail"}` (login 3–10, senha 3–20 ASCII). ⚠️ Para jogar pelo **web**, use senha de **até 10 caracteres** (limitação do cliente web, ver [protocol-compatibility.md](protocol-compatibility.md#5-limitações-conhecidas)). ## Modos | `MU_ENV` | Arquivos | Uso | |---|---|---| | `local` | `docker-compose.yml` | padrão | | `dev` | + `docker-compose.dev.yml` | Postgres em 127.0.0.1:5433, Admin em :8081, proxy em :3000, web em :8082, dashboard Traefik em :8088, e acesso sem `*.localhost` por `http://127.0.0.1/?ws=ws://127.0.0.1:80` | | `prod` | + `docker-compose.prod.yml` | HTTPS/WSS Let's Encrypt — ver [vps-deployment.md](vps-deployment.md) | Os scripts em `scripts/` leem `MU_ENV` do `.env`. Com `docker compose` direto, passe os `-f`.