photoprism/README.md

158 lines
7.8 KiB
Markdown
Raw Normal View History

2018-09-11 23:43:03 +02:00
PhotoPrism
==========
2018-08-23 14:44:21 +02:00
2018-09-08 10:13:49 +02:00
[![Powered By](https://img.shields.io/badge/powered%20by-Go,%20TensorFlow%20%26%20Vuetify-blue.svg)][powered by]
2018-09-07 12:06:09 +02:00
[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)][license]
2018-02-27 19:46:50 +01:00
[![Code Quality](https://goreportcard.com/badge/github.com/photoprism/photoprism)][code quality]
[![GitHub issues](https://img.shields.io/github/issues/photoprism/photoprism.svg)][issues]
2018-09-07 12:06:09 +02:00
[![Build Status](https://travis-ci.org/photoprism/photoprism.png?branch=master)][ci]
2018-02-27 19:46:50 +01:00
2018-09-07 11:53:46 +02:00
[powered by]: https://www.tensorflow.org/install/install_go
2018-09-07 12:06:09 +02:00
[license]: https://github.com/photoprism/photoprism/blob/master/LICENSE
2018-02-28 15:56:32 +01:00
[code quality]: https://goreportcard.com/report/github.com/photoprism/photoprism
2018-02-27 19:46:50 +01:00
[issues]: https://github.com/photoprism/photoprism/issues
2018-09-07 12:06:09 +02:00
[ci]: https://travis-ci.org/photoprism/photoprism
2018-02-27 19:46:50 +01:00
2018-09-16 19:09:40 +02:00
PhotoPrism is a server-based application for automatically tagging, searching and organizing digital photo collections.
2018-09-11 23:53:23 +02:00
It is functionally similar to popular cloud services such as [Flickr](https://www.flickr.com/) or [Google Photos](https://photos.google.com/).
2018-09-07 12:33:46 +02:00
Originals are stored in the file system in a structured way for easy backup and reliable long-term accessibility.
2018-02-27 19:46:50 +01:00
![](assets/docs/img/screenshot-detailview.jpg)
Overview
--------
2018-08-23 14:44:21 +02:00
2018-09-24 19:33:50 +02:00
Our goal is to provide the following features for the first release (tested as a proof-of-concept and partly implemented):
- Easy-to-use Web interface based on [Material Design](https://material.io/) (20% implemented)
- High-performance command line tool (80% implemented)
2018-08-23 14:44:21 +02:00
- No proprietary or binary data formats
2018-09-24 19:33:50 +02:00
- Automatic RAW to JPEG conversion (implemented using [Darktable](https://www.darktable.org/))
- Duplicate detection (RAW plus multiple JPEG files can be used simultaneously) (implemented)
- Automated tagging using [Google TensorFlow](https://www.tensorflow.org/install/install_go) (90% implemented)
- [Reverse geocoding](https://wiki.openstreetmap.org/wiki/Nominatim#Reverse_Geocoding) based on latitude and longitude (implemented using OpenStreetMap; support for Google Maps on the todo list)
- Image search with powerful filters (40% implemented)
- Albums to organize your photos (0% implemented)
- Easy backup and export (10% implemented)
2018-08-23 14:44:21 +02:00
2018-09-24 19:33:50 +02:00
Please ask if you have any questions and leave a star if you like this project. A more detailed documentation - also for non-developers - will follow.
2018-09-20 00:48:30 +02:00
2018-03-26 06:32:48 +02:00
Setup
-----
Before you start, make sure you got Git and Docker installed on your system.
Instead of using Docker, you can also setup your own runtime environment
2018-09-07 13:02:41 +02:00
based on the existing Docker configuration (not recommended).
2018-02-27 19:46:50 +01:00
2018-03-26 06:32:48 +02:00
**Step 1:** Run [Git](https://getcomposer.org/) to clone this project:
2018-02-27 20:17:13 +01:00
2018-03-26 06:32:48 +02:00
```
git clone git@github.com:photoprism/photoprism.git
```
2018-02-28 10:04:24 +01:00
2018-03-26 06:32:48 +02:00
**Step 2:** Start [Docker](https://www.docker.com/) containers:
2018-02-27 20:17:13 +01:00
2018-03-26 06:32:48 +02:00
```
cd photoprism
docker-compose up
```
2018-02-27 20:17:13 +01:00
2018-03-26 06:32:48 +02:00
*Note: This docker-compose configuration is for testing and development purposes only.*
2018-02-27 20:51:19 +01:00
2018-09-07 13:03:55 +02:00
**Step 3:** Open a terminal to run tests and commands:
2018-02-27 20:17:13 +01:00
```
2018-03-26 06:38:02 +02:00
docker-compose exec photoprism bash
2018-09-05 23:16:01 +02:00
make
make test
make install
go run cmd/photoprism/photoprism.go start
2018-02-27 20:17:13 +01:00
```
2018-09-07 13:02:41 +02:00
See [Quick and easy guide for migrating to Go 1.11 modules](https://blog.liquidbytes.net/2018/09/quick-and-easy-guide-for-migrating-to-go-1-11-modules/) for an introduction to Go Modules and Makefiles.
2018-09-18 10:41:47 +02:00
Directory Layout
----------------
The directory layout is loosely based on https://github.com/golang-standards/project-layout.
Assets like photos, built JavaScript/CSS files and HTML templates are located in `assets/` by default. You can configure individual paths in the config file, using environment variables or command flags.
Example configuration files can be found in `configs/`.
The frontend code is located in `frontend/`. Developers run `npm run dev` to watch files and automatically re-build them when changed.
All other paths contain Go source code and scripts used for building the application.
Web Frontend
------------
Open a terminal an type `photoprism start` to start the built-in server. It will listen on port 80 by default.
The UI is based on [Vuetify](https://vuetifyjs.com/en/), a Material Design component framework for Vue.js 2.
2018-09-18 10:41:47 +02:00
Command-line Interface
----------------------
Running `photoprism` without arguments displays usage hints:
```
NAME:
PhotoPrism - Digital Photo Archive
USAGE:
photoprism [global options] command [command options] [arguments...]
COMMANDS:
config Displays global configuration values
start Starts web server
2018-09-18 15:21:22 +02:00
migrate Automatically migrates / initializes database
2018-09-18 10:41:47 +02:00
import Imports photos
index Re-indexes all originals
convert Converts RAW originals to JPEG
thumbnails Creates thumbnails
export Exports photos as JPEG
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--debug run in debug mode [$PHOTOPRISM_DEBUG]
--config-file FILENAME, -c FILENAME load configuration from FILENAME (default: "/etc/photoprism/photoprism.yml") [$PHOTOPRISM_CONFIG_FILE]
--darktable-cli FILENAME darktable command-line executable FILENAME (default: "/usr/bin/darktable-cli") [$PHOTOPRISM_DARKTABLE_CLI]
--originals-path PATH originals PATH (default: "/var/photoprism/photos/originals") [$PHOTOPRISM_ORIGINALS_PATH]
--thumbnails-path PATH thumbnails PATH (default: "/var/photoprism/photos/thumbnails") [$PHOTOPRISM_THUMBNAILS_PATH]
--import-path PATH import PATH (default: "/var/photoprism/photos/import") [$PHOTOPRISM_IMPORT_PATH]
--export-path PATH export PATH (default: "/var/photoprism/photos/export") [$PHOTOPRISM_EXPORT_PATH]
--assets-path PATH assets PATH (default: "/var/photoprism") [$PHOTOPRISM_ASSETS_PATH]
--database-driver DRIVER database DRIVER (mysql, mssql, postgres or sqlite) (default: "mysql") [$PHOTOPRISM_DATABASE_DRIVER]
--database-dsn DSN database data source name (DSN) (default: "photoprism:photoprism@tcp(localhost:3306)/photoprism") [$PHOTOPRISM_DATABASE_DSN]
--help, -h show help
--version, -v print the version
```
2018-09-19 21:32:16 +02:00
### Example
```
# ./photoprism import
Importing photos from /photos/import...
Moving main raw file "Canon 6D South Africa 2018/IMG_2171.CR2" to "/photos/originals/2017/12/20171226_093058_8BA53355C9BF.cr2"
Converting "/photos/originals/2017/12/20171226_093058_8BA53355C9BF.cr2" to "/photos/originals/2017/12/20171226_093058_8BA53355C9BF.jpg"
Added main raw file "2017/12/20171226_093058_8BA53355C9BF.cr2"
Added related jpg file "2017/12/20171226_093058_8BA53355C9BF.jpg"
Moving main raw file "Canon 6D South Africa 2018/IMG_2172.CR2" to "/photos/originals/2017/12/20171226_093107_B522D1D35DD7.cr2"
Converting "/photos/originals/2017/12/20171226_093107_B522D1D35DD7.cr2" to "/photos/originals/2017/12/20171226_093107_B522D1D35DD7.jpg"
Added main raw file "2017/12/20171226_093107_B522D1D35DD7.cr2"
Added related jpg file "2017/12/20171226_093107_B522D1D35DD7.jpg"
Moving main raw file "Canon 6D South Africa 2018/IMG_2173.CR2" to "/photos/originals/2017/12/20171226_093117_E1EEE95F488F.cr2"
Converting "/photos/originals/2017/12/20171226_093117_E1EEE95F488F.cr2" to "/photos/originals/2017/12/20171226_093117_E1EEE95F488F.jpg"
Added main raw file "2017/12/20171226_093117_E1EEE95F488F.cr2"
Added related jpg file "2017/12/20171226_093117_E1EEE95F488F.jpg"
Moving main raw file "Canon 6D South Africa 2018/IMG_2174.CR2" to "/photos/originals/2017/12/20171226_093120_9D205FF627B3.cr2"
Converting "/photos/originals/2017/12/20171226_093120_9D205FF627B3.cr2" to "/photos/originals/2017/12/20171226_093120_9D205FF627B3.jpg"
Added main raw file "2017/12/20171226_093120_9D205FF627B3.cr2"
Added related jpg file "2017/12/20171226_093120_9D205FF627B3.jpg"
Deleted empty directory "/photos/import/Canon 6D South Africa 2018"
Done.
```
2018-08-23 14:44:21 +02:00
Concept
-------
2018-03-26 06:32:48 +02:00
![](assets/docs/img/concept.jpg)