Skip to content

ullamua/PawShare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 _______    _______               _______               _______    _______    _______ 
(  ____ )  (  ___  )  |\     /|  (  ____ \  |\     /|  (  ___  )  (  ____ )  (  ____ \
| (    )|  | (   ) |  | )   ( |  | (    \/  | )   ( |  | (   ) |  | (    )|  | (    \/
| (____)|  | (___) |  | | _ | |  | (_____   | (___) |  | (___) |  | (____)|  | (__    
|  _____)  |  ___  |  | |( )| |  (_____  )  |  ___  |  |  ___  |  |     __)  |  __)   
| (        | (   ) |  | || || |        ) |  | (   ) |  | (   ) |  | (\ (     | (      
| )        | )   ( |  | () () |  /\____) |  | )   ( |  | )   ( |  | ) \ \__  | (____/\
|/         |/     \|  (_______)  \_______)  |/     \|  |/     \|  |/   \__/  (_______/
                                                                                      

Self-hosted, multi-user, end-to-end encrypted file & video sharing. Each account uses its own private Telegram channel as the storage backend and gets clean shareable URLs that embed nicely in Discord and Twitter/X.

  • AES-256-GCM at rest (chunked, streamed)
  • Multi-user with username + password (bcrypt)
  • Per-user Telegram credentials (encrypted in the DB)
  • Upload from local file or a URL
  • Optional auto-expiry (1h / 3h / 6h / 12h / 1d / 3d / never)
  • One-binary, no build step, no external storage

Setup

python3 -m venv .venv && source .venv/bin/activate
pip install -r backend/requirements.txt
cp .env.example .env          # then edit SECRET_KEY
uvicorn backend.main:app --reload

Open http://localhost:8000, hit NEW USER? SETUP and the in-app wizard walks you through:

  1. Pick username + password (availability check live).
  2. Yes/no — do you have a Telegram account? If no, link to telegram.org.
  3. Create a private channel.
  4. Create a bot via @BotFather, grab the token, add the bot as Admin.
  5. Find your channel ID via @userinfobot (forward a message from the channel) — looks like -1001234567890.
  6. Paste token + channel ID. PawShare tests the connection and you land on the dashboard.

Persistence on Railway / Render / Fly

PawShare stores its SQLite DB and .env next to the repo by default. On hosts with ephemeral filesystems, mount a volume and point DATA_DIR at it so accounts and uploads survive redeploys:

DATA_DIR=/data

(Railway: add a Volume and set its mount path to /data.)

Environment variables

See .env.example. Only SECRET_KEY is strictly required; FILE_ENCRYPTION_KEY is auto-generated on first start and persisted to .env (back it up — losing it makes existing uploads undecryptable).

Tech

  • Python 3.11+ / FastAPI / SQLite / APScheduler
  • Vanilla HTML+CSS+JS (no build step)
  • Bcrypt + JWT auth
  • Docker, Render, Railway deploy configs included

⚠️ Personal use only

Use alternate Telegram accounts for your bot and channel. Mass abuse will get the bot — and possibly the linked phone number — restricted by Telegram.

License

MIT — see LICENSE.

About

Free unlimited file storage and sharing via the Telegram Bot API. Files are split into encrypted AES-256-GCM chunks and streamed to Telegram, bypassing any size limits. Self-hosted, multi-user, with clean shareable URLs that embed in Discord and Twitter/X.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors