Modern Node.js hosting panel with Express, Next.js, MariaDB, PM2 and Apache reverse proxy support.
Run the installer as root inside the project directory:
sudo APP_DOMAIN=admin.creatorsofcode.com bash scripts/install.shOptional environment overrides:
sudo APP_DOMAIN=admin.creatorsofcode.com API_PORT=4000 FRONTEND_PORT=3000 DB_NAME=nodeadmin DB_USER=nodeadmin DB_PASSWORD='strong-password' CERTBOT_EMAIL='admin@creatorsofcode.com' bash scripts/install.shWhat the installer does:
- installs Node.js, Apache, MariaDB, Certbot and PM2
- creates the MariaDB database and user
- copies
.env.exampleto.envwhen needed - switches URLs to production values
- runs Prisma generate, schema push, seed and both builds
- writes Apache reverse proxy config from
apache/templates/nodeadmin.conf.template - writes HTTPS Apache reverse proxy config from
apache/templates/nodeadmin-ssl.conf.template - keeps
www.alias optional so certbot does not fail when only one hostname exists in DNS - can ask for domain and Certbot email interactively
- can request the Let's Encrypt certificate automatically during install
- starts backend and frontend with PM2 using
ecosystem.config.cjs
sudo APP_DOMAIN=admin.creatorsofcode.com CERTBOT_EMAIL='admin@creatorsofcode.com' ENABLE_CERTBOT=1 WWW_ALIAS=0 bash scripts/install.shIf you omit APP_DOMAIN, CERTBOT_EMAIL, or ENABLE_CERTBOT, the installer can ask interactively.
Start:
pm2 start ecosystem.config.cjs --env productionRestart:
pm2 restart ecosystem.config.cjs --env productionLogs:
pm2 logsDeploy updated code:
bash scripts/deploy.shDeploy with schema push and seed:
RUN_MIGRATIONS=1 RUN_SEED=1 bash scripts/deploy.shCheck a broken live server:
bash scripts/check-live.sh admin.creatorsofcode.com/-> Next.js frontend on127.0.0.1:3000/api-> Express backend on127.0.0.1:4000/socket.io-> Socket.IO backend on127.0.0.1:4000/health-> backend health endpoint
Installer can request the certificate automatically. If you skip it during install, run this later:
sudo systemctl stop apache2
sudo certbot certonly --standalone -d admin.creatorsofcode.com -m admin@creatorsofcode.com --agree-tos --non-interactive
sudo systemctl start apache2
sudo a2ensite nodeadmin-panel-ssl.conf
sudo systemctl reload apache2Replace default secrets in .env before exposing the panel publicly.