2026-04-17 00:09:13 +00:00
2026-04-17 00:00:28 +00:00
2026-04-17 00:00:28 +00:00
2026-04-17 00:09:13 +00:00
1.0
2026-04-17 00:08:57 +00:00

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

Текущая версия: 0.10 Дата фиксации описания: 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/version/ — константа версии (сейчас 0.10)

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

================================================================================

S
Description
Файлообменник на GO сайт
Readme AGPL-3.0 5.4 MiB
0.40 Latest
2026-04-17 01:49:42 +00:00
Languages
HTML 100%