# Lychee - Very nice and polished UI - Supports multiple users - Supports U2F - Can import from local server path, URL or Dropbox - Supports creating and sharing nested albums!
- [Github repo](https://github.com/LycheeOrg/Lychee) - [Homepage](https://lycheeorg.github.io/) - [Docs](https://lycheeorg.github.io/docs/docker.html) ## nginx.conf This file is required to increase the upload size (from the default 20MB). Original can be found here: [default.conf](https://github.com/LycheeOrg/Lychee-Docker/blob/master/default.conf). This will increase the size to 1000MB (`upload_max_filesize` and `post_max_size`): ```conf user www-data; worker_processes auto; daemon off; error_log /var/log/nginx/error.log; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; # By default, if the processing of images takes more than 60s, # a 504 Gateway timeout occurs, so we increase the timeout here # to allow procesing of large images or when multiple images are # being processed at the same time. We set max_execution_time # below to the same value. fastcgi_read_timeout 3600; # We also set the send timeout since this can otherwise also cause # issues with slow connections fastcgi_send_timeout 3600; gzip on; server { root /var/www/html/Lychee/public; listen 80; server_name localhost; client_max_body_size 100M; # serve static files directly location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; expires max; log_not_found off; } # removes trailing slashes (prevents SEO duplicate content issues) if (!-d $request_filename) { rewrite ^/(.+)/$ /$1 permanent; } # If the request is not for a valid file (image, js, css, etc.), send to bootstrap if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?/$1 last; break; } location / { index index.php try_files $uri $uri/ /index.php?$query_string; } # Serve /index.php through PHP location = /index.php { fastcgi_split_path_info ^(.+?\.php)(/.*)$; try_files $uri $document_root$fastcgi_script_name =404; # Mitigate https://httpoxy.org/ vulnerabilities fastcgi_param HTTP_PROXY ""; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "post_max_size=1000M max_execution_time=3600 upload_max_filesize=1000M memory_limit=1024M"; fastcgi_param PATH /usr/local/bin:/usr/bin:/bin; include fastcgi_params; } # Deny access to other .php files, rather than exposing their contents location ~ [^/]\.php(/|$) { return 403; } } } ``` ## docker-compose.yml ```yml --- version: '3' services: lychee_db: container_name: lychee_db image: mariadb:10 restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=lychee123 - MYSQL_DATABASE=lychee - MYSQL_USER=lychee - MYSQL_PASSWORD=lychee123 expose: - 3306 volumes: - ./db:/var/lib/mysql lychee: image: lycheeorg/lychee container_name: lychee restart: unless-stopped depends_on: - lychee_db ports: - 3123:80 volumes: - ./lychee/conf:/conf - ./lychee/uploads:/uploads - ./lychee/sym:/sym - ./nginx.conf:/etc/nginx/nginx.conf environment: - PUID=1000 - PGID=1000 - PHP_TZ=Europe/Dublin - DB_CONNECTION=mysql - DB_HOST=lychee_db - DB_PORT=3306 - DB_DATABASE=lychee - DB_USERNAME=lychee - DB_PASSWORD=lychee123 - STARTUP_DELAY=0 #- APP_NAME=Laravel #- APP_ENV=local #- APP_URL=http://localhost #- CACHE_DRIVER=file #- SESSION_DRIVER=file #- SESSION_LIFETIME=120 #- QUEUE_DRIVER=sync #- REDIS_HOST=127.0.0.1 #- REDIS_PASSWORD=null #- REDIS_PORT=6379 #- MAIL_DRIVER=smtp #- MAIL_HOST=smtp.mailtrap.io #- MAIL_PORT=2525 #- MAIL_USERNAME=null #- MAIL_PASSWORD=null #- MAIL_ENCRYPTION=null ``` **Note:** when you open the url first time (e.g. http://localhost:3123) you will see an installer. There should be no need to change anything there, and just clicking "Next" should work.