Coder Social home page Coder Social logo

agustinsrg / personalmediavault Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 0.0 9.33 MB

Web application to store media files (video, audio and pictures) in an encrypted storage, and visualize them using a web browser.

Home Page: https://agustinsrg.github.io/pmv-site/

License: MIT License

Batchfile 0.09% Shell 0.11% Go 28.92% HTML 0.07% JavaScript 1.20% Vue 52.97% TypeScript 12.35% PowerShell 0.05% Dockerfile 0.02% CSS 4.22%
audio ffmpeg golang media personal pictures vault video vue personal-media-vault

personalmediavault's Introduction

PersonalMediaVault Personal Media Vault

Backend (Go) CI Backup tool (Go) CI Launcher (Go) CI Frontend (Vue) CI License

Web application to store media files (video, audio and pictures) in an encrypted storage, and visualize them using a web browser.

Project motivation

This is a personal project developed with the goal of making a media management tool that has a similar web interface to YouTube, while keeping the media files encrypted in disk.

Why encryption?: When storing your personal pictures, videos or audio recordings, if you store them unencrypted in your computer, any malware that is able to infect your device will be able to easily get them from the file system. By encrypting them, it makes harder for those media files to be stolen. Also, by being encrypted, you can easily make backups of them in cloud storage services like Google Drive, without giving Google the ability to peek into your personal media files.

Why a web application?: By making it a web application, its usage becomes very flexible. You can run the backend in a computer in your LAN or a remote server and you are able to use the app from all the devices connected to the Internet without any extra installation. Also, web interfaces are easier to develop to work in multiple devices and they offer standard features already implemented that are required for the app, like the video player.

Features

  • Support for videos, audios and pictures.
  • Web interface: The project provides a Web interface, allowing the access to the vault from multiple devices and operating systems.
  • Encrypted and easy to back-up storage: The vault is encrypted using the user's password, and is stored in files in a data folder. It's possible to make backups of the vault just by copying the folder, ideal for tools like rsync. This project also provides its own backup tool for doing that.
  • Indexed tags: Each media asset can be tagged, so the user can search for it with a tag based search system.
  • Albums: Media files can be sorted using albums.
  • Media encoding: Media files are encoded into multiple formats in order to allow the playback from multiple browsers. For videos and pictures, they can also be resized into multiple resolutions for different kind of devices.
  • Automated thumbnail generation.
  • Subtitles support for videos and audios.
  • Multiple audio track support for videos
  • Video timeline previews.
  • Video timeline slices.
  • Image annotations.

Installation

Depending on the operating system you are using, there are multiple installation options.

Linux with DEB package support

For apt-compatible Linux distributions, we provide a DEB package:

Version Arch Download Hash Hash alg.
1.17.0 amd64 Drive
Mega
12cb634c145eecf1140b7b7d83a93d8fe38f7b5a02426b649d0782e0c08c4cd8 SHA256

Download it, and check its integrity using:

sha256sum ./personalmediavault_1.17-0.deb

Then, install it using apt:

sudo apt install ./personalmediavault_1.17-0.deb

After the installation, the binary files will be available in /usr/bin, and the frontend files will be available in /usr/lib/pmv/www.

To run a vault, type:

pmv /path/to/vault

You can change the language the launcher uses setting the PMV_LANGUAGE environment variable to en or es.

Windows

For Windows, we provide a MSI installer:

Version Arch Language Download Hash
1.17.0 x64 English Mega SHA256: 529E87D25A7EEF64D823AEA0B452160730C6FA5F9A70644A6CD462D5C277A45A
1.17.0 x64 Spanish Mega SHA256: 755C2EDBD0F39A3B6F95DAA3BC1D5C969BBB5065A54ECAA8D209C70267C578A8

In order to install Personal Media Vault in Windows, run the installer and everything will be set up for the application to work.

When downloading the MSI installer, check the file hash with PowerShell to make sure the file was not modified:

Get-FileHash -Path "PersonalMediaVault-1.17.0-x64.msi" -Algorithm SHA256
Get-FileHash -Path "PersonalMediaVault-1.17.0-x64-es.msi" -Algorithm SHA256

After it's installed, create an empty folder to store your media vault and right click it. You should see a new option "Open with PersonalMediaVault". Click it to run the vault launcher.

Docker

You can run this project with docker, using the official image uploaded to Docker Hub.

In order to pull the image, type:

docker pull asanrom/pmv

To run a personal media vault instance, you can create a container, which is going to run the backend binary inside it.

Here is an example command to create a container:

docker run -p 80:80 -v /path/to/the/vault:/vault asanrom/pmv --daemon --clean --log-requests --vault-path /vault

You can replace /path/to/the/vault for the path where you have your vault stored.

For empty vaults, a default admin, with password admin will be created. You should change the password as soon as you first login into your vault to protect it with a strong password.

For more options, run:

docker run asanrom/pmv --help

Project components

  • Backend: Manages the vault, encodes and stores the media files and provides a HTTP API for clients to access it.
  • Frontend: Uses the HTTP API to access the vault, providing a web interface to the user.
  • Backup tool: Tool to make backups of media vaults (copies the new files and replaces the old ones, using the last modified date).
  • Launcher: CLI program to launch the web app. This component is made in order to make it easier to use in local, when you do not have the backend configured as a system service.
  • Installation Packages: Collection of installation packages for multiple operating systems.

License

This project is under the MIT License.

personalmediavault's People

Contributors

agustinsrg avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

personalmediavault's Issues

Launcher: User-specific config

When using a portable vault, it's a bit annoying to change the configuration if you have the configured port busy.

Proposed changes

  • Use the os.UserConfigDir() to store the launcher config for each vault (use the vault path as the key)
  • Fall back to the launcher.config.json for retro-compatibility.

Frontend: Save current album search

When visiting the albums page:

  • Auto focus the search input.
  • Save the search value globally so it is not lost when going back (navigation).

[Frontend] Remove dependency: Axios

Replace axios with native fetch + XMLHttpRequest (for upload progress).

Goal: Reduce frontend script size and remove external dependency.

Minor frontend issues / improvements

List of issues or improvements detected:

  • Video player and audio player should not auto play when the album upload modal is openned.
  • Album add modal should display upload by default (it's the most common used option)
  • Player top bar should not have a flashing scroll bar when the open / close animation is playing
  • Wrong auto scrolling when changing pages having the player openned
  • Rare desync of Video player mouse tracker, cuasing controls not to auto hide (Seems to happen when going to full screen mode sometimes)
  • If the duration of a video is too short (eg: less than 5s), set loop enabled on load. Same for audio player. To prevent intant auto next.
  • When going to next for audios and videos, and not in album, add a 3 seconds warning

The goal is to detect as many issues as possible to polish the frontend.

Improve PlayerMediaEditor

Currently the PlayerMediaEditor is too big and messy, doe to the amount of options.

Add a top menu with the options, and split into smaller components.

Feature: Attachments

Add new feature:

  • Allow to add attachments to the media assets, like the original / uncompressed file, associated documents, etc.
  • Add upload & encryption progress.
  • Allow downloading
  • Allow deleting
  • When the media is deleted, delete all the attachments

Improve upload view

Move the options Add into an album and Add tags into a modal that is shown the moment you upload media.
Keep the parallel uploads option in the view, but improve its style.

Feature: Extended description

Add extended description feature:

  • It's a text file to store stuff like stories, context or other information.
  • Display as a modal, similar to tags or albums
  • Store as a single-file asset, similar to image notes

New version notice

Add a notice when you connect to the server, and the client version is different.

The notice should be at the bottom, with a button to dismiss it.

Backend: Improve cache

Improve cache with go co-routines and better concurrency management for that part of the backend.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.