# Deploy notes — Void 2.0 ## App deploy (CT 311 — `void2-app`) One-time setup on the target host: ```bash # Node 22 (from nodesource if Debian's default is older) curl -fsSL https://deb.nodesource.com/setup_22.x | bash - apt install -y nodejs # Service user + working dir useradd -r -m -d /opt/void-server void mkdir -p /opt/void-server chown void: /opt/void-server # systemd install -m 644 void-server.service /etc/systemd/system/void-server.service systemctl daemon-reload systemctl enable void-server # Secrets — /opt/void-server/.env must contain: # DATABASE_URL=postgres://void:@:5432/void # OWNER_TOKEN=<32+ char secret> # PORT=3000 # NODE_ENV=production chmod 600 /opt/void-server/.env chown void: /opt/void-server/.env ``` Then from the dev box: ```bash cd /project/src/void-v2 ./deploy/push.sh ``` ## Maintenance ```bash journalctl -u void-server -f # follow logs systemctl status void-server # check status systemctl restart void-server # cycle # Run migrations on the deployed copy: ssh root@void2-app 'cd /opt/void-server && npm run migrate' ``` ## Notes - `.env` is excluded from the rsync to avoid clobbering production secrets with dev values. - The push script uses `--omit=dev` to skip test deps on the target. - `tests/` is excluded — they're for the dev environment only.