Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,660 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Fileship

Fileship is an open-source and self-hosted image uploading service with cool features.

Report Bug Β· Request Feature

πŸ“Έ Screenshot

Screenshot

🧰 Built With

Nuxt.js Vue.js UnoCSS Prisma TypeScript Socket.io Docker ESLint Prettier Node.js

πŸ“¦ Features

  • Fast & Secure
  • Self-hosted
  • Easy to Use
  • Vibrant Themes
  • Statistics
  • OpenGraph Embeds
  • Folders
  • Notes
  • Backups
  • Image Compression
  • Custom Domains
  • Chunked Uploads
  • AI Powered Image Search
  • Multi-Factor Authentication
  • Multi-User Support
  • Real-Time Updates
  • Password Protection
  • Video Thumbnails
  • Auto-Delete after Views
  • Auto-Delete after expiration
  • Ambient Mode
  • Inbox
  • One-Click & Automatic Background Updates

🌐 Browser Compatibility

Fileship is optimized for modern web standards. While Safari is supported through compatibility fallbacks, we highly recommend Zen Browser, Chrome, Brave, Edge, or Firefox for the best overall experience and real-time performance.

πŸš€ Getting Started

Minimum system requirements

Fileship is designed to run on a variety of systems, but the following minimum requirements are recommended for optimal performance:

  • CPU: 2 Core
  • RAM: 4 GB
  • Disk Space: 4 GB (plus space for uploaded files)
  • Database: PostgreSQL 16.x or higher

Installing ⚑

This section requires Docker and Docker Compose to be installed on your machine.

1. Clone the repository:

git clone https://github.com/hanzydev/Fileship.git
cd Fileship

2. Generate environment secrets: Fileship uses an isolated updater-agent microservice to handle background updates seamlessly. Generate a secure secret key for communication between the app and the updater agent:

echo "SECRET_TOKEN=$(openssl rand -hex 32)" > .env

3. Start Fileship:

docker compose up -d

Open your browser and navigate to http://localhost:3000

Default credentials

  • Username: admin
  • Password: password

πŸ”„ Updating Fileship

Fileship includes a zero-downtime Updater Agent that handles updates seamlessly without manually touching your server CLI.

Option 1: One-Click Update (Admin Dashboard) πŸ–±οΈ

Navigate to Admin Settings -> System in your Fileship dashboard. When a new release is available, simply click Update Now. The Updater Agent will automatically pull the new image and recreate the container in the background with real-time status updates.

Option 2: Automatic Scheduled Updates (Cron) ⏰

Automatic updates are enabled by default and scheduled to run every day at 3:00 AM.

You can customize or disable this feature in your docker-compose.yml under the updater-agent service environment variables:

updater-agent:
    environment:
        AUTOUPDATER_ENABLED: true # Set to 'false' to disable background updates
        AUTOUPDATER_CRON: '0 3 * * *' # Standard cron expression (Default: 3:00 AM daily)

⚠️ Upgrading from an Older Version? (Migration Steps)

If you installed Fileship prior to the introduction of the Updater Agent, follow these steps to upgrade your setup:

  1. Pull the latest project files:
cd Fileship
git pull
  1. Create your .env file for Updater Agent security:
echo "SECRET_TOKEN=$(openssl rand -hex 32)" > .env
  1. Update containers:
docker compose pull
docker compose up -d

(Your docker-compose.yml will automatically include the new updater-agent service).

🌐 Web server configuration (optional)

This section requires Nginx to be installed on your machine.

map $http_x_forwarded_proto $the_scheme {
    default $scheme;
    ~. $http_x_forwarded_proto;
}

server {
    listen 80;
    server_name <domain>;

    client_max_body_size 100M;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_set_header X-Forwarded-Proto $the_scheme;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }

    location /socket.io/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

πŸ€– AI Features

Fileship includes built-in AI features such as image search, image captioning, OCR, and PII detection. These features are enabled by default.

Disabling AI Features

To disable all AI features globally, set the NUXT_PUBLIC_AI_ENABLED environment variable to false in your docker-compose.yml:

services:
    fileship:
        environment:
            NUXT_PUBLIC_AI_ENABLED: 'false'

When AI is disabled:

  • AI queue runner will not start
  • AI jobs will not be enqueued or processed
  • Vector search will automatically fall back to fulltext search
  • AI-related UI elements will be hidden

πŸ“Š Telemetry

Fileship collects telemetry data about general usage to help us accurately gauge feature usage and customization. This data is essential for guiding future development, prioritizing features, and improving the overall user experience.

This feature is completely optional. You have full control over data collection and can easily opt-out if you do not wish to share any information.

What data is collected?

The telemetry module collects the following types of data:

  • Fileship Instance Information: General statistics about your Fileship setup (e.g., app version, counts of files, users, folders and notes) and the Node.js version it's running on. This helps us understand the scale and usage patterns of Fileship instances.
  • System Information: Non-identifying details about the host system (e.g., OS platform, release, architecture, CPU count/model, memory, disk usage, and whether it's running in Docker). This helps us optimize performance across different environments.

No personally identifiable information (PII) is collected. All collected data is anonymous and used in aggregate for statistical analysis.

How to Opt-Out

To disable all telemetry data collection, set the TELEMETRY_ENABLED environment variable to false in your docker-compose.yml:

services:
    fileship:
        environment:
            TELEMETRY_ENABLED: 'false'

When telemetry is disabled:

  • No data will be sent to the telemetry server
  • No instance or system information will be collected
  • There is no performance impact from disabling telemetry

By default, telemetry is enabled to help us improve Fileship.

❀️ Contribute

Contributions are always welcome! Please read the contribution guidelines first.

βš–οΈ License

MIT

About

Fileship is an open-source and self-hosted image uploading service with cool features.

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages