Self-hosted file server for Raspberry Pi with web UI and CLI account management. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.5 KiB
2.5 KiB
Pirate Station
What This Is
A self-hosted file server for Raspberry Pi, exposed to the internet via frpc/rathole. Provides a polished web UI for a small group of trusted users to upload, download, and manage files in a shared space. Account management happens exclusively through a CLI tool on the Pi.
Core Value
Users can securely access and manage files on the Pi from anywhere via the web, with the server completely isolated to its designated storage directory.
Requirements
Validated
(None yet — ship to validate)
Active
- CLI tool for account management (create/delete users, change passwords)
- User authentication with hashed passwords and JWT sessions
- Web login interface
- File browser with folder navigation
- File upload (including drag-and-drop)
- File download
- File deletion
- Folder creation and deletion
- File and folder renaming
- Modern, polished responsive web UI
- Docker container isolated to mounted volume only
Out of Scope
- Self-registration — admin creates accounts via CLI only
- Web-based admin panel — all user management via CLI
- File preview/streaming — just upload, download, manage
- Per-user private folders — shared space model
- Tailscale integration — using frpc/rathole instead
- Mobile app — web-only
Context
- Deployment: Raspberry Pi at home, exposed via frpc/rathole tunnel
- Users: Small trusted group (family/friends), each with individual accounts
- File access: Shared space, everyone sees all files
- Isolation requirement: Docker container must only affect the mounted directory, never touch anything else on the Pi
Constraints
- Platform: Raspberry Pi — lightweight, low memory footprint required
- Stack: Go backend — small binary, efficient for Pi's resources
- Containerization: Docker — must run fully isolated with volume mount
- Network: Works behind frpc/rathole tunnel (not Tailscale)
- Security: Internet-exposed, so authentication must be solid (no plain passwords)
Key Decisions
| Decision | Rationale | Outcome |
|---|---|---|
| Go backend | Lightweight for Pi, single binary, good HTTP handling | — Pending |
| CLI-only user management | Simpler, more secure (no web admin surface) | — Pending |
| Shared file space | Simpler than per-user isolation, trusted group | — Pending |
| JWT sessions | Stateless auth, works well with Go | — Pending |
Last updated: 2026-02-03 after initialization