f2c05d15ec4690ab78fc27062c2ee3217cd21661
PanelHosting
Панель управления хостингом (аналог FastPanel) на Go + Docker + PostgreSQL.
Биллинг и оплата — в планах. Сейчас реализована база данных и инфраструктура для панели.
Стек
- Go 1.23 — backend
- PostgreSQL 16 — хранение данных
- Docker Compose — локальная разработка
- golang-migrate — миграции схемы
Деплой на сервер
# Клонировать (подставьте токен вместо <TOKEN>)
git clone https://<TOKEN>@git.evilfox.cc/test2/panelhosting.git /opt/host
cd /opt/host
bash scripts/server-setup.sh
Если каталог /opt/host уже есть, но пустой — удалите его или клонируйте в него заново.
Быстрый старт
1. Переменные окружения
cp .env.example .env
2. Запуск PostgreSQL
docker compose up -d postgres
3. Миграции
Через Docker:
docker compose --profile migrate run --rm migrate
Или локально:
export DATABASE_URL=postgres://panel:panel_secret@localhost:5432/panel?sslmode=disable
go run ./cmd/migrate
4. Запуск панели
Через Docker (порт 8000):
docker compose up -d panel
Или локально:
export DATABASE_URL=postgres://panel:panel_secret@localhost:5432/panel?sslmode=disable
export HTTP_PORT=8000
go run ./cmd/panel
Откройте http://localhost:8000 — если админ ещё не создан, появится форма регистрации. После входа — панель управления сайтами.
API
Авторизация
POST /api/v1/auth/login—{"username":"admin","password":"..."}→ cookiepanel_sessionPOST /api/v1/auth/logout— выход (требует сессию)GET /api/v1/auth/me— текущий пользователь
Сайты (требуют авторизацию)
GET /api/v1/sites— список сайтовPOST /api/v1/sites— создать сайт
{
"name": "mysite",
"domain": "example.com",
"php_version": "8.3"
}
PHP
GET /api/v1/php-versions— доступные версии PHP
SSL (Let's Encrypt)
- При создании сайта с
issue_ssl: trueавтоматически выпускается сертификат POST /api/v1/sites/{id}/ssl/issue— повторный выпускGET /.well-known/acme-challenge/{token}— HTTP-01 challenge
Требования для SSL:
ACME_EMAILв.env- DNS домена указывает на IP сервера
- Порт 80 доступен для HTTP-01 (nginx → webroot или панель)
Сертификаты сохраняются в БД и в SSL_STORAGE_PATH/live/{domain}/
Setup
GET /health— healthcheckGET /api/v1/setup/status—{"setup_required": true|false}POST /api/v1/setup/register— создание первого суперадмина (только пока нет пользователей)
Структура проекта
cmd/
migrate/ — CLI для применения миграций
panel/ — точка входа панели (API в разработке)
internal/
config/ — конфигурация из env
database/ — пул соединений и миграции
models/ — Go-модели
migrations/ — SQL-схема
Схема БД
| Раздел | Таблицы |
|---|---|
| Auth | users, sessions, api_keys |
| Серверы | servers, server_access |
| Сайты | sites, domains |
| Сервисы | databases, database_users, ftp_accounts, ssl_certificates |
| Почта | mail_domains, mail_accounts |
| DNS | dns_zones, dns_records |
| Операции | cron_jobs, backups, jobs |
| Аудит | audit_logs |
Лицензия
Proprietary
Languages
Go
82.1%
PLpgSQL
16.7%
Shell
1.2%