85 lines
4.9 KiB
HTML
85 lines
4.9 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Установка — Файлообменник</title>
|
||
<style>
|
||
:root { font-family: system-ui, sans-serif; line-height: 1.55; }
|
||
body { max-width: 52rem; margin: 2rem auto; padding: 0 1rem; }
|
||
h1 { font-size: 1.5rem; margin-bottom: 0.5rem; }
|
||
h2 { font-size: 1.15rem; margin-top: 1.75rem; }
|
||
h3 { font-size: 1rem; margin-top: 1.25rem; }
|
||
a { color: #2563eb; }
|
||
nav { margin-bottom: 1.5rem; font-size: 0.95rem; }
|
||
pre, code {
|
||
font-family: ui-monospace, Consolas, monospace;
|
||
font-size: 0.9rem;
|
||
background: #f4f4f5;
|
||
border-radius: 6px;
|
||
}
|
||
pre { padding: 0.75rem 1rem; overflow-x: auto; }
|
||
code { padding: 0.15rem 0.35rem; }
|
||
pre code { padding: 0; background: none; }
|
||
ul { padding-left: 1.25rem; }
|
||
li { margin: 0.35rem 0; }
|
||
.note { color: #52525b; font-size: 0.95rem; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<nav><a href="/">← На главную</a></nav>
|
||
<h1>Установка файлообменника</h1>
|
||
<p class="note">Сервер на Go, база PostgreSQL, запуск через Docker Compose. Порт приложения по умолчанию: <strong>8090</strong>.</p>
|
||
|
||
<h2>1. Что нужно</h2>
|
||
<ul>
|
||
<li><strong>Docker</strong> и <strong>Docker Compose</strong> (в Docker Desktop для Windows уже есть Compose).</li>
|
||
<li>Исходники проекта (каталог с <code>docker-compose.yml</code>, <code>Dockerfile</code> и скриптами установки).</li>
|
||
</ul>
|
||
|
||
<h2>2. Windows (PowerShell)</h2>
|
||
<p>В каталоге проекта выполните:</p>
|
||
<pre><code>.\install.ps1</code></pre>
|
||
<p>Скрипт проверит наличие Docker, при отсутствии файла <code>.env</code> скопирует его из <code>.env.example</code>, затем выполнит сборку и запуск контейнеров.</p>
|
||
|
||
<h2>3. Linux и macOS</h2>
|
||
<p>Сделайте скрипт исполняемым и запустите:</p>
|
||
<pre><code>chmod +x install.sh
|
||
./install.sh</code></pre>
|
||
|
||
<h2>4. Установка вручную</h2>
|
||
<ol>
|
||
<li>Скопируйте <code>.env.example</code> в <code>.env</code>.</li>
|
||
<li>Откройте <code>.env</code> и задайте надёжный <code>POSTGRES_PASSWORD</code> (для Docker это пароль пользователя PostgreSQL).</li>
|
||
<li>В том же каталоге выполните:</li>
|
||
</ol>
|
||
<pre><code>docker compose up -d --build</code></pre>
|
||
<p>При первом запуске образ приложения соберётся, поднимется PostgreSQL и сервис с файлообменником.</p>
|
||
|
||
<h2>5. Файл <code>.env</code></h2>
|
||
<ul>
|
||
<li><code>POSTGRES_PASSWORD</code> — пароль БД (должен совпадать с тем, что подставляется в строку подключения в Compose).</li>
|
||
<li><code>MAX_UPLOAD_MB</code> — необязательно; лимит размера загрузки в мегабайтах (по умолчанию 100).</li>
|
||
<li><code>PUBLIC_BASE_URL</code> — если сервер за обратным прокси с другим хостом/HTTPS, можно указать публичный базовый URL для корректных ссылок в API.</li>
|
||
</ul>
|
||
|
||
<h2>6. После установки</h2>
|
||
<ul>
|
||
<li>Откройте в браузере: <a href="/">http://localhost:8090/</a></li>
|
||
<li>Проверка работы и версии: <a href="/health">http://localhost:8090/health</a> (JSON: статус и поле <code>version</code>).</li>
|
||
</ul>
|
||
|
||
<h2>7. Остановка и данные</h2>
|
||
<p>Остановить контейнеры:</p>
|
||
<pre><code>docker compose down</code></pre>
|
||
<p>Файлы загрузок и данные PostgreSQL хранятся в именованных томах Docker (<code>uploads</code> и <code>pgdata</code>), поэтому после <code>down</code> они не удаляются. Чтобы удалить и тома (осторожно, потеряете файлы и БД):</p>
|
||
<pre><code>docker compose down -v</code></pre>
|
||
|
||
<h2>8. Запуск без Docker (для разработки)</h2>
|
||
<p>Нужен установленный PostgreSQL и переменная окружения <code>DATABASE_URL</code>, например:</p>
|
||
<pre><code>set DATABASE_URL=postgres://user:pass@localhost:5432/fileshare?sslmode=disable
|
||
go run ./cmd/fileshare</code></pre>
|
||
<p class="note">В Linux/macOS вместо <code>set</code> используйте <code>export DATABASE_URL=...</code>.</p>
|
||
</body>
|
||
</html>
|