memories/search/search_index.json

1 line
71 KiB
JSON

{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"changelog/","title":"Changelog","text":"<p>All notable changes to this project will be documented in this file.</p>"},{"location":"changelog/#v622-2024-01-10","title":"[v6.2.2] - 2024-01-10","text":"<ul> <li>Hotfix for a bug in request pipelining.</li> </ul>"},{"location":"changelog/#v620-2024-01-09","title":"[v6.2.0] - 2024-01-09","text":"<ul> <li>Nextcloud 28 compatibility</li> <li>Various bug fixes</li> </ul>"},{"location":"changelog/#v615-2023-11-25","title":"[v6.1.5] - 2023-11-25","text":"<ul> <li>Hotfix in service worker caching strategy.</li> </ul>"},{"location":"changelog/#v611-2023-11-24","title":"[v6.1.1] - 2023-11-24","text":"<ul> <li>This is an off-cycle hotfix release for some bugs in v6.1.0 (see).</li> <li>Breaking: The CUDA scaler is now the default for NVENC. You may need to reconfigure your transcoder. (see #582)</li> <li>This release also cuts down a lot of weirdness and improves the usage of dependencies significantly.</li> </ul>"},{"location":"changelog/#v610-2023-11-15","title":"[v6.1.0] - 2023-11-15","text":"<ul> <li>Feature: RAW files are now hidden (stacked) when another file with the same basename exists (#537, #152, #419)</li> <li>Feature: Multiple files can be now selected and shared from the timeline (#472, #901)</li> <li>Feature: Bulk rotating of images. You can now rotate images losslessly by editing the rotation EXIF metadata. (#856)</li> <li>Feature: Icon animation when playing live photos (#898)</li> <li>Feature: Swipe to refresh on timeline (#547)</li> <li>Bugfix: Allow switching video to direct on Safari (#650)</li> <li>Many other bug fixes</li> <li>Android app is now open source (see)</li> </ul>"},{"location":"changelog/#v601-2023-10-27","title":"[v6.0.1] - 2023-10-27","text":"<ul> <li>Bug fixes in video streaming.</li> </ul>"},{"location":"changelog/#v600-2023-10-25","title":"[v6.0.0] - 2023-10-25","text":"<ul> <li>This release focuses on improvements in code quality, maintainability and documentation.<ul> <li>New CI/CD jobs for type checking with Psalm and vue-tsc</li> <li>Vue templates are now checked and largely type-safe</li> <li>The backend now has native type coverage with PHP 8 type hints. This unearthed multiple bugs that are now fixed.</li> <li>Developing is now easier for new contributors</li> </ul> </li> <li>Breaking: Nextcloud 26+ and PHP 8.0 are now required.</li> <li>Breaking: The directory containing the <code>exiftool</code> and <code>go-vod</code> binaries was renamed from <code>exiftool-bin</code> to <code>bin-ext</code></li> <li>Feature: External transcoders are much easier to set up now. See docs for details.</li> <li>Feature: Folders view in shares (#880)</li> <li>Feature: Improved back button navigation on mobile (#861).</li> <li>Feature: The transcoding quality factor can now be configured from the admin panel.</li> </ul>"},{"location":"changelog/#v550-2023-10-06","title":"[v5.5.0] - 2023-10-06","text":"<ul> <li>Important: This update runs some slow database migrations. It is recommended to upgrade using the CLI (<code>occ upgrade</code>) instead of the web interface.</li> <li>Important: This version corrects some errors in indexing and indexes some new EXIF fields. It is recommended to run <code>occ memories:index -f</code> after upgrading.</li> <li>Breaking: Files in hidden folders are now hidden in the timeline (#825)</li> <li>Feature: An Android app is now available with early access (https://play.google.com/store/apps/details?id=gallery.memories). Memories v5.5+ is required.</li> <li>Feature: Support showing full file path in sidebar (#173)</li> <li>Feature: View file in folder on clicking name in sidebar</li> <li>Feature: User can leave albums that are shared with them</li> <li>Feature: Admin can now configure default behavior of loading high resolution image in viewer (#672)</li> <li>Feature: Shared videos will now be transcoded to be smaller in size</li> <li>Feature: Confirmation box on deletion (#798)</li> <li>Feature: Prompt on editing metadata if date will be lost</li> <li>Feature: Allow changing binary temp directory (#821)</li> <li>Feature: Support for Samsung HEIC Motion Photos on newer devices</li> <li>Fix: Support for transcoding MKV files.</li> </ul>"},{"location":"changelog/#v541-2023-08-20","title":"[v5.4.1] - 2023-08-20","text":"<ul> <li>Corrects a versioning error. This version is the same as v5.3.0</li> </ul>"},{"location":"changelog/#v530-2023-08-20","title":"[v5.3.0] - 2023-08-20","text":"<ul> <li>Feature: Allow adding photos to multiple albums together (#752)</li> <li>Feature: Improved layout for albums list view</li> <li>Feature: Search bar for album picker when adding to album.</li> <li>Feature: Show albums of photo in metadata (#752)</li> <li>Feature: Show faces in photo in sidebar metadata</li> <li>Feature: Allow creation of new tags when editing metadata (#487)</li> <li>Feature: Allow disabling autoplay of live photo (#591)</li> <li>Feature: Improvements in admin interface</li> <li>Feature: A <code>.nomemories</code> file will now hide a folder from Memories without affecting other apps (#777)</li> <li>Feature: More crop options for image editor (#546)</li> <li>Bugfix: You can now configure the transpose strategy of the transcoder (required for QSV)</li> </ul>"},{"location":"changelog/#v521-2023-07-03","title":"[v5.2.1] - 2023-07-03","text":"<ul> <li>Feature: Allow moving unclustered faces to a cluster with Recognize (v4.2.0+)</li> </ul>"},{"location":"changelog/#v520-2023-06-30","title":"[v5.2.0] - 2023-06-30","text":"<p>Note: You will need to run <code>occ memories:places-setup --recalculate</code> to re-index places (or reindex everything)</p> <ul> <li>New project home page: https://memories.gallery</li> <li>New Discord community: https://discord.gg/7Dr9f9vNjJ</li> <li>Nextcloud 27 compatibility</li> <li>Feature: Hierarchical places view</li> <li>Feature: Layout improvements especially for mobile.</li> <li>Feature: Allow downloading entire publicly shared albums.</li> <li>Feature: Basic preview generation configuration in admin interface.</li> <li>Bugfix: Prevent keeping original file on metadata edit.</li> <li>Bugfix: Use correct locale for time in metadata view.</li> <li>Bugfix: Allow editing metadata on large video files.</li> </ul>"},{"location":"changelog/#v510-2023-04-29","title":"[v5.1.0] - 2023-04-29","text":"<ul> <li>Feature: Allow creating new cluster in recognize while moving faces.</li> <li>Feature: Allow specifying precise coordinates while editing GPS metadata.</li> <li>Feature: Whitelist x-msvideo mime type.</li> <li>Fix: Improved handling of duplicate Live Photos.</li> <li>Fix: Prevent zombie processes when running in Docker.</li> <li>Breaking: Recognize v3.8 (minimum) is now required.</li> </ul>"},{"location":"changelog/#v500-2023-04-16","title":"[v5.0.0] - 2023-04-16","text":"<p>Note: this is a major release and may introduce breaking changes to your workflow.</p> <ul> <li>Feature: You can now configure Memories from the admin panel. To access the admin panel, go to the admin settings and click on the \"Memories\" tab.</li> <li>Breaking: The <code>memories:video-setup</code> command has been removed. Transcoding with or without hardware acceleration must now be configured from the admin panel. For running an external go-vod instance, specifying a configuration file is no longer required.</li> <li>Breaking: The transcoder and exiftool binaries will be copied to the temp directory before execution. Make sure your temp directory is writable by the web server.</li> <li>Breaking: The <code>--cleanup</code> flag to <code>memories:index</code> has been removed and is no longer necessary. Folders having a <code>.nomedia</code> file will automatically be excluded from the timeline.</li> <li>Feature: Indexing will now build and check indices automatically in the backgroud. Make sure Nextcloud cron is configured correctly. You can disable automatic indexing in the admin panel. Note that files are still indexed immediately on upload.</li> <li>Feature: You can now choose which folders to index by default. This can be configured from the admin panel. The available options are:</li> <li>All media files (excluding folders with <code>.nomedia</code> files, default and recommended)</li> <li>All files in every user's configured timeline folder (not recommended).</li> <li>All files in a given folder for each user (relative path).</li> <li>Feature: You can now run indexing in parallel on multiple threads. <code>for i in {1..4}; do (occ memories:index &amp;); done</code></li> <li>Feature: Image editing is now done server-side, and is much faster and more reliable.</li> <li>PHP Imagick extension is now required for image editing.</li> <li>This fixes multiple issues editing images especially in Firefox.</li> <li>Feature: Significant performance improvements for the timeline view.</li> </ul>"},{"location":"changelog/#v4131-2023-04-03","title":"[v4.13.1] - 2023-04-03","text":"<ul> <li>Feature: \"Direct\" video playback will now fall back to HLS (transcoding) if playback fails (e.g. due to lack of browser support).</li> </ul>"},{"location":"changelog/#v4130-2023-04-03","title":"[v4.13.0] - 2023-04-03","text":"<ul> <li>Feature: Use GPS location data for timezone calculation. Many cameras do not store the timezone in EXIF data. This feature allows Memories to use the GPS location data to calculate the timezone. To take advantage of this, you will need to run <code>occ memories:places-setup</code> followed by <code>occ memories:index --clear</code> (or <code>occ memories:index -f</code>) to reindex your photos.</li> <li>Feature: You can now specify the user and/or folder to index when running <code>occ memories:index</code> (#184).</li> <li>Feature: The map view now has a much more flexible layout, especially on mobile.</li> <li>Feature: Support for Google MVIMG photos (#468)</li> </ul>"},{"location":"changelog/#v4125-2023-03-23","title":"[v4.12.5] - 2023-03-23","text":"<ul> <li>These releases significantly overhaul the application logic for better maintainability. If you run into any regressions, please file a bug report.</li> </ul>"},{"location":"changelog/#v4122-2023-03-17","title":"[v4.12.2] - 2023-03-17","text":"<ul> <li>Feature: Allow migrating Google Takeout metadata to EXIF (#430)</li> </ul>"},{"location":"changelog/#v4121-2023-03-15","title":"[v4.12.1] - 2023-03-15","text":"<ul> <li>Feature: Load full image on zoom (#266)</li> </ul>"},{"location":"changelog/#v4120-2023-03-10","title":"[v4.12.0] - 2023-03-10","text":"<p>This release drops support for Nextcloud 24.</p> <p>Make sure you run at least Nextcloud 25.0.4 PHP 7.4 support is now deprecated. Please upgrade to at least PHP 8.0. You may need to clear browser cache to use location search.</p> <ul> <li>Feature: Allow editing of GPS coordinates (#418)</li> <li>Feature: Allow bulk editing of EXIF attributes other than date/time</li> <li>Feature: Allow (optionally bulk) editing of collaborative tags</li> <li>Feature: Allow sharing single photo / video (#307)</li> <li>Feature: Allow sharing photos in high/low resolution.</li> <li>Feature: Allow sharing videos (#261)</li> <li>Feature: Show list of tags in sidebar</li> <li>Feature: Better configurability and feature detection for go-vod (#450)</li> <li>Feature: Configurable folder/album sorting order (#371)</li> <li>Feature: Configurable album list sorting order (#377)</li> <li>Feature: Allow archiving photos through folder view (#350)</li> <li>Feature: Add search bar to face cluster merge dialog (#177)</li> <li>Bugfix: Sidebar now shows metadata on albums and public shares (#320).</li> <li>Other fixes and features (milestone)</li> </ul>"},{"location":"changelog/#v4110-2023-02-10","title":"[v4.11.0] - 2023-02-10","text":"<ul> <li>Feature: Show map of photos (#396) To index existing images, you must run <code>occ memories:index -f</code></li> <li>Feature: Show list of places using reverse geocoding (MySQL/Postgres only) (#395) To configure this feature, you need to run <code>occ memories:places-setup</code> followed by <code>occ memories:index -f</code></li> <li>Other minor fixes and features (milestone)</li> </ul>"},{"location":"changelog/#v4100-2023-01-17","title":"[v4.10.0] - 2023-01-17","text":"<ul> <li>Feature: Allow sharing albums using public links (#274)</li> <li>Feature: Allow sharing albums with groups (#329)</li> <li>Feature: Directly move photos from the timeline to any folder (#321)</li> <li>Feature: Optionally view folders in the recursive timeline view (#260)</li> <li>Fix folder share title and remove footer (#323)</li> <li>Other minor fixes (milestone)</li> </ul>"},{"location":"changelog/#v490-2022-12-08","title":"[v4.9.0] - 2022-12-08","text":"<ul> <li>Important: v4.9.0 comes with an optimization that greatly reduces CPU usage for preview serving. However, for best experience, the preview generator app is now required to be configured properly. Please install it from the app store.</li> <li>Feature: Slideshow for photos and videos (#217)</li> <li>Feature: Support for GPU transcoding (#194)</li> <li>Feature: Allow downloading entire albums</li> <li>Feature: Allow editing more EXIF fields (#169)</li> <li>Feature: Alpha integration with the face recognition app (#146)</li> <li>Fix downloading from albums (#259)</li> <li>Fix support for HEVC Live Photos (#234)</li> <li>Fix native photo sharing (#254, #263)</li> <li>Use larger previews in viewer (please see these docs) (#226)</li> </ul>"},{"location":"changelog/#v480-2022-11-22","title":"[v4.8.0] - 2022-11-22","text":"<ul> <li>Feature: Support for Live Photos (#124)</li> <li>You need to run <code>occ memories:index --clear</code> to reindex Live Photos</li> <li>Only JPEG (iOS with MOV, Google, Samsung) is supported. HEIC is not supported.</li> <li>Feature: Timeline path now scans recursively for mounted volumes / shares inside it</li> <li>Feature: Multiple timeline paths can be specified (#178)</li> <li>Support for server-side encrypted storage (#99)</li> <li>Mouse wheel now zooms on desktop</li> <li>Improved caching performance</li> <li>Due to incorrect caching in previous versions, your browser cache may have become very large. You can clear it to save some space.</li> </ul>"},{"location":"changelog/#v470-2022-11-14","title":"[v4.7.0] - 2022-11-14","text":"<ul> <li>Note: you must run <code>occ memories:index -f</code> to take advantage of new features.</li> <li>Massively improved video performance</li> <li>Memories now comes with a dedicated transcoding server with HLS support.</li> <li>Read the documentation here carefully for more details.</li> <li>Feature: Show EXIF metadata in sidebar (#68)</li> <li>Feature: Multi-selection with drag (mobile) and shift+click (#28)</li> <li>Feature: Show duration on video tiles</li> <li>Feature: Allow editing all image formats (HEIC etc.)</li> <li>Fix stretched images in viewer (#176)</li> <li>Restore metadata after image edit (#174)</li> <li>Fix loss of resolution after image edit</li> </ul>"},{"location":"changelog/#v461-2022-11-07","title":"[v4.6.1] - 2022-11-07","text":"<ul> <li>Feature: Native sharing from the viewer (images only)</li> <li>Feature: Deep linking to photos on opening viewer</li> <li>Feature: Password protected folder shares (#165)</li> <li>Feature: Folders view will now show only folders with photos (#163)</li> <li>Improvements to viewer UX</li> <li>Restore image editor (see v4.6.0)</li> </ul>"},{"location":"changelog/#v460-2022-11-06","title":"[v4.6.0] - 2022-11-06","text":"<ul> <li>Brand new photo viewer with improved touch interface and UX</li> <li>Improvements from v4.5.4 below</li> <li>Known regressions: Photo Editor and Slideshow are not implemented yet</li> <li>New layout for Albums view (date ascending, grouped by month)</li> <li>Re-enable viewer editing and deletion</li> </ul>"},{"location":"changelog/#v452-2022-10-30","title":"[v4.5.2] - 2022-10-30","text":"<ul> <li>Improved scroller performance</li> <li>Improved support for external storage and FreeBSD</li> <li>Improved selection of photos</li> </ul>"},{"location":"changelog/#v450-2022-10-28","title":"[v4.5.0] - 2022-10-28","text":"<ul> <li>Feature: Album sharing to other Nextcloud users</li> <li>Feature: Folder sharing with public link #74</li> <li>Performance improvements and bug fixes</li> </ul>"},{"location":"changelog/#v441-2022-10-27","title":"[v4.4.1] - 2022-10-27","text":"<ul> <li>Feature: Albums support for Nextcloud 25 (alpha)</li> <li>Performance improvements and bug fixes</li> </ul>"},{"location":"changelog/#v438-2022-10-26","title":"[v4.3.8] - 2022-10-26","text":"<ul> <li>Feature: Full screen viewer on desktop</li> <li>Feature: Allow opening people and tags in new tab</li> <li>Bugfix: Fix regression in performance with large number of files</li> <li>Bugfix: Improve image quality on mobile</li> </ul>"},{"location":"changelog/#v437-2022-10-24","title":"[v4.3.7] - 2022-10-24","text":"<ul> <li>Feature: Support for RAW (must run <code>occ memories:index</code> after upgrade) with camera raw previews app (#107)</li> <li>Feature: Better settings experience.</li> <li>Feature: Better first start experience.</li> <li>Bug fixes for postgresql and mysql</li> </ul>"},{"location":"changelog/#v430-2022-10-22","title":"[v4.3.0] - 2022-10-22","text":"<ul> <li>Note: you must run <code>occ memories:index -f</code> after updating to take advantage of new features.</li> <li>Feature: Brand new tiled layout for photos</li> <li>Feature: Photos from \"On this day\" are now shown at the top of the timeline</li> <li>Feature: Move selected photos from one person to another (#78)</li> <li>Feature: Highlight faces in People view (#79)</li> <li>Feature: Choose root folder for Folders view (#85)</li> <li>No longer need to install exiftool. It will be bundled with the app.</li> <li>Improve overall performance with caching</li> <li>Basic offline support with cache</li> <li>Improve scroller performance</li> <li>Improve faces view performance</li> </ul>"},{"location":"changelog/#v422-2022-10-12","title":"[v4.2.2] - 2022-10-12","text":"<ul> <li>Update to mobile layout with improved performance</li> <li>Show how old photos are in <code>On this day</code></li> </ul>"},{"location":"changelog/#v421-2022-10-11","title":"[v4.2.1] - 2022-10-11","text":"<ul> <li>Fix incorrect layout of <code>On this day</code></li> </ul>"},{"location":"changelog/#v420-2022-10-11","title":"[v4.2.0] - 2022-10-11","text":"<ul> <li>Allow renaming and merging recognize faces</li> <li>Bug fixes</li> </ul>"},{"location":"changelog/#v410-2022-10-08","title":"[v4.1.0] - 2022-10-08","text":"<ul> <li>First release for Nextcloud 25</li> </ul>"},{"location":"changelog/#v300-2022-10-07","title":"[v3.0.0] - 2022-10-07","text":"<ul> <li>People tab with faces from recognize app</li> <li>Tags tab with objects from recognize app</li> <li>On this day tab</li> <li>Bug fixes and performance improvements</li> </ul>"},{"location":"changelog/#v213-2022-09-27","title":"[v2.1.3] - 2022-09-27","text":"<ul> <li>Bug fixes and optimized performance</li> </ul>"},{"location":"changelog/#v212-2022-09-25","title":"[v2.1.2] - 2022-09-25","text":"<ul> <li>Breadcrumb navigation in folder view</li> <li>Edit Exif date feature (use with care)</li> <li>Archive photos function</li> <li>Improved localization and performance</li> </ul>"},{"location":"changelog/#v200-2022-09-23","title":"[v2.0.0] - 2022-09-23","text":"<ul> <li>Note: you must re-run <code>occ memories:index</code> after updating.</li> <li>Support for external storage and shared folders for timeline.</li> <li>Localization support. Many languages already available.</li> <li>Select and favorite / unfavorite photos</li> </ul>"},{"location":"changelog/#v116-2022-09-15","title":"[v1.1.6] - 2022-09-15","text":"<ul> <li>New feature: Select photos from an entire day together</li> <li>Fix: Timeline with nested folders</li> </ul>"},{"location":"changelog/#v115-2022-09-15","title":"[v1.1.5] - 2022-09-15","text":"<ul> <li>Fix for postgres</li> <li>Fix for Exiftool crash</li> </ul>"},{"location":"changelog/#v114-2022-09-13","title":"[v1.1.4] - 2022-09-13","text":"<ul> <li>PHP 7.4 support</li> <li>Bug fixes</li> </ul>"},{"location":"changelog/#v110-2022-09-13","title":"[v1.1.0] - 2022-09-13","text":"<ul> <li>Support for external storage</li> <li>Favorites and Videos tabs</li> <li>Improved performance</li> <li>Better support for folder shares</li> </ul>"},{"location":"changelog/#v101-2022-09-08","title":"[v1.0.1] - 2022-09-08","text":"<ul> <li>Initial release</li> </ul>"},{"location":"config/","title":"Configuration","text":"<p>Use the admin interface</p> <p>Starting with v5.0.0, you can fully configure memories using the admin panel. With an admin account in Nextcloud, go to <code>Settings -&gt; Memories</code>. Using the admin interface for configuration is strongly recommended in most cases.</p> <p>Memories runs a background indexing job to extract EXIF metadata from photos and videos, as well as immediately on every upload.</p> <p>If you just installed memories and want to speed up indexing, run the following commands. For usage of the <code>occ</code> command line, refer here for more information.</p> <pre><code>occ memories:places-setup # set up reverse geocoding, will force re-indexing\nocc memories:index # index existing photo files (can run in parallel, refer to admin panel)\n</code></pre> <p>Cron</p> <p>You DO NOT need to set up a cron job or run <code>occ memories:index</code> periodically, since this is handled internally. Any subsequently uploaded files will be indexed automatically with hooks. In case you upload files externally and run <code>files:scan</code>, the background job will index these files. Make sure Nextcloud cron is configured correctly.</p> <p>OCC with Docker</p> <p>If you are using docker, make sure you run these commands with an interactive TTY. For example,</p> <pre><code>docker exec -it my_nc_container php occ memories:index\n# ^^^ &lt;-- this is required\n</code></pre> <p>If you are using Nextcloud AIO, see this documentation.</p>"},{"location":"config/#recommended-apps","title":"Recommended Apps","text":"<p>For the best experience and performance, the following apps are recommended.</p> <ul> <li>Preview Generator - For pre-generating image previews (required for performance)</li> <li>Recognize - The official Nextcloud app for AI tagging of images and people.</li> <li>Photos - The official Nextcloud Photos app, required for albums support.</li> <li>Face Recognition - An alternative face recognition app, which offers more fine-tuning. Alpha stage integration.</li> </ul>"},{"location":"config/#storage-support","title":"Storage Support","text":"<p>Memories works out-of-the-box with most Nextcloud setups, including with external storage.</p> <ul> <li>If you upload any photos from outside of Nextcloud, you may need to run the <code>occ files:scan</code> and <code>occ memories:index</code> commands.</li> <li>With external storage, indexing may be slow since all files must be downloaded.</li> </ul> <p>Transcoding with external storage</p> <p>Video transcoding requires the entire file to be available locally for ffmpeg. To prevent downloading the entire for every playback, transcoding is disabled for external storage.</p>"},{"location":"config/#transcoding","title":"Transcoding","text":"<p>Memories bundles a transcoding server with HLS capabilites for adaptive streaming. You need to configure transcoding to be able to play any videos. HLS enables the browser to download the video as small chunks and in resolutions adaptive to the connection speed. As a result, this is usually expected to have a major boost in video experience and performance.</p> <p>You can configure transcoding from the admin panel. Make sure to test all settings carefully on different kinds of videos.</p> <p>Read the following considerations carefully regarding transcoding:</p> <ol> <li>In general, transcoding can be very compute intensive. If you run Nextcloud on an RPi, it will not work for you.</li> <li>If you use external storage, transcoding might be very slow or not work at all. In this case, you should disable it.</li> <li>Make sure there is a lot of space available in <code>/tmp</code> for the transcoded files.</li> <li>If transcoding fails, the video player will fall back to the original video stream. Check the output of <code>/tmp/go-vod/&lt;instanceid&gt;.log</code></li> <li>For better performance, you may configure the transcoder to use hardware acceleration. See this page.</li> </ol> <p>Hardware Acceleration</p> <p>Memories supports hardware acceleration for transcoding using VA-API and NVENC. If you have compatible hardware, using acceleration can significantly improve performance. See the instructions on this page for more information.</p>"},{"location":"config/#reverse-geocoding","title":"Reverse Geocoding","text":"<p>Reverse geocoding to find the location of photos. To set up geocoding you need to download the planet boundary dataset and store it in the database. This works only on MySQL / MariaDB / Postgres (no SQLite support). To set up reverse geocoding, go to the Memories admin panel.</p> <p>World map of photos</p> <p>Reverse geocoding and the map of photos are two separate features and do not depend on each other.</p>"},{"location":"config/#preview-storage","title":"Preview Storage","text":"<p>By default, previews upto <code>4096px</code> size are generated by Nextcloud. Each of the largest previews might be a few megabytes in size. This may not be ideal if you have limited storage space, since the preview size may become larger than the originals (especially if you use efficient image formats like HEIC). In this case, you can limit previews to a smaller size like <code>2048px</code>.</p> <p>Note that Memories will, by default, load the full image upon zooming in. If you are okay with this, you may use a even smaller size like <code>1024px</code> to save more space as well as faster preview generation time. Non-JPEG files will be converted on the server when loading in full-res, which may lead to some server load. These options are also configurable through the admin panel.</p> <pre><code>occ config:system:set preview_max_x --value=\"2048\"\nocc config:system:set preview_max_y --value=\"2048\"\n</code></pre> <p>You can also set the preview JPEG quality to 80 to save more space.</p> <pre><code>occ config:app:set preview jpeg_quality --value=\"80\"\n</code></pre> <p>If you already generated previews and want to regenerate, run the following (at your own risk; have backups)</p> <pre><code>rm -rf &lt;nextcloud-data-dir&gt;/appdata_*/preview\nocc files:scan-app-data\n</code></pre>"},{"location":"config/#header-logo","title":"Header Logo","text":"<p>Nextcloud supports customizing the logo for your instance. To properly theme the logo to match the user's theme, the logo you use in <code>Admninistration =&gt; Theming</code> must follow the following criteria:</p> <ul> <li>It must be an SVG file.</li> <li>The <code>viewBox</code> attribute on the <code>&lt;svg&gt;</code> element must be set appropriately.</li> <li>All paths that correspond to white areas must have the <code>fill</code> attribute set to <code>currentColor</code>. These areas will then automatically be colored according to the user's theme.</li> <li>Since Nextcloud doesn't support <code>currentColor</code>, you must set the default value for the color (e.g. <code>white</code>) as an inline style on the <code>&lt;svg&gt;</code> element (<code>&lt;svg style=\"color:white\"&gt;</code>).</li> </ul> <p>A sample SVG that follows these criteria is shown below (from here):</p> <pre><code>&lt;svg viewBox=\"0 0 256 128\" style=\"color:white\" width=\"256\" height=\"128\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"&gt;\n&lt;path fill=\"currentColor\" d=\"m128 7c-25.871 0-47.817 17.485-54.713 41.209-5.9795-12.461-18.642-21.209-33.287-21.209-20.304 0-37 16.696-37 37s16.696 37 37 37c14.645 0 27.308-8.7481 33.287-21.209 6.8957 23.724 28.842 41.209 54.713 41.209s47.817-17.485 54.713-41.209c5.9795 12.461 18.642 21.209 33.287 21.209 20.304 0 37-16.696 37-37s-16.696-37-37-37c-14.645 0-27.308 8.7481-33.287 21.209-6.8957-23.724-28.842-41.209-54.713-41.209zm0 22c19.46 0 35 15.54 35 35s-15.54 35-35 35-35-15.54-35-35 15.54-35 35-35zm-88 20c8.4146 0 15 6.5854 15 15s-6.5854 15-15 15-15-6.5854-15-15 6.5854-15 15-15zm176 0c8.4146 0 15 6.5854 15 15s-6.5854 15-15 15-15-6.5854-15-15 6.5854-15 15-15z\" /&gt;\n&lt;/svg&gt;\n</code></pre> <p>Note that you may skip these steps and also use a PNG file, but the logo will not be colored according to the user's theme. This can be especially troublesome since Nextcloud mostly shows the logo on a dark background while Memories uses both light and dark backgrounds.</p>"},{"location":"config/#migration","title":"Migration","text":"<p>Memories directly uses EXIF metadata from files, so migration to and from other apps should be generally easy. The file structure of your photos is preserved as-is.</p> <p>If you are migrating from Nextcloud Photos, you don't need to do anything. Your albums and tags will be carried to Memories as-is.</p> <p>If you are migrating from Google Takeout, you may run the following command to move JSON metadata to EXIF.</p> <pre><code>occ memories:migrate-google-takeout\n</code></pre>"},{"location":"config/#other-notes","title":"Other notes","text":"<ul> <li>Make sure your server timezone is configured correctly. If a photo does not contain an EXIF date, the server time is used.</li> <li>Perform additional server tuning for Nextcloud. See performance section of troubleshooting.</li> <li>The archive feature moves photos to a separate folder called <code>.archive</code> at the root of your timeline or the current storage. You can, for example, mount this folder to a cold storage.</li> </ul>"},{"location":"faq/","title":"Help and FAQ","text":""},{"location":"faq/#getting-help","title":"Getting Help","text":"<p>If you have any questions, feel free to reach out at</p> <ul> <li>Discord community (any questions, feedback, suggestions, etc.)</li> <li>GitHub issues (bugs and feature requests)</li> <li>Nextcloud forums (questions about Nextcloud not specific to Memories)</li> </ul>"},{"location":"faq/#faq","title":"FAQ","text":"<p>How is it different from the default Nextcloud Photos app?</p> <p>You can find a full comparison here.</p> <p>What apps does Memories compete against?</p> <p>Commercial cloud photo services. The target is to be better than <code>X</code> service provider that you pay $$$ for, and be usable by grandma.</p> <p>Is it production ready?</p> <p>Yes.</p> <p>Does it support multiple users and external sharing?</p> <p>Yes.</p> <p>Why is it tied to Nextcloud? Isn't this a lot of overhead? Isn't PHP slow?</p> <ol> <li>Reinventing the wheel is pointless. If Memories was a dedicated app, that would mean re-implementing everything from automatic file upload to multi-user support and auth integrations. The maintenance overhead of such a codebase increases exponentially, all while completely unnecessary since someone else is maintaining the exact same things in another piece of software. Integrating with Nextcloud is what makes Memories sustainable.</li> <li>PHP and Nextcloud have become very fast over the last few years, and running both is very minimal overhead. Functions such as upgrading Nextcloud to newer versions is seamless especially when using Docker.</li> <li>The power of Memories is integration: the Nextcloud ecosystem provides tons of other apps for extending functionality.</li> </ol> <p>Why doesn't it support <code>&lt;some-feature&gt;</code> such as XMP tags and advanced metadata editing?</p> <p>The target user of Memories is not a tech-savvy self-hoster. Most commonly used / available features will be given priority over advanced features, e.g. most useful for professionals / photographers / data hoarders. That doesn't mean to say these features will necessarily not be implemented.</p> <p>Does Memories support a folder structure for storage?</p> <p>Yes. All photos are stored in a folder structure, and only displayed as a flat timeline. This means you can swap out Memories for any other photo app if you want (no lock-in). You can also view the photos in the folder structure if you desire.</p> <p>Does it have a mobile app?</p> <p>The Android app is available in early access on Google Play or GitHub Releases. The web app is very responsive on mobile and can be used on Android and iOS. You can use the official Nextcloud app to auto-upload photos and videos from your device.</p> <p>How is it better than the <code>Y</code> FOSS photo manager?</p> <p>UX and performance. The devil is in the details.</p> <p>It's slow or doesn't work</p> <p>Make sure you follow the troubleshooting steps. Unless you have hundreds of thousands of photos on a Raspberry Pi, Memories should be very fast. File an issue otherwise.</p> <p>It says \"nothing to show here\" on startup?</p> <p>Indexing is performed in the background, and can take a while depending on the number of photos. Follow the configuration steps and be patient.</p> <p>Will it run on my system?</p> <p>In general, if you can run Nextcloud, you should be able to run Memories. File an issue if you run into problems.</p>"},{"location":"file-types/","title":"File Type Support","text":"<p>Use the admin interface</p> <p>It is strongly recommended that you use the Memories admin interface to configure file type support. This will ensure that your configuration is valid and that you do not accidentally disable support for any file types.</p> <p>Please note that if Imaginary is configured on your instance like on Nextcloud AIO, you do not need to follow this documentation any further; most file types should work out-of-the-box.</p> <p>Memories supports the file types supported by Nextcloud. File type support is determined in part by the values listed in the <code>enabledPreviewProviders</code> configuration parameter in your configuration file. If your <code>config.php</code> does not contain an <code>enabledPreviewProviders</code> array, this means you are using Nextcloud's defaults. Copy the array over from <code>config.sample.php</code> before adding any of the values below, or else you will effectively disable all of the defaults.</p> <p>If you add support for any one of the file types below, you must run <code>occ memories:index</code> to index these files.</p>"},{"location":"file-types/#common-formats","title":"Common Formats","text":"<pre><code>PNG (image/png)\nJPEG (image/jpeg)\nGIF (image/gif)\nBMP (image/bmp)\n</code></pre> <p>These are enabled by inclusion of the following values in <code>config.php</code>'s <code>enabledPreviewProviders</code> array:</p> <pre><code> 'OC\\Preview\\Image',\n</code></pre>"},{"location":"file-types/#heic-and-tiff","title":"HEIC and TIFF","text":"<p>These are enabled by inclusion of the following values in <code>config.php</code>'s <code>enabledPreviewProviders</code> array:</p> <pre><code> 'OC\\Preview\\HEIC',\n 'OC\\Preview\\TIFF',\n</code></pre> <p>You must also install Imagemagick (included in the official Nextcloud docker image).</p>"},{"location":"file-types/#videos","title":"Videos","text":"<p>These are enabled by inclusion of the following value in <code>config.php</code>'s <code>enabledPreviewProviders</code> array:</p> <pre><code> 'OC\\Preview\\Movie',\n</code></pre> <p>You must also install <code>ffmpeg</code> and add the video config to <code>config.php</code>.</p>"},{"location":"file-types/#raw-images","title":"RAW images","text":"<p>Install the camera raw previews app from the Nextcloud app store.</p>"},{"location":"hw-transcoding/","title":"Hardware Transcoding","text":"<p>This document describes setting up transcoding in Memories, specifically using hardware acceleration. Hardware acceleration can significantly improve transcoding performance, especially for high resolution videos. Memories supports transcoding using CPU, VA-API and NVENC.</p>"},{"location":"hw-transcoding/#overview","title":"Overview","text":"<p>Newer Intel processors come with a feature called QuickSync that can significantly boost transcoding performance (4-5x improvement over x264 is common). QuickSync can be used for hardware accelerated transcoding using the VA-API in ffmpeg.</p> <p>Note: VA-API acceleration may also work with some AMD GPUs.</p> <p>To configure VAAPI, you need to have <code>/dev/dri</code> available to the Nextcloud instance with the <code>www-data</code> in the group owning the drivers. You also need the correct drivers and a compatible version of ffmpeg installed (older versions may not work with modern hardware).</p> <p>NVIDIA GPUs support hardware transcoding using NVENC.</p> <p>Hardware acceleration is optional</p> <p>Hardware acceleration is optional and not required for Memories to function. If you do not have hardware acceleration, Memories will use the CPU for transcoding.</p> <p>Filing bugs related to transcoding</p> <p>If you have issues with hardware transcoding, reach out for help. Make sure you include details about your setup such as how the transcoder is set up, the version of each component and the logs from the transcoder.</p>"},{"location":"hw-transcoding/#external-transcoder","title":"External Transcoder","text":"<p>Recommended Configuration</p> <p>The easiest and recommended way to use hardware transcoding in a docker environment is to use an external transcoder. This setup utilizes a separate docker container that contains the hardware drivers and ffmpeg. If you cannot do this, other installation methods are also possible.</p> <p>go-vod, the transcoder of Memories, comes with a pre-built Docker image based on <code>linuxserver/ffmpeg</code>. The docker image connects to your Nextcloud instance and pulls the go-vod binary on startup. To set up an external transcoder, follow these steps.</p> <ol> <li> <p>Use a <code>docker-compose.yml</code> that runs the go-vod container and mounts the Nextcloud data directories to it. You must specify <code>NEXTCLOUD_HOST</code> to match the name of your Nextcloud container.</p> <pre><code>services:\n server:\n image: nextcloud\n volumes:\n - ncdata:/var/www/html\n\n go-vod:\n image: radialapps/go-vod\n restart: always\n depends_on:\n - server\n environment:\n - NEXTCLOUD_HOST=https://your-nextcloud-url\n # - NEXTCLOUD_ALLOW_INSECURE=1 # (self-signed certs or no HTTPS)\n - NVIDIA_VISIBLE_DEVICES=all\n devices:\n - /dev/dri:/dev/dri # VA-API (omit for NVENC)\n volumes:\n - ncdata:/var/www/html:ro\n # runtime: nvidia # (NVENC)\n</code></pre> <p>Device and volume bindings</p> <p>In this example, the VA-API devices in <code>/dev/dri</code> are passed to the container, along with the Nextcloud data directory (as readonly). All volumes must be mounted at the same location as the Nextcloud container.</p> <p>What to set in <code>NEXTCLOUD_HOST</code>?</p> <p>The <code>NEXTCLOUD_HOST</code> environment variable must be set to the URL of your Nextcloud instance. If you are using a reverse proxy, you must set this to the URL of the reverse proxy. If you are using a self-signed certificate or http, you must also set <code>NEXTCLOUD_ALLOW_INSECURE=1</code>. This URL is used to download the transcoder binary and to connect to the Nextcloud instance.</p> <p>Setup for NVENC</p> <p>If you want to use NVENC instead of VA-API, uncomment the <code>runtime</code> line and remove the <code>devices</code> section above. You will need to install the NVIDIA Container Toolkit on your host. You may also need to switch to the CUDA scaler in the Memories admin panel.</p> </li> <li> <p>You can now configure the go-vod connect address in the Memories admin panel to point to the external container. go-vod uses port <code>47788</code> by default, so in our example the connection address would be set to <code>go-vod:47788</code>.</p> </li> <li> <p>Finally, turn on enable external transcoder in the admin panel. This will initiate a test of the transcoder and show the result.</p> </li> </ol> <p>Your external transcoder should now be functional. You can check the transcoding logs by running <code>docker compose logs -f go-vod</code>.</p> <p>Usage with Nextcloud AIO</p> <p>If you are not using NVENC, you can use the memories community container. Relevant documentation can be found here, and general directions on using community containers here. AIO v7.7.0 or higher is required.</p> <p>Otherwise, if you want to use NVENC with AIO, you will need to put the container into the <code>nextcloud-aio</code> network. Also the <code>datadir</code> of AIO needs to be mounted at the same place as in its Nextcloud container into the go-vod container. Usually this would be <code>nextcloud_aio_nextcloud_data:/mnt/ncdata:ro</code> or <code>$NEXTCLOUD_DATADIR:/mnt/ncdata:ro</code>.</p> <p>Usage without Docker Compose</p> <p>You can run a similar setup without <code>docker-compose</code>. Make sure that the Nextcloud and go-vod containers are in the same network and that the Nextcloud data directories are mounted at the same locations in both containers.</p>"},{"location":"hw-transcoding/#internal-transcoder","title":"Internal Transcoder","text":"<p>Memories ships with an internal transcoder binary that you can directly use. In this case, you must install the drivers and ffmpeg on the same host as Nextcloud, and Memories will automatically handle starting and communicating with go-vod. This is also the default setup when you enable transcoding without hardware acceleration.</p> <p>Advanced usage only</p> <p>In most cases, it is easier to use an external transcoder when you need hardware acceleration. The internal transcoder is only suitable for CPU transcoding or if you do not use Docker.</p> <p>NVENC</p> <p>These instructions mostly focus on VA-API. For NVENC, you may find further useful pointers in this build script.</p>"},{"location":"hw-transcoding/#bare-metal","title":"Bare Metal","text":"<p>If you are running Nextcloud on bare metal, you can install the drivers and ffmpeg directly on the host. If you are running nextcloud in a Virtual Magine or LXC container configuration, you will also need to pass through the hardware resource to the nextcloud machine. Some helpful guides can be found for Proxmox VM / LXC Container. </p> <p>On the Nextcloud machine, you need to make sure that the <code>www-data</code> user has access to the <code>/dev/dri</code> devices. You can do this by adding the <code>www-data</code> user to the appropriate groups.</p> <pre><code>## Ubuntu\nsudo apt-get update\nsudo apt-get install -y intel-media-va-driver-non-free ffmpeg # install VA-API drivers\nsudo usermod -aG video www-data # add www-data to the video group (may be different)\n\n## Alpine\napk update\napk add --no-cache bash ffmpeg libva-utils libva-vdpau-driver libva-intel-driver intel-media-driver mesa-va-gallium\n</code></pre> <p>In some cases, along with adding <code>www-data</code> to the appropriate groups, you may also need to set the permissions of the device manually:</p> <pre><code>sudo chmod 666 /dev/dri/renderD128\n</code></pre> <p>You can run a test using a sample video file to check if VA-API is working correctly for the <code>www-data</code> user:</p> <pre><code># It may be best to run the following test from within your\n# Nextcloud data directory (e.g. /mnt/ncdata/&lt;user&gt;/files/)\n\n# download sample or or use any other video file\nwget https://github.com/pulsejet/memories-assets/raw/main/sample.mp4\nchown www-data:www-data sample.mp4\n\n# check if VA-API is working\nsudo -u www-data \\\n ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi \\\n -i 'sample.mp4' -vcodec h264_vaapi \\\n output-www-data.mp4\n</code></pre> <p>Beware of old ffmpeg and driver versions</p> <p>Some package repositories distribute old ffmpeg versions that do not support some modern hardware. (e.g., the VA-API driver installed by <code>apt</code> in the current debian image used by Nextcloud only supports up to 10th generation Intel Ice Lake CPUs). To ensure you have a compatible version, you may want to remove your existing ffmpeg version and build the drivers and ffmpeg from source. This script for VA-API or this one for NVENC might be useful.</p>"},{"location":"hw-transcoding/#docker","title":"Docker","text":"<p>Use an external transcoder</p> <p>If you need hardware transcoding and use Docker, it can be significantly easier to use an external transcoder. See above for instructions. The instructions below, as a result, are mostly historical and not recommended for normal usage.</p> <p>If you use Docker and want to use the internal transcoder, you need to:</p> <ol> <li>Pass the <code>/dev/dri</code> device to the Nextcloud container. In <code>docker-compose.yml</code>: <pre><code>nc:\n build: .\n restart: always\n devices:\n - /dev/dri:/dev/dri\n</code></pre></li> <li> <p>Make sure the right drivers are installed. This can be done using a custom Dockerfile as illustrated below. <pre><code>FROM nextcloud:stable-fpm\n\nRUN apt-get update &amp;&amp; \\\n apt-get install -y lsb-release &amp;&amp; \\\n echo \"deb http://ftp.debian.org/debian $(lsb_release -cs) non-free\" &gt;&gt; \\\n /etc/apt/sources.list.d/intel-graphics.list &amp;&amp; \\\n apt-get update &amp;&amp; \\\n apt-get install -y intel-media-va-driver-non-free ffmpeg &amp;&amp; \\\n rm -rf /var/lib/apt/lists/*\n\nCOPY start.sh /\nCMD /start.sh\n</code></pre></p> </li> <li> <p>The <code>start.sh</code> should add the user to the video group and start php-fpm. <pre><code>#!/bin/bash\nGID=`stat -c \"%g\" /dev/dri/renderD128`\ngroupadd -g $GID render2 || true # sometimes this is needed\nGROUP=`getent group $GID | cut -d: -f1`\nusermod -aG $GROUP www-data\n\nphp-fpm\n</code></pre></p> </li> </ol> <p>If you're using the <code>linuxserver/nextcloud</code> image, based on Alpine, you can add the following to the <code>docker-compose.yml</code> file to install the VA-API drivers and use the internal transcoder directly.</p> <pre><code>devices:\n - /dev/dri:/dev/dri\nenvironment:\n - DOCKER_MODS=linuxserver/mods:universal-package-install\n - INSTALL_PACKAGES=libva|libva-intel-driver|intel-media-driver|mesa-va-gallium\n</code></pre>"},{"location":"hw-transcoding/#troubleshooting","title":"Troubleshooting","text":""},{"location":"hw-transcoding/#basic-steps","title":"Basic Steps","text":"<p>If you have trouble with trancoding, try the following steps:</p> <ol> <li> <p>Check the admin panel for any errors. It may be possible that Memories cannot connect to the transcoder or you have a go-vod version mismatch.</p> </li> <li> <p>Check the JS console and the logs of the transcoder. See below for instructions.</p> </li> <li> <p>The admin panel lists a few options that work around driver bugs. For instance, if your portrait videos are rotated on VA-API or your NVENC stream hangs, try enabling these workarounds.</p> </li> <li> <p>If you are using the internal transcoder, make sure you are running a new enough version of ffmpeg (shown in the admin panel). Generally you would need at least ffmpeg v5.x for most modern hardware but many operating systems ship with v4.x. One troubleshooting step is to build ffmpeg and the hardware drivers from source.</p> </li> <li> <p>It may be helpful to run a manual test of ffmpeg in the same environment as the transcoder. See above for instructions. Note that the transcoder output / logs contain the full ffmpeg command used for each transcode.</p> </li> </ol>"},{"location":"hw-transcoding/#logging","title":"Logging","text":"<p>When running an external transcoder, the logs go to the container's stdout. You can view them using </p> <pre><code>docker compose logs -f go-vod # for docker-compose\ndocker logs -f &lt;container-name&gt; # if not using docker-compose\n</code></pre> <p>When using the internal transcoder, the logs go to <code>/tmp/go-vod/&lt;instance-id&gt;.log</code>, where <code>&lt;instance-id</code> is a unique ID for your Nextcloud instance that can be found in <code>config.php</code>. You can view them as illustrated below.</p> <pre><code>tail -f /tmp/go-vod/&lt;instance-id&gt;.log # bare metal\n\ndocker exec -it &lt;container-name&gt; cat /tmp/go-vod/&lt;instance-id&gt;.log # Docker\n</code></pre>"},{"location":"install/","title":"Installation","text":"<p>This page describes how to install the latest version of Memories.</p>"},{"location":"install/#nextcloud","title":"Nextcloud","text":"<p>Memories is an app for Nextcloud, so you need to install Nextcloud first. You can find the installation instructions here.</p> <p>For the best experience, we recommend to use the latest stable version of Nextcloud and PHP. For easy setup and maintenance, you can use the community Nextcloud Docker image, and add extra dependencies using a custom Dockerfile. Another option is to use Nextcloud AIO, in which case most dependencies are already installed.</p> <p>Recommended Configuration</p> <p>If you plan to use hardware transcoding, using Docker Compose or Nextcloud AIO is recommended.</p>"},{"location":"install/#requirements","title":"Requirements","text":"<p>Before installing Memories, make sure that the following requirements are met:</p> <ol> <li>Nextcloud 26 or later.</li> <li>PHP 8.0 or later.</li> <li>MySQL, MariaDB, or PostgreSQL database.</li> <li>Imagick PHP extension.</li> <li>ffmpeg and ffprobe binaries.</li> </ol>"},{"location":"install/#installing-memories","title":"Installing Memories","text":"<p>Memories can be installed from the Nextcloud app store page. Alternatively, you can install it manually by following these steps:</p> <ol> <li>Download the latest release from the releases page</li> <li>Extract the archive to the <code>apps</code> or <code>custom_apps</code> directory of your Nextcloud installation.</li> <li>Enable the app in the Nextcloud app settings page.</li> <li>Make sure you follow the configuration instructions carefully.</li> </ol>"},{"location":"install/#installing-from-source","title":"Installing from source","text":"<p>To build the app from source, you need to have node.js installed.</p> <ol> <li>Clone the repository to the <code>apps</code> or <code>custom_apps</code> directory of Nextcloud.</li> <li>Run <code>make dev-setup</code> to install the dependencies.</li> <li>Run <code>make patch-external</code> to apply patches to external dependencies.</li> <li>Run <code>make build-js-production</code> to build the JavaScript files.</li> <li>Enable the app in the Nextcloud app settings page.</li> </ol>"},{"location":"install/#mobile-apps","title":"Mobile Apps","text":"<p>An Android client for Memories is available in early access on Google Play or GitHub Releases.</p> <p>For automatic uploads, you can use the official Nextcloud mobile apps. These are available for Android (F-Droid) and iOS.</p>"},{"location":"memories-vs-photos/","title":"Memories vs Photos","text":"<p>Nextcloud comes bundled with an official Photos app. This page provides a brief feature comparison between Memories and Photos, and links some relevant issues in the Photos repository.</p>"},{"location":"memories-vs-photos/#features-in-memories-missing-in-photos","title":"Features in Memories missing in Photos","text":"<ol> <li>Sorting by Date Taken: The Photos app sorts images and videos by the file modification time. Memories uses the EXIF data to get the Date Taken, providing for the correct sort order regardless if the files are edited / touched later (issue).</li> <li>Scrubbable Timeline: Both apps provide an infinite virtual scroll. However, Photos has no way to jump at any time in the past, and you need to scroll through all photos to get to any point. Memories provides a scroller to directly jump to any date in the timeline (issue).</li> <li>Limiting to a single root for Photos: Memories can scan through photos in a single (or multiple) directory. Photos scans everything the user has (issue).</li> <li>Video Transcoding: Memories supports all video file formats with live adaptive transcoding, along with quality selection. Photos only supports videos compatible with the user's browser at full resolution.</li> <li>Archive: Allows separating photos to a different folder quickly. Photos has no equivalent function.</li> <li>External Folder Sharing: Allows sharing a folder to non-Nextcloud users. Photos has no equivalent function (issue).</li> <li>EXIF Data Editing: Memories allows basic editing of EXIF data including fields such as date taken, title, description etc. Photos has no equivalent function.</li> <li>Support for iOS / Google / Samsung Live Photos: Memories supports live photos, Photos does not. (issue, issue)</li> <li>Advanced Multi-Selection: Memories supports all multi-selection methods including selecting a day, selecting with Shift+Click and with Touch+Drag. Photos does not support these (issue, issue)</li> <li>Viewer Gestures: Memories provides a superior photo viewer experience, including gestures such as zoom in and out using touch.</li> <li>Preview pipelining: For maximum performance, Memories highly optimizes loading thumbnails, whereas Photos loads them one by one.</li> <li>Server-side image editing: The image editor in Memories works server-side allowing editing of large images and all formats (such as HEIC). The Photos image editor works client-side with HTML5 canvas, limiting it's capabilities and the quality of output.</li> </ol>"},{"location":"memories-vs-photos/#features-in-photos-missing-in-memories","title":"Features in Photos missing in Memories","text":"<ol> <li>Photos supports uploading photos directly, Memories does not (issue).</li> <li>Photos supports drawing on photos, Memories does not (issue).</li> <li>Photos shows which photos have been <code>Shared with you</code>. Memories does not (issue).</li> </ol>"},{"location":"occ-commands/","title":"OCC commands","text":"<p>Memories provides several OCC commands for administration. For usage of the <code>occ</code> command line, refer here for more information.</p> <p>OCCWeb</p> <p>The OCCWeb app is deprecated, and will not work with Memories. You must use the <code>occ</code> command line.</p>"},{"location":"occ-commands/#occ-memoriesindex","title":"<code>occ memories:index</code>","text":"<p>This is the basic command for indexing metadata in files. You don't need to run this in a cron job since this is handled as a background job automatically. You can use the index command to speed up indexing if you just installed the app or if you have a lot of files that are not indexed yet.</p> <p>Indexing in parallel</p> <p>You can run multiple processes of indexing in parallel, e.g. <code>for i in {1..4}; do (occ memories:index &amp;); done</code>. This will speed up indexing significantly.</p> <pre><code>Usage:\n memories:index [options]\n\nOptions:\n -u, --user=USER Index only the specified user\n -g, --group=GROUP Index only specified group\n --folder=FOLDER Index only the specified folder (relative to the user's root)\n -f, --force Force refresh of existing index entries\n --clear Clear all existing index entries\n --skip-cleanup Skip cleanup step (removing index entries with missing files)\n</code></pre> <p>Re-indexing</p> <p>Running the command again will NOT reindex everything. It will only index new files and update the index for changed files. If you really want to reindex everything, use the <code>--force</code> option or <code>--clear</code> to truncate all Memories tables before the index.</p>"},{"location":"occ-commands/#occ-memoriesplaces-setup","title":"<code>occ memories:places-setup</code>","text":"<p>Download and index the planet database. The planet database is the border map of the entire world and is used for reverse geocoding (not for the map). To use reverse geocoding, MySQL or Postgres is required.</p> <pre><code>Usage:\n memories:places-setup [options]\n\nOptions:\n -r, --recalculate Only recalculate places for existing files\n</code></pre>"},{"location":"occ-commands/#memoriesmigrate-google-takeout","title":"<code>memories:migrate-google-takeout</code>","text":"<p>Migrate Google Takeout JSON metadata to the files as EXIF data.</p> <pre><code>Usage:\n memories:migrate-google-takeout [options]\n\nOptions:\n -o, --override Override existing EXIF metadata\n -u, --user=USER Migrate only for the specified user\n -f, --folder=FOLDER Migrate only for the specified folder\n</code></pre> <p>Updates to files</p> <p>This command will modify the files in the user's data directory. Make sure you have a backup!</p>"},{"location":"privacy/","title":"Privacy","text":"Privacy Policy of Memories <p>Memories operates the memories.gallery website, which provides the SERVICE.</p> <p>This page is used to inform website visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service, the Memories website.</p> <p>If you choose to use our Service, then you agree to the collection and use of information in relation with this policy. The Personal Information that we collect are used for providing and improving the Service. We will not use or share your information with anyone except as described in this Privacy Policy.</p> <p>The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at memories.gallery, unless otherwise defined in this Privacy Policy.</p> Information Collection and Use <p>We do not collect any personally identifiable information. All information is stored on your device and on the servers you explicitly choose to connect to. We do not assume the responsibility for the security of data stored on external servers you connect to.</p> Log Data <p>We want to inform you that whenever you visit our Service, we collect information that your browser sends to us that is called Log Data. This Log Data may include information such as your computer's Internet Protocol (\"IP\") address, browser version, pages of our Service that you visit, the time and date of your visit, the time spent on those pages, and other statistics.</p> Cookies <p>Cookies are files with small amount of data that is commonly used an anonymous unique identifier. These are sent to your browser from the website that you visit and are stored on your computer's hard drive.</p> <p>This Service does not use these \u201ccookies\u201d explicitly. However, the app may use third-party code and libraries that use \u201ccookies\u201d to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.</p> Service Providers <p>We may employ third-party companies and individuals due to the following reasons:</p> <ul> <li>To facilitate our Service;</li> <li>To provide the Service on our behalf;</li> <li>To perform Service-related services; or</li> <li>To assist us in analyzing how our Service is used.</li> </ul> <p>We want to inform our Service users that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.</p> Security <p>We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.</p> Links to Other Sites <p>Our Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over, and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.</p> <p>Children's Privacy</p> <p>Our Services do not address anyone under the age of 13. We do not knowingly collect personal identifiable information from children under 13. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to do necessary actions.</p> Changes to This Privacy Policy <p>We may update our Privacy Policy from time to time. Thus, we advise you to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately, after they are posted on this page.</p> Contact Us <p>If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at support@radialapps.com.</p>"},{"location":"system-config/","title":"config.php options","text":"<p>This is a list of all options in <code>config.php</code> that memories uses</p> <pre><code>&lt;?php\n\npublic const DEFAULTS = [\n // Path to exiftool binary\n 'memories.exiftool' =&gt; '',\n\n // Do not use packaged binaries of exiftool\n // This requires perl to be available\n 'memories.exiftool_no_local' =&gt; false,\n\n // Temporary directory for non-php binaries. The directory must be writable\n // and the webserver user should be able to create executable binaries in it.\n // go-vod temp files are separately configured (memories.vod.tempdir)\n // Defaults to system temp directory if blank\n 'memories.exiftool.tmp' =&gt; '',\n\n // How to index user directories\n // 0 = auto-index disabled\n // 1 = index everything\n // 2 = index only user timelines\n // 3 = index only configured path\n 'memories.index.mode' =&gt; '1',\n\n // Path to index (only used if indexing mode is 3)\n 'memories.index.path' =&gt; '/',\n\n // Places database type identifier\n 'memories.gis_type' =&gt; -1,\n\n // Default timeline path for all users\n // If set to '_empty_', the user is prompted to select a path\n 'memories.timeline.default_path' =&gt; '_empty_',\n\n // Default viewer high resolution image loading condition\n // Valid values: 'always' | 'zoom' | 'never'\n 'memories.viewer.high_res_cond_default' =&gt; 'zoom',\n\n // Disable transcoding\n 'memories.vod.disable' =&gt; true,\n\n // VA-API configuration options\n 'memories.vod.vaapi' =&gt; false, // Transcode with VA-API\n 'memories.vod.vaapi.low_power' =&gt; false, // Use low_power mode for VA-API\n\n // NVENC configuration options\n 'memories.vod.nvenc' =&gt; false, // Transcode with NVIDIA NVENC\n 'memories.vod.nvenc.temporal_aq' =&gt; false,\n 'memories.vod.nvenc.scale' =&gt; 'cuda', // cuda or npp\n\n // Extra streaming configuration\n 'memories.vod.use_transpose' =&gt; false,\n 'memories.vod.use_gop_size' =&gt; false,\n\n // Paths to ffmpeg and ffprobe binaries\n 'memories.vod.ffmpeg' =&gt; '',\n 'memories.vod.ffprobe' =&gt; '',\n\n // Path to go-vod binary\n 'memories.vod.path' =&gt; '',\n\n // Path to use for transcoded files (/tmp/go-vod/instanceid)\n // Make sure this has plenty of space\n 'memories.vod.tempdir' =&gt; '',\n\n // Bind address to use when starting the transcoding server\n 'memories.vod.bind' =&gt; '127.0.0.1:47788',\n\n // Address used to connect to the transcoding server\n // If not specified, the bind address above will be used\n 'memories.vod.connect' =&gt; '127.0.0.1:47788',\n\n // Mark go-vod as external. If true, Memories will not attempt to\n // start go-vod if it is not running already.\n 'memories.vod.external' =&gt; false,\n\n // Quality Factor used for transcoding\n // This correspondes to CRF for x264 and global_quality for VA-API\n 'memories.vod.qf' =&gt; 24,\n\n // Set the default video quality for a first time user\n // 0 =&gt; Auto (default)\n // -1 =&gt; Original (max quality with transcoding)\n // -2 =&gt; Direct (disable transcoding)\n // 1080 =&gt; 1080p (and so on)\n 'memories.video_default_quality' =&gt; '0',\n\n // Memories only provides an admin interface for these\n 'enabledPreviewProviders' =&gt; [],\n 'preview_max_x' =&gt; 4096,\n 'preview_max_y' =&gt; 4096,\n 'preview_max_memory' =&gt; 128,\n 'preview_max_filesize_image' =&gt; 50,\n 'preview_ffmpeg_path' =&gt; '',\n\n // Placeholders only; these are not touched by the app\n 'instanceid' =&gt; 'default',\n];\n</code></pre>"},{"location":"troubleshooting/","title":"Troubleshooting","text":"<p>This page contains solutions to common problems. If you are facing any issues, please refer to this page before opening an issue.</p>"},{"location":"troubleshooting/#performance","title":"Performance","text":"<p>Nextcloud AIO</p> <p>If you are using AIO, these options should be configured by default.</p> <p>Memories is very fast, but its performance largely depends on how well the Nextcloud instance is tuned.</p> <ul> <li>Make sure you are running the latest stable version of Nextcloud and Memories.</li> <li>Follow the steps in the server tuning documentation.</li> <li> <p>Follow all configuration steps in the configuration documentation.</p> <ul> <li>Disable video transcoding if your server is not powerful enough.</li> <li>Reduce the maximum size of previews to be generated.</li> </ul> </li> <li> <p>Make sure you are running HTTPS (very important).</p> </li> <li>Enable HTTP/2 or HTTP/3 on your server.</li> <li>Enable and configure PHP Opcache and JIT.</li> <li>Enable and configure the APCu cache.</li> <li>Enable and configure Redis for transactional file locking.</li> <li>Enable gzip compression on your HTTP server for static assets (CSS/JS).</li> </ul>"},{"location":"troubleshooting/#no-photos-are-shown","title":"No photos are shown","text":"<p>This means that Memories is unable to find any indexed photos in your Nextcloud instance. Make sure you have followed the configuration steps. Note that Memories indexes photos in the background, so it may take a while for the photos to show up. Ensure that Nextcloud's cron system is properly configured and running.</p>"},{"location":"troubleshooting/#issues-with-docker","title":"Issues with Docker","text":"<p>Note: Using the community Nextcloud Docker image or AIO are the recommended ways of running Memories. If you are using a different image, you may run into issues. Please file any bugs you find on GitHub.</p>"},{"location":"troubleshooting/#occ-commands-fail","title":"OCC commands fail","text":"<p>The most common reason for this is a missing interactive TTY. Make sure you run the commands with <code>-it</code>:</p> <pre><code>docker exec -it my_nc_container php occ memories:index\n# ^^^ &lt;-- this is required\n</code></pre> <p>If you are using Nextcloud AIO, see this documentation.</p> <p>OCCWeb</p> <p>The OCCWeb app is deprecated, and will not work with Memories. You must use the <code>occ</code> command line.</p>"},{"location":"troubleshooting/#usage-of-tmpfs","title":"Usage of tmpfs","text":"<p>If you are using <code>tmpfs</code> (e.g. for the Recognize app), make sure the temp directory is set to executable. With Docker Compose, your <code>docker-compose.yml</code> should look like this:</p> <pre><code>app:\n ...\n tmpfs:\n - /tmp:exec\n</code></pre> <p><code>tpmfs</code> is automatically configured when using Nextcloud AIO v7.0.0.</p> <p>Changing the binary temp directory</p> <p>Alternatively, you may change the temp directory used for binary files to a different directory that is not mounted as <code>tmpfs</code>, and allows the executable bit to be set. Use this option with caution.</p> <pre><code>occ config:system:set memories.exiftool.tmp --value /path/to/temp/dir\n</code></pre>"},{"location":"troubleshooting/#issues-with-nixos","title":"Issues with NixOS","text":""},{"location":"troubleshooting/#background-index-fails","title":"Background index fails","text":"<p>When using the NixOS modules system for installation the indexer may fail on execution. In case the error is either <code>perl not found</code> or <code>failed to run exiftool: ...</code> it might be that the created <code>nextcloud-cron</code> services does not have access to a perl interpreter.</p> <p>In that case adding perl to the path of the <code>nextcloud-cron</code> service might solve the issue. It can be archived by adding the following snippet to the <code>configuration.nix</code></p> <pre><code>systemd.services.nextcloud-cron = {\n path = [pkgs.perl];\n};\n</code></pre>"},{"location":"troubleshooting/#reverse-geocoding-places","title":"Reverse Geocoding (Places)","text":"<p>You need to have a MySQL / MariaDB / Postgres database for reverse geocoding to work. SQLite is not supported.</p>"},{"location":"troubleshooting/#planet-db-download-fails","title":"Planet DB download fails","text":"<p>If the planet DB download does not complete via the admin interface, you need to use the OCC command line, or increase the connection timeout values for your PHP/HTTP servers.</p> <pre><code>occ memories:places-setup\n</code></pre>"},{"location":"troubleshooting/#error-incorrect-string-value","title":"Error: Incorrect string value","text":"<p>If you get this error (or an <code>Incorrect datetime value</code> error), it is likely that your database is not using the <code>utf8mb4</code> character set. Since the reverse geocoding database contains characters in various languages, it is necessary to use <code>utf8mb4</code> to store them. To fix this, you need to convert your database to use <code>utf8mb4</code>.</p> <p>You can also try changing <code>/etc/myt.cnf</code> in your MySQL/MariaDB server to use <code>utf8mb4</code> by default:</p> <pre><code>init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'\n</code></pre> <p>Restart your database server after making this change.</p>"},{"location":"troubleshooting/#transcoding","title":"Transcoding","text":"<p>Memories transcodes videos on the fly per-user. This saves space, but requires reasonably good hardware, preferably with hardware acceleration. Check the troubleshooting section here.</p>"},{"location":"troubleshooting/#reset","title":"Reset","text":"<p>If you want to completely reset Memories (e.g. for database trouble), uninstall it from the app store, then run the following SQL on your database to clean up any data. Note that this can have unintended consequences such as some files appearing as duplicates in the mobile app when you reinstall Memories.</p> <pre><code>DROP TABLE IF EXISTS oc_memories;\nDROP TABLE IF EXISTS oc_memories_livephoto;\nDROP TABLE IF EXISTS oc_memories_mapclusters;\nDROP TABLE IF EXISTS oc_memories_places;\nDROP TABLE IF EXISTS oc_memories_planet;\nDROP TABLE IF EXISTS memories_planet_geometry;\nDROP INDEX IF EXISTS memories_parent_mimetype ON oc_filecache; /* MySQL */\nDELETE FROM oc_migrations WHERE app='memories';\n</code></pre> <p>On Postgres, the syntax for dropping the index is:</p> <pre><code>DROP INDEX IF EXISTS memories_parent_mimetype;\n</code></pre> <p>Reinstallation</p> <p>The reset will clean up all data associated with Memories. While this is safe and will not delete your files, it can sometimes have unintended side effects, such as some files appearing as duplicates in the mobile apps when you reinstall. Try running <code>occ memories:index --force</code> before attempting a reset.</p>"},{"location":"troubleshooting/#instruction-set-change","title":"Instruction set change","text":"<p>If you move from x86 to ARM or vice versa, you need to reset the paths to the architecture specific binaries.</p> <pre><code>occ config:system:delete memories.exiftool\nocc config:system:delete memories.vod.path\nocc config:system:delete memories.vod.ffmpeg\nocc config:system:delete memories.vod.ffprobe\nocc maintenance:repair\n</code></pre>"}]}