This guide walks you through deploying a secure, privacy-respecting static site using this template and Netlify.
Netlify is a paid service (with a generous free tier) that makes deploying secure static sites effortless:
- Free tier includes: HTTPS, global CDN, continuous deployment, custom domains
_headerssupport: Our security headers work automatically—no server configuration- GitHub integration: Push to GitHub, Netlify deploys automatically
- Branch previews: Test changes before they go live
Alternatives: Cloudflare Pages (also supports _headers), Vercel (uses vercel.json), GitHub Pages (limited header support).
- Go to github.com/kmay89/SCQCS
- Click Fork in the top right
- Choose your GitHub account
- You now have your own copy to customize
git clone https://github.com/kmay89/SCQCS.git my-secure-site
cd my-secure-site
rm -rf .git
git init
git add .
git commit -m "Initial commit from SCQCS template"- Go to netlify.com
- Click Sign up
- Choose Sign up with GitHub (easiest integration)
- Authorize Netlify to access your GitHub
- Click Add new site → Import an existing project
- Choose GitHub
- Select your forked/cloned repository
- Leave build settings empty (it's a static site)
- Click Deploy site
Netlify gives you a random URL like random-name-123.netlify.app. You can:
- Use this URL immediately
- Add a custom domain later
- Change the Netlify subdomain in Site settings → Domain management
Required changes (search and replace scqcs.com with your domain):
| File | What to Change |
|---|---|
index.html |
Replace all content with yours |
robots.txt |
Change sitemap URL |
sitemap.xml |
Change all URLs |
security.txt |
Update contact email and URLs |
.well-known/security.txt |
Same as above |
site.webmanifest |
Change app name and colors |
llms.txt |
Rewrite for your project |
humans.txt |
Update team info |
Optional customization:
| File | When to Change |
|---|---|
_headers |
If you use external APIs, add them to CSP |
_redirects |
If you need URL redirects |
main.js |
If you want different interactions |
In your terminal:
# macOS/Linux
find . -type f \( -name "*.html" -o -name "*.xml" -o -name "*.txt" -o -name "*.json" \) \
-exec sed -i '' 's/scqcs\.com/yourdomain.com/g' {} +
# Linux only
find . -type f \( -name "*.html" -o -name "*.xml" -o -name "*.txt" -o -name "*.json" \) \
-exec sed -i 's/scqcs\.com/yourdomain.com/g' {} +- Go to Site settings → Domain management
- Click Add custom domain
- Enter your domain (e.g.,
yourdomain.com) - Follow the DNS configuration instructions
Add these records at your domain registrar:
For apex domain (yourdomain.com):
Type: A
Name: @
Value: 75.2.60.5
For www subdomain:
Type: CNAME
Name: www
Value: your-site-name.netlify.app
- Go to Site settings → Domain management → HTTPS
- Click Verify DNS configuration
- Click Provision certificate
- HTTPS is now enabled with auto-renewal
After deployment, test your security headers:
- Go to securityheaders.com
- Enter your site URL
- You should see A+ grade
- X-Frame-Options: Prevents clickjacking
- Content-Security-Policy: Blocks XSS and injection attacks
- Strict-Transport-Security: Forces HTTPS
- Permissions-Policy: Disables unnecessary browser features
- Cross-Origin policies: Isolates your site from others
This is automatic! Every time you push to GitHub:
- Netlify detects the change
- Builds and deploys your site
- Updates go live in seconds
- Create a new branch:
git checkout -b feature/new-page - Push to GitHub
- Netlify creates a preview URL for that branch
- Review changes before merging to main
If you need to load resources from external domains (fonts, images, APIs), update _headers:
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' https://fonts.googleapis.com https://your-api.com; font-src https://fonts.gstatic.com; img-src 'self' data: https://images.example.com; ...
If you need analytics, add the domain to CSP and disclose it:
script-src 'self' https://analytics.example.com
Update humans.txt to disclose analytics usage.
Use a service like Netlify Forms or Formspree:
- Add
netlifyattribute to your form:<form netlify> - Submissions appear in Netlify dashboard
- No backend code needed
Check CSP in _headers. Your resources must be allowed:
- External CSS: Add domain to
style-src - External JS: Add domain to
script-src - External images: Add domain to
img-src
Verify _headers file is in root directory and properly formatted.
- Clear Netlify cache: Deploys → Trigger deploy → Clear cache and deploy site
- Hard refresh browser:
Ctrl+Shift+R/Cmd+Shift+R
- DNS propagation takes up to 48 hours
- Verify DNS records at your registrar
- Check Netlify's DNS verification status
- Review SITE_SECURITY_CHECKLIST.md before launch
- Update
security.txtwith your actual security contact - Test your site at securityheaders.com
- Submit to HSTS Preload (optional, after confirming HTTPS works)
- Validate structured data at Google Rich Results Test
This template is provided as-is under the MIT License. For help:
- Open an issue on GitHub
- Review the security checklist
- Check Netlify's documentation
Built with security and privacy as defaults, not afterthoughts.