2025-12-19 09:30:50 +00:00
2025-12-19 09:11:04 +00:00
2025-12-19 09:30:50 +00:00
2025-12-17 20:33:22 +00:00
2025-12-15 07:38:36 +00:00
2025-12-17 20:33:22 +00:00
2025-03-16 21:04:43 +00:00
2025-03-25 22:07:49 +01:00
2025-12-17 14:39:36 +00:00
2025-11-08 17:14:14 +00:00
2025-12-14 10:28:34 +00:00
2025-03-16 21:04:43 +00:00
2025-03-18 17:26:48 +00:00
2025-06-29 08:40:12 +00:00
2025-12-17 13:49:32 +00:00
2025-04-07 21:06:23 +00:00
2025-12-14 10:00:18 +00:00
2025-05-17 21:24:16 +00:00

Media Sharing App

This is a self-hosted media sharing and indexing platform designed for secure and flexible file sharing. Originally created to serve specific community needs, it is now made available for general use under an open-source license. The application supports file access via time-limited secret links, metadata indexing, and transcription-based search.

Features

  • Secret Link Sharing
    Share folders via unique URLs with expiration dates. Two levels of sharing:

    • Primary Folders (Secret Links): Centralized configuration with full admin control. Suitable for public events.
    • Subfolders (Token Links): Can be shared ad hoc, without central admin access. Ideal for limited-audience events.
  • News/Messages System

    • Blog-style news cards with date/time stamps
    • Admin interface for creating, editing, and deleting messages
    • Markdown support for rich content formatting
    • Separate tab for browsing files and viewing messages
    • Chronological display (newest first)
  • Transcription and Search

    • Local transcription of audio files
    • Full-text search through transcripts
    • Daily indexing for search via cron job required
  • Caching and Performance

    • Data is fetched from a remote network storage via SSH
    • Server side caching for fast repeat access
    • Automatic cache invalidation for unused files
  • Privacy-Aware Analytics

    • Anonymous access logging (no IP address storage)

Requirements

  • Domain/Subdomain for app access
  • Dynamic DNS for local network tunnel access
  • Local Network Storage (Linux server or NAS with SSH and NFS support)
  • Virtual Private Server (VPS) with:
    • Docker
    • SSH
    • NFS
    • Cron

System Architecture

                         ┌───────────────────────────┐
                         │       Web Browser         │
                         │  (User / Admin Interface) │
                         └────────────┬──────────────┘
                                      │
                         ┌────────────▼──────────────┐
                         │    HTTPS (Secret Link)    │
                         │        (Traefik)          │
                         └────────────┬──────────────┘
                                      │
                         ┌────────────▼──────────────┐
                         │      Flask App (VPS)      │
                         │       Routing Layer       │
                         └────────────┬──────────────┘
                                      │
                         ┌────────────▼─────────────┐
                         │                          │
                ┌────────▼────────┐        ┌────────▼─────────┐
                │  User Views /   │        │ Admin Interface  │
                │   Token Logic   │        │  (Protected Link)│
                └────────┬────────┘        └────────┬─────────┘
                         │                          │
                 ┌───────▼──────────────────────────▼──────┐
                 │      Link Validation & Expiry Logic     │
                 └───────────────────┬─────────────────────┘
                                     │
                       ┌─────────────▼──────────────┐
                       │        Caching Layer       │
                       │     (Local file cache)     │
                       └─────────────┬──────────────┘
                                     │
                       ┌─────────────▼──────────────┐
                       │   SSH Tunnel to Storage    │
                       │   (NAS or Linux Server)    │
                       └─────────────┬──────────────┘
                                     │
                       ┌─────────────▼──────────────┐      ┌─────────────────────────────┐
                       │    Local File System       │◄─────┤ Media File Transcriber (PC) │
                       └─────────────┬──────────────┘      └─────────────────────────────┘
                                     │
                       ┌─────────────▼──────────────┐      
                       │ Daily Cron Service         │
                       │   - Index Filesystem       │      
                       │   - Index Transcription    │
                       └─────────────┬──────────────┘
                                     │
                           ┌─────────▼──────────┐
                           │   Search Engine    │
                           └────────────────────┘
  • Files are served over an SSH tunnel from NAS to the VPS.
  • Caching and indexing are performed on the VPS for performance.
  • Admin and user features are activated via special access links.

Setup Instructions

1. Clone the Repository to your VPS

git clone https://gitea.centx.de/lelo/bethaus-app
cd your-app

2. Configure Your Environment

Copy example config files and customize them for your setup:

cd your-app
cd example_config_files
cp * ../

3. Change Configurations

  • .env
    Used by Docker Compose to manage environment variables.

  • app_config.json
    General settings including search, link expiration, and admin key.
    Important: Replace default keys with strong random strings and keep them secret.

  • folder_mount_config.json
    Used if you set up cron to auto-mount folders.

  • folder_secret_config.json
    Contains paths and secrets to the shared folders.
    Add your first entry manually, then use the admin UI for further setup.

  • transcription_config.yml
    Required for local transcription. Adjust based on your tools and resources.

4. Launch the App

docker compose up -d

5. Admin Access

To unlock administrative controls on your device, use the dedicated admin access link.

6. Managing Messages/News

The application includes a news/messages system that allows admins to post announcements and updates:

  • Viewing Messages: All users can view messages by clicking the "Nachrichten" tab in the main interface
  • Adding Messages: Admins can click "Nachricht hinzufügen" to create a new message
  • Editing Messages: Click the "Bearbeiten" button on any message card
  • Deleting Messages: Click the "Löschen" button to remove a message

Messages are stored in messages.json and support:

  • Markdown formatting for rich content (headings, lists, links, code blocks, etc.)
  • Date/time stamps for chronological organization
  • Blog-style display with newest messages first

To pre-populate messages, you can manually edit messages.json or copy from example_config_files/messages.json as a template.

Contribution

This app is under active development and contributions are welcome. If you'd like to adapt it for your own community or project, feel free to fork the repo and reach out for setup help.

Description
No description provided
Readme 31 MiB
Languages
JavaScript 39.2%
Python 38.1%
HTML 13.3%
CSS 8%
Shell 1.4%