infra/@dev-prod-rf.server/infrastructure/DOMAINS.md

Active Domains: @infra-dev-prod-rf

Total SSL Certificates: 21 active domains (Let's Encrypt through NPM)
Status: All configured and active
Last Updated: 2025-11-09


Production Domains 🔴 CRITICAL

1. seller1.ru

Property Value
Domain seller1.ru
Service seller1-prod-web (Drupal/Varbase)
Stack seller1-prod-stack
Type Production website
Status LIVE 24/7 🔴 CRITICAL
SSL Valid (Let's Encrypt)
Forward Host seller1-prod-web
Forward Port 80
HTTPS Forced
HTTP/2 Enabled
HSTS Enabled
Block Exploits Enabled

Access: https://seller1.ru

Check Status:

curl -I https://seller1.ru
docker ps | grep seller1-prod-web
docker compose logs seller1-prod-web -f (from /opt/seller1-prod-stack)

2. www.seller1.ru

Property Value
Domain www.seller1.ru
Type Redirect to seller1.ru
Status LIVE 24/7
SSL Valid (Let's Encrypt)
HTTPS Forced

Access: https://www.seller1.ru (redirects to seller1.ru)

3. pro.seller1.ru

Property Value
Domain pro.seller1.ru
Service seller1-prod backend (N8N workflows)
Stack seller1-prod-stack
Type Backend/API service
Status LIVE 24/7 🔴 CRITICAL
SSL Valid (Let's Encrypt)
Forward Host seller1-prod-n8n
Forward Port 5678
HTTPS Forced

Access: https://pro.seller1.ru

Check Status:

curl -I https://pro.seller1.ru
docker ps | grep seller1-prod-n8n

4. auth.seller1.ru (In Planning)

Property Value
Domain auth.seller1.ru
Service Drupal Simple OAuth
Type Authentication endpoint
Status Not yet configured with SSL
Purpose OAuth provider for seller1.ru

Note: Service is running but not yet accessible via https://auth.seller1.ru


Infrastructure Domains

5. home.0kt.ru

Property Value
Domain home.0kt.ru
Service Homarr Dashboard
Container pro-0kt-homarr
Port 7575
Purpose Entry point, unified dashboard
Auth Authelia OAuth
SSL Valid (Let's Encrypt)
Status Active

Access: https://home.0kt.ru

6. git.0kt.ru

Property Value
Domain git.0kt.ru
Service Gitea
Container pro-0kt-gitea
Port 3000 (HTTP), 2222 (SSH)
Purpose Git repository hosting
Auth Authelia OAuth
SSL Valid (Let's Encrypt)
Status Active

Access: https://git.0kt.ru

7. n8n.0kt.ru

Property Value
Domain n8n.0kt.ru
Service N8N Workflows (utilities)
Container pro-0kt-n8n
Port 5678
Purpose Workflow automation platform
Auth Authelia OAuth
SSL Valid (Let's Encrypt)
Status Active

Access: https://n8n.0kt.ru

8. jupyter.0kt.ru

Property Value
Domain jupyter.0kt.ru
Service Jupyter Notebooks
Container pro-0kt-jupyter
Port 8888
Purpose Data analysis, Python notebooks
Auth Authelia OAuth
SSL Valid (Let's Encrypt)
Status Active

Access: https://jupyter.0kt.ru

9. mailhog.0kt.ru

Property Value
Domain mailhog.0kt.ru
Service Mailhog
Container pro-0kt-mailhog
Port 8025 (UI), 1025 (SMTP)
Purpose Email testing and debugging
Auth Authelia OAuth
SSL Valid (Let's Encrypt)
Status Active

Access: https://mailhog.0kt.ru

10. pgadmin.0kt.ru

Property Value
Domain pgadmin.0kt.ru
Service PgAdmin
Container pro-0kt-pgadmin
Port 5050
Purpose PostgreSQL database management
Auth Authelia OAuth
SSL Valid (Let's Encrypt)
Status Active

Access: https://pgadmin.0kt.ru

11. uptime.0kt.ru

Property Value
Domain uptime.0kt.ru
Service Uptime Kuma
Container pro-0kt-uptime
Port 3001
Purpose Status monitoring and uptime tracking
Auth Authelia OAuth
SSL Valid (Let's Encrypt)
Status Active

Access: https://uptime.0kt.ru

12. portainer.0kt.ru (Not Yet Configured)

Property Value
Domain portainer.0kt.ru
Service Portainer
Container pro-0kt-portainer
Port 9002
Purpose Docker UI management
Auth Authelia OAuth
SSL Not yet configured
Status Service running, no SSL

Current Access: http://localhost:9002 (internal only)

13. db.0kt.ru (Not Yet Configured)

Property Value
Domain db.0kt.ru
Service PgAdmin alternative domain
SSL Not yet configured
Status Use pgadmin.0kt.ru instead

Current Access: Use https://pgadmin.0kt.ru

14. adminer.0kt.ru (Not Yet Configured)

Property Value
Domain adminer.0kt.ru
Service Adminer (database UI)
Container pro-0kt-adminer
SSL Not yet configured
Status Service running, no SSL

Current Access: Internal only

15. minio.0kt.ru (Not Yet Configured)

Property Value
Domain minio.0kt.ru
Service MinIO Console
Container pro-0kt-minio-console
Port 9001
Purpose S3 storage management
SSL Not yet configured
Status Service running, no SSL

Current Access: http://localhost:9001 (internal only)

16. s3.0kt.ru (Not Yet Configured)

Property Value
Domain s3.0kt.ru
Service MinIO S3 API
Container pro-0kt-minio
Port 9000
Purpose S3-compatible object storage API
SSL Not yet configured
Status Service running, no SSL

Current Access: http://localhost:9000 (internal only)


Development Domains

17. seller1.dev.0kt.ru (In Planning)

Property Value
Domain seller1.dev.0kt.ru
Service Seller1 Development
Stack seller1-dev-stack
Container seller1-dev-web
Type Development environment
SSL Not yet configured
Status Service running, no SSL

Current Access: Internal only

18. n8n-seller1.dev.0kt.ru (In Planning)

Property Value
Domain n8n-seller1.dev.0kt.ru
Service Seller1 N8N Dev
Stack seller1-dev-stack
Container seller1-dev-n8n
Type Development workflows
SSL Not yet configured
Status Service running, no SSL

Current Access: Internal only

19. myshop.0kt.ru

Property Value
Domain myshop.0kt.ru
Service MyShop Drupal Commerce
Stack myshop-stack
Container myshop-web
Port 80
Purpose Drupal Commerce demo
SSL Valid (Let's Encrypt)
Status Active

Access: https://myshop.0kt.ru

20. commerce.0kt.ru

Property Value
Domain commerce.0kt.ru
Service Commerce Kickstart
Stack commerce-stack
Container commerce-web
Port 80
Purpose Commerce demo
SSL Valid (Let's Encrypt)
Status Active

Access: https://commerce.0kt.ru

21. varbase.0kt.ru

Property Value
Domain varbase.0kt.ru
Service Varbase Demo
Stack varbase-stack
Container varbase-web
Port 80
Purpose Varbase distribution demo
SSL Valid (Let's Encrypt)
Status Active

Access: https://varbase.0kt.ru

22. py.dev.0kt.ru

Property Value
Domain py.dev.0kt.ru
Service Python Development
Stack python-stack
Container python-dev
Port 5000
Purpose Python Flask dev environment
SSL Valid (Let's Encrypt)
Status Active

Access: https://py.dev.0kt.ru

23. py.tst.0kt.ru

Property Value
Domain py.tst.0kt.ru
Service Python Testing
Stack python-stack
Container python-tst
Port 5000
Purpose Python Flask testing environment
SSL Valid (Let's Encrypt)
Status Active

Access: https://py.tst.0kt.ru


Summary by Status

Configured & Active (14 domains)

✅ With SSL certificates:
1. seller1.ru
2. www.seller1.ru
3. pro.seller1.ru
4. home.0kt.ru
5. git.0kt.ru
6. n8n.0kt.ru
7. jupyter.0kt.ru
8. mailhog.0kt.ru
9. pgadmin.0kt.ru
10. uptime.0kt.ru
11. myshop.0kt.ru
12. commerce.0kt.ru
13. varbase.0kt.ru
14. py.dev.0kt.ru
15. py.tst.0kt.ru

Configured (In Planning) (4 domains)

⏳ Service running, no SSL yet:
1. auth.seller1.ru
2. seller1.dev.0kt.ru
3. n8n-seller1.dev.0kt.ru

Not Yet Configured (4 domains)

❌ Service running, no SSL:
1. portainer.0kt.ru
2. db.0kt.ru
3. minio.0kt.ru
4. s3.0kt.ru


SSL Certificate Management

Let's Encrypt Configuration

Property Value
Provider Let's Encrypt
Manager Nginx Proxy Manager (NPM)
Admin Panel http://localhost:81 (SSH tunnel)
Email admin@0kt.ru
Auto-Renewal Enabled (30 days before expiration)
Certificate Format PEM

Certificate Location

/mnt/data/nginx/letsencrypt/live/
├── seller1.ru/
│   ├── cert.pem
│   ├── chain.pem
│   ├── fullchain.pem
│   └── privkey.pem
├── home.0kt.ru/
├── git.0kt.ru/
└── ... (one per domain)

Check Certificate Expiration

# Check specific certificate
openssl x509 -in /mnt/data/nginx/letsencrypt/live/seller1.ru/cert.pem -noout -dates

# Check all certificates
for domain in /mnt/data/nginx/letsencrypt/live/*/; do
  echo "Domain: $(basename $domain)"
  openssl x509 -in "$domain/cert.pem" -noout -dates
done

# From container
docker exec pro-0kt-nginx certbot certificates

Renewal Process

Automatic renewal runs via NPM every 30 days before expiration.

Manual renewal:
1. Login to NPM Admin: http://localhost:81 (via SSH tunnel)
2. Edit proxy host
3. SSL section > Request New SSL Certificate
4. Force SSL: Yes, HTTP/2: Yes

Via command line:

docker compose -f /opt/pro-0kt-stack/docker-compose.yml restart pro-0kt-nginx

Rate Limits

Be aware of Let's Encrypt rate limits:
- 50 certificates per registered domain per week
- 5 duplicate certificates per week


DNS Configuration

DNS A Records

All domains should point to: 45.144.177.147

Verify DNS:

nslookup seller1.ru
dig seller1.ru @8.8.8.8

From container:

docker exec <container> nslookup seller1.ru

Adding New Domain

  1. Configure DNS:
    - Create A record: newdomain.tld → 45.144.177.147
    - Wait for DNS propagation (10-60 minutes)

  2. Add to NPM:
    - Login to NPM Admin: http://localhost:81
    - Proxy Hosts > New Proxy Host
    - Domain: newdomain.tld
    - Forward Host: container-name
    - Forward Port: service-port
    - Enable: Websockets Support, Block Common Exploits

  3. Request SSL:
    - Edit proxy host
    - SSL > Request New SSL Certificate
    - Force SSL: Yes
    - HTTP/2 Support: Yes

  4. Test:
    - https://newdomain.tld
    - Check: curl -I https://newdomain.tld


Troubleshooting

SSL Certificate Failed

# Check DNS
nslookup domain.tld
# Should show: 45.144.177.147

# Check if hit rate limit
# Wait 1 week if limit exceeded

# Check NPM logs
docker logs pro-0kt-nginx | grep domain.tld

# Check ports open
sudo ufw status | grep 80
sudo ufw status | grep 443

502 Bad Gateway

# Check backend container
docker ps | grep <container>

# Check container logs
docker logs <container> --tail 50

# Verify network connectivity
docker network inspect <network-name> | grep <container>

# Reconnect to network if needed
docker network connect <network> <container>

# Reload NPM
docker exec pro-0kt-nginx nginx -s reload

Domain Not Resolving

# Check DNS propagation
nslookup domain.tld
# Should return: 45.144.177.147

# Try different DNS servers
nslookup domain.tld 8.8.8.8
nslookup domain.tld 1.1.1.1

# Clear browser cache
# Try incognito/private mode

# Wait for propagation (up to 60 minutes)

HTTPS Not Working

# Check certificate status
docker exec pro-0kt-nginx certbot certificates

# Check NPM health
docker logs pro-0kt-nginx --tail 100

# Check ports
sudo netstat -tulpn | grep 443

# Restart NPM
docker compose -f /opt/pro-0kt-stack/docker-compose.yml restart pro-0kt-nginx

Domain Usage Statistics

By Purpose

Category Count Examples
Production 4 seller1.ru, www.seller1.ru, pro.seller1.ru, auth.seller1.ru
Infrastructure 7 home.0kt.ru, git.0kt.ru, n8n.0kt.ru, jupyter.0kt.ru, mailhog.0kt.ru, pgadmin.0kt.ru, uptime.0kt.ru
Development 5 seller1.dev.0kt.ru, n8n-seller1.dev.0kt.ru, myshop.0kt.ru, commerce.0kt.ru, varbase.0kt.ru, py.dev.0kt.ru, py.tst.0kt.ru
Admin 4 portainer.0kt.ru, db.0kt.ru, minio.0kt.ru, s3.0kt.ru, npm.0kt.ru, auth.0kt.ru

By SSL Status

Status Count
Configured with SSL 15
Running, no SSL 8
Total 23


Document Version: 1.0.0
Last Updated: 2025-11-09
SSL Certificates Valid Until: January 2026