Configuração
O tempo de execução procura env.joss , depois env.enc e finalmente .env ; o desenvolvimento também tenta diretórios pais. Variáveis do sistema operacional substituem o arquivo. System::env("KEY", "default") consulta o ambiente carregado.
APP_ENV="development"
APP_URL="https://127.0.0.1:8443"
PORT="8443"
PREFIX="js_"
JWT_SECRET="secreto-largo-y-unico"
APP_KEY="clave-larga-y-unica"
PREFIX é a chave canônica; DB_PREFIX é mantido como um alias.
Bancos de dados
SQLite:
DB="sqlite"
DB_PATH="database.sqlite"
MySQL usa a porta 3306 quando DB_HOST não a inclui:
DB="mysql"
DB_HOST="127.0.0.1:3306"
DB_NAME="mi_app"
DB_USER="usuario"
DB_PASS="secreto"
PostgreSQL usa a porta 5432 e aceita DB_SSLMODE :
DB="postgres"
DB_HOST="127.0.0.1:5432"
DB_NAME="mi_app"
DB_USER="usuario"
DB_PASS="secreto"
DB_SSLMODE="require"
Os aliases postgresql e pgx também são normalizados para PostgreSQL.
O Microsoft SQL Server usa a porta 1433 e aceita DB_ENCRYPT :
DB="sqlserver"
DB_HOST="127.0.0.1:1433"
DB_NAME="mi_app"
DB_USER="sa"
DB_PASS="secreto"
DB_ENCRYPT="disable"
Os aliases mssql e mssqlserver também são normalizados para SQL Server.
Servidor e sessões
SESSION_DRIVER="file"
SESSION_FILE="storage/sessions.json"
RATE_LIMIT_REQUESTS="120"
RATE_LIMIT_WINDOW_SECONDS="60"
TLS_CERT_FILE="certs/fullchain.pem"
TLS_KEY_FILE="certs/private.key"
CORS_WEB="https://app.example.com"
fileé o driver de sessão padrão e persiste nas reinicializações.memoryé explicitamente volátil.SESSION_DRIVER="redis"armazena sessões da web no Redis em vez de disco. – O certificado TLS e a chave devem ser configurados juntos.CORS_WEB=*permite qualquer origem sem credenciais; uma lista separada por vírgulas cria uma lista de permissões exata.
Redis e cache distribuído
Joss inclui um cliente Redis nativo com conexão automática e suporte de sessão:
# Opción A: URL completa estándar
REDIS_URL="redis://default:[email protected]:6379/0"
# Opción B: Variables individuales (puerto 6379 y DB 0 por defecto)
REDIS_HOST="127.0.0.1"
REDIS_PORT="6379"
REDIS_USER="default"
REDIS_PASSWORD="password"
REDIS_DB="0"
- Se
REDIS_URLouREDIS_HOSTestiverem presentes, a classeRedis::set(),Redis::get(), etc. Ele se conecta automaticamente na primeira chamada. SESSION_DRIVER="redis"usa automaticamente essas credenciais.
##
Processos e plug-ins - ALLOW_SYSTEM_RUN=true ativa System::Run() .
- JOSS_PLUGIN_SIGNING_KEY permite selecionar uma chave privada Ed25519 existente para compilar JP. Se não for especificado, Joss gera e gerencia uma chave automaticamente por plugin em ~/.joss/keys/ .
- Plugins .jp rodam diretamente na memória (bytecode VM e AST Engine), com acesso ao mapa do ambiente r.Env de acordo com seu executor; isso não constitui uma sandbox do sistema operacional.
Segurança, páginas de erro e modo de engano
APP_DEBUG="false"
SECURITY_DECEPTION="true"
- Páginas de erro nativas: em vez de texto simples, Joss oferece páginas de erro visuais integradas com design moderno (SVG animado, código de status e navegação inicial). Você pode personalizar visualizações por projeto em
app/views/errors/{status}.joss.html(por exemploerrors/404ouerrors/500). Se o cliente enviarAccept: application/jsonou solicitar rotas em/api/, ele responderá automaticamente com um JSON estruturado. - Modo Deception (
SECURITY_DECEPTION="true"): Ofusca o acesso não autorizado ou proibido (códigos403 Forbiddene401 Unauthorized) respondendo ao cliente com404 Not Found. Para o invasor ou scanner externo, o recurso parece inexistente, enquanto o console do servidor registra o evento real com o prefixo[SECURITY DECEPTION]e o IP do cliente para auditoria. - Proteção contra erros internos (
APP_DEBUG="false"): Evita vazamento de rastreamentos de pilha, caminhos de arquivos ou código-fonte em caso de exceções internas não controladas (código 500), exibindo uma mensagem genérica segura e enviando diagnósticos detalhados para os logs do console.
Não publique arquivos de ambiente ou chaves privadas.
CLI do banco de dados
joss change db mysql
joss change db sqlite
joss change db postgres
joss change db prefix app_
A migração interativa joss change db migrate continua focada na preparação de um novo servidor MySQL. O runtime, CRUD, migrações e Schema Builder funcionam com adaptadores para quatro mecanismos, com diferenças por operação.