Skip to main content

Troubleshooting

Footage isn’t showing up

Check the footage path

Go to Settings → General and confirm the footage path is correct. It must be the exact absolute path to the folder your camera uploads to. A trailing slash is optional.

Check that scanning is running

New footage only appears after a scan. Verify that either:

  • The cron job is set up and running: * * * * * php /path/to/lunetta/cron.php
  • Or Lunetta Ping is enabled in Settings → Footage scanning

Trigger a manual scan from the dashboard (Scan now) to see if footage appears immediately.

Check the footage folder

SSH or FTP into your server and confirm files are actually arriving in the folder. If the folder is empty, the problem is with the camera’s FTP configuration, not Lunetta.

Check file extensions

Lunetta only indexes .mp4, .mov, .avi, .mkv, .jpg, .jpeg, .png, .webp, and a few other formats. Files in unsupported formats (like .dav) are ignored.

Clean URLs aren’t working (404 on all pages except /)

This usually means mod_rewrite is not enabled or AllowOverride All is not set for your directory.

On Apache: Ask your hosting provider to enable mod_rewrite and set AllowOverride All for your web root. Most cPanel hosts support this via the “Apache Handlers” or “MultiPHP INI Editor” section.

On Nginx: Add this to your server block:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Thumbnails aren’t showing

Server-side thumbnails: Lunetta uses .jpg files uploaded alongside video files as thumbnails. If your camera doesn’t upload matching snapshots, thumbnails are generated in the browser from the first frame of the video. This happens automatically — no configuration needed.

Browser-generated thumbnails not appearing: If you see blank cards with no thumbnail, the video file may be in a format the browser can’t decode (e.g. .avi, .mkv encoded with a non-web codec). Try a different browser. Chrome has the best codec support.

Telegram notifications aren’t being sent

  1. Confirm your bot token and chat ID are correct in Settings → Telegram
  2. Make sure you’ve started a conversation with your bot in Telegram (search for it and press Start)
  3. Click Send test message — if this fails, the token or chat ID is wrong
  4. If the test works but live notifications don’t arrive, confirm scanning is running

License shows as invalid after moving to a new server

When you install Lunetta on a new server, use the Verify now button in Settings → License. This reclaims the license for the new installation. The license key can be active on one installation at a time — the most recent verification always wins.

Forgot my password

Use a recovery code to log in. On the login page, click Use a recovery code.

If you’ve used all 10 recovery codes and can’t log in, you’ll need to reset the admin account manually:

  1. SSH into your server
  2. Open a PHP shell or run a one-time script:
<?php
require_once '/path/to/lunetta/config.php';
require_once '/path/to/lunetta/src/Database.php';

$db = Database::connect();
$hash = password_hash('your-new-password', PASSWORD_BCRYPT);
$db->exec("UPDATE users SET password_hash = '$hash' WHERE role = 'admin' LIMIT 1");
echo "Done\n";

Run this script once from the command line, then delete it.

The installer won’t delete itself

After successful installation, install.php removes itself. If it doesn’t (for example, due to file permission restrictions), delete it manually:

rm /path/to/lunetta/install.php

If you can’t delete it via SSH, use your hosting file manager. Do not leave install.php on the server after installation — it could allow anyone to reconfigure your installation.

Something else

If you’re stuck, open a support ticket with a description of the problem, your PHP version, and your hosting environment.

Contact support