54 lines
1.3 KiB
Markdown
54 lines
1.3 KiB
Markdown
# 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:<password>@<db-host>: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.
|