- Docker and Docker Compose installed
- Git (to clone the repository)
-
Clone the repository (if not already done):
git clone https://github.com/iLearn-Lab/NovelClaw.git cd NovelClaw -
Configure environment variables:
# Copy example env files to actual .env files cp .env.auth-portal.example apps/auth-portal/.env cp .env.multiagent.example apps/multiagent/.env cp .env.novelclaw.example apps/novelclaw/.env -
Edit the .env files with your API keys:
apps/novelclaw/.env- Add your OpenAI/Anthropic API keysapps/multiagent/.env- Add your OpenAI/Anthropic API keysapps/auth-portal/.env- Change the SECRET_KEY
-
Build and start all services:
docker-compose up -d
-
Access the application:
- Auth Portal: http://localhost:8010/select-mode
- MultiAgent: http://localhost:8011/dashboard
- NovelClaw: http://localhost:8012/dashboard
Start services:
docker-compose up -dStop services:
docker-compose downView logs:
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f novelclaw
docker-compose logs -f multiagent
docker-compose logs -f auth-portalRebuild after code changes:
docker-compose up -d --buildRestart a specific service:
docker-compose restart novelclawThe following directories are mounted as volumes to persist data:
apps/auth-portal/local_web_portal/data- Auth portal databaseapps/multiagent/local_web_portal/data- MultiAgent dataapps/novelclaw/local_web_portal/data- NovelClaw databaseapps/novelclaw/local_web_portal/runs- Writing runs and outputs
Port conflicts:
If ports 8010, 8011, or 8012 are already in use, edit docker-compose.yml to change the port mappings:
ports:
- "9010:8010" # Change 9010 to your preferred portPermission issues: On Linux/Mac, you may need to adjust permissions:
chmod -R 755 apps/*/local_web_portal/data
chmod -R 755 apps/novelclaw/local_web_portal/runsView container status:
docker-compose psEnter a container for debugging:
docker exec -it novelclaw-workspace bashFor production deployment:
- Use proper secrets management (not .env files)
- Configure reverse proxy (nginx example in
infra/nginx/) - Set up SSL/TLS certificates
- Use external database instead of SQLite
- Configure proper backup for data volumes
- Set resource limits in docker-compose.yml
See DEPLOYMENT.md for more production deployment details.