Files

12 KiB

No-IP Setup Guide for House of Prayer Song Lyric App

Domain: houseofprayer.ddns.net
Date: November 30, 2025
Public IP: 170.254.17.146
Local IP: 192.168.10.178


📋 Overview

This guide will help you configure No-IP Dynamic DNS so your church song lyric application can be accessed from anywhere using houseofprayer.ddns.net.


🎯 What You'll Achieve


📦 Step 1: Install No-IP Dynamic Update Client (DUC)

Download and Install

  1. Visit No-IP Website:

  2. Run Installer:

    • Execute the downloaded file (e.g., DUC-Win-x64.exe)
    • Follow installation wizard
    • Choose installation directory (default: C:\Program Files (x86)\No-IP\)
  3. Launch No-IP DUC:

    • Open from Start Menu or desktop shortcut
    • Login with your No-IP credentials (same as website login)

Configure DUC

  1. Select Hostname:

    • In the DUC interface, you should see: houseofprayer.ddns.net
    • Check the box next to it to enable automatic updates
  2. Configure Update Interval:

    • Set to update every 5 minutes (recommended)
    • This ensures your domain always points to your current public IP
  3. Set to Run on Startup:

    • In DUC settings, enable "Start on Windows Startup"
    • This ensures your domain stays updated even after PC restarts
  4. Verify Status:

    • DUC should show: ✓ "Up to Date" in green
    • Public IP should match: 170.254.17.146

🌐 Step 2: Configure Router Port Forwarding

Why Port Forwarding?

Your router acts as a gateway between the internet and your home network. Port forwarding tells the router to direct external traffic to your PC.

Access Router Settings

  1. Open Router Admin Page:

    • In browser, go to: http://192.168.1.1 (or 192.168.0.1)
    • Common router IPs:
      • Netgear: 192.168.1.1
      • TP-Link: 192.168.0.1
      • Linksys: 192.168.1.1
      • ASUS: 192.168.1.1
  2. Login:

    • Use your router admin username/password
    • Default credentials (if never changed):
      • Username: admin
      • Password: admin or password (check router label)

Create Port Forwarding Rules

Navigate to: Advanced > Port Forwarding (or similar menu)

Rule 1: Frontend (React App)

Service Name: Church_Frontend
Internal IP:  192.168.10.178  (your PC's local IP)
External Port: 3000
Internal Port: 3000
Protocol: TCP
Status: Enabled

Rule 2: Backend API

Service Name: Church_Backend
Internal IP:  192.168.10.178
External Port: 5000
Internal Port: 5000
Protocol: TCP
Status: Enabled

Optional Rule 3: HTTPS (if using SSL later)

Service Name: Church_HTTPS
Internal IP:  192.168.10.178
External Port: 443
Internal Port: 443
Protocol: TCP
Status: Enabled

Important Notes

  • Save/Apply changes after adding rules
  • Some routers require a reboot
  • Your PC must use a static local IP (192.168.10.178) or DHCP reservation

🔧 Step 3: Update Backend Configuration

Update Flask Backend to Accept External Connections

Your backend currently binds to localhost or 0.0.0.0. For external access, ensure it's binding to 0.0.0.0.

File: backend/app.py

Check the last lines of the file (around line 640):

if __name__ == '__main__':
    app.run(
        host='0.0.0.0',  # ✓ Allows external connections
        port=5000,
        debug=True
    )

If it says host='127.0.0.1' or host='localhost', change it to host='0.0.0.0'.

Update CORS Settings (if needed)

Check that CORS allows your domain:

# In app.py, near the top
from flask_cors import CORS

CORS(app, resources={
    r"/api/*": {
        "origins": [
            "http://localhost:3000",
            "http://192.168.10.178:3000",
            "http://houseofprayer.ddns.net:3000",
            "https://houseofprayer.ddns.net:3000"
        ]
    }
})

🌍 Step 4: Update Frontend API Configuration

Update the frontend to use your No-IP domain for external access.

File: frontend/src/api.js

The frontend should detect whether it's running locally or externally and use the appropriate API endpoint.

Option A: Manual Configuration

In Settings page, users can configure:

  • Protocol: https (if SSL) or http
  • Hostname: houseofprayer.ddns.net
  • Port: 5000

Update getAPIBase() in frontend/src/api.js to detect environment:

function getAPIBase() {
  const settings = getAPISettings();
  if (settings.useLocalStorage) return null;
  
  // Auto-detect if accessing via No-IP domain
  if (window.location.hostname === 'houseofprayer.ddns.net') {
    return `https://houseofprayer.ddns.net:5000/api`;
  }
  
  // Otherwise use configured settings
  return `${settings.protocol}://${settings.hostname}:${settings.port}/api`;
}

🔒 Step 5: Windows Firewall Configuration

Ensure Windows Firewall allows incoming connections on ports 3000 and 5000.

Create Firewall Rules

Run these commands in PowerShell as Administrator:

# Allow Frontend (Port 3000)
New-NetFirewallRule -DisplayName "Church App Frontend" -Direction Inbound -LocalPort 3000 -Protocol TCP -Action Allow

# Allow Backend (Port 5000)
New-NetFirewallRule -DisplayName "Church App Backend" -Direction Inbound -LocalPort 5000 -Protocol TCP -Action Allow

Verify Rules

Get-NetFirewallRule | Where-Object { $_.DisplayName -like "*Church*" }

🧪 Step 6: Testing External Access

Test from Inside Network

  1. Open browser on your PC:
    • Go to: http://houseofprayer.ddns.net:3000
    • Should see the app (if DUC is working)

Test from Outside Network

Use mobile data (turn off WiFi on phone) or ask someone outside your network:

  1. Test Backend API:

    • Visit: http://houseofprayer.ddns.net:5000/api/health
    • Should see: {"status":"ok","ts":"..."}
  2. Test Frontend:

    • Visit: http://houseofprayer.ddns.net:3000
    • Should load the app
    • Try selecting a profile and viewing songs

Troubleshooting Tests

If external access doesn't work:

# Check if ports are listening
netstat -an | Select-String ":3000|:5000"

# Should show:
# TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING
# TCP    0.0.0.0:5000           0.0.0.0:0              LISTENING

🔐 Step 7: Security Considerations

Current Setup (HTTP)

  • Pros: Easy to set up, works immediately
  • Cons: Data transmitted in plain text (not encrypted)

For secure access, you should add SSL certificates:

  1. Get Free SSL Certificate:

    • Use Let's Encrypt (free, automated)
    • Or use Cloudflare (free proxy + SSL)
  2. Install Certificate:

    • Configure Flask to use SSL
    • Update frontend URLs to https://
  3. Redirect HTTP → HTTPS:

    • Force all traffic to use HTTPS

Basic Security Measures

  1. Add Authentication:

    • Require login before accessing app
    • Use session tokens or JWT
  2. Rate Limiting:

    • Prevent abuse by limiting API requests
    • Use Flask-Limiter extension
  3. Keep Updated:

    • Regularly update dependencies
    • Monitor for security vulnerabilities

📱 Step 8: Update Mobile Access Instructions

Once No-IP is configured, update how family members access the app:

For Users at Home (Same WiFi)

  • Use local IP: http://192.168.10.178:3000
  • Faster, no internet required

For Users Outside Home

  • Use No-IP domain: http://houseofprayer.ddns.net:3000
  • Works from anywhere with internet

For All Users (Universal URL)

  • Use No-IP domain everywhere: http://houseofprayer.ddns.net:3000
  • Works both inside and outside home network

🔄 Step 9: Automatic Startup Configuration

Backend Auto-Start

Create a Windows Task Scheduler task or startup script:

File: backend/start-backend.bat

@echo off
cd /d "E:\Documents\Website Projects\Church_SongLyric\backend"
call venv\Scripts\activate
python app.py

Add to Windows Startup:

  1. Press Win + R
  2. Type: shell:startup
  3. Create shortcut to start-backend.bat

Frontend Auto-Start

File: frontend/start-frontend.bat

@echo off
cd /d "E:\Documents\Website Projects\Church_SongLyric\frontend"
npm start

📊 Verification Checklist

Use this checklist to ensure everything is configured correctly:

No-IP DUC

  • DUC installed and running
  • Logged in with No-IP account
  • houseofprayer.ddns.net selected and enabled
  • Status shows "Up to Date" (green)
  • Public IP matches current IP (170.254.17.146)
  • Set to start on Windows startup

Router Configuration

  • Port 3000 forwarded to 192.168.10.178
  • Port 5000 forwarded to 192.168.10.178
  • Rules saved and applied
  • Router rebooted (if required)

Windows Firewall

  • Port 3000 inbound rule created
  • Port 5000 inbound rule created
  • Rules are enabled

Backend Configuration

  • app.py binds to 0.0.0.0:5000
  • CORS allows houseofprayer.ddns.net
  • Backend running and accessible locally

Frontend Configuration

  • API settings support No-IP domain
  • Frontend running on port 3000

Testing

  • Can access http://houseofprayer.ddns.net:5000/api/health externally
  • Can access http://houseofprayer.ddns.net:3000 externally
  • App loads correctly from outside network
  • Can select profiles and view songs
  • Database operations work (create/edit/delete)

🆘 Troubleshooting

Problem: Domain doesn't resolve

Check:

nslookup houseofprayer.ddns.net

Solution:

  • Ensure No-IP DUC is running and logged in
  • Check DUC status (should be green)
  • Wait 5 minutes for DNS propagation
  • Try from different network (mobile data)

Problem: Connection timeout

Possible Causes:

  1. Port forwarding not configured

    • Verify router rules are saved
    • Check internal IP is correct (192.168.10.178)
  2. Firewall blocking

    • Check Windows Firewall rules exist
    • Temporarily disable firewall to test
  3. Services not running

    • Ensure backend running: netstat -an | Select-String ":5000"
    • Ensure frontend running: netstat -an | Select-String ":3000"

Problem: Backend responds but frontend doesn't

Check CORS:

  • Backend CORS must allow your domain
  • Check browser console for CORS errors
  • Update app.py CORS origins

Problem: ISP Blocks Ports

Some ISPs block common ports like 80, 443, 8080.

Solution:

  • Use non-standard ports (5000, 3000 are usually fine)
  • Contact ISP to request port unblocking
  • Consider using Cloudflare tunnel (bypasses port blocking)

🚀 Quick Test Commands

Run these to verify setup:

# Test No-IP resolution
nslookup houseofprayer.ddns.net

# Test backend from inside
Invoke-RestMethod -Uri "http://houseofprayer.ddns.net:5000/api/health"

# Test backend from outside (use mobile data)
# curl http://houseofprayer.ddns.net:5000/api/health

# Check listening ports
netstat -an | Select-String ":3000|:5000"

# Check firewall rules
Get-NetFirewallRule | Where-Object { $_.DisplayName -like "*Church*" }

📖 Additional Resources


📝 Notes

  • Keep your No-IP account active (free accounts require login every 30 days)
  • Your public IP may change; No-IP DUC automatically updates the DNS
  • Consider upgrading to No-IP Plus for better features (no monthly confirmation)
  • For production use, strongly recommend adding HTTPS/SSL

Last Updated: November 30, 2025
Domain: houseofprayer.ddns.net
Status: Ready for Configuration
Next Step: Install No-IP DUC and configure router port forwarding