julien-infra-hostinger-database
Manage shared database instances on Hostinger VPS srv759970 - PostgreSQL, Redis, MongoDB operations. Use for database connections, backups, user management, performance checks, or troubleshooting database issues.
Best use case
julien-infra-hostinger-database is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Manage shared database instances on Hostinger VPS srv759970 - PostgreSQL, Redis, MongoDB operations. Use for database connections, backups, user management, performance checks, or troubleshooting database issues.
Teams using julien-infra-hostinger-database should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/julien-infra-hostinger-database/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How julien-infra-hostinger-database Compares
| Feature / Agent | julien-infra-hostinger-database | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Manage shared database instances on Hostinger VPS srv759970 - PostgreSQL, Redis, MongoDB operations. Use for database connections, backups, user management, performance checks, or troubleshooting database issues.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Database Management - Hostinger VPS
Manage shared database instances (PostgreSQL, Redis, MongoDB) on srv759970.
## Overview
The server runs **shared database instances** used by multiple applications.
### Databases Available
| Database | Port | Container | Status | Used By |
|----------|------|-----------|--------|---------|
| **PostgreSQL** | 5432 | postgres-shared | ✅ Running | WordPress sites, apps |
| **Redis** | 6379 | redis-shared | ✅ Running | Caching, queues |
| **MongoDB** | 27017 | mongodb-shared | ✅ Running | Document storage |
## When to Use This Skill
Invoke automatically when:
- Database connection issues reported
- Need to create/manage database users
- Backup or restore operations needed
- Performance issues with databases
- Database queries or inspection needed
- User mentions PostgreSQL, Redis, MongoDB operations
## PostgreSQL Operations
### Connection
**From server**:
```bash
# Connect to PostgreSQL
ssh srv759970 'docker exec -it postgres-shared psql -U postgres'
# Connect to specific database
ssh srv759970 'docker exec -it postgres-shared psql -U postgres -d mydb'
```
**From application container**:
```
Host: postgres-shared
Port: 5432
User: postgres
Password: [set in environment]
```
**Connection string**:
```
postgresql://username:password@postgres-shared:5432/database_name
```
### List Databases
```bash
ssh srv759970 << 'EOF'
docker exec -it postgres-shared psql -U postgres -c "\l"
EOF
```
### Create Database
```bash
ssh srv759970 << 'EOF'
docker exec -it postgres-shared psql -U postgres << PSQL
CREATE DATABASE mydb;
CREATE USER myuser WITH ENCRYPTED PASSWORD 'mypassword';
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
PSQL
EOF
```
### Backup Database
```bash
# Backup single database
ssh srv759970 'docker exec postgres-shared pg_dump -U postgres mydb > /tmp/mydb_backup.sql'
# Download backup
scp srv759970:/tmp/mydb_backup.sql ./mydb_backup_$(date +%Y%m%d).sql
# Backup all databases
ssh srv759970 'docker exec postgres-shared pg_dumpall -U postgres > /tmp/all_dbs_backup.sql'
```
### Restore Database
```bash
# Upload backup
scp ./mydb_backup.sql srv759970:/tmp/
# Restore
ssh srv759970 'docker exec -i postgres-shared psql -U postgres mydb < /tmp/mydb_backup.sql'
```
### Check Database Size
```bash
ssh srv759970 << 'EOF'
docker exec -it postgres-shared psql -U postgres -c "
SELECT
datname AS database,
pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database
ORDER BY pg_database_size(datname) DESC;
"
EOF
```
### User Management
```bash
# List users
ssh srv759970 'docker exec -it postgres-shared psql -U postgres -c "\du"'
# Create user
ssh srv759970 << 'EOF'
docker exec -it postgres-shared psql -U postgres -c "
CREATE USER newuser WITH PASSWORD 'password123';
GRANT ALL PRIVILEGES ON DATABASE mydb TO newuser;
"
EOF
# Change password
ssh srv759970 'docker exec -it postgres-shared psql -U postgres -c "ALTER USER myuser PASSWORD '\''newpassword'\'';"'
# Drop user
ssh srv759970 'docker exec -it postgres-shared psql -U postgres -c "DROP USER username;"'
```
### Performance Monitoring
```bash
# Active connections
ssh srv759970 << 'EOF'
docker exec -it postgres-shared psql -U postgres -c "
SELECT count(*) as connections, datname
FROM pg_stat_activity
GROUP BY datname;
"
EOF
# Long-running queries
ssh srv759970 << 'EOF'
docker exec -it postgres-shared psql -U postgres -c "
SELECT pid, now() - query_start as duration, query
FROM pg_stat_activity
WHERE state = 'active' AND now() - query_start > interval '5 seconds'
ORDER BY duration DESC;
"
EOF
# Kill query
ssh srv759970 'docker exec -it postgres-shared psql -U postgres -c "SELECT pg_terminate_backend(PID);"'
```
## Redis Operations
### Connection
**From server**:
```bash
# Connect to Redis CLI
ssh srv759970 'docker exec -it redis-shared redis-cli'
```
**From application**:
```
Host: redis-shared
Port: 6379
Password: [if configured]
```
**Connection string**:
```
redis://redis-shared:6379
```
### Basic Commands
```bash
# Ping
ssh srv759970 'docker exec redis-shared redis-cli ping'
# Get info
ssh srv759970 'docker exec redis-shared redis-cli info'
# Memory usage
ssh srv759970 'docker exec redis-shared redis-cli info memory'
# Connected clients
ssh srv759970 'docker exec redis-shared redis-cli info clients'
```
### Key Operations
```bash
# List all keys (⚠️ use with caution in production)
ssh srv759970 'docker exec redis-shared redis-cli keys "*"'
# Count keys
ssh srv759970 'docker exec redis-shared redis-cli dbsize'
# Get key value
ssh srv759970 'docker exec redis-shared redis-cli get mykey'
# Set key value
ssh srv759970 'docker exec redis-shared redis-cli set mykey "value"'
# Delete key
ssh srv759970 'docker exec redis-shared redis-cli del mykey'
# Check key TTL
ssh srv759970 'docker exec redis-shared redis-cli ttl mykey'
```
### Databases in Redis
Redis supports multiple databases (0-15 by default):
```bash
# Select database
ssh srv759970 'docker exec redis-shared redis-cli -n 0'
# List keys in specific database
ssh srv759970 'docker exec redis-shared redis-cli -n 1 keys "*"'
```
**Database usage on srv759970**:
- DB 0: Default / General caching
- DB 1: WhisperX transcription queue
- DB 2: Session storage
- DB 3-15: Available
### Flush Redis (⚠️ Careful!)
```bash
# Flush current database
ssh srv759970 'docker exec redis-shared redis-cli flushdb'
# Flush ALL databases (⚠️ DANGER)
ssh srv759970 'docker exec redis-shared redis-cli flushall'
```
### Monitor Redis Activity
```bash
# Real-time monitoring
ssh srv759970 'docker exec redis-shared redis-cli monitor'
# Slow log
ssh srv759970 'docker exec redis-shared redis-cli slowlog get 10'
```
### Backup Redis
```bash
# Trigger save
ssh srv759970 'docker exec redis-shared redis-cli bgsave'
# Check save status
ssh srv759970 'docker exec redis-shared redis-cli lastsave'
# Backup RDB file
ssh srv759970 'docker cp redis-shared:/data/dump.rdb /tmp/redis_backup_$(date +%Y%m%d).rdb'
```
## MongoDB Operations
### Connection
**From server**:
```bash
# Connect to MongoDB shell
ssh srv759970 'docker exec -it mongodb-shared mongosh'
# Connect to specific database
ssh srv759970 'docker exec -it mongodb-shared mongosh mydb'
```
**From application**:
```
Host: mongodb-shared
Port: 27017
```
**Connection string**:
```
mongodb://mongodb-shared:27017/database_name
```
### List Databases
```bash
ssh srv759970 << 'EOF'
docker exec mongodb-shared mongosh --eval "show dbs"
EOF
```
### Create Database & Collection
```bash
ssh srv759970 << 'EOF'
docker exec mongodb-shared mongosh << MONGO
use mydb
db.createCollection("mycollection")
db.mycollection.insertOne({name: "test", created: new Date()})
MONGO
EOF
```
### Backup MongoDB
```bash
# Backup single database
ssh srv759970 'docker exec mongodb-shared mongodump --db=mydb --out=/tmp/mongo_backup'
# Backup all databases
ssh srv759970 'docker exec mongodb-shared mongodump --out=/tmp/mongo_backup_all'
# Download backup
ssh srv759970 'cd /tmp && tar -czf mongo_backup.tar.gz mongo_backup'
scp srv759970:/tmp/mongo_backup.tar.gz ./mongo_backup_$(date +%Y%m%d).tar.gz
```
### Restore MongoDB
```bash
# Upload backup
scp ./mongo_backup.tar.gz srv759970:/tmp/
# Extract and restore
ssh srv759970 << 'EOF'
cd /tmp
tar -xzf mongo_backup.tar.gz
docker exec mongodb-shared mongorestore --db=mydb /tmp/mongo_backup/mydb
EOF
```
### Database Statistics
```bash
# Database stats
ssh srv759970 << 'EOF'
docker exec mongodb-shared mongosh mydb --eval "db.stats()"
EOF
# Collection stats
ssh srv759970 << 'EOF'
docker exec mongodb-shared mongosh mydb --eval "db.mycollection.stats()"
EOF
```
### User Management
```bash
# Create user
ssh srv759970 << 'EOF'
docker exec mongodb-shared mongosh admin --eval '
db.createUser({
user: "myuser",
pwd: "mypassword",
roles: [{role: "readWrite", db: "mydb"}]
})'
EOF
# List users
ssh srv759970 'docker exec mongodb-shared mongosh admin --eval "db.getUsers()"'
```
## Database Container Management
### Check Container Status
```bash
# All database containers
ssh srv759970 'docker ps --filter name=postgres-shared --filter name=redis-shared --filter name=mongodb-shared'
# Resource usage
ssh srv759970 'docker stats --no-stream postgres-shared redis-shared mongodb-shared'
```
### View Logs
```bash
# PostgreSQL logs
ssh srv759970 'docker logs postgres-shared --tail 50'
# Redis logs
ssh srv759970 'docker logs redis-shared --tail 50'
# MongoDB logs
ssh srv759970 'docker logs mongodb-shared --tail 50'
# Follow logs in real-time
ssh srv759970 'docker logs -f postgres-shared'
```
### Restart Databases
```bash
# Restart specific database
ssh srv759970 'docker restart postgres-shared'
# Restart all databases (⚠️ affects all apps)
ssh srv759970 'docker restart postgres-shared redis-shared mongodb-shared'
```
## Troubleshooting
### Connection Refused
**Symptoms**: Applications can't connect to database
**Checks**:
```bash
# 1. Is container running?
ssh srv759970 'docker ps | grep -E "postgres|redis|mongo"'
# 2. Is port exposed?
ssh srv759970 'docker port postgres-shared'
# 3. Can we connect from server?
ssh srv759970 'docker exec postgres-shared pg_isready'
# 4. Check network
ssh srv759970 'docker network inspect bridge'
```
**Solutions**:
- Restart container: `docker restart postgres-shared`
- Check docker-compose network configuration
- Verify connection strings in application
### Database Locked / Slow
**PostgreSQL**:
```bash
# Check for locks
ssh srv759970 << 'EOF'
docker exec postgres-shared psql -U postgres -c "
SELECT * FROM pg_locks pl
LEFT JOIN pg_stat_activity psa ON pl.pid = psa.pid
WHERE NOT granted;
"
EOF
# Kill blocking query
ssh srv759970 'docker exec postgres-shared psql -U postgres -c "SELECT pg_terminate_backend(PID);"'
```
**Redis**:
```bash
# Check slow queries
ssh srv759970 'docker exec redis-shared redis-cli slowlog get 10'
# Memory issues
ssh srv759970 'docker exec redis-shared redis-cli info memory'
```
### Out of Disk Space
```bash
# Check database sizes
ssh srv759970 'docker exec postgres-shared du -sh /var/lib/postgresql/data'
ssh srv759970 'docker exec redis-shared du -sh /data'
ssh srv759970 'docker exec mongodb-shared du -sh /data/db'
# PostgreSQL vacuum (reclaim space)
ssh srv759970 'docker exec postgres-shared psql -U postgres -d mydb -c "VACUUM FULL;"'
```
### Corrupted Database
**PostgreSQL**:
```bash
# Check database integrity
ssh srv759970 'docker exec postgres-shared pg_dump -U postgres mydb > /dev/null'
# Restore from backup if corrupted
# See backup/restore sections above
```
## Backup Strategy
### Automated Backups
Recommended backup schedule:
- **Daily**: PostgreSQL databases (10 PM)
- **Weekly**: MongoDB full backup (Sunday 2 AM)
- **Continuous**: Redis persistence (RDB every 15 min)
### Backup Location
```bash
/opt/backups/
├── postgres/
│ ├── daily/
│ └── weekly/
├── mongodb/
│ └── weekly/
└── redis/
└── snapshots/
```
### Backup Scripts
See `scripts/backup-databases.sh` for automated backup script.
## Performance Best Practices
1. **PostgreSQL**:
- Regular VACUUM
- Index optimization
- Connection pooling in apps
2. **Redis**:
- Use appropriate data structures
- Set expiry on keys
- Monitor memory usage
3. **MongoDB**:
- Create indexes for queries
- Regular compaction
- Monitor collection sizes
## Security Notes
- **PostgreSQL**: User passwords stored in docker-compose env
- **Redis**: No password by default (container network only)
- **MongoDB**: Authentication enabled in production mode
- **Network**: Databases only accessible within Docker network
- **Backups**: Should be encrypted if containing sensitive data
## Reference Files
- **references/postgresql.md** - Detailed PostgreSQL operations
- **references/redis.md** - Redis patterns and best practices
- **references/mongodb.md** - MongoDB operations guide
- **scripts/backup-databases.sh** - Automated backup script
## Quick Commands Reference
```bash
# PostgreSQL
ssh srv759970 'docker exec -it postgres-shared psql -U postgres'
ssh srv759970 'docker exec postgres-shared pg_dump -U postgres mydb > backup.sql'
# Redis
ssh srv759970 'docker exec redis-shared redis-cli ping'
ssh srv759970 'docker exec redis-shared redis-cli dbsize'
# MongoDB
ssh srv759970 'docker exec -it mongodb-shared mongosh'
ssh srv759970 'docker exec mongodb-shared mongodump --out=/tmp/backup'
# Container management
ssh srv759970 'docker restart postgres-shared'
ssh srv759970 'docker logs postgres-shared --tail 50'
ssh srv759970 'docker stats --no-stream postgres-shared'
```
## Important Notes
- **Shared instances**: Multiple apps use these databases - coordinate changes
- **Backups**: Always backup before major operations
- **Performance**: Monitor resource usage - databases can impact all apps
- **Network**: Databases communicate via Docker network, not localhost
- **Documentation**: See `docs/infrastructure/databases.md` for detailed configRelated Skills
infrastructure
Principal DevOps and infrastructure for FFP AWS serverless stack. Use when working with SST, Lambda configuration, API Gateway, Cognito, RDS, S3, CloudFront, VPC, CI/CD pipelines, monitoring, or environment management. Enforces security best practices and cost-conscious architecture.
infrastructure-verification
Verify AWS infrastructure configuration before deployment. Use when validating VPC endpoints, NAT Gateway capacity, security groups, or debugging network path issues that cause Lambda connection timeouts.
infrastructure-diagrams
Create professional Azure, hybrid, and on-premises infrastructure architecture diagrams using Python's Diagrams library. Use when asked to create architecture diagrams, infrastructure diagrams, cloud diagrams, network diagrams, system architecture visualizations, or data center layouts. Supports Azure (VMs, networking, storage, databases, containers, security), on-premises (servers, databases, networking equipment, monitoring), Kubernetes, and hybrid cloud scenarios. Outputs PNG, SVG, or PDF files.
infrastructure-cost
Analyze and reduce cloud infrastructure costs — right-size resources, eliminate waste, optimize reserved capacity. Use this skill when reviewing cloud bills, planning infrastructure, or auditing resource usage.
infrastructure-as-code
Define, deploy, and manage cloud infrastructure as code using tools like Terraform, Pulumi, CloudFormation, and CDK, ensuring consistency, repeatability, and version control.
infra-guardian
OpenClaw Agent Infrastructure Guardian — keep your agent's infrastructure alive. Process lifecycle management with detached execution, auto-restart on failure. Cron scheduler health monitoring (per-job detection, auto-recovery). Direct Telegram/messaging alerts independent of OpenClaw. System-level watchdog that runs from crontab, not OpenClaw cron. Use when launching background processes, monitoring cron job health, or when things keep dying silently.
discover-infra
Automatically discover cloud, infrastructure, deployment, and container skills when working with AWS, GCP, Azure, Docker, Kubernetes, Terraform, Netlify, Heroku, serverless, or IaC
devops-infrastructure
クラウドインフラ設計・IaC実装・監視設定・コンテナオーケストレーション。AWS、GCP、Azureのリソース構築、Terraform/Pulumi、Kubernetes、Docker、Prometheus/Grafana監視。「インフラ」「クラウド」「Terraform」「Kubernetes」「監視」「Docker」に関する質問で使用。
devops-infra-github
Expert guidance for containerization, orchestration, and CI/CD pipelines for Bun monorepo projects.
design-infrastructure
インフラ基盤構成設計エージェント - AWS/Azure/GCP/OpenShift向けのKubernetes・IaC構成を設計・生成。/design-infrastructure で呼び出し。
deployment-infrastructure
Kubernetes deployment and infrastructure patterns
database-migrations-migration-observability
Migration monitoring, CDC, and observability infrastructure