Файлообменник

Установка файлообменника

Сервер на Go, база PostgreSQL, запуск через Docker Compose. Порт приложения по умолчанию: 8090.

1. Что нужно

2. Windows (PowerShell)

В каталоге проекта выполните:

.\install.ps1

Скрипт проверит наличие Docker, при отсутствии файла .env скопирует его из .env.example, затем выполнит сборку и запуск контейнеров.

3. Linux и macOS

Сделайте скрипт исполняемым и запустите:

chmod +x install.sh
./install.sh

4. Установка вручную

  1. Скопируйте .env.example в .env.
  2. Откройте .env и задайте надёжный POSTGRES_PASSWORD (для Docker это пароль пользователя PostgreSQL).
  3. В том же каталоге выполните:
docker compose up -d --build

При первом запуске образ приложения соберётся, поднимется PostgreSQL и сервис с файлообменником.

5. Файл .env

6. Использование веб-интерфейса

Откройте личный кабинет (/dashboard.html): регистрация, вход, папки, загрузка с прогрессом и общие ссылки. Ответ API после загрузки — JSON с полями files и count.

Роли: пользователь (по умолчанию при регистрации), модератор и администратор. Страница админки показывает список пользователей модераторам и администраторам; назначать роли и группы может только администратор.

Группы (v0.40): у каждой группы задаются лимит места на диске (МБ), максимум папок, время ожидания и HTML-баннеры перед скачиванием по публичной ссылке, опционально начальное значение счётчика. 0 = без лимита. Новые пользователи попадают в группу default.

При первом поднятии базы создаётся учётная запись с логином admin, паролем admin и ролью администратора (служебный email: admin@fileshare.local). В продакшене сразу смените пароль.

7. После установки

8. Остановка и данные

Остановить контейнеры:

docker compose down

Файлы загрузок и данные PostgreSQL хранятся в именованных томах Docker (uploads и pgdata), поэтому после down они не удаляются. Чтобы удалить и тома (осторожно, потеряете файлы и БД):

docker compose down -v

9. Запуск без Docker (для разработки)

Нужен установленный PostgreSQL и переменная окружения DATABASE_URL, например:

set DATABASE_URL=postgres://user:pass@localhost:5432/fileshare?sslmode=disable
go run ./cmd/fileshare

В Linux/macOS вместо set используйте export DATABASE_URL=....