333 lines
6.7 KiB
Markdown
333 lines
6.7 KiB
Markdown
# AeThex Passport Domain Verification - Setup Guide
|
|
|
|
## Quick Start (5 Minutes)
|
|
|
|
### 1. Install Dependencies
|
|
|
|
```bash
|
|
# Root dependencies (backend)
|
|
npm install
|
|
|
|
# Frontend dependencies
|
|
cd src/frontend && npm install && cd ../..
|
|
```
|
|
|
|
### 2. Setup PostgreSQL Database
|
|
|
|
#### Option A: Local PostgreSQL
|
|
|
|
```bash
|
|
# Install PostgreSQL (Ubuntu/Debian)
|
|
sudo apt update
|
|
sudo apt install postgresql postgresql-contrib
|
|
|
|
# Start PostgreSQL
|
|
sudo systemctl start postgresql
|
|
sudo systemctl enable postgresql
|
|
|
|
# Create database and user
|
|
sudo -u postgres psql
|
|
```
|
|
|
|
In PostgreSQL shell:
|
|
```sql
|
|
CREATE DATABASE aethex_passport;
|
|
CREATE USER aethex_user WITH PASSWORD 'your_password';
|
|
GRANT ALL PRIVILEGES ON DATABASE aethex_passport TO aethex_user;
|
|
\q
|
|
```
|
|
|
|
#### Option B: Docker PostgreSQL
|
|
|
|
```bash
|
|
docker run --name aethex-postgres \
|
|
-e POSTGRES_DB=aethex_passport \
|
|
-e POSTGRES_USER=aethex_user \
|
|
-e POSTGRES_PASSWORD=your_password \
|
|
-p 5432:5432 \
|
|
-d postgres:14
|
|
```
|
|
|
|
### 3. Configure Environment
|
|
|
|
```bash
|
|
# Copy environment template
|
|
cp .env.example .env
|
|
|
|
# Edit configuration
|
|
nano .env
|
|
```
|
|
|
|
Update these values in `.env`:
|
|
```env
|
|
DATABASE_URL=postgresql://aethex_user:your_password@localhost:5432/aethex_passport
|
|
PORT=3000
|
|
JWT_SECRET=your-super-secret-key-change-this
|
|
NODE_ENV=development
|
|
```
|
|
|
|
### 4. Run Database Migrations
|
|
|
|
```bash
|
|
npm run migrate
|
|
```
|
|
|
|
You should see:
|
|
```
|
|
Starting database migrations...
|
|
Running migration: 001_domain_verifications.sql
|
|
✓ Completed: 001_domain_verifications.sql
|
|
✓ All migrations completed successfully
|
|
```
|
|
|
|
### 5. Start Development Servers
|
|
|
|
Open two terminal windows:
|
|
|
|
**Terminal 1 - Backend:**
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
**Terminal 2 - Frontend:**
|
|
```bash
|
|
cd src/frontend && npm run dev
|
|
```
|
|
|
|
### 6. Access the Application
|
|
|
|
- **Frontend**: http://localhost:5173
|
|
- **Backend API**: http://localhost:3000
|
|
- **Health Check**: http://localhost:3000/health
|
|
|
|
## Testing Domain Verification
|
|
|
|
### Test with Your Own Domain
|
|
|
|
1. **Request Verification**:
|
|
- Go to http://localhost:5173
|
|
- Enter your domain (e.g., `dev.aethex.dev`)
|
|
- Click "Request Verification"
|
|
|
|
2. **Add DNS Record**:
|
|
- Copy the TXT record value shown
|
|
- Go to your DNS provider (Cloudflare, Google Domains, etc.)
|
|
- Add new TXT record:
|
|
- **Name**: `_aethex-verify`
|
|
- **Type**: `TXT`
|
|
- **Value**: `aethex-verification=...` (the copied value)
|
|
|
|
3. **Verify**:
|
|
- Wait 5-10 minutes for DNS to propagate
|
|
- Click "Verify Domain" in the app
|
|
- Success! Your domain badge appears
|
|
|
|
### Check DNS Propagation
|
|
|
|
```bash
|
|
# Check if DNS record is live
|
|
dig _aethex-verify.yourdomain.com TXT +short
|
|
|
|
# Alternative method
|
|
nslookup -type=TXT _aethex-verify.yourdomain.com
|
|
```
|
|
|
|
Expected output:
|
|
```
|
|
"aethex-verification=abc123def456..."
|
|
```
|
|
|
|
## Common Issues & Solutions
|
|
|
|
### Issue: "Connection refused" to database
|
|
|
|
**Solution 1**: Check PostgreSQL is running
|
|
```bash
|
|
sudo systemctl status postgresql
|
|
```
|
|
|
|
**Solution 2**: Verify connection string in `.env`
|
|
```bash
|
|
# Test connection manually
|
|
psql postgresql://aethex_user:your_password@localhost:5432/aethex_passport
|
|
```
|
|
|
|
### Issue: "Port 3000 already in use"
|
|
|
|
**Solution**: Find and kill the process
|
|
```bash
|
|
# Find process using port 3000
|
|
lsof -i :3000
|
|
|
|
# Kill it
|
|
kill -9 <PID>
|
|
```
|
|
|
|
### Issue: DNS verification always fails
|
|
|
|
**Checklist**:
|
|
1. ✓ DNS record added correctly?
|
|
2. ✓ Waited 10+ minutes?
|
|
3. ✓ Record name is `_aethex-verify` (not `_aethex-verify.yourdomain.com`)?
|
|
4. ✓ Record value matches exactly (no extra quotes)?
|
|
|
|
**Debug DNS**:
|
|
```bash
|
|
# Check what DNS server sees
|
|
dig _aethex-verify.yourdomain.com TXT @8.8.8.8
|
|
|
|
# Flush local DNS cache
|
|
sudo systemd-resolve --flush-caches
|
|
```
|
|
|
|
## Environment Variables Reference
|
|
|
|
| Variable | Required | Default | Description |
|
|
|----------|----------|---------|-------------|
|
|
| `DATABASE_URL` | ✅ Yes | - | PostgreSQL connection string |
|
|
| `PORT` | No | 3000 | Backend server port |
|
|
| `NODE_ENV` | No | development | Environment mode |
|
|
| `JWT_SECRET` | ✅ Yes | - | Secret for JWT tokens |
|
|
| `RPC_ENDPOINT` | For .aethex | - | Blockchain RPC URL |
|
|
| `FREENAME_REGISTRY_ADDRESS` | For .aethex | - | Contract address |
|
|
| `FRONTEND_URL` | No | http://localhost:5173 | CORS origin |
|
|
| `RATE_LIMIT_WINDOW_MS` | No | 900000 | Rate limit window (15 min) |
|
|
| `RATE_LIMIT_MAX_REQUESTS` | No | 100 | Max requests per window |
|
|
|
|
## Production Deployment
|
|
|
|
### 1. Build Frontend
|
|
|
|
```bash
|
|
cd src/frontend
|
|
npm run build
|
|
cd ../..
|
|
```
|
|
|
|
### 2. Environment Configuration
|
|
|
|
```bash
|
|
# Create production .env
|
|
cp .env.example .env.production
|
|
|
|
# Edit with production values
|
|
nano .env.production
|
|
```
|
|
|
|
Set:
|
|
```env
|
|
NODE_ENV=production
|
|
DATABASE_URL=postgresql://user:pass@production-host:5432/aethex_passport
|
|
JWT_SECRET=<strong-random-secret>
|
|
FRONTEND_URL=https://yourdomain.com
|
|
```
|
|
|
|
### 3. Start Production Server
|
|
|
|
```bash
|
|
NODE_ENV=production node src/backend/server.js
|
|
```
|
|
|
|
### 4. Serve Frontend
|
|
|
|
Use nginx or serve built files:
|
|
```bash
|
|
# Using serve
|
|
npm install -g serve
|
|
serve -s src/frontend/dist -l 5173
|
|
```
|
|
|
|
Or configure nginx:
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name yourdomain.com;
|
|
|
|
location / {
|
|
root /path/to/src/frontend/dist;
|
|
try_files $uri /index.html;
|
|
}
|
|
|
|
location /api {
|
|
proxy_pass http://localhost:3000;
|
|
}
|
|
}
|
|
```
|
|
|
|
## Database Backup
|
|
|
|
### Manual Backup
|
|
|
|
```bash
|
|
# Backup database
|
|
pg_dump -U aethex_user aethex_passport > backup_$(date +%Y%m%d).sql
|
|
|
|
# Restore from backup
|
|
psql -U aethex_user aethex_passport < backup_20260109.sql
|
|
```
|
|
|
|
### Automated Daily Backups
|
|
|
|
Create `/etc/cron.daily/aethex-backup`:
|
|
```bash
|
|
#!/bin/bash
|
|
pg_dump -U aethex_user aethex_passport | gzip > /backups/aethex_$(date +%Y%m%d).sql.gz
|
|
find /backups -name "aethex_*.sql.gz" -mtime +30 -delete
|
|
```
|
|
|
|
Make executable:
|
|
```bash
|
|
chmod +x /etc/cron.daily/aethex-backup
|
|
```
|
|
|
|
## Monitoring
|
|
|
|
### Health Check Endpoint
|
|
|
|
```bash
|
|
# Check if server is running
|
|
curl http://localhost:3000/health
|
|
```
|
|
|
|
Response:
|
|
```json
|
|
{"status":"ok","timestamp":"2026-01-09T12:00:00.000Z"}
|
|
```
|
|
|
|
### Database Connection Test
|
|
|
|
```bash
|
|
# Test query
|
|
psql -U aethex_user -d aethex_passport -c "SELECT COUNT(*) FROM domain_verifications;"
|
|
```
|
|
|
|
### Log Files
|
|
|
|
Backend logs to stdout. Capture with:
|
|
```bash
|
|
# Development
|
|
npm run dev 2>&1 | tee logs/app.log
|
|
|
|
# Production (with pm2)
|
|
npm install -g pm2
|
|
pm2 start src/backend/server.js --name aethex-passport
|
|
pm2 logs aethex-passport
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
1. ✅ Setup complete? Test verification flow
|
|
2. 📱 Integrate into your main application
|
|
3. 🔐 Set up proper JWT authentication
|
|
4. 📊 Add analytics and monitoring
|
|
5. 🚀 Deploy to production
|
|
|
|
## Need Help?
|
|
|
|
- 📖 [Full Documentation](README.md)
|
|
- 🐛 [Report Issues](https://github.com/AeThex-Corporation/AeThex-Connect/issues)
|
|
- 💬 Email: support@aethex.dev
|
|
|
|
---
|
|
|
|
**Setup Guide v1.0** | Last Updated: January 10, 2026
|