Omnivore Docker Setup Guide
Overview
This guide documents the complete setup process for running Omnivore using Docker Compose, including common issues and their solutions.
Prerequisites
- Docker and Docker Compose installed
- Debian GNU/Linux system
- sudo privileges
Initial Setup Steps
1. Pull Docker Images
docker compose pull
2. First Attempt to Start Services
docker compose up
Issues Encountered and Solutions
Issue 1: Database User Authentication Failed
Problem: The application services couldn’t connect to PostgreSQL because the app_user
role didn’t exist.
Error Message:
error: password authentication failed for user "app_user"
FATAL: Role "app_user" does not exist
Solution:
- Start PostgreSQL container first:
docker compose up -d postgres
- Wait for PostgreSQL to be ready:
sleep 10
- Create the required database user:
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "CREATE USER app_user WITH PASSWORD 'app_pass';"
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "GRANT ALL PRIVILEGES ON DATABASE omnivore TO app_user;"
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "ALTER USER app_user CREATEDB;"
Issue 2: MinIO Bucket Creation Failed
Problem: The createbuckets container was using an outdated MinIO client command syntax.
Error Message:
mc: <ERROR> `config` is not a recognized command. Get help using `--help` flag.
Solution:
- Update the docker-compose.yml file to use the correct MinIO client syntax:
sed -i 's/mc config host add/mc alias set/g' docker-compose.yml
- Remove and recreate the createbuckets container:
docker compose stop createbuckets
docker compose rm createbuckets
docker compose up -d createbuckets
Issue 3: Environment Variable Updates Not Taking Effect
Problem: After updating the .env
file, changes weren’t reflected in running containers.
Solution: Complete rebuild of all containers and volumes:
# Stop and remove all containers and volumes
docker compose down -v
# Rebuild all containers from scratch
docker compose up --build -d
# If database authentication fails again, recreate the app_user:
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "CREATE USER app_user WITH PASSWORD 'app_pass';"
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "GRANT ALL PRIVILEGES ON DATABASE omnivore TO app_user;"
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "ALTER USER app_user CREATEDB;"
# Restart all services
docker compose up -d
Complete Working Setup Process
Step 1: Initial Deployment
# Pull latest images
docker compose pull
# Start all services
docker compose up -d
Step 2: Fix Database Authentication (if needed)
# Create database user manually
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "CREATE USER app_user WITH PASSWORD 'app_pass';"
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "GRANT ALL PRIVILEGES ON DATABASE omnivore TO app_user;"
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "ALTER USER app_user CREATEDB;"
# Restart services
docker compose restart api queue-processor
Step 3: Fix MinIO Bucket Creation (if needed)
# Update MinIO command syntax
sed -i 's/mc config host add/mc alias set/g' docker-compose.yml
# Recreate createbuckets container
docker compose stop createbuckets
docker compose rm createbuckets
docker compose up -d createbuckets
Step 4: Verify All Services
# Check status of all containers
docker compose ps
# Check for any exited containers
docker compose ps -a
For Environment Variable Updates
When you need to update the .env
file:
# Stop and remove everything
docker compose down -v
# Rebuild from scratch
docker compose up --build -d
# Recreate database user (will be needed after volume reset)
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "CREATE USER app_user WITH PASSWORD 'app_pass';"
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "GRANT ALL PRIVILEGES ON DATABASE omnivore TO app_user;"
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "ALTER USER app_user CREATEDB;"
# Restart all services
docker compose up -d
Final Service Overview
After successful setup, you should have these services running:
Service | Container Name | Port | Status |
---|---|---|---|
Web Interface | omnivore-web | 3000 | Running |
API Backend | omnivore-api | 4000 | Running (Healthy) |
PostgreSQL | omnivore-postgres | 5432 | Running (Healthy) |
Redis | omnivore-redis | 6379 | Running (Healthy) |
MinIO | ominivore-minio-1 | 1010 | Running (Healthy) |
Content Fetch | omnivore-content-fetch | 9090 | Running |
Image Proxy | omnivore-image-proxy | 7070 | Running |
Mail Watcher | omnivore-mail-watch-server | 4398 | Running |
Queue Processor | omnivore-queue-processor | – | Running |
Completed Tasks (will show as Exited 0):
- omnivore-migrate (Database migration)
- ominivore-createbuckets-1 (MinIO bucket setup)
Access Information
- Web Application: http://localhost:3000 (or your configured domain)
- API Endpoint: http://localhost:4000 (or your configured domain)
- Demo Login:
- Email:
[email protected]
- Password:
demo_password
- Email:
Common Commands
# Check container status
docker compose ps
# View logs for specific service
docker logs <container-name>
# Restart specific service
docker compose restart <service-name>
# Stop all services
docker compose down
# Stop and remove volumes (complete reset)
docker compose down -v
# Rebuild and start
docker compose up --build -d
Troubleshooting
Container Won’t Start
- Check logs:
docker logs <container-name>
- Verify .env file configuration
- Ensure all dependencies are running
- Try recreating the container:
docker compose up -d <service-name>
Database Connection Issues
- Verify PostgreSQL is running:
docker compose ps postgres
- Check if app_user exists:
docker exec -it omnivore-postgres psql -U postgres -d omnivore -c "\du"
- Recreate app_user if needed (see Step 2 above)
MinIO Issues
- Check MinIO logs:
docker logs ominivore-minio-1
- Verify bucket creation:
docker logs ominivore-createbuckets-1
- Manually create bucket if needed:
docker exec ominivore-minio-1 mc alias set myminio http://localhost:9000 minio miniominio
docker exec ominivore-minio-1 mc mb myminio/omnivore
Web Interface Not Loading
- Check if web container is running:
docker compose ps web
- Verify API is healthy:
docker compose ps api
- Check network connectivity between containers
- Verify port mappings in docker-compose.yml
Note: This guide was created based on the actual deployment experience on Debian GNU/Linux with Docker Compose. The issues and solutions documented here were encountered and resolved during the setup process.
Last Updated: June 12, 2025