🗂️Open-source file hosting solution, supporting Docker and serverless deployment, supporting multiple storage channels such as Telegram Bot, Cloudflare R2, S3, etc. Modified version that replaces KV with D1 storage
简体中文 | English | KV Version (Original) | D1 Version | Official Website
Important
Please check the announcement for upgrade notes on version 2.0!
Announcement
Pinned
- If you encounter issues during deployment or usage, please carefully read the documentation, FAQ, and existing issues first.
- Note: This repository is a remake of the Telegraph-Image project. If you like this project, please support the original one as well.
2025.2.6 Version 2.0 Upgrade Notes
The v2.0 version has been released, with many changes and optimizations compared to v1.0. However, the beta version may have potential instability. If you prefer stability, you may delay updating.
Due to changes in the build command, this update requires manual operation. Please follow these steps:
- Sync your forked repository to the latest version (ignore if already synced automatically)
- Go to the Pages management page, enter
Settings->Build, edit theBuild configuration, and set theBuild commandtonpm install- All new version settings have been migrated to the Admin Panel -> System Settings interface, so generally no need to configure environment variables anymore. Settings made in the system settings interface will override environment variable settings. However, to ensure compatibility of images uploaded via the Telegram channel with the old version, please keep any previously set Telegram-related environment variables!
- After confirming the above settings are correct, go to the Pages management page, enter
Deployments, andRetrythe last failed deployment.
Notification About Switching to Telegram Channel
Due to abuse of the telegraph image hosting, the upload channel has switched to Telegram Channel. Please update to the latest version (see the last section of chapter 3.1 for update instructions) and set
TG_BOT_TOKENandTG_CHAT_IDaccording to the deployment requirements in the documentation, otherwise upload functionality will not work.Also, the KV database is now mandatory; if not configured before, please configure it as per the documentation.
For issues, please check section 5 FAQ first.
Important! Important! Important!
If you are using KV storage and want to migrate to D1 storage, it is recommended to create a new image hosting service. Use the system's backup and restore functions for data migration!!!!
Detailed KV to D1 Storage Migration Guide
- First, confirm that your D1 database has been created: The database name must be:
imgbed-database. Execute all SQL statements section by section:
-- CloudFlare ImgBed D1 Database Initialization Script
-- This script is used to initialize the D1 database
-- Drop existing tables (if re-initialization is needed)
-- Note: Use with caution in production environment
-- DROP TABLE IF EXISTS files;
-- DROP TABLE IF EXISTS settings;
-- DROP TABLE IF EXISTS index_operations;
-- DROP TABLE IF EXISTS index_metadata;
-- DROP TABLE IF EXISTS other_data;
-- Execute main database schema creation
-- This will include the content of schema.sql
-- 1. Files table - stores file metadata
CREATE TABLE IF NOT EXISTS files (
id TEXT PRIMARY KEY,
value TEXT,
metadata TEXT NOT NULL,
file_name TEXT,
file_type TEXT,
file_size TEXT,
upload_ip TEXT,
upload_address TEXT,
list_type TEXT,
timestamp INTEGER,
label TEXT,
directory TEXT,
channel TEXT,
channel_name TEXT,
tg_file_id TEXT,
tg_chat_id TEXT,
tg_bot_token TEXT,
is_chunked BOOLEAN DEFAULT FALSE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 2. System configuration table
CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY,
value TEXT NOT NULL,
category TEXT,
description TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 3. Index operations table
CREATE TABLE IF NOT EXISTS index_operations (
id TEXT PRIMARY KEY,
type TEXT NOT NULL,
timestamp INTEGER NOT NULL,
data TEXT NOT NULL,
processed BOOLEAN DEFAULT FALSE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 4. Index metadata table
CREATE TABLE IF NOT EXISTS index_metadata (
key TEXT PRIMARY KEY,
last_updated INTEGER,
total_count INTEGER DEFAULT 0,
last_operation_id TEXT,
chunk_count INTEGER DEFAULT 0,
chunk_size INTEGER DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 5. Other data table
CREATE TABLE IF NOT EXISTS other_data (
key TEXT PRIMARY KEY,
value TEXT NOT NULL,
type TEXT,
description TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Insert initial index metadata
INSERT OR REPLACE INTO index_metadata (key, last_updated, total_count, last_operation_id)
VALUES ('main_index', 0, 0, NULL);
-- Initialization complete
-- Database is ready, data migration can begin
Configure Pages Bindings in Cloudflare Dashboard
Step A: Login to Cloudflare Dashboard
- Visit https://dash.cloudflare.com
- Login to your account
Step B: Enter Pages Project
- Click "Pages" in the left menu
- Find and click your image hosting project
Step C: Configure Functions Bindings
- Click the "Settings" tab on the project page
- Click "Functions" in the left menu
- Scroll down to find the "D1 database bindings" section
Step D: Add D1 Binding
- Click the "Add binding" button
- Fill in the following information:
- Variable name:
DB(must be uppercase DB) - D1 database: Select your created
imgbed-databasefrom the dropdown
- Variable name:
- Click the "Save" button
Step E: Redeploy Pages
After configuring bindings, you need to redeploy:
Step F: Verify Configuration
After deployment is complete, visit the following URL to verify configuration:
https://your-domain.com/api/manage/migrate?action=check
View detailed configuration status:
https://your-domain.com/api/manage/migrate?action=status
1. Introduction
Free file hosting solution with full lifecycle features including upload, management, read, and delete, supporting authentication, directories, image moderation, random images, and other features (see Feature Docs for details).
2. Document
Provides detailed deployment documentation, feature docs, development plans, update logs, FAQ, and more to help you get started quickly.
3. Demo
Demo Address: CloudFlare ImgBed Access Password: cfbed
4. Tips
-
Frontend is open source, see MarSeventh/Sanyue-ImgHub.
-
Ecosystem: We welcome community participation in the ecosystem construction. Feel free to submit PRs or Issues, and high-quality content can be found on the official ecosystem page.
-
Sponsor: Maintaining the project is not easy. If you like it, please support the author. Your support is the motivation to keep going~
-
Sponsors: Thanks to the following sponsors for supporting this project!
-
Contributors: Thanks to the following contributors for their selfless contributions!
5. Star History
If you like the project, please give a free star✨✨✨, thank you very much!
6. Special Sponsors
-
CloudFlare & EdgeOne:Provides CDN acceleration, and security protection
-
AsiaYun & DartNode:Provides cloud computing resources support








