mirror of
https://github.com/R0m1k3/podcastic.git
synced 2026-10-11 17:26:20 +02:00
- Remove separate backend/ and frontend/ Dockerfiles - Add root Dockerfile (3-stage: frontend build → backend build → runtime) - Frontend static files served by Express from /public - Simplify docker-compose to 3 services: mongodb, redis, app (port 3579) - Fix vite proxy not to strip /api prefix from paths - Default API URL to relative /api instead of hardcoded localhost Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
134 lines
2.4 KiB
Markdown
134 lines
2.4 KiB
Markdown
# Podcastic - Unraid Installation Guide
|
|
|
|
Single container on port **3579** — includes backend, frontend, and serves everything via Express.
|
|
|
|
## What's Included
|
|
|
|
This single Docker container includes:
|
|
- **Backend**: Node.js + Express.js API
|
|
- **Frontend**: React web interface (served by Express as static files)
|
|
- **Database**: MongoDB (separate container, managed by Compose)
|
|
- **Cache**: Redis (separate container, managed by Compose)
|
|
|
|
## Prerequisites
|
|
|
|
- Unraid server with Docker support
|
|
- Docker Compose (or Unraid's Compose Manager plugin)
|
|
|
|
## Installation
|
|
|
|
### Step 1: Clone Repository
|
|
|
|
```bash
|
|
cd /mnt/user/appdata
|
|
git clone https://github.com/R0m1k3/podcastic.git
|
|
cd podcastic
|
|
```
|
|
|
|
### Step 2: Configure Environment
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
nano .env
|
|
```
|
|
|
|
**Change at minimum:**
|
|
```env
|
|
JWT_SECRET=your-random-secret-here
|
|
```
|
|
|
|
### Step 3: Build and Start
|
|
|
|
```bash
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Step 4: Access
|
|
|
|
Open: `http://your-unraid-ip:3579`
|
|
|
|
---
|
|
|
|
## Container Architecture
|
|
|
|
```
|
|
docker-compose services:
|
|
├── podcastic (port 3579)
|
|
│ ├── Express.js API → /api/*
|
|
│ └── React frontend → /* (static files)
|
|
├── podcastic-mongodb → internal :27017
|
|
└── podcastic-redis → internal :6379
|
|
```
|
|
|
|
Only port **3579** is exposed externally.
|
|
|
|
---
|
|
|
|
## Data Persistence
|
|
|
|
Add volume mounts to `docker-compose.yml` for persistence:
|
|
|
|
```yaml
|
|
mongodb:
|
|
volumes:
|
|
- /mnt/user/appdata/podcastic/db:/data/db
|
|
|
|
redis:
|
|
volumes:
|
|
- /mnt/user/appdata/podcastic/redis:/data
|
|
```
|
|
|
|
---
|
|
|
|
## Management Commands
|
|
|
|
```bash
|
|
# View logs
|
|
docker-compose logs -f app
|
|
|
|
# Restart
|
|
docker-compose restart app
|
|
|
|
# Stop all
|
|
docker-compose down
|
|
|
|
# Update
|
|
git pull
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
---
|
|
|
|
## Unraid WebUI Template
|
|
|
|
Add via Docker > Add Container:
|
|
|
|
| Field | Value |
|
|
|-------|-------|
|
|
| Repository | (build from compose) |
|
|
| Port | 3579:3579 |
|
|
| Variable: JWT_SECRET | your-secret |
|
|
| Variable: MONGODB_URI | mongodb://podcastic-mongodb:27017/podcastic |
|
|
| Variable: REDIS_URL | redis://podcastic-redis:6379 |
|
|
|
|
Or use **Compose Manager plugin** with the `docker-compose.yml` from this repo.
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
```bash
|
|
# Check container status
|
|
docker-compose ps
|
|
|
|
# Check health endpoint
|
|
curl http://localhost:3579/health
|
|
|
|
# Check API
|
|
curl http://localhost:3579/api/health
|
|
```
|
|
|
|
**Last Updated**: 2026-04-16
|