Docker

Share Me requires two Docker images to get started, the API which is based on PocketBase as well as the frontend which uses Next.js.

Both images are available on GHCR:

docker pull ghcr.io/dan6erbond/share-me-frontend:latest
docker pull ghcr.io/dan6erbond/share-me-server:latest

Docker Compose

The recommended way to install Share Me is with Docker Compose.

You can use the following docker-compose.yml to deploy Share Me with persistence:

version: "3.8"
services:
server:
image: ghcr.io/dan6erbond/share-me-server:latest
volumes:
- ./pb_data:/pb/pb_data
ports:
- 8080:8080
frontend:
image: ghcr.io/dan6erbond/share-me-frontend:latest
environment:
POCKETBASE_URL: https://shareme.example.com
ports:
- 3000:3000

Then run the services with the following command:

docker compose up -d

After installing, head to Configuration to setup PocketBase and check out other configuration options.

Once Share Me is deployed and configured, users should look into setting up a reverse proxy. Visit Proxy for more information.

Search

Share Me supports MeiliSearch for indexing and search. Follow the MeiliSearch installation instructions to run the MeiliSearch service:

docker run -it --rm \
-p 7700:7700 \
-e MEILI_ENV='development' \
-v $(pwd)/meili_data:/meili_data \
getmeili/meilisearch:v1.1

After deploying MeiliSearch, the server needs to be configured to index posts and optionally old posts might need to be added to the index. See Search Configuration for more details.

Tagger

Share Me supports AI-based object recognition using Meta's ResNet 50 DETR model. The image for the tagger service is also available on GHCR and can be deployed as part of the Compose stack:

services:
...
tagger:
image: ghcr.io/dan6erbond/share-me-tagger:latest
environment:
POCKETBASE_URL: https://shareme.example.com
ports:
- 5000:80

The tagger needs to be configured in the server, in order to register the event hooks to generate tags when files are uploaded. For more information see Tagger Configuration.