|
…
|
||
|---|---|---|
| .. | ||
| ddns-data | ||
| .env.example | ||
| README.md | ||
| deploy.sh | ||
| docker-compose.yaml | ||
README.md
NAS Deployment for Soroban Abacus Flashcards
This directory contains the deployment configuration for running the Soroban Abacus Flashcards (apps/web) on your NAS at abaci.one.
Quick Deployment
After pushing code changes to trigger the GitHub Actions build:
# From the project root
./nas-deployment/deploy.sh
Manual Deployment
-
Copy files to NAS:
scp nas-deployment/docker-compose.yaml nas.home.network:/volume1/homes/antialias/projects/abaci.one/ scp nas-deployment/.env nas.home.network:/volume1/homes/antialias/projects/abaci.one/ -
Deploy:
ssh nas.home.network "cd /volume1/homes/antialias/projects/abaci.one && docker-compose up -d"
Services
- Soroban Flashcards: Main Next.js app at
https://abaci.one - DDNS Updater: Keeps Porkbun DNS updated with current WAN IP
- Watchtower: Auto-updates containers every 5 minutes when new images are pushed
Configuration
Environment Variables
Copy .env.example to .env and customize as needed.
DDNS Configuration
The Porkbun DDNS configuration is in ddns-data/ddns-config.json and handles:
- Domain:
abaci.one - Provider: Porkbun
- Auto IP detection via ipinfo.io
- TTL: 300 seconds
Traefik Integration
- Automatic HTTPS via Let's Encrypt
- HTTP → HTTPS redirect
- HSTS headers for security
Monitoring
- Container status:
ssh nas.home.network 'cd /volume1/homes/antialias/projects/abaci.one && docker-compose ps' - Application logs:
ssh nas.home.network 'cd /volume1/homes/antialias/projects/abaci.one && docker-compose logs -f soroban-abacus-flashcards' - DDNS web UI:
http://[NAS-IP]:8000
Architecture
GitHub Actions → ghcr.io/antialias/soroban-abacus-flashcards:latest
↓
NAS → docker-compose → Traefik → abaci.one
↓
Watchtower (auto-update every 5min)
DDNS (Porkbun IP sync)
Files
docker-compose.yaml: Main deployment configurationdeploy.sh: Automated deployment script.env.example: Environment variables templateddns-data/ddns-config.json: Porkbun DDNS configurationREADME.md: This file