• 0.40 a319a8c6d5

    0.40 Stable

    admin released this 2026-04-17 01:49:42 +00:00 | 0 commits to main since this release

    `
    Файлообменник (fileshare) — сведения о релизе

    Текущая версия: 0.40
    Дата фиксации описания: 2026-04-17


    1. Назначение

    Веб-приложение на Go для обмена файлами: загрузка на сервер, хранение на диске,
    метаданные в PostgreSQL, скачивание по ссылке. Есть простая HTML-страница и REST API.
    По умолчанию HTTP-порт приложения: 8090.


    1. Что сделано в проекте

    2.1 Язык и зависимости

    • Go 1.22
    • github.com/lib/pq — драйвер PostgreSQL
    • github.com/google/uuid — идентификаторы файлов

    2.2 Структура каталогов

    • cmd/fileshare/ — точка входа (main.go), встроенная статика web/
    • cmd/fileshare/web/ — index.html (форма загрузки, список файлов)
    • internal/config/ — переменные окружения (LISTEN_ADDR, DATABASE_URL, …)
    • internal/store/ — работа с БД, миграция таблицы при старте
    • internal/handlers/ — HTTP-обработчики API и отдача файлов
    • internal/auth/ — JWT (HS256)
    • internal/version/ — константа версии (0.40)

    2.3 База данных (PostgreSQL)

    • Таблица files: id (UUID), исходное имя, тип содержимого, размер,
      storage_key (путь к файлу на диске), created_at
    • Индекс по дате создания для списка

    2.4 Хранение файлов на диске

    • Каталог из UPLOAD_DIR (по умолчанию ./data/uploads; в Docker — /data/uploads)
    • Подкаталоги по первым символам UUID: ??/??/{uuid}.bin

    2.5 HTTP API

    • GET /health — проверка работы; JSON: status, version (0.10)
    • GET /api/files — список файлов (JSON), поле download_url
    • POST /api/files — multipart/form-data, поле "file"
    • GET /api/files/{id}/download — скачивание (Content-Disposition: attachment)
    • GET / — веб-интерфейс (загрузка и список)

    2.6 Docker

    • Dockerfile: multi-stage сборка (Alpine), бинарник без CGO
    • docker-compose.yml:
      • сервис db — postgres:16-alpine, том pgdata
      • сервис app — приложение, порт 8090:8090, том uploads для файлов
      • зависимость app от здоровья БД (healthcheck)
    • Переменные: POSTGRES_PASSWORD (из .env или значение по умолчанию),
      DATABASE_URL для приложения, MAX_UPLOAD_MB и др.

    2.7 Установка

    • install.ps1 (Windows, PowerShell) — проверка Docker, копирование .env из
      .env.example при отсутствии .env, docker compose up -d --build
    • install.sh (Unix) — то же для sh

    2.8 Конфигурация через окружение

    • DATABASE_URL — обязательно при локальном запуске без compose
    • LISTEN_ADDR — например :8090
    • UPLOAD_DIR — каталог загрузок
    • MAX_UPLOAD_MB — лимит размера тела запроса (по умолчанию 100)
    • PUBLIC_BASE_URL — опционально, базовый URL для ссылок в JSON за reverse-proxy

    2.9 Репозиторий Git

    • .gitignore — бинарники, .env, data/, uploads/, IDE и т.д.
    • .gitattributes — eol для go, yaml, sh, ps1
    • .dockerignore — уменьшение контекста сборки

    1. Публикация версии 0.10

    Версия зафиксирована в коде: internal/version/version.go (константа Version = "0.10").
    При старте сервер пишет в лог: fileshare v0.10 listening on …
    Ответ GET /health включает поле "version": "0.10".

    Рекомендуемые шаги для «публикации»:

    • git add -A && git commit -m "Release 0.10"
    • при использовании тегов: git tag -a v0.10 -m "fileshare 0.10"
    • сборка образа: docker compose build
    • выкладка: по вашему registry/серверу — отправка образа и compose-файлов

    1. Быстрый старт (напоминание)

    Windows: .\install.ps1
    Затем в браузере: http://localhost:8090/
    Проверка версии: http://localhost:8090/health

    ================================================================================
    `

    Downloads