LINUX GUIDE Главная

Установка в Linux

Полное руководство по установке, настройке и запуску File Manager на Linux-сервере

📋 Требования

  • Go 1.21+ — для сборки из исходников
  • twcss (или Node.js + Tailwind CLI) — для компиляции CSS
  • 7zip или tar — для распаковки архива
  • sudo — для установки как сервис

Быстрый запуск из исходников

Идеально для тестирования и разработки. Не требует установки в систему.

1

Установка Go

bash
# Ubuntu/Debian
sudo apt update
sudo apt install golang-go

# Проверка
go version
2

Подготовка проекта

bash
mkdir -p ~/filemanager
cd ~/filemanager

# Скопируйте файлы проекта:
# ├── main.go
# ├── config.json
# ├── go.mod
# ├── go.sum
# ├── templates/
# │   └── index.html
# └── static/
#     └── css/
#         └── style.css
3

Установка зависимостей

bash
go mod tidy
4

Компиляция CSS

bash
# Если есть twcss через Wine:
wine twcss431.exe -i input.css -o static/css/style.css

# Или через npx (нужен Node.js):
npx @tailwindcss/cli -i input.css -o static/css/style.css
5

Настройка config.json

json
{
  "listen_address": "127.0.0.1",
  "listen_port": "8080",
  "database_path": "database.db",
  "storage_directory": "user_files",
  "use_https": false,
  "session_ttl_days": 30,
  "user_quota_mb": 1024
}
⚠️ Если нужен доступ из сети, замените 127.0.0.1 на 0.0.0.0
6

Запуск

bash
go run main.go

Откройте браузер: http://127.0.0.1:8080

🚀 Production-сборка

Создание единого бинарного файла для развёртывания.

1

Сборка бинарника

bash
cd ~/filemanager

# Статическая сборка (без зависимостей от системных библиотек)
CGO_ENABLED=0 go build -ldflags="-s -w" -o filemanager main.go

# Проверка
ls -lh filemanager
file filemanager
2

Создание рабочей папки

bash
sudo mkdir -p /opt/filemanager
sudo cp filemanager /opt/filemanager/
sudo cp config.json /opt/filemanager/
sudo chmod +x /opt/filemanager/filemanager
3

Создание пользователя для сервиса

bash
sudo useradd -r -s /bin/false -d /opt/filemanager filemanager
sudo chown -R filemanager:filemanager /opt/filemanager
ℹ️ Запуск от отдельного пользователя повышает безопасность
4

Ручной запуск

bash
cd /opt/filemanager
./filemanager

⚙️ Установка как systemd-сервис

Автозапуск при загрузке системы, автоматический перезапуск при сбоях.

1

Создание unit-файла

bash
sudo nano /etc/systemd/system/filemanager.service

Вставьте содержимое:

ini
[Unit]
Description=File Manager - веб-приложение для управления файлами
After=network.target
Wants=network.target

[Service]
Type=simple
User=filemanager
Group=filemanager
WorkingDirectory=/opt/filemanager
ExecStart=/opt/filemanager/filemanager
Restart=on-failure
RestartSec=5
StandardOutput=append:/var/log/filemanager/filemanager.log
StandardError=append:/var/log/filemanager/filemanager-error.log

# Безопасность
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/opt/filemanager
PrivateTmp=true

# Лимиты
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
2

Создание папки для логов

bash
sudo mkdir -p /var/log/filemanager
sudo chown filemanager:filemanager /var/log/filemanager
3

Активация и запуск сервиса

bash
# Перезагрузить systemd
sudo systemctl daemon-reload

# Включить автозапуск
sudo systemctl enable filemanager

# Запустить сервис
sudo systemctl start filemanager

# Проверить статус
sudo systemctl status filemanager
4

Управление сервисом

bash
# Остановить
sudo systemctl stop filemanager

# Перезапустить
sudo systemctl restart filemanager

# Посмотреть логи в реальном времени
sudo journalctl -u filemanager -f

# Или через файлы
tail -f /var/log/filemanager/filemanager.log

🔥 Настройка Firewall

UFW (Ubuntu/Debian)

bash
sudo ufw allow 8080/tcp
sudo ufw reload
sudo ufw status

firewalld (CentOS/RHEL/Fedora)

bash
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

iptables (универсально)

bash
sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4

🔍 Диагностика проблем

Проверка порта

bash
sudo ss -tlnp | grep 8080
# или
sudo netstat -tlnp | grep 8080

Типичные ошибки

Ошибка Решение
permission denied на порт 80 Используйте порт >1024 или запустите от root
database.db: permission denied sudo chown filemanager:filemanager database.db
bind: address already in use Другой процесс занимает порт: sudo lsof -i :8080
no such file or directory для бинарника Проверьте file filemanager — возможно, собрана под другую архитектуру
CSS не загружается Проверьте ls -la static/css/style.css и права доступа

Итоговая структура production-установки

/opt/filemanager/ ├── filemanager # Бинарник (встроены HTML + CSS) ├── config.json # Настройки ├── database.db # Создаётся автоматически └── user_files/ # Создаётся автоматически ├── user1/ └── user2/ /var/log/filemanager/ ├── filemanager.log └── filemanager-error.log

🔄 Обновление версии

bash
# 1. Остановить сервис
sudo systemctl stop filemanager

# 2. Собрать новый бинарник
cd ~/filemanager
CGO_ENABLED=0 go build -ldflags="-s -w" -o filemanager main.go

# 3. Заменить старый
sudo cp filemanager /opt/filemanager/
sudo chown filemanager:filemanager /opt/filemanager/filemanager

# 4. Запустить
sudo systemctl start filemanager

Быстрая проверка работоспособности

bash
# Тест локально
curl -I http://127.0.0.1:8080

# Тест из сети (с другого компьютера)
curl -I http://<IP-сервера>:8080

# Ожидаемый ответ: HTTP/1.1 200 OK
✅ После первого запуска зарегистрируйте первого пользователя — он автоматически получит роль admin