UK Troubleshooting - KnevS/Tesla-Carview GitHub Wiki
Усунення несправностей
🤖 Цей український переклад створений з AI-підтримкою з англійського оригіналу. Виправлення приймаються на GitHub.
🌐 Мова: EN · DE · FR · ES · TR · EL · UK
Рішення для найпоширеніших проблем. Почніть з найімовірнішої причини і працюйте вниз.
🚫 Не вдається взагалі дістатися до застосунку
Перевірка: Чи запущений сервер?
# Перевірити статус контейнерів:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml ps
# Має показати всі контейнери як "Up":
# tesla-carview-backend Up
# tesla-carview-frontend Up
# tesla-carview-nginx Up
Якщо будь-який контейнер показує "Exit" або "Restarting":
# Переглянути журнали для проблемного контейнера:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml logs backend
docker compose -f /opt/tesla-carview/docker-compose.prod.yml logs nginx
Перезапустити все:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml up -d
Перевірка: Чи правильно резолвиться домен?
nslookup tesla.yourdomain.com
# Має показати IP-адресу вашого сервера
# Або з вашого браузера: відвідайте https://dnschecker.org
Якщо DNS не резолвиться → зачекайте 10–30 хвилин після зміни записів DNS.
Перевірка: Чи блокує доступ фаєрвол?
ufw status
# Порти 80 і 443 мають показати ALLOW
Якщо їх немає:
ufw allow 80/tcp
ufw allow 443/tcp
🔴 "502 Bad Gateway" або "503 Service Unavailable"
Це означає, що nginx працює, але backend не відповідає.
# Перевірити backend:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml logs backend --tail=50
Поширена причина: backend впав через помилку запуску. Часто відсутня змінна .env або проблема з дозволами бази даних.
Виправити дозволи бази даних:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml down
chown -R 1000:1000 /var/lib/docker/volumes/tesla_data/
docker compose -f /opt/tesla-carview/docker-compose.prod.yml up -d
🔒 Помилки SSL/HTTPS ("Certificate not valid", "NET::ERR_CERT_EXPIRED")
Сертифікат Let's Encrypt закінчився або не був виданий правильно.
# Перевірити статус сертифіката:
certbot certificates
# Поновити вручну:
certbot renew --force-renewal
systemctl restart nginx
Якщо certbot не може поновити (DNS не резолвиться, порт 80 заблокований):
- Перевірте, що порт 80 відкритий у вашому фаєрволі ТА на вашому роутері (перенаправлення портів)
- Перевірте, що DNS вашого домену вказує на IP вашого сервера
🚗 Автомобіль не показує дані / показує "offline"
Tesla API не підключений
→ Перевірте Admin → System → System Health — розділ "Tesla Token" показує статус підключення.
Якщо закінчився: Admin → System → Reconnect Tesla Account
Автомобіль спить
Автомобілі Tesla засинають після 15–30 хвилин бездіяльності. Застосунок чекає, поки автомобіль прокинеться. Ви можете розбудити його вручну:
- Відкрийте офіційний застосунок Tesla на вашому телефоні
- Натисніть будь-яку функцію (клімат, сигнал), щоб розбудити автомобіль
- Tesla Carview має оновитися протягом 60 секунд
XP7 VIN (Model Y Juniper) — GPS не оновлюється
Деякі новіші автомобілі не повертають GPS-дані через стандартний REST API. Це обмеження Tesla. Fleet Telemetry надає GPS-дані для цих автомобілів — зверніться до Tesla Fleet Telemetry Access, якщо це потрібно.
🔑 "Tesla API повернув 403 Forbidden"
Усі виклики Tesla API повертають 403? Це зазвичай означає, що ваш обліковий запис розробника Tesla призупинено або має білингову проблему.
- Увійдіть до developer.tesla.com
- Перевірте на будь-які попередження про обліковий запис, білингові повідомлення або повідомлення про призупинення
- Завершіть будь-яку потрібну білингову інформацію (навіть для безкоштовного рівня може знадобитися кредитна картка)
- Після вирішення: Admin → System → Reconnect Tesla Account
🧭 Майстер налаштування завершується помилкою під час створення адміністратора
Симптом: Під час нової інсталяції крок 2 майстра (створення облікового запису адміністратора) завершується помилкою Transaction function cannot return a promise. Стосується версій до v3.32.5 включно.
Причина та вирішення: Помилка в /api/setup/init (#170) — виправлено у v3.32.6. Оновіться до останньої версії та знову відкрийте майстер:
cd /opt/tesla-carview
git pull
docker compose -f docker-compose.prod.yml up -d --build
Після цього обліковий запис адміністратора можна створити знову. Наявні інсталяції не зачіпаються.
🔐 Проблеми з входом
"Invalid username or password" — але я впевнений, що правильно
- Перевірте Caps Lock
- Якщо ви нещодавно змінили паролі, спробуйте старий (браузер міг закешувати старий)
- Адмін-облікові записи можуть скинути паролі користувачів: Admin → Users → ваш обліковий запис → Reset Password
"Account locked"
Після 5 невдалих спроб входу обліковий запис блокується на 15 хвилин. Зачекайте або попросіть адміна розблокувати.
Адміністратори можуть розблокувати через:
# У контейнері:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml exec backend node -e "
const db = require('./src/db/database.js');
db.getDb('YOUR-TENANT-ID').prepare('UPDATE users SET failed_login_attempts=0, locked_until=NULL WHERE username=?').run('USERNAME');
"
Забув пароль адміна
Якщо ви не можете увійти як адмін:
# Отримати shell у backend-контейнері:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml exec backend sh
# Скинути пароль (замініть значення):
node -e "
const bcrypt = require('bcrypt');
const { getDb } = require('./src/db/database.js');
const hash = bcrypt.hashSync('NewPassword123!', 12);
// Вам потрібен ID орендаря — знайдіть його в master.db:
// getDb викликається з UUID орендаря
"
Або простіше: відновіть з резервної копії, яку ви зробили, коли знали пароль.
📱 Push-сповіщення не працюють
Desktop
- Перевірте дозволи сповіщень браузера: натисніть значок замка в адресному рядку → Notifications → Allow
- Перевірте, що застосунок використовує HTTPS (потрібно для push)
- Спробуйте: Settings → Push Notifications → Test Notification
iOS (iPhone/iPad)
Push-сповіщення на iOS працюють лише з ярлика Home Screen (PWA), а не з вкладки браузера.
- Відкрийте Tesla Carview у Safari
- Натисніть Share → "Add to Home Screen"
- Відкрийте зі значка Home Screen → сповіщення тепер працюють
🐛 Команди не працюють (клімат, замки тощо)
Команди вимагають спарювання Virtual Key:
- Перевірте: Settings → Virtual Key — статус має показати "Paired"
- Якщо не спарено: відкрийте URL спарювання в браузері автомобіля Tesla (не на телефоні)
- Підтвердьте в застосунку Tesla на вашому телефоні
Також перевірте: Admin → System → Virtual Key Status
🗄️ Помилки бази даних ("disk I/O error", "database is locked")
Зазвичай викликано несправною SD-картою на Raspberry Pi. Перевірте:
# Перевірити файлову систему на помилки:
dmesg | grep -i "error\|fail\|corrupt"
# Перевірити здоров'я SD-карти:
df -h
Якщо ви бачите помилки I/O → ваша SD-карта виходить з ладу. Негайно зробіть резервну копію і переключіться на USB SSD: → Сховище Raspberry Pi
📋 Перегляд журналів
# Журнали застосунку backend:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml logs backend --tail=100 -f
# Журнал доступу nginx:
docker compose -f /opt/tesla-carview/docker-compose.prod.yml logs nginx --tail=50
# Системний журнал (fail2ban тощо):
journalctl -u fail2ban --since "1 hour ago"
# Бани fail2ban:
fail2ban-client status sshd
Сторінки завантажуються наполовину — допомагає лише перезавантаження
Типово: пункт меню натискається, але сторінка лишається порожньою або заповненою наполовину; після F5 усе на місці. Особливо часто одразу після масштабування карти.
Причина майже завжди — надто жорсткий ліміт запитів на зворотному проксі попереду. Одне масштабування карти завантажує 50–150 тайлів через /api/tiles/, а зміна сторінки надсилає 15–26 запитів. Якщо обидва ділять невеликий burst, решта отримує HTTP 429 — застосунок тоді ненадовго показує внизу праворуч «сервер обмежує запити» і, починаючи з v3.52.4, повторює їх самостійно.
Перевірка (усі 40 паралельних запитів мають повернути 200):
for i in $(seq 1 40); do curl -s -o /dev/null -w '%{http_code} ' https://vash-domen.com/api/health & done; wait; echo
Звідки прийшов 429, видно з відповіді: заголовок x-retry-in → Traefik, HTML-сторінка помилки → nginx (limit_req), ratelimit-limit/ratelimit-remaining → сам застосунок. Рекомендовані значення та готові шаблони — у docs/02-deployment.uk.md, розділ «Робота за власним зворотним проксі».
Немає повідомлення про обмеження, а клік по розділу нічого не робить? Тоді зазвичай інстанцію оновили, поки вкладка була відкрита. Стара сторінка запитує фрагменти коду (/assets/…), яких після оновлення вже немає (HTTP 404). Починаючи з v3.57.4 застосунок це розпізнає, також у Firefox і коли бракує CSS, і одразу завантажує розділ, на який ви натиснули. Старіші версії втрачали клік і потребували ручного F5.
Все ще застрягли?
- Перевірте GitHub Issues — можливо, у когось була та сама проблема
- Відкрийте нове issue з:
- Що ви спробували
- Що сталося (повідомлення про помилки, скріншоти)
- Ваше налаштування (модель Pi, провайдер VPS, версія OS)
- Відповідний вивід журналу (відредагуйте будь-які паролі чи секрети)