Update files

This commit is contained in:
glpshchn 2026-01-01 22:00:49 +03:00
parent 4f39cb38fe
commit 200146fe4e
4 changed files with 107 additions and 7 deletions

100
UPDATE_DOMAIN.md Normal file
View File

@ -0,0 +1,100 @@
# Инструкция по обновлению домена с nakama.glpshchn.ru на nkm.guru
## ✅ Что уже обновлено в коде:
- `backend/bot.js` - обновлены все упоминания домена
- `backend/bots/mainBot.js` - обновлен URL миниаппа
- `update-server.sh` - обновлена ссылка для проверки
## 🔧 Что нужно сделать на сервере:
### 1. Обновить переменные окружения
В файле `.env` на сервере обновите:
```bash
# Старый домен (удалить или заменить):
# FRONTEND_URL=https://nakama.glpshchn.ru
# VITE_API_URL=https://nakama.glpshchn.ru/api
# Новый домен:
FRONTEND_URL=https://nkm.guru
VITE_API_URL=https://nkm.guru/api
```
### 2. Обновить nginx конфигурацию
Проверьте файл `/etc/nginx/sites-available/nakama` (или аналогичный) и убедитесь, что:
```nginx
server {
listen 443 ssl http2;
server_name nkm.guru; # ← Должен быть новый домен
ssl_certificate /etc/letsencrypt/live/nkm.guru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nkm.guru/privkey.pem;
# ...
}
```
Если сертификат еще не получен для нового домена:
```bash
sudo certbot certonly --standalone -d nkm.guru
```
### 3. Пересобрать frontend
```bash
cd /var/www/nakama/frontend
# Убедитесь, что переменные окружения установлены
export VITE_API_URL=https://nkm.guru/api
# Пересоберите frontend
npm run build
# Или если используете Docker:
cd /var/www/nakama
docker-compose build frontend
docker-compose up -d frontend
```
### 4. Перезапустить backend
```bash
# Если используете PM2:
pm2 restart nakama-backend
# Или если используете Docker:
docker-compose restart backend
```
### 5. Перезагрузить nginx
```bash
sudo nginx -t # Проверить конфигурацию
sudo systemctl reload nginx
```
### 6. Проверить работу
```bash
# Проверить API:
curl https://nkm.guru/api/health
# Проверить frontend:
curl -I https://nkm.guru
```
## ⚠️ Важно:
1. **SSL сертификат**: Убедитесь, что SSL сертификат получен для нового домена `nkm.guru`
2. **DNS**: Убедитесь, что DNS записи указывают на правильный IP сервера
3. **Кэш браузера**: После обновления очистите кэш браузера или используйте режим инкогнито
## 🔍 Проверка:
После обновления проверьте в консоли браузера, что запросы идут на правильный домен:
- Должно быть: `https://nkm.guru/api/posts`
- Не должно быть: `https://nakama.glpshchn.ru/api/posts`

View File

@ -96,7 +96,7 @@ async function sendPhotoToUser(userId, photoUrl, caption) {
// Если это все еще относительный URL (локальный файл), используем публичный URL // Если это все еще относительный URL (локальный файл), используем публичный URL
if (finalPhotoUrl.startsWith('/')) { if (finalPhotoUrl.startsWith('/')) {
const baseUrl = process.env.FRONTEND_URL || process.env.API_URL || 'https://nakama.glpshchn.ru'; const baseUrl = process.env.FRONTEND_URL || process.env.API_URL || 'https://nkm.guru';
finalPhotoUrl = `${baseUrl}${finalPhotoUrl}`; finalPhotoUrl = `${baseUrl}${finalPhotoUrl}`;
} }
@ -104,7 +104,7 @@ async function sendPhotoToUser(userId, photoUrl, caption) {
// Если это оригинальный URL от e621/gelbooru, используем его напрямую // Если это оригинальный URL от e621/gelbooru, используем его напрямую
const isPublicUrl = finalPhotoUrl.includes('e621.net') || const isPublicUrl = finalPhotoUrl.includes('e621.net') ||
finalPhotoUrl.includes('gelbooru.com') || finalPhotoUrl.includes('gelbooru.com') ||
finalPhotoUrl.includes('nakama.glpshchn.ru'); finalPhotoUrl.includes('nkm.guru');
const isVideo = looksLikeVideo(finalPhotoUrl); const isVideo = looksLikeVideo(finalPhotoUrl);
@ -227,14 +227,14 @@ async function sendPhotosToUser(userId, photos) {
// Если это относительный URL, преобразуем в полный // Если это относительный URL, преобразуем в полный
if (photoUrl.startsWith('/')) { if (photoUrl.startsWith('/')) {
const baseUrl = process.env.FRONTEND_URL || process.env.API_URL || 'https://nakama.glpshchn.ru'; const baseUrl = process.env.FRONTEND_URL || process.env.API_URL || 'https://nkm.guru';
photoUrl = `${baseUrl}${photoUrl}`; photoUrl = `${baseUrl}${photoUrl}`;
} }
// Проверяем, является ли URL публично доступным // Проверяем, является ли URL публично доступным
const isPublicUrl = photoUrl.includes('e621.net') || const isPublicUrl = photoUrl.includes('e621.net') ||
photoUrl.includes('gelbooru.com') || photoUrl.includes('gelbooru.com') ||
photoUrl.includes('nakama.glpshchn.ru'); photoUrl.includes('nkm.guru');
const isVideo = looksLikeVideo(photoUrl, photo.contentType); const isVideo = looksLikeVideo(photoUrl, photo.contentType);
@ -313,7 +313,7 @@ async function sendAudioToUser(userId, audioUrl, metadata = {}) {
// Если это относительный URL (локальный файл), используем публичный URL // Если это относительный URL (локальный файл), используем публичный URL
if (finalAudioUrl.startsWith('/')) { if (finalAudioUrl.startsWith('/')) {
const baseUrl = process.env.FRONTEND_URL || process.env.API_URL || 'https://nakama.glpshchn.ru'; const baseUrl = process.env.FRONTEND_URL || process.env.API_URL || 'https://nkm.guru';
finalAudioUrl = `${baseUrl}${finalAudioUrl}`; finalAudioUrl = `${baseUrl}${finalAudioUrl}`;
} }

View File

@ -125,7 +125,7 @@ const handleCommand = async (message) => {
} }
// Использовать web_app с правильным URL миниаппа // Использовать web_app с правильным URL миниаппа
const miniappUrl = 'https://nakama.glpshchn.ru/'; const miniappUrl = 'https://nkm.guru/';
await sendMessage(chatId, startMessage, { await sendMessage(chatId, startMessage, {
reply_markup: { reply_markup: {
inline_keyboard: [[ inline_keyboard: [[

View File

@ -67,5 +67,5 @@ echo "Последние логи:"
pm2 logs nakama-backend --lines 20 --nostream pm2 logs nakama-backend --lines 20 --nostream
echo "" echo ""
echo "Проверьте приложение: https://nakama.glpshchn.ru" echo "Проверьте приложение: https://nkm.guru"