Sign inSign up

minionenjoyer/openshare

By minionenjoyer

•Updated about 2 months ago

Self-hosted file and media library with share links and native OpenChat integration.

Image
0

2.1K

minionenjoyer/openshare repository overview

⁠OpenShare

OpenShare logo

OpenShare⁠ is a self-hosted file and media library with OpenID Connect authentication, responsive React viewers, folders, search, thumbnails, and recorded share links. It also serves as the native attachment and media backend for OpenChat⁠.

The single container includes the FastAPI service, production React client, and media-processing integration points. Your SQLite database, uploaded files, thumbnails, and other persistent data remain in operator-controlled volumes.

⁠Features

  • Image, video, audio, PDF, spreadsheet, text, archive, and 3D-model viewers
  • Private contacts with groups, search, vCard/CSV import, vCard export, and optional OpenChat links
  • Automatic thumbnails and stored audio waveforms
  • Nested folders with colors, emoji icons, covers, tree navigation, and bulk actions
  • Progressive owner-scoped search across folders and files
  • Revocable folder and media share links recorded in My Shared Links
  • Dedicated OpenChat companion collections for attachments, stickers, avatars, and soundboard media
  • Light, dark, and system themes with responsive desktop and web-mobile layouts
  • Optional authenticated asset replication across a private reliability cluster

Version 0.2.44 runs as numeric UID/GID 10001:10001, not root. Before starting it, create the specific host directories configured by DB_PATH and STORAGE_PATH and make both writable by that identity. For an existing installation, back up the database and check ownership first; alternatively set OPENSHARE_UID and OPENSHARE_GID to the existing non-root storage owner's IDs in .env. Do not let Docker create missing bind-mount directories as root and assume the application can write them. Never recursively change ownership of a whole home directory or disk.

git clone https://github.com/MinionEnjoyer/OpenShare.git
cd OpenShare
cp .env.example .env
# Configure OIDC, the public URL, storage, and trusted origins in .env.
OPENSHARE_IMAGE=minionenjoyer/openshare \
OPENSHARE_VERSION=0.2.44 \
docker compose -f docker-compose.public.yml pull
OPENSHARE_IMAGE=minionenjoyer/openshare \
OPENSHARE_VERSION=0.2.44 \
docker compose -f docker-compose.public.yml up -d

OpenShare listens on port 8800 by default. Deploy it behind a TLS-terminating reverse proxy and persist both the database and storage paths described in the configuration template. Upload limits are opt-in; configure the proxy without a body-size ceiling (nginx: client_max_body_size 0) or set its ceiling at or above your OpenShare upload limits to avoid proxy-generated 413 responses.

⁠Image tags

  • latest: newest CI-verified main build
  • 0.2.44: current stable release
  • sha-<commit>: immutable build for a verified source commit

Images are published for linux/amd64 and linux/arm64. Docker Hub receives the exact digest first published to GHCR after the source commit passes the complete OpenShare test suite.

⁠OpenChat integration

Set the same random SHARE_API_KEY in both applications, point OpenChat's SHARE_BASE_URL at the OpenShare public URL, and add the OpenChat origin to OpenShare's ALLOWED_ORIGINS. OpenChat can then upload attachments, stickers, avatars, voice clips, and soundboard media without mixing those assets into the user's personal library.

⁠Configuration and documentation

No production credentials or environment-specific defaults are baked into the image. Supply OIDC, session, public URL, origin, storage, and optional integration settings through a local gitignored .env file.

⁠Support the project

If OpenShare is useful to you, support its continued development through Buy Me a Coffee⁠.

OpenShare is licensed under the MIT License.

Tag summary

Content type

Image

Digest

sha256:29e93e6f1…

Size

328.8 MB

Last updated

about 2 months ago

docker pull minionenjoyer/openshare