- Modified `.env.example` to reflect new API URL structure and added CDN configuration for external storage. - Updated `.gitignore` to include deployment secrets and certificate files, ensuring sensitive information is not committed. - Revised `BACKEND_INTEGRATION.md` to clarify authentication methods, replacing Cognito references with Nostr NIP-98. - Deleted outdated documentation files (`CONTENT-INTEGRATION-COMPLETE.md`, `CURSOR-MCP-SETUP.md`, `FINAL-STATUS.md`, `FIXES-APPLIED.md`, `INDEEHHUB-INTEGRATION.md`, `PROJECT-COMPLETE.md`, `PROJECT-SUMMARY.md`) to streamline project documentation. These changes enhance the clarity of the environment setup and improve the overall documentation structure for better developer onboarding.
170 lines
3.2 KiB
Markdown
170 lines
3.2 KiB
Markdown
# IndeeHub Deployment
|
|
|
|
## Full Stack (Recommended)
|
|
|
|
The app requires the full stack: frontend (nginx), backend API, PostgreSQL, Redis, MinIO, FFmpeg worker, Nostr relay.
|
|
|
|
### Docker Compose
|
|
|
|
```bash
|
|
# Copy environment template and fill in secrets
|
|
cp .env.portainer.example .env.portainer
|
|
# Edit .env.portainer with your values
|
|
|
|
# Deploy
|
|
docker compose up -d --build
|
|
```
|
|
|
|
### Portainer
|
|
|
|
1. Create a new Stack
|
|
2. Load variables from `.env.portainer` (use `.env.portainer.example` as template)
|
|
3. Use `docker-compose.yml` from the repo
|
|
4. Deploy
|
|
|
|
## Access
|
|
|
|
- **Application URL**: `http://your-server:7777`
|
|
- **Health Check**: `http://your-server:7777/health`
|
|
|
|
## Configuration
|
|
|
|
### Port Configuration
|
|
The application runs on port **7777** by default. To change:
|
|
|
|
```yaml
|
|
# In docker-compose.yml
|
|
ports:
|
|
- "YOUR_PORT:7777"
|
|
```
|
|
|
|
### Environment Variables
|
|
Add any required environment variables in `docker-compose.yml`:
|
|
|
|
```yaml
|
|
environment:
|
|
- NODE_ENV=production
|
|
- VITE_API_URL=https://your-api.com
|
|
```
|
|
|
|
## Build Details
|
|
|
|
### Multi-stage Docker Build
|
|
1. **Builder Stage**: Compiles Vue/TypeScript application
|
|
2. **Production Stage**: Serves built files with Nginx
|
|
|
|
### Features
|
|
- ✅ Nginx web server (Alpine Linux)
|
|
- ✅ Gzip compression
|
|
- ✅ Security headers
|
|
- ✅ PWA support with proper MIME types
|
|
- ✅ Vue Router SPA fallback
|
|
- ✅ Service Worker support
|
|
- ✅ Health check endpoint
|
|
- ✅ Auto-restart enabled
|
|
|
|
## Monitoring
|
|
|
|
### Health Check
|
|
```bash
|
|
curl http://localhost:7777/health
|
|
```
|
|
|
|
### Container Status
|
|
```bash
|
|
docker ps | grep indeedhub
|
|
```
|
|
|
|
### View Logs
|
|
```bash
|
|
docker logs -f indeedhub-app
|
|
```
|
|
|
|
## Updates
|
|
|
|
### Rebuild and Deploy
|
|
```bash
|
|
docker-compose down
|
|
docker-compose up -d --build
|
|
```
|
|
|
|
### Using Portainer
|
|
1. Go to your stack
|
|
2. Click "Update"
|
|
3. Enable "Pull latest image"
|
|
4. Click "Update the stack"
|
|
|
|
## Troubleshooting
|
|
|
|
### Container won't start
|
|
```bash
|
|
# Check logs
|
|
docker logs indeedhub-app
|
|
|
|
# Check if port is available
|
|
lsof -i :7777
|
|
```
|
|
|
|
### Build fails
|
|
```bash
|
|
# Clear Docker cache
|
|
docker builder prune
|
|
|
|
# Rebuild without cache
|
|
docker-compose build --no-cache
|
|
```
|
|
|
|
## Production Checklist
|
|
|
|
- ✅ Port 7777 exposed
|
|
- ✅ Health checks configured
|
|
- ✅ Auto-restart enabled
|
|
- ✅ Gzip compression enabled
|
|
- ✅ Security headers set
|
|
- ✅ PWA manifest support
|
|
- ✅ Service worker caching
|
|
- ✅ SPA routing configured
|
|
- ✅ Docker networking isolated
|
|
|
|
## Stack Configuration for Portainer
|
|
|
|
Copy this into Portainer Stack editor:
|
|
|
|
```yaml
|
|
version: '3.8'
|
|
|
|
services:
|
|
indeedhub:
|
|
image: indeedhub-prototype:latest
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: indeedhub-app
|
|
restart: unless-stopped
|
|
ports:
|
|
- "7777:7777"
|
|
environment:
|
|
- NODE_ENV=production
|
|
networks:
|
|
- indeedhub-network
|
|
labels:
|
|
- "com.centurylinklabs.watchtower.enable=true"
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:7777/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
networks:
|
|
indeedhub-network:
|
|
driver: bridge
|
|
```
|
|
|
|
## Support
|
|
|
|
For issues, check:
|
|
1. Container logs: `docker logs indeedhub-app`
|
|
2. Health endpoint: `http://localhost:7777/health`
|
|
3. Nginx config: `/etc/nginx/conf.d/default.conf`
|