Fileship

Your own ShareX server and file cloud, with AI search that runs on your server.

  • ghcr.io/hsinghhira/fileship:latest
  • v6.3.1
  • Updated 28 Oct 2026
  • port 6131
  • amd64 · arm64
  • Productivity
  • 59 stars

Screenshots

Fileship screenshot 1: Dashboard

Open the app

Dashboard

http://localhost:6131/

About Fileship

Fileship is a self-hosted file and media platform: a ShareX upload server, a file cloud with folders and notes, short links and AI search that runs on your own server. This is Fileship in a single container, with PostgreSQL inside, one port and one data folder. The database passwords and the admin password are made for you on first start.

Features

  • Files, nested shared folders, Markdown notes, short links and a trash
  • Public sharing with passwords, expiry dates, view limits and rich embeds for Discord
  • AI search, captions and OCR that run on your server (no GPU needed)
  • Uploads on this server, or on S3, SFTP or FTP storage
  • Many users with permissions, storage limits, passkeys, two-factor sign-in and single sign-on
  • ShareX, browser extension, Windows app and phone app uploads

How to use

  1. Find the admin password in the app log, on the line that says "Fileship login is".
  2. Open Fileship from your dashboard and sign in as admin.
  3. Change the password in Settings, Security.
  4. Drop files on the page to upload them, or set up ShareX from Settings.
  5. Add other people in Administration, Users.

Before you install

Fileship works from any device at http://[ZIMAOS-IP-ADDRESS]:6131 with the defaults. PUBLIC_URL starts as http://localhost:6131; change it to http://[ZIMAOS-IP-ADDRESS]:6131 with your ZimaOS IP, like http://192.168.1.20:6131, or your own domain, so links in emails and single sign-on work. Leave ADMIN_PASSWORD blank to get a random one: it is in the app log on the line that says "Fileship login is", and in admin-password.txt in the app folder. It replaces upstream's default admin / password login, and is only used until you change the password in Fileship. The first start takes about two minutes. Sign-up, email, single sign-on, AI and the other settings are in the Variables tab; add them in the app settings. Settings saved in Administration, Instance win over them.

The AI preset starts at low (about 4 GB of memory). The app's memory limit is 4 GB; raise it in the app settings before you pick medium or high. One-click updates from the dashboard are off, because upstream's updater needs the Docker socket; the IceStore image follows new Fileship versions every week.

The settings in the first table are already in the app settings. To use any other one, open the app settings, add the variable with your value, save, and the app restarts with it. A setting you leave out uses its default.

In the app settings

VariableDefault valueDescription
TZ$TZYour time zone. It is filled in from your ZimaOS time zone. Leave it unless you need another.
PUBLIC_URLhttp://localhost:6131The address you open Fileship at, like http://[ZIMAOS-IP-ADDRESS]:6131 (for example http://192.168.1.20:6131), or your own domain. Fileship works from any address without it, but links in emails and single sign-on only work once localhost is changed.
ADMIN_PASSWORD—The first password for the admin account. Leave it blank and the app makes one on first start and shows it in the app log. It is only used until you change the password in Fileship.

Server

VariableDefault valueDescription
NUXT_PUBLIC_SITE_NAMEFileshipThe name shown in the browser title, embeds and the dashboard.
NUXT_PUBLIC_RETURN_HTTPSautoSet to true to always give https links for uploads, like when Fileship is behind an HTTPS proxy that doesn't say so.

Sign-up and accounts

VariableDefault valueDescription
NUXT_PUBLIC_REGISTRATION_ENABLEDfalseSet to true to let anyone make an account from the sign-in page.
NUXT_REGISTRATION_PERMISSIONSUploadFiles,TakeNotes,ShortenLinksWhat people who sign up themselves may do, separated by commas: UploadFiles, TakeNotes, ShortenLinks.
NUXT_REGISTRATION_USABLE_SPACE-1Storage limit for people who sign up themselves, in MB. -1 means no limit.
NUXT_PUBLIC_TURNSTILE_SITE_KEY—Your Cloudflare Turnstile site key, to stop bots on the sign-in page.
NUXT_TURNSTILE_SECRET_KEY—Your Cloudflare Turnstile secret key.

Email (SMTP)

VariableDefault valueDescription
NUXT_SMTP_HOST—Your mail server, like smtp.example.com. Email also needs NUXT_SMTP_FROM and PUBLIC_URL set to a real address.
NUXT_SMTP_PORT587The mail server's port. Usually 587 for starttls and 465 for tls.
NUXT_SMTP_SECURITYstarttlsstarttls, tls or none.
NUXT_SMTP_USER—The mail server user name. Leave it out if the server needs no sign-in.
NUXT_SMTP_PASSWORD—The mail server password.
NUXT_SMTP_FROM—The sender address on emails, like [email protected].

Single sign-on (OIDC)

VariableDefault valueDescription
NUXT_OIDC_ENABLEDfalseSet to true to sign in with an OpenID Connect provider like Pocket ID, Authentik or Google. Needs PUBLIC_URL set to a real address. The redirect URI is your PUBLIC_URL plus /api/auth/oidc/callback.
NUXT_OIDC_ISSUER_URL—Your provider's issuer address, exactly as it publishes it, like https://id.example.com.
NUXT_OIDC_CLIENT_ID—The client ID from your provider.
NUXT_OIDC_CLIENT_SECRET—The client secret from your provider. Leave it out for a public client.
NUXT_OIDC_BUTTON_LABEL—The provider name on the sign-in button, like Authentik.
NUXT_OIDC_AUTO_REGISTERfalseSet to true to make an account for people who sign in through the provider and don't have one yet.
NUXT_PASSWORD_LOGIN_ENABLEDtrueSet to false so everyone signs in through the provider. Super admins can still use their password.

AI

VariableDefault valueDescription
NUXT_PUBLIC_AI_ENABLEDtrueSet to false to turn off AI search, captions and OCR.
NUXT_AI_PRESETlowlow, medium or high. Higher finds more but needs more memory: about 4, 6 or 8 GB in all. Raise the app's memory limit for medium or high.
NUXT_AI_QUEUE_CONCURRENCY1How many uploads the AI looks at at the same time.
NUXT_AI_INFERENCE_THREADS2How many CPU threads each AI job uses.

Uploads

VariableDefault valueDescription
NUXT_PUBLIC_FILE_CHUNK_SIZE25Size of each upload piece, in MB, at least 5.
NUXT_AVATAR_MAX_SIZE4The largest profile picture, in MB.
NUXT_REMOVE_EXIF_DATAtrueSet to false to keep photo details (EXIF, like location) in uploads.
NUXT_TRASH_RETENTION_DAYS30Days deleted things stay in the trash. 0 deletes them right away.
NUXT_SCHEDULED_BACKUPS_ENABLEDtrueSet to false to stop automatic account backups for everyone.

Logs

VariableDefault valueDescription
NUXT_TELEMETRY_ENABLEDtrueSet to false to stop sending Fileship anonymous usage data.
NUXT_LOG_LEVEL20, 1 or 2. Higher logs more.
docker-compose.yml
name: fileship

services:
  fileship:
    image: ghcr.io/hsinghhira/fileship:latest
    container_name: fileship
    restart: unless-stopped
    stop_grace_period: 90s
    privileged: true
    environment:
      - TZ=$TZ
      - PUBLIC_URL=http://localhost:6131
      - ADMIN_PASSWORD=
    ports:
      - target: 8080
        published: "6131"
        protocol: tcp
    volumes:
      - type: bind
        source: /DATA/AppData/$AppID/data
        target: /data
        bind:
          create_host_path: true
    healthcheck:
      test: ["CMD", "curl", "-fsS", "-o", "/dev/null", "http://127.0.0.1:8080/api/healthz"]
      interval: 30s
      timeout: 10s
      retries: 5
      start_period: 180s
    deploy:
      resources:
        limits:
          cpus: "4.00"
          memory: 4096M
        reservations:
          cpus: "0.25"
          memory: 512M
    labels:
      icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/fileship/icon.png
    x-casaos:
      id: com.icestore.fileship
      envs:
        - container: TZ
          description:
            en_US: >-
              Your time zone. It is filled in from your ZimaOS time zone.
              Leave it unless you need another.
        - container: PUBLIC_URL
          description:
            en_US: >-
              The address you open Fileship at, like
              http://[ZIMAOS-IP-ADDRESS]:6131 (for example
              http://192.168.1.20:6131), or your own domain. Fileship works
              from any address without it, but links in emails and single
              sign-on only work once localhost is changed.
        - container: ADMIN_PASSWORD
          description:
            en_US: >-
              The first password for the admin account. Leave it blank and
              the app makes one on first start and shows it in the app log.
              It is only used until you change the password in Fileship.
      ports:
        - container: "8080"
          description:
            en_US: Fileship dashboard, API, uploads and share links, published on host as 6131
      volumes:
        - container: /data
          description:
            en_US: >-
              Everything: the database, uploaded files, thumbnails, backups,
              AI models, Fileship's encryption key (fileship/secret.key),
              the database passwords and admin-password.txt. Back up the
              whole folder.

x-casaos:
  id: com.icestore.fileship
  architectures:
    - amd64
    - arm64
  main: fileship
  author: HSinghHira
  category: Productivity
  developer: hanzydev
  icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/fileship/icon.png
  thumbnail: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/fileship/screenshot-1.png
  screenshot_link:
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/fileship/screenshot-1.png
  title:
    en_US: Fileship
  tagline:
    en_US: Your own ShareX server and file cloud, with AI search that runs on your server.
  description:
    en_US: >-
      Fileship is a self-hosted file and media platform: a ShareX upload
      server, a file cloud with folders and notes, short links and AI search
      that runs on your own server. This is Fileship in a single container,
      with PostgreSQL inside, one port and one data folder. The database
      passwords and the admin password are made for you on first start.


      **Features**


      - Files, nested shared folders, Markdown notes, short links and a
        trash


      - Public sharing with passwords, expiry dates, view limits and rich
        embeds for Discord


      - AI search, captions and OCR that run on your server (no GPU
        needed)


      - Uploads on this server, or on S3, SFTP or FTP storage


      - Many users with permissions, storage limits, passkeys, two-factor
        sign-in and single sign-on


      - ShareX, browser extension, Windows app and phone app uploads


      **How to use?**


      1. Find the admin password in the app log, on the line that says
         "Fileship login is".


      2. Open Fileship from the Zima OS dashboard and sign in as admin.


      3. Change the password in Settings, Security.


      4. Drop files on the page to upload them, or set up ShareX from
         Settings.


      5. Add other people in Administration, Users.
  tips:
    before_install:
      en_US: >-
        1. Open the app configuration before you install.


        2. Optional: find PUBLIC_URL. Change localhost in it to your ZimaOS
           IP, so it reads http://[ZIMAOS-IP-ADDRESS]:6131 (like
           http://192.168.1.20:6131) and links in emails and single sign-on
           work. Fileship works from other devices either way.


        3. Leave ADMIN_PASSWORD blank to get a random one, or type your own.


        4. More settings, like sign-up, email, single sign-on and AI, are
           listed on the Fileship page at
           https://icestore.hsinghhira.me/app/fileship/ (Variables tab). You
           can add them now or later in the app settings.


        5. Start the installation.


        6. Wait about two minutes. The first start sets up the database.


        7. Open the app log. Find the line that says "Fileship login is". It
           shows the admin password. It is also in admin-password.txt in the
           app folder.


        8. Open http://[ZIMAOS-IP-ADDRESS]:6131 and sign in as admin with
           that password.


        9. Change the password in Settings, Security.
  index: /
  port_map: "6131"
  scheme: http
  is_uncontrolled: false
  version: "6.3.1"
  update_at: "2026-10-28"
  release_notes:
    en_US: |-
      - First release in IceStore: Fileship in a single container with one port (6131) and one data folder.
      - The database passwords and the admin password are made on first start, so each install gets its own. The default admin / password login is replaced.
      - The updater-agent is left out (it needs the Docker socket), so one-click updates from the dashboard are off. The IceStore image is updated to new Fileship versions every week instead.
      - The AI preset starts at low (upstream: medium) to use less memory. Change it with NUXT_AI_PRESET or in Administration, Instance.
      - ghcr.io/hanzydev/fileship 6.3.1
      - PostgreSQL 16 inside
  repo: "https://github.com/hanzydev/Fileship"
  support: "https://github.com/hanzydev/Fileship/issues"
  docs: "https://github.com/hanzydev/Fileship/tree/main/docs"

Install Fileship

Something not working with Fileship? Report a problem or request another app.

More Productivity apps

See all