☁️ Nimbus File

Безлимитное облачное хранилище на базе Telegram

Возможности

Безлимитное хранилище

Используй Telegram как бесплатный бэкенд без ограничений по размеру

Балансировка нагрузки

Автоматическое распределение между ботами и каналами

Шифрование AES-256

Все файлы шифруются перед отправкой в Telegram

Темная тема

Автоматически сохраняется в cookie

Адаптивный дизайн

Работает на ПК, планшетах и телефонах

API ключи

Для интеграции с другими сервисами

Шеринг файлов

Делись файлами по публичной ссылке

Папки

Организуй файлы как хочешь

Быстрый старт

1. Установка

git clone https://github.com/hakeroneh1/nimbus-file.git
cd nimbus-file
pip install -r requirements.txt

2. Создаем ботов в Telegram

3. Создаем каналы

4. Настройка .env

ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
ENCRYPTION_KEY=your-secret-key-change-in-production

BOT_TOKEN_1=123456:ABCdef...
BOT_TOKEN_2=123456:ABCdef...

CHANNEL_ID_1=-1001234567890
CHANNEL_ID_2=-1001234567891

PORT=8000

5. Запуск

python main.py

Открой браузер: http://localhost:8000
Войди с логином/паролем из .env

Деплой на Render

  1. Создай аккаунт на render.com

    Зайди на render.com и зарегистрируйся через GitHub

  2. Подготовь репозиторий
    git init
    git add .
    git commit -m "Initial commit"
    git remote add origin https://github.com/hakeroneh1/nimbus-file.git
    git push -u origin main
  3. Создай Web Service на Render
    • Нажми "New +" → "Web Service"
    • Подключи свой GitHub репозиторий
    • Настрой: Name, Environment: Python 3, Build Command: pip install -r requirements.txt, Start Command: python main.py
  4. Добавь переменные окружения

    В разделе Environment Variables добавь все переменные из .env

  5. Подключи базу данных (обязательно для Render)
    • Зайди на neon.tech и создай бесплатный PostgreSQL
    • Получи строку подключения
    • Добавь в переменные окружения: DATABASE_URL=postgresql://...

API Документация

После запуска доступна по адресу /api/docs

Аутентификация

POST /api/login — вход в систему
POST /api/logout — выход
GET /api/me — информация о текущем пользователе

Управление файлами

POST /api/upload — загрузить файл
GET /api/files?path=/ — список файлов и папок
GET /api/file/{id} — информация о файле
GET /api/file/{id}/download — скачать файл
DELETE /api/file/{id} — удалить файл
PUT /api/file/{id} — переименовать файл

Папки

POST /api/folder — создать папку

Шеринг

POST /api/share/{file_id} — создать ссылку
GET /api/share/{share_id} — скачать по ссылке

API ключи

POST /api/key/create — создать API ключ
DELETE /api/key/{key} — удалить API ключ
POST /api/key/upload — загрузить файл по API ключу

Примеры использования

Python

import requests

API_URL = "http://localhost:8000"
API_KEY = "ваш_api_ключ"

# Загрузка файла
files = {"file": open("video.mp4", "rb")}
data = {"api_key": API_KEY, "path": "/"}
response = requests.post(f"{API_URL}/api/key/upload", files=files, data=data)
print(response.json())

# Скачивание файла
file_id = response.json()["id"]
response = requests.get(f"{API_URL}/api/file/{file_id}/download")
with open("downloaded.mp4", "wb") as f:
    f.write(response.content)

# Создание папки
response = requests.post(
    f"{API_URL}/api/folder",
    data={"name": "Мои видео", "path": "/"}
)

# Создание ссылки
response = requests.post(f"{API_URL}/api/share/{file_id}")
share_url = response.json()["url"]
print(f"Ссылка: {API_URL}{share_url}")

JavaScript

const API_URL = "http://localhost:8000";
const API_KEY = "ваш_api_ключ";

const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("api_key", API_KEY);
formData.append("path", "/");

fetch(`${API_URL}/api/key/upload`, {
    method: "POST",
    body: formData
}).then(res => res.json()).then(data => console.log(data));

// Скачать файл
window.open(`${API_URL}/api/file/${fileId}/download`);

// Создать папку
fetch(`${API_URL}/api/folder`, {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: new URLSearchParams({ name: "Новая папка", path: "/" })
});

cURL

# Загрузка файла
curl -X POST http://localhost:8000/api/key/upload \
  -F "file=@video.mp4" \
  -F "api_key=ваш_api_ключ" \
  -F "path=/"

# Скачивание файла
curl -OJ http://localhost:8000/api/file/FILE_ID/download

# Создание папки
curl -X POST http://localhost:8000/api/folder \
  -d "name=Моя папка" \
  -d "path=/"

Конфигурация

Переменные окружения

Nimbus File — Твои файлы. Твои правила. Без лимитов. ☁️

GitHub • MIT License