Podcast Checklist
Episode production tracker for Verse by Verse with Nate.
Deploy
1. Build and push to GHCR
docker build -t ghcr.io/nmemmert/podcast-checklist:latest .
docker push ghcr.io/nmemmert/podcast-checklist:latest
2. On the Oracle Cloud VM
docker pull ghcr.io/nmemmert/podcast-checklist:latest
docker rm -f podcast-checklist 2>/dev/null || true
docker run -d \
--name podcast-checklist \
--restart unless-stopped \
-p 3001:3000 \
-v podcast-checklist-data:/data \
ghcr.io/nmemmert/podcast-checklist:latest
Uses port 3001 on the host so it doesn't clash with your existing site on 3000. Progress is saved to a named Docker volume (
podcast-checklist-data) so it survives container restarts and re-deploys.
3. Cloudflare DNS
Add a CNAME record in Cloudflare:
- Name:
checklist(or whatever subdomain you want) - Target:
versebyversewithnate.us - Proxy: Enabled (orange cloud)
4. Cloudflare Tunnel or Nginx proxy
If you're using Nginx Proxy Manager or a Cloudflare Tunnel on the VM, add a rule to forward checklist.versebyversewithnate.us → localhost:3001.
Update workflow
Same as your site:
# Local
docker build -t ghcr.io/nmemmert/podcast-checklist:latest .
docker push ghcr.io/nmemmert/podcast-checklist:latest
# SSH into VM
docker pull ghcr.io/nmemmert/podcast-checklist:latest
docker rm -f podcast-checklist
docker run -d \
--name podcast-checklist \
--restart unless-stopped \
-p 3001:3000 \
-v podcast-checklist-data:/data \
ghcr.io/nmemmert/podcast-checklist:latest
Progress data is in the named volume and is not affected by pulling a new image.