Monorepo for Aesthetic.Computer
aesthetic.computer
1# Feed Server Deployment
2
3## Current: dp1-feed-v2 (Go + Postgres)
4
5As of April 2026, `feed.aesthetic.computer` runs **dp1-feed-v2** — a Go binary
6backed by PostgreSQL 16, hosted on the lith VPS (`209.38.133.33`).
7
8- **Source**: https://github.com/display-protocol/dp1-feed-v2
9- **Binary**: `/opt/dp1-feed/dp1-feed`
10- **Config**: `/opt/dp1-feed/config.yaml` (source of truth: `lith/dp1-feed-config.yaml`)
11- **Env**: `/opt/dp1-feed/.env` (API key, signing key, database URL)
12- **Service**: `systemctl {start,stop,restart,status} dp1-feed`
13- **Logs**: `journalctl -u dp1-feed -f`
14- **Port**: 8787 (reverse proxied via Caddy)
15- **Database**: PostgreSQL `dp1_feed` on localhost, user `dp1feed`
16
17## Rebuilding
18
19```bash
20ssh root@lith.aesthetic.computer
21cd /opt/dp1-feed-build/dp1-feed-v2
22git pull
23CGO_ENABLED=0 go build -o dp1-feed ./cmd/server
24cp dp1-feed /opt/dp1-feed/dp1-feed
25systemctl restart dp1-feed
26```
27
28## Initial Setup
29
30Run `lith/scripts/setup-dp1-feed.sh` on the VPS. It installs Go, PostgreSQL,
31clones the repos, builds the binary, and creates the systemd service.
32
33## API Endpoints
34
35- `GET /health` — liveness
36- `GET /api/v1` — API info
37- `GET /api/v1/playlists` — list playlists
38- `GET /api/v1/channels` — list channels (requires extensions enabled)
39- `GET /api/v1/playlist-groups` — list playlist groups
40- `GET /api/v1/playlist-items` — list playlist items
41- `PUT /api/v1/registry/channels` — update curated channel registry
42
43Auth: `Authorization: Bearer <API_KEY>` for all write operations.
44
45## Legacy (archived)
46
47The previous V1 deployment used Cloudflare Workers (TypeScript/Hono) with KV
48storage. That code lives in `feed/dp1-feed/` and is no longer deployed.