test-server2
This commit is contained in:
@@ -81,6 +81,13 @@ docker compose logs -f # Логи контейнеров
|
|||||||
|
|
||||||
## 🐛 Устранение неполадок
|
## 🐛 Устранение неполадок
|
||||||
|
|
||||||
|
### Ollama сервис не запускается:
|
||||||
|
```bash
|
||||||
|
# Если видите ошибку "permission denied" для /nonexistent
|
||||||
|
chmod +x fix-ollama.sh
|
||||||
|
sudo ./fix-ollama.sh
|
||||||
|
```
|
||||||
|
|
||||||
### GPU не найден:
|
### GPU не найден:
|
||||||
```bash
|
```bash
|
||||||
nvidia-smi # Проверка драйверов
|
nvidia-smi # Проверка драйверов
|
||||||
|
|||||||
57
fix-ollama.sh
Normal file
57
fix-ollama.sh
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fix script for Ollama service permission issues
|
||||||
|
|
||||||
|
echo "🔧 Исправление проблем с сервисом Ollama..."
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
# Stop the service
|
||||||
|
echo "Остановка сервиса Ollama..."
|
||||||
|
sudo systemctl stop ollama
|
||||||
|
|
||||||
|
# Fix user home directory
|
||||||
|
echo "Исправление домашней директории пользователя aiserver..."
|
||||||
|
sudo usermod -d /opt/ai-server aiserver
|
||||||
|
|
||||||
|
# Create proper Ollama directory
|
||||||
|
echo "Создание правильной директории для Ollama..."
|
||||||
|
sudo mkdir -p /opt/ai-server/.ollama
|
||||||
|
sudo chown -R aiserver:aiserver /opt/ai-server/.ollama
|
||||||
|
sudo chmod 755 /opt/ai-server/.ollama
|
||||||
|
|
||||||
|
# Update systemd service
|
||||||
|
echo "Обновление systemd сервиса..."
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
|
||||||
|
# Start the service
|
||||||
|
echo "Запуск сервиса Ollama..."
|
||||||
|
sudo systemctl start ollama
|
||||||
|
|
||||||
|
# Wait a moment
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
# Check status
|
||||||
|
if sudo systemctl is-active --quiet ollama; then
|
||||||
|
echo -e "${GREEN}✅ Ollama сервис успешно запущен!${NC}"
|
||||||
|
|
||||||
|
# Test connection
|
||||||
|
if curl -s http://localhost:11434 >/dev/null 2>&1; then
|
||||||
|
echo -e "${GREEN}✅ Ollama API доступен${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠️ Ollama API пока недоступен (может потребоваться время)${NC}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}❌ Ошибка запуска Ollama сервиса${NC}"
|
||||||
|
echo "Логи:"
|
||||||
|
sudo journalctl -u ollama --no-pager -l | tail -10
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}🎉 Исправление завершено!${NC}"
|
||||||
|
echo "Теперь можете использовать: ai-start, ai-status"
|
||||||
@@ -178,10 +178,15 @@ install_ollama() {
|
|||||||
|
|
||||||
# Создание пользователя для сервиса
|
# Создание пользователя для сервиса
|
||||||
if ! id "$SERVICE_USER" &>/dev/null; then
|
if ! id "$SERVICE_USER" &>/dev/null; then
|
||||||
useradd -r -s /bin/false -d /nonexistent $SERVICE_USER
|
useradd -r -s /bin/false -d /opt/ai-server -m $SERVICE_USER
|
||||||
usermod -aG docker $SERVICE_USER
|
usermod -aG docker $SERVICE_USER
|
||||||
log_success "Пользователь $SERVICE_USER создан"
|
log_success "Пользователь $SERVICE_USER создан"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Создание домашней директории Ollama
|
||||||
|
mkdir -p /opt/ai-server/.ollama
|
||||||
|
chown -R $SERVICE_USER:$SERVICE_USER /opt/ai-server/.ollama
|
||||||
|
log_success "Директория Ollama создана"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Настройка systemd сервиса для Ollama
|
# Настройка systemd сервиса для Ollama
|
||||||
@@ -233,14 +238,14 @@ install_models() {
|
|||||||
log_step "Установка модели $DEFAULT_MODEL..."
|
log_step "Установка модели $DEFAULT_MODEL..."
|
||||||
log_info "Это может занять несколько минут в зависимости от скорости интернета..."
|
log_info "Это может занять несколько минут в зависимости от скорости интернета..."
|
||||||
|
|
||||||
# Установка модели от имени пользователя сервиса
|
# Установка модели от имени пользователя сервиса с правильной переменной окружения
|
||||||
sudo -u $SERVICE_USER ollama pull $DEFAULT_MODEL
|
sudo -u $SERVICE_USER OLLAMA_HOME=/opt/ai-server/.ollama ollama pull $DEFAULT_MODEL
|
||||||
|
|
||||||
log_success "Модель $DEFAULT_MODEL установлена"
|
log_success "Модель $DEFAULT_MODEL установлена"
|
||||||
|
|
||||||
# Список доступных моделей
|
# Список доступных моделей
|
||||||
log_info "Доступные модели:"
|
log_info "Доступные модели:"
|
||||||
sudo -u $SERVICE_USER ollama list
|
sudo -u $SERVICE_USER OLLAMA_HOME=/opt/ai-server/.ollama ollama list
|
||||||
}
|
}
|
||||||
|
|
||||||
# Создание рабочей директории
|
# Создание рабочей директории
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ Environment="OLLAMA_MAX_LOADED_MODELS=2"
|
|||||||
Environment="OLLAMA_FLASH_ATTENTION=1"
|
Environment="OLLAMA_FLASH_ATTENTION=1"
|
||||||
Environment="CUDA_VISIBLE_DEVICES=0"
|
Environment="CUDA_VISIBLE_DEVICES=0"
|
||||||
Environment="OLLAMA_GPU_OVERHEAD=0.2"
|
Environment="OLLAMA_GPU_OVERHEAD=0.2"
|
||||||
|
Environment="OLLAMA_HOME=/opt/ai-server/.ollama"
|
||||||
WorkingDirectory=/opt/ai-server
|
WorkingDirectory=/opt/ai-server
|
||||||
StandardOutput=journal
|
StandardOutput=journal
|
||||||
StandardError=journal
|
StandardError=journal
|
||||||
@@ -26,7 +27,6 @@ StandardError=journal
|
|||||||
NoNewPrivileges=true
|
NoNewPrivileges=true
|
||||||
PrivateTmp=true
|
PrivateTmp=true
|
||||||
ProtectSystem=strict
|
ProtectSystem=strict
|
||||||
ProtectHome=true
|
|
||||||
ReadWritePaths=/opt/ai-server
|
ReadWritePaths=/opt/ai-server
|
||||||
|
|
||||||
# Resource limits for RTX 2060
|
# Resource limits for RTX 2060
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ show_menu() {
|
|||||||
|
|
||||||
list_models() {
|
list_models() {
|
||||||
echo -e "${PURPLE}📦 Установленные модели:${NC}"
|
echo -e "${PURPLE}📦 Установленные модели:${NC}"
|
||||||
sudo -u aiserver ollama list
|
sudo -u aiserver OLLAMA_HOME=/opt/ai-server/.ollama ollama list
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if command -v nvidia-smi &> /dev/null; then
|
if command -v nvidia-smi &> /dev/null; then
|
||||||
@@ -50,7 +50,7 @@ install_recommended() {
|
|||||||
desc="${descriptions[$i]}"
|
desc="${descriptions[$i]}"
|
||||||
|
|
||||||
echo -e "${BLUE}Устанавливаю: $model - $desc${NC}"
|
echo -e "${BLUE}Устанавливаю: $model - $desc${NC}"
|
||||||
sudo -u aiserver ollama pull "$model"
|
sudo -u aiserver OLLAMA_HOME=/opt/ai-server/.ollama ollama pull "$model"
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo -e "${GREEN}✅ $model установлена${NC}"
|
echo -e "${GREEN}✅ $model установлена${NC}"
|
||||||
@@ -73,7 +73,7 @@ install_custom() {
|
|||||||
echo -e "${BLUE}Установка модели: $model_name${NC}"
|
echo -e "${BLUE}Установка модели: $model_name${NC}"
|
||||||
echo -e "${YELLOW}Это может занять несколько минут...${NC}"
|
echo -e "${YELLOW}Это может занять несколько минут...${NC}"
|
||||||
|
|
||||||
sudo -u aiserver ollama pull "$model_name"
|
sudo -u aiserver OLLAMA_HOME=/opt/ai-server/.ollama ollama pull "$model_name"
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo -e "${GREEN}✅ Модель $model_name успешно установлена${NC}"
|
echo -e "${GREEN}✅ Модель $model_name успешно установлена${NC}"
|
||||||
@@ -84,7 +84,7 @@ install_custom() {
|
|||||||
|
|
||||||
remove_model() {
|
remove_model() {
|
||||||
echo -e "${PURPLE}📦 Доступные модели для удаления:${NC}"
|
echo -e "${PURPLE}📦 Доступные модели для удаления:${NC}"
|
||||||
sudo -u aiserver ollama list
|
sudo -u aiserver OLLAMA_HOME=/opt/ai-server/.ollama ollama list
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo -e "${YELLOW}Введите название модели для удаления:${NC}"
|
echo -e "${YELLOW}Введите название модели для удаления:${NC}"
|
||||||
@@ -99,7 +99,7 @@ remove_model() {
|
|||||||
read -r confirm
|
read -r confirm
|
||||||
|
|
||||||
if [[ $confirm =~ ^[Yy]$ ]]; then
|
if [[ $confirm =~ ^[Yy]$ ]]; then
|
||||||
sudo -u aiserver ollama rm "$model_name"
|
sudo -u aiserver OLLAMA_HOME=/opt/ai-server/.ollama ollama rm "$model_name"
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo -e "${GREEN}✅ Модель $model_name удалена${NC}"
|
echo -e "${GREEN}✅ Модель $model_name удалена${NC}"
|
||||||
@@ -113,7 +113,7 @@ remove_model() {
|
|||||||
|
|
||||||
test_model() {
|
test_model() {
|
||||||
echo -e "${PURPLE}📦 Доступные модели:${NC}"
|
echo -e "${PURPLE}📦 Доступные модели:${NC}"
|
||||||
sudo -u aiserver ollama list
|
sudo -u aiserver OLLAMA_HOME=/opt/ai-server/.ollama ollama list
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
echo -e "${YELLOW}Введите название модели для тестирования:${NC}"
|
echo -e "${YELLOW}Введите название модели для тестирования:${NC}"
|
||||||
@@ -127,7 +127,7 @@ test_model() {
|
|||||||
echo -e "${BLUE}Тестирование модели: $model_name${NC}"
|
echo -e "${BLUE}Тестирование модели: $model_name${NC}"
|
||||||
echo -e "${YELLOW}Задаю тестовый вопрос...${NC}"
|
echo -e "${YELLOW}Задаю тестовый вопрос...${NC}"
|
||||||
|
|
||||||
sudo -u aiserver ollama run "$model_name" "Привет! Как дела? Ответь кратко."
|
sudo -u aiserver OLLAMA_HOME=/opt/ai-server/.ollama ollama run "$model_name" "Привет! Как дела? Ответь кратко."
|
||||||
}
|
}
|
||||||
|
|
||||||
show_vram_usage() {
|
show_vram_usage() {
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ if systemctl is-active --quiet ollama; then
|
|||||||
|
|
||||||
# List models
|
# List models
|
||||||
echo " 📦 Установленные модели:"
|
echo " 📦 Установленные модели:"
|
||||||
sudo -u aiserver ollama list 2>/dev/null | tail -n +2 | while read -r line; do
|
sudo -u aiserver OLLAMA_HOME=/opt/ai-server/.ollama ollama list 2>/dev/null | tail -n +2 | while read -r line; do
|
||||||
if [[ -n "$line" ]]; then
|
if [[ -n "$line" ]]; then
|
||||||
model_name=$(echo "$line" | awk '{print $1}')
|
model_name=$(echo "$line" | awk '{print $1}')
|
||||||
model_size=$(echo "$line" | awk '{print $2}')
|
model_size=$(echo "$line" | awk '{print $2}')
|
||||||
|
|||||||
Reference in New Issue
Block a user