Self-hosted file and media library with share links and native OpenChat integration.
2.1K
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.
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.
latest: newest CI-verified main build0.2.44: current stable releasesha-<commit>: immutable build for a verified source commitImages 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.
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.
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.
If OpenShare is useful to you, support its continued development through Buy Me a Coffee.
OpenShare is licensed under the MIT License.
Content type
Image
Digest
sha256:29e93e6f1…
Size
328.8 MB
Last updated
about 2 months ago
docker pull minionenjoyer/openshare