Ctrl K
ComunidadGuías…
GITHUB · ANALIZADO

itouOJ

Self-hosted online judge (OJ) for programming contests with Next.js frontend and sandbox-runner judging engine.

Ficha actualizada 23 sept 2026, 3:30 · upstream 23 sept 2026, 3:23 · release app-v1.2.0

00

Qué es itouOJ

Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.

itouOJ is a self-hosted online judge (OJ) built with Next.js, designed to host competitive programming problems. The system features a custom Linux sandbox runner that executes C/C++, Python, and JavaScript submissions within isolated namespaces using cgroup v2 and seccomp-bpf for security. Java submissions continue to run on Piston. The platform supports contest management, problem submission and review, recognition practice with APCS past papers, live judging with real-time scoring, and a Windows offline client.

CASOS DE USO
  • Hosting competitive programming contests (ICPC regional, IOI training) with full self-hosted control
  • Providing an online judge for students to submit and receive feedback on C/C++, Python, and JavaScript problems
  • Running recognition practice exercises (識讀) using APCS past exam papers without requiring a paid cloud platform
  • Hosting offline contest rooms where participants can submit code locally before joining a live judging session
  • Providing an educational resource for students to solve programming problems with immediate feedback and explanations
  • Deploying a lightweight, self-contained judge that runs entirely on local hardware without external dependencies
PUNTOS DESTACADOS
  • Self-hosted sandbox runner with Linux namespace isolation, cgroup v2 resource limits, and seccomp-bpf syscall filtering for C/C++/Python/JavaScript
  • Recognition practice feature (識讀) includes APCS past exam papers plus the C/Python 125-question bank totaling 391 questions across 15 clusters with instant answer checking
  • Live judging with per-test-case time and memory display, AC/WA/TLE/MLE/RE/CE scoring modes, and per-contest leaderboard freeze functionality
  • Support for both live web judging and Windows offline client (itouOJ-Submit.exe) that handles batch uploads, local test runs, and clock calibration
  • Android native app built with Capacitor 8 with a fixed dark theme layout distinct from the web interface
  • Full admin panel for problem management, proposal review, contest organization, course creation, recognition cluster management, tag assignment, user role control, and announcements
PRECAUCIONES
  • The sandbox runner requires manual configuration of cgroup v2 parameters and seccomp-bpf rules; no out-of-the-box ready-to-use binary
  • Java submissions still rely on the external Piston Docker container rather than a self-hosted judge
  • Recognition practice questions are limited to APCS past papers plus the C/Python 125-question bank, with no support for other problem sources
  • The Windows offline client has no built-in test runner or code execution environment; it only handles batch submission and clock calibration
  • No automatic test case generation is available — all sample tests must be manually provided by the administrator
  • Memory multipliers (3x for Python, 2x for JavaScript) are applied to problem limits but do not increase the actual memory limit of the sandbox
01

Perfil de infraestructura

Estimación inicial derivada del repositorio y de los servicios detectados.

CPU2 vCPUrecomendación inicial
MEMORIA2 GBRAM estimada
DISCO10 GBalmacenamiento base
COMPLEJIDADmediumnivel de operación
02

Despliegue detectado

Qué señales reales de instalación hemos encontrado.

Despliegue manual

Deploy Next.js on a Linux server with Node.js runtime. Install and configure the sandbox-runner binary at /usr/local/bin/sandbox-runner (or equivalent path). Configure environment variables: DATABASE_URL for SQLite, AUTH_SECRET for JWT signing, PISTON_URL for Java container access, SANDBOX_URL for the C/C++/Python/JS judge endpoint, JUDGE_WORKER_SECRET for worker isolation. Use a reverse proxy (nginx) to serve Next.js on port 3000 and expose sandbox-runner on 8090. For production, use HTTPS with Cloudflare or similar. The Android app requires a Capacitor build configured with the live site URL as its App URL.

—Dockerfile
—Compose
—One-click
03

Stack y dependencias

Componentes inferidos a partir de manifests, configuración y documentación.

FRAMEWORKS
Next.jsReactNode.jsPython
SERVICIOS
No detectados
BASES DE DATOS
No detectadas
PUERTOS
809020003000
05

Puede sustituir a

Relaciones detectadas por el análisis del repositorio y su categoría.

06

Experiencia real de la comunidad

Ayuda a contrastar la estimación automática con instalaciones reales.

1informes
—RAM mediana
2/5dificultad
100%lo recomienda