Troubleshooting
Common issues and solutions for self-hosted Scanopy server deployments.
Common issues and solutions for self-hosted Scanopy server deployments.
For daemon-related issues, see Daemon Troubleshooting.
Server Issues
Port Already in Use
Symptoms: Server fails to start with "address already in use"
Solution: Change the port mapping in docker-compose.yml:
ports:
- '8080:60072' # Change 60072 to any available portBrowser Shows "SSL Protocol Error"
Symptoms: Browser displays "ERR_SSL_PROTOCOL_ERROR" when accessing Scanopy
Cause: Using https:// instead of http://. Scanopy doesn't handle TLS directly.
http://your-server:60072Solution: Use http:// to access Scanopy directly. For HTTPS, put a reverse proxy (Traefik, Nginx, Caddy) in front to handle TLS termination.
PostgreSQL "Could not create any Unix-domain sockets" (Proxmox)
Symptoms: PostgreSQL container fails to start on Proxmox host with socket creation error
Cause: AppArmor security policy blocking socket creation.
Solution: Add to both PostgreSQL and Scanopy services in docker-compose.yml:
security_opt:
- apparmor:unconfinedSee issue #87 for details.
Integrated Daemon Not Initializing
Symptoms: Integrated daemon shows in UI but doesn't start discovery
Diagnosis:
# Check daemon logs
docker logs scanopy-daemon
# Check if daemon can reach server
docker exec scanopy-daemon curl http://scanopy-server:60072/api/healthSolutions:
-
Verify bridge network: Check your Docker bridge IP
docker network inspect bridge | grep Gateway -
Update compose file: If gateway isn't
172.17.0.1, updateSCANOPY_INTEGRATED_DAEMON_URL -
Check the daemon record: Server setup provisions the integrated daemon and its API key. Confirm the daemon appears in Discover > Scan > Daemons and that its
daemon-configvolume still holds the key — a wiped volume leaves the daemon with no identity to present.
Emails Aren't Being Sent
Symptoms: Password reset, invite, or install-command emails never arrive. The UI reports only that Scanopy could not send the email and asks you to check the server logs — the mail server's own reply is deliberately kept out of the interface.
Diagnosis: The server logs the mail server's reply, with its reply code and whether the failure was TLS or a timeout.
docker logs scanopy-server 2>&1 | grep -i smtpCheck the log from startup as well. A partial SMTP configuration, or a relay the server could not build a transport for, disables email and says so at boot.
Solutions:
-
Fill in every SMTP setting: relay, username, password, and sender email must all be set together. With any of them missing, email stays disabled. See SMTP Configuration.
-
Check the port:
SCANOPY_SMTP_PORTdefaults to465, which is implicit TLS. Providers that accept authenticated submission only on 587 with STARTTLS — Microsoft 365 among them — do not listen on 465, and the connection fails before authentication. -
Confirm the settings reach the container: the published
docker-compose.ymlpasses a.envbeside it through to the server. In a compose file of your own, theserverservice needs its ownenv_fileentry, or the variables set underenvironment.
Database Issues
How to Backup Data
Scanopy stores all data in PostgreSQL. To backup:
Docker setup:
# Backup
docker exec scanopy-db pg_dump -U postgres scanopy > scanopy_backup.sql
# Restore
docker exec -i scanopy-db psql -U postgres scanopy < scanopy_backup.sqlManual setup: Use standard PostgreSQL backup tools (pg_dump, pg_restore).
How to Reset Password
If SMTP is configured, use the "Forgot Password" link on the login page.
If SMTP is not configured:
- Generate a new password hash using bcrypt
- Update the
userstable with the new hash - Or, ask another Owner to delete and re-invite you
How to Delete All Data
To start fresh:
docker compose down -v # Removes all volumes including database
docker compose up -d # Start freshReverse Proxy Setup
Configure your reverse proxy (Nginx, Traefik, Caddy) to forward traffic to port 60072.
For HTTPS, enable secure cookies in docker-compose.yml:
environment:
- SCANOPY_USE_SECURE_SESSION_COOKIES=trueSee Server Configuration for details.
Getting Help
If your issue isn't covered here:
- Discord: Join our Discord community
- GitHub Issues: Open an issue