Полное руководство по установке, настройке и запуску File Manager на Linux-сервере
Идеально для тестирования и разработки. Не требует установки в систему.
# Ubuntu/Debian sudo apt update sudo apt install golang-go # Проверка go version
mkdir -p ~/filemanager cd ~/filemanager # Скопируйте файлы проекта: # ├── main.go # ├── config.json # ├── go.mod # ├── go.sum # ├── templates/ # │ └── index.html # └── static/ # └── css/ # └── style.css
go mod tidy
# Если есть 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
{
"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
go run main.go
Откройте браузер: http://127.0.0.1:8080
Создание единого бинарного файла для развёртывания.
cd ~/filemanager # Статическая сборка (без зависимостей от системных библиотек) CGO_ENABLED=0 go build -ldflags="-s -w" -o filemanager main.go # Проверка ls -lh filemanager file filemanager
sudo mkdir -p /opt/filemanager sudo cp filemanager /opt/filemanager/ sudo cp config.json /opt/filemanager/ sudo chmod +x /opt/filemanager/filemanager
sudo useradd -r -s /bin/false -d /opt/filemanager filemanager sudo chown -R filemanager:filemanager /opt/filemanager
cd /opt/filemanager ./filemanager
Автозапуск при загрузке системы, автоматический перезапуск при сбоях.
sudo nano /etc/systemd/system/filemanager.service
Вставьте содержимое:
[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
sudo mkdir -p /var/log/filemanager sudo chown filemanager:filemanager /var/log/filemanager
# Перезагрузить systemd sudo systemctl daemon-reload # Включить автозапуск sudo systemctl enable filemanager # Запустить сервис sudo systemctl start filemanager # Проверить статус sudo systemctl status filemanager
# Остановить sudo systemctl stop filemanager # Перезапустить sudo systemctl restart filemanager # Посмотреть логи в реальном времени sudo journalctl -u filemanager -f # Или через файлы tail -f /var/log/filemanager/filemanager.log
sudo ufw allow 8080/tcp sudo ufw reload sudo ufw status
sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload sudo firewall-cmd --list-ports
sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT sudo iptables-save | sudo tee /etc/iptables/rules.v4
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 и права доступа |
# 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
# Тест локально curl -I http://127.0.0.1:8080 # Тест из сети (с другого компьютера) curl -I http://<IP-сервера>:8080 # Ожидаемый ответ: HTTP/1.1 200 OK