Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
MMORPG de navegador de Naruto: crie um ninja, escolha uma vila e batalhe para evoluir
Translation pending
AI summary · revised during review
GamesPHP · JavaScriptGitHub @gbernichproOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Uma migração completa do clássico jogo de navegador de Naruto, agora atualizado para ambientes modernos com PHP 8. Este é um MMORPG baseado em navegador ambientado no universo de Naruto. Os jogadores criam seu próprio ninja, escolhem uma vila e embarcam em uma jornada para se tornarem os shinobis mais fortes. O jogo possui um sistema de RPG robusto com níveis, missões, batalhas e interação com a comunidade.Read the full README ↗
Uma migração completa do clássico jogo de navegador de Naruto, agora atualizado para ambientes modernos com PHP 8.
Este é um MMORPG baseado em navegador ambientado no universo de Naruto. Os jogadores criam seu próprio ninja, escolhem uma vila e embarcam em uma jornada para se tornarem os shinobis mais fortes. O jogo possui um sistema de RPG robusto com níveis, missões, batalhas e interação com a comunidade.
Recentemente, este projeto passou por um significativo esforço de modernização para garantir compatibilidade com PHP 8.x, corrigindo funções obsoletas, otimizando interações com o banco de dados e resolvendo problemas de frontend.
O jogo tem um instalador web: você não edita nenhum arquivo PHP à mão. Suba os arquivos, abra /install/ no navegador, informe os dados do MySQL e ele cria o banco, importa as 76 tabelas de install/schema.sql, cria sua conta de administrador e grava o .env.
Escolha um dos dois caminhos abaixo.
| Opção A — XAMPP/WAMP e hospedagem tradicional | Opção B — Docker / Coolify | |
|---|---|---|
| Para quem | Roda local, ou tem cPanel/Plesk/FTP | Tem VPS própria |
| Você precisa de | Apache + PHP 8.0+ + MySQL | Docker (e Coolify, se for usar painel) |
| Configuração | Arquivo .env, escrito pelo instalador | Variáveis de ambiente no painel |
| HTTPS | Depende da hospedagem | Automático (Let's Encrypt) |
1. Coloque os arquivos no servidor
Local, com XAMPP ou WAMP:
# Windows (XAMPP): C:\xampp\htdocs\ | WAMP: C:\wamp64\www\
git clone https://github.com/gbernichpro/naruto-browser.git naruto
Em hospedagem compartilhada, envie o conteúdo do projeto para public_html/ (ou www/) por FTP ou pelo gerenciador de arquivos do painel.
A pasta
vendor/já vem no repositório justamente para esse caso: sem SSH você não conseguiria rodar o Composer. Se tiver SSH, prefira rodarcomposer installpara pegar as versões travadas nocomposer.lock.
2. Crie o banco (opcional)
O instalador cria o banco sozinho se o usuário do MySQL tiver permissão. No XAMPP/WAMP o root tem, então pode pular. Em hospedagem compartilhada normalmente você precisa criar o banco pelo painel antes (cPanel → MySQL Databases) e anotar nome, usuário e senha.
3. Rode o instalador
Abra no navegador:
http://localhost/naruto/install/ (XAMPP/WAMP)
https://seudominio.com/install/ (hospedagem)
Preencha os dados do MySQL e da conta de administrador e clique em Instalar agora. Deixe marcado "Gravar o arquivo .env na raiz".
4. Feche o instalador
Assim que terminar, o instalador se tranca sozinho (_cache/installed.lock). Para fechar de vez, apague a pasta install/ do servidor — ela não é necessária para o jogo rodar.
5. Jogue
http://localhost/naruto/
Se você usa cPanel → Git Version Control, o deploy é automatizado pelo arquivo .cpanel.yml na raiz do projeto. Sem ele o painel mostra "The system cannot deploy" e o botão Deploy HEAD Commit fica inativo — o arquivo é justamente o roteiro que diz ao cPanel o que fazer depois do git pull.
Antes do primeiro deploy, confira o caminho de destino. Abra .cpanel.yml e ajuste esta linha:
- export DEPLOYPATH=/home2/geova330/naruto
O valor deve ser a Raiz do documento que o cPanel mostra em Domínios.
Há dois cenários, e o arquivo cobre os dois sozinho:
git pull do cPanel já atualiza o site; não há nada para copiar, e o deploy só faz a manutenção das pastas graváveis.public_html). O deploy copia os arquivos para lá.Caminho errado não apaga nada — só publica na pasta errada, e parece que o deploy não funcionou.
Como o deploy se comporta:
| Item | O que acontece |
|---|---|
.env | Nunca é sobrescrito. Ele guarda a senha do banco de produção e vive só no servidor |
uploads/, reports/, _cache/ | Preservados — são dados de jogador |
.htaccess | Copiado (o deploy usa rsync, não cp -R *, que ignoraria arquivos com ponto) |
Dockerfile, docker/, .git | Não vão para a pasta pública |
Os dois requisitos do cPanel para o botão Deploy funcionar:
.cpanel.yml existe na branch em que o repositório está (main, normalmente)..env, que nesta versão saiu do versionamento justamente para parar de travar deploys.⚠️ Se você está publicando esta versão por cima de um jogo que já roda: o
.envdo seu servidor é anterior a ela e não tem as chaves novas. Nada quebra — todas têm padrão seguro — mas vale adicionarINSTALLER_ENABLED=false,APP_DEBUG=falseeAPP_TIMEZONE=America/Sao_Paulo. Mesmo sem elas, o instalador se fecha sozinho ao detectar que o banco já tem as tabelas do jogo.
Verifique a versão do PHP. Em cPanel → MultiPHP Manager, o domínio precisa estar em PHP 8.0 ou superior. Em PHP 7.x o jogo não sobe.
🔒 Se o clone do Git for a própria pasta pública,
/.git/fica acessível pela web e existem scanners varrendo a internet atrás de/.git/HEAD. Quem encontra baixa o código-fonte inteiro e todo o histórico. O.htaccessdeste projeto já bloqueia arquivos e pastas ocultos, e o deploy grava umRequire all denieddentro de.git/como segunda camada — mas o arranjo mais seguro continua sendo manter o clone fora do document root.
No error_log do Apache aparece:
AH00529: .../_css/.htaccess pcfg_openfile: unable to check htaccess file,
ensure it is readable and that '.../_css/' is executable
O diretório está sem o bit de execução, então o Apache não consegue entrar nele. Acontece com facilidade em upload por FTP ou restauração de backup. O deploy corrige sozinho a cada publicação; para resolver na hora, pelo Terminal:
cd /home2/SEU_USUARIO/naruto
find . -path ./.git -prune -o -type d ! -perm -755 -print0 | xargs -0 -r chmod 755
O -path ./.git -prune não é detalhe: abrir o .git para o Apache é exatamente o que expõe o repositório.
| Sintoma | Causa |
|---|---|
| Página em branco ou erro 500 | Defina APP_DEBUG=true no .env para ver o erro. Volte para false depois — com true o PHP expõe caminhos do servidor. |
Database Connection Failed | Host errado. Em hospedagem compartilhada quase nunca é localhost: veja no painel (costuma ser mysql.seudominio.com ou um IP). |
| Banco em porta diferente de 3306 | Preencha o campo Porta no instalador, ou use DB_PORT no .env. |
| Avatares não salvam | uploads/ precisa de permissão de escrita (chmod 775). |
| Instalador diz "já foi instalado" | Apague _cache/installed.lock ou defina INSTALLER_ENABLED=true. |
git clone https://github.com/gbernichpro/naruto-browser.git
cd naruto-browser
cp .env.example .env # preencha ao menos DB_PASS e DB_ROOT_PASS
docker compose up -d --build
Abra http://localhost:8080/install/. No formulário use:
db (o nome do serviço no docker-compose.yml, não localhost)3306DB_USER, DB_PASS e DB_NAME do seu .envCoolify → New Resource → Docker Compose, apontando para este repositório. Ele usa o docker-compose.yml da raiz (app + MariaDB + volumes, tudo junto).
Se preferir separar, crie um banco MariaDB pelo próprio Coolify e use Dockerfile como build pack para o app, apontando DB_HOST para o host interno que o Coolify mostrar.
Remova a seção ports: do serviço app — quem publica a porta é o proxy do Coolify.
Em Environment Variables, preencha:
DB_NAME=naruto
DB_USER=naruto
DB_PASS=<senha forte>
DB_ROOT_PASS=<outra senha forte>
GAME_NAME=Fight
INSTALLER_ENABLED=true
INSTALL_TOKEN=<string aleatória longa>
DB_HOST=db e DB_PORT=3306 já vêm do compose.
Configure os volumes persistentes — este é o passo que mais se esquece. Sem eles, avatares enviados, relatórios de batalha e a trava do instalador somem a cada redeploy:
| Caminho no container | Guarda |
|---|---|
/var/www/html/uploads | imagens enviadas por jogadores |
/var/www/html/reports | relatórios de batalha (.txt) |
/var/www/html/_cache | cache e trava de instalação |
/var/lib/mysql (no serviço db) | o jogo inteiro |
Aponte seu domínio no campo Domains e faça o deploy. O Coolify emite o certificado Let's Encrypt sozinho.
Abra https://seudominio.com/install/?token=<INSTALL_TOKEN> e instale, com Host db e a opção de gravar .env desmarcada.
Depois de instalar, troque INSTALLER_ENABLED para false e faça redeploy.
| Sintoma | Causa |
|---|---|
Database Connection Failed logo no primeiro deploy | O MariaDB ainda está subindo. O healthcheck do compose já segura o app; se você separou os serviços no Coolify, é só aguardar e recarregar. |
| Jogo funciona, mas some tudo no redeploy | Faltam os volumes do passo 4. |
| Todo jogador aparece com o mesmo IP | O proxy não está mandando X-Forwarded-For. O mod_remoteip já vem configurado em docker/apache-naruto.conf. |
| Container marcado como unhealthy | health.php responde 503 quando o banco não responde. Cheque as variáveis DB_*. |
Todas funcionam tanto no arquivo .env quanto como variável de ambiente do painel. O modelo completo e comentado está em .env.example.
| Variável | Padrão | Para que serve |
|---|---|---|
DB_HOST DB_PORT DB_NAME DB_USER DB_PASS | — | Conexão com o MySQL |
GAME_NAME | Fight | Nome do servidor, exibido no título e nas mensagens |
APP_DEBUG | false | true mostra erros na tela. Nunca deixe ligado em produção |
APP_TIMEZONE | America/Sao_Paulo | Fuso dos timers de missão, treino, VIP e penalidade |
DB_LEGACY_SQL_MODE | true | Relaxa o modo estrito do MySQL, que recusa as datas 0000-00-00 do schema de 2013 |
INSTALLER_ENABLED | true | false fecha o instalador de forma absoluta — nem token abre |
INSTALL_TOKEN | vazio | Senha de acesso ao instalador. É o único jeito de reabri-lo depois de instalado |
SMTP_*, MAIL_FROM_* | vazio | Envio de e-mail (recuperação de senha) |
TURNSTILE_* | vazio | Captcha do cadastro. Vazio = desligado |
DISCORD_WEBHOOK_URL | vazio | Recebe notificação dos erros de PHP |
Um formulário público que recebe credenciais de MySQL e executa SQL é um alvo. Por isso /install/ se fecha sozinho de três formas independentes:
_cache/installed.lock, gravada ao fim da instalação.INSTALLER_ENABLED=false no ambiente.usuarios, o instalador se recusa a abrir — mesmo sem trava e sem a variável. É o que protege quem publica esta versão por cima de um jogo que já está no ar, cujo .env antigo não tem INSTALLER_ENABLED.Quando fechado, ele não mostra o formulário nem revela host, usuário ou nome do banco.
⚠️
install/schema.sqlcomeça comDROP TABLEnas 76 tabelas. Reinstalar em um banco com jogo ativo apaga tudo. O instalador exige confirmação explícita quando detecta tabelas existentes — leia o aviso vermelho antes de marcar.
Como a detecção automática mantém o instalador fechado, apagar a trava não basta. Defina um token no .env:
INSTALL_TOKEN=uma-string-aleatoria-bem-longa
E abra /install/?token=uma-string-aleatoria-bem-longa.
O token vence a trava em disco e a detecção automática, mas não vence INSTALLER_ENABLED=false — essa continua sendo o botão de emergência para fechar tudo.
Revivemos este código legado com as seguintes correções:
mysql_* obsoletas por um shim mysqli personalizado (_inc/mysqli_shim.php) e atualização de ereg para preg_match.anti_sql_injection e manipulação de sessão mais segura.Contribuições são bem-vindas! Sinta-se à vontade para verificar a aba Issues ou enviar um Pull Request.
git checkout -b feature/MinhaFeatureIncrivel)git commit -m 'Adiciona alguma Feature Incrível')git push origin feature/MinhaFeatureIncrivel)Este projeto é destinado a fins educacionais. Todos os personagens e ativos de Naruto são direitos autorais de Masashi Kishimoto.
Mantido por G. Bernich