S2
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@S2show me what's in /notes/todo.md"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
S2
Self-hosted file storage with folder permissions for people, apps, and AI agents.
Give each one only the folders it needs: Read or Read + Write per path, with an expiry date. Use it from the web UI, REST, WebDAV, and MCP. Files are stored as plaintext at rest.
Website | Docs | Contributing | MIT License
Getting started
Two containers (app, Postgres) from ghcr.io/hrs23/s2. The app listens on 127.0.0.1:${S2_PORT:-3000}; put a TLS proxy in front.
mkdir s2 && cd s2
curl -fsSLO https://raw.githubusercontent.com/hrs23/s2/main/compose.yaml
printf 'AUTH_SECRET=%s\nPOSTGRES_PASSWORD=%s\nAPP_URL=http://localhost:3000\n' \
"$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .envSet APP_URL to the public URL. Keep AUTH_SECRET and POSTGRES_PASSWORD unchanged afterwards; other options are in .env.example.
docker compose up -d
curl --fail http://127.0.0.1:3000/health
docker compose exec app pnpm user create --email owner@example.comUpdate
docker compose pull && docker compose up -dSet S2_VERSION in .env to pin a release (default latest). Migrations run on startup.
Reset password
docker compose exec app pnpm user set-password --email owner@example.comBackup
Stop the stack and copy .env and ./data (POSTGRES_DATA_PATH and S2_STORAGE_PATH) together; the database cannot be opened without the original POSTGRES_PASSWORD. Do this before an upgrade that notes a breaking change.
Flags
Variable | Default | Effect |
|
| Self-service sign-up |
|
| Passkeys |
|
| TOTP and recovery codes |
|
| Email verification and password reset; needs |
Maintenance
Runs daily in the app (MAINTENANCE_ENABLED=true, MAINTENANCE_CRON="0 17 * * *", UTC). One-shot:
docker compose exec app pnpm maintenanceThis server cannot be deployed
Maintenance
Related MCP Connectors
User-owned files and explicit AI Memories for authorized assistants with scoped access.
1Persistent file storage for AI agents via MCP and curl. Upload, download, and version files.
Cloud storage with email-receiving buckets. Store and share files with people and AI agents.
Artifact store for AI agents — read, write, and search files by path; share by rendered URL.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to read, write, and manage files on the local system with security features like path restrictions and optional read-only mode.92MIT
- AlicenseNot gradedqualityCmaintenanceProvides file system access and operations, enabling AI assistants to read, write, list, search, and manage files and directories through a standardized interface.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search, update, manage files, and run terminal commands on a computer, with remote access via Streamable HTTP and OAuth 2.0 for integration with ChatGPT and web agents.206,624 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents and MCP-compatible clients to search, inspect metadata for, and download files from a personal Microsoft OneDrive account via Microsoft Graph, using only read-only HTTP GET requests.1-