Troubleshooting
Common issues and their solutions.
Installation Issues
Docker Container Won't Start
Symptoms: Container exits immediately or fails health check
Solutions:
- Check logs:
docker-compose logs -f
Once the Manager is running, Settings → Logs shows the Manager's own log lines in-app, plus the OpenCode server's stdout/stderr, which the Manager captures in memory and does not forward to the container console — so those OpenCode-server lines are visible in-app only. If the container or the Manager itself fails before the Manager's HTTP server is up, use docker-compose logs; the in-app viewer has nothing to show at that point.
-
Verify Docker resources (2GB RAM minimum)
-
Check ports aren't in use:
lsof -i :5003
- Pull the image again:
docker compose pull
docker compose up -d
If you build from source, rebuild without cache instead: ./scripts/docker-upgrade.sh --full.
Installer Stops Before Starting
The installer checks Docker first and stops with the reason:
- Docker is required: install Docker Desktop (macOS, Windows) or Docker Engine (Linux)
- Docker is installed but not reachable: start Docker Desktop or the docker service; on Linux, make sure your user can run
docker infowithoutsudo - Docker Compose v2 is required: install the Compose plugin so
docker composeworks - Is a source checkout of OpenCode Manager:
OCM_DIRpoints at a clone of the repository. Keep updating the clone with./scripts/docker-upgrade.sh, or setOCM_DIRto another folder - Already installed from
<folder>: a source checkout's container is running. Keep using it, or stop it there withdocker compose downfirst. The installer starts with its own data and does not share the checkout's volumes - Already exists outside Docker Compose: a container named
opencode-managerwas started withdocker run. Remove it withdocker rm -f opencode-manager(its volumes are kept) and re-run the installer - Did not become healthy: check
cd ~/opencode-manager && docker compose logs. On Linux, aPUID/PGIDthat collides with an account in the image stops startup; removePUID/PGIDfrom.env, or set free ids
Reset a Broken OpenCode Binary
Symptoms: Container won't start after an OpenCode upgrade, or the OpenCode settings show a malformed binary
OpenCode versions installed from Settings live in their own named volume (opencode-bin); the bundled version is part of the image. On start, the entrypoint already removes a persisted binary that is malformed or outside the supported range. If a persisted version still misbehaves, remove only that volume so the container falls back to the bundled binary, without touching the workspace or database volumes:
docker-compose down
# <project> is the Compose project name, usually the directory containing docker-compose.yml
docker volume rm <project>_opencode-bin
docker-compose up -d
Or via the package scripts:
pnpm docker:down
docker volume rm <project>_opencode-bin
pnpm docker:up
Do not use docker-compose down -v (or pnpm docker:reset) here: that also deletes the workspace and database volumes.
Port Already in Use
Symptoms: Error about port 5003 being in use
Solutions:
- Find process using port:
lsof -i :5003
- Stop the process or change port in
docker-compose.yml:
ports:
- "8080:5003" # Use different host port
Then add the new URL to the allowed origins in .env, or sign-in fails with an invalid-origin error:
AUTH_TRUSTED_ORIGINS=http://localhost:8080
PASSKEY_ORIGIN=http://localhost:8080
Permission Denied Errors
Symptoms: Container can't write to volumes
Startup tolerates workspace directories that already exist with wrong ownership; permission errors then appear on the first write into the directory rather than at startup.
Solutions:
- In Docker, the entrypoint re-owns
/app/dataand/workspaceon every start, so a host-sidechownis overwritten. When you bind-mount a host directory withOCM_WORKSPACE_HOST_PATH, setPUIDandPGIDin.envto the host user that owns it:
PUID=1000
PGID=1000
- For local development, fix ownership of the local directories:
sudo chown -R $(id -u):$(id -g) ./workspace ./data
Authentication Issues
Can't Log In
Solutions:
- Clear browser cookies
- Try incognito/private mode
- Outside Docker, check
AUTH_SECRETis set in production - Verify
AUTH_TRUSTED_ORIGINSincludes your URL. Signing in from your phone athttp://<lan-ip>:5003needs that origin listed; the installer adds it when you allow network sign-in
Session Keeps Expiring
Solutions:
- Ensure
AUTH_SECRETis persistent across restarts. In Docker, the generated secret lives in theopencode-datavolume, so keep that volume - Check browser isn't blocking cookies
- Verify
AUTH_SECURE_COOKIES=falseif using HTTP
OAuth Redirect Error
Solutions:
- Verify callback URL matches exactly in provider settings
- Check for trailing slashes
- Ensure protocol matches (http vs https)
Passkey Not Working
Solutions:
- Verify
PASSKEY_RP_IDmatches your domain - Check
PASSKEY_ORIGINincludes correct protocol and port - Try a different browser
- Ensure WebAuthn is supported
Password Reset Not Working
Solutions:
- Set all required variables:
ADMIN_EMAIL=your@email.com
ADMIN_PASSWORD=new-password
ADMIN_PASSWORD_RESET=true
- Recreate the container so it picks up the new environment variables:
docker compose up -d --force-recreate app
- Remove
ADMIN_PASSWORD_RESET=trueand recreate the container again:
docker compose up -d --force-recreate app
Git Issues
Clone Fails for Private Repository
Solutions:
- Configure GitHub PAT in Settings > Git > Credentials
- Ensure PAT has
reposcope - Check PAT hasn't expired
Push/Pull Fails
Solutions:
- Verify GitHub PAT is valid
- Check PAT has write permissions
- Verify remote URL:
git remote -v
Worktree Creation Fails
Solutions:
- Ensure branch doesn't already exist
- Check disk space
- Verify repo isn't in detached HEAD state
Chat Issues
Messages Not Sending
Solutions:
- Check OpenCode server is running:
docker exec opencode-manager ps aux | grep opencode
- Verify model is configured
- Check API key is valid
Streaming Stops Unexpectedly
Solutions:
- Check network connection
- Look for errors in browser console (F12)
- Check container logs for errors
File Mentions Not Working
Solutions:
- Ensure repository is selected
- Check file exists
- Refresh the file browser
File Browser Issues
Files Not Loading
Solutions:
- Refresh the page
- Check repository is properly cloned
- Verify workspace volume is mounted
Upload Fails
Solutions:
- Check file size
- Verify write permissions
- Check browser console for errors
Performance Issues
Slow Response Times
Solutions:
- Check Docker resources:
docker stats
- Clear old sessions
- Use
/compactto reduce session size
High Memory Usage
Solutions:
- Limit session count
- Delete unused sessions
- Restart container:
docker-compose restart
Database Errors
Solutions:
- Stop the container without removing it:
docker compose stop app
- Back up the data directory from the stopped container (
DATABASE_PATH=/app/data/opencode.dbin Compose), including any SQLite WAL/SHM sidecar files:
mkdir -p ./opencode-data-backup
docker cp opencode-manager:/app/data/. ./opencode-data-backup/
- Start the container again:
docker compose start app
Mobile Issues
Keyboard Doesn't Close
Solutions:
- Tap outside input field
- Update device OS
- Try Safari on iOS
PWA Won't Install
Solutions:
- iOS: Must use Safari
- Android: Must use Chrome
- Check HTTPS is enabled
Touch Gestures Not Working
Solutions:
- Start the swipe within 30px of the screen edge
- Swipe at least 80px
- Check no UI element is blocking
Getting More Help
If your issue isn't covered:
- Check GitHub Issues
- Search GitHub Discussions
- Open a new issue with:
- Steps to reproduce
- Expected vs actual behavior
- Container logs:
docker-compose logs— required when the Manager fails to start; Settings → Logs in-app covers the same Manager lines plus captured OpenCode server output once the Manager is up - Browser console errors
- Environment info (OS, browser, Docker version)