Lychee 6
🇬🇧 Lychee 6 Docker Guide (on Debian + Portainer)
1️⃣ Folder structure
Create a clean Docker layout:
#-mkdir ------------------------------------------p /srv/dev-disk-by-uuid-76493abc-7cd4-4b00-927c-8b2bef740dd4/Files/Lychee6/{conf,uploads,sym,logs,tmp,db,cache}
cd /srv/dev-disk-by-uuid-76493abc-7cd4-4b00-927c-8b2bef740dd4/Files/Lychee6
2️⃣ Environment file (stack.env)
PUID=998
PGID=100
TIMEZONE=Europe/Paris
APP_URL=https://lychee.domain.tld
APP_FORCE_HTTPS=true
# Database
DB_DATABASE=lychee
DB_USERNAME=lychee
DB_PASSWORD=lychee_pass
DB_ROOT_PASSWORD=root_lychee_pass
# Redis
CACHE_DRIVER=redis
REDIS_HOST=lychee6_redis
REDIS_PORT=6379
REDIS_PASSWORD= # leave empty
REDIS_USERNAME=default
3️⃣ Docker Compose #file @RobLandry(docker-compose.yml)
version: '3'"3.8"
services:
lychee_db:lychee6_redis:
image: redis:alpine
container_name: lychee_dblychee6_redis
hostname: lychee6_redis
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
user: "998:100"
env_file:
- stack.env
networks:
- lychee6_net
volumes:
- ./cache:/data:rw
restart: unless-stopped
lychee6_db:
image: mariadb:10
container_name: lychee6_db
hostname: lychee6_db
security_opt:
- no-new-privileges:true
env_file:
- stack.env
environment:
- MYSQL_ROOT_PASSWORD=<ROOT_PASSWORD>${DB_ROOT_PASSWORD}
- MYSQL_DATABASE=lychee${DB_DATABASE}
- MYSQL_USER=lychee${DB_USERNAME}
- MYSQL_PASSWORD=<LYCHEE_PASSWORD>
expose:
- 3306${DB_PASSWORD}
volumes:
- mysql:./db:/var/lib/mysql
networks:
- lycheelychee6_net
restart: unless-stopped
lychee:lychee6_app:
image: lycheeorg/lychee
container_name: lycheelychee6_app
hostname: lychee6_app
security_opt:
- no-new-privileges:true
ports:
- 90:7997:80
volumes:
- ./lychee/conf:/conf
- ./lychee/uploads:/uploads
- ./lychee/sym:/sym
- ./lychee/logs:/logs
networks:- ./tmp:/lychee-tmp
env_file:
- lycheestack.env
environment:
#-- PUID=998
#- PGID=100
# PHP timezone e.g. PHP_TZ=America/New_York${PUID}
- PHP_TC=Europe/ParisPGID=${PGID}
- PHP_TZ=${TIMEZONE}
- TIMEZONE=Europe/Paris${TIMEZONE}
#- APP_NAME=Laravel
#- APP_ENV=local
#- APP_FORCE_HTTPS=false
#- APP_DEBUG=true
#-- APP_URL=http://localhost${APP_URL}
- DB_CONNECTION=mysql
- DB_HOST=lychee_dblychee6_db
- DB_PORT=3306
- DB_DATABASE=lychee${DB_DATABASE}
- DB_USERNAME=lychee${DB_USERNAME}
- DB_PASSWORD=<LYCHEE_PASSWORD>${DB_PASSWORD}
#- DB_PASSWORD_FILE=<filename>
#- DB_OLD_LYCHEE_PREFIX=''
#-- CACHE_DRIVER=fileredis
#- SESSION_DRIVER=file
#- SESSION_LIFETIME=120
#- SECURITY_HEADER_HSTS_ENABLE=false
#-- REDIS_HOST=127.0.0.1lychee6_redis
#- REDIS_PASSWORD=null
#- REDIS_PASSWORD_FILE=<filename>
#-- REDIS_PORT=6379
#-- MAIL_DRIVER=smtpREDIS_PASSWORD= #-# MAIL_HOST=smtp.mailtrap.ioleave #-empty
MAIL_PORT=2525- #- MAIL_USERNAME=null
#- MAIL_PASSWORD=null
#- MAIL_PASSWORD_FILE=<filename>
#- MAIL_ENCRYPTION=nullREDIS_USERNAME=default
- STARTUP_DELAY=30
#- SKIP_PERMISSIONS_CHECKS=false
depends_on:
- ADMIN_USER=admin
#lychee6_db
- ADMIN_PASSWORD=<ADMIN_PASSWORD>lychee6_redis
#networks:
- ADMIN_PASSWORD_FILE=<filename>lychee6_net
restart: unless-stopped
networks:
lychee6_net:
name: lychee6_net
4️⃣ Deployment via Portainer
-
Open Portainer → Stacks → Add Stack
-
Upload the two files (
docker-compose.ymlandstack.env) -
Set stack name to lychee6
-
Deploy.
5️⃣ First run / Admin account
-
Access locally first:
http://your-server-ip:7997
→ Create your admin account here (Lychee rejects domain if SSL not active yet). -
Once the admin is created, switch to your domain:
https://lychee.domain.tld
🇫🇷 Guide Lychee 6 Docker (Debian + Portainer)
1️⃣ Arborescence Docker propre
mkdir -p /srv/dev-disk-by-uuid-76493abc-7cd4-4b00-927c-8b2bef740dd4/Files/Lychee6/{conf,uploads,sym,logs,tmp,db,cache}
cd /srv/dev-disk-by-uuid-76493abc-7cd4-4b00-927c-8b2bef740dd4/Files/Lychee6
2️⃣ Fichier stack.env
PUID=998
PGID=100
TIMEZONE=Europe/Paris
APP_URL=https://lychee.domain.tld
APP_FORCE_HTTPS=true
DB_DATABASE=lychee
DB_USERNAME=lychee
DB_PASSWORD=lychee_pass
DB_ROOT_PASSWORD=root_lychee_pass
CACHE_DRIVER=redis
REDIS_HOST=lychee6_redis
REDIS_PORT=6379
REDIS_PASSWORD= # leave empty
REDIS_USERNAME=default
3️⃣ Fichier docker-compose.yml
version: "3.8"
services:
lychee6_redis:
image: redis:alpine
container_name: lychee6_redis
hostname: lychee6_redis
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
user: "998:100"
env_file:
- stack.env
networks:
- lychee6_net
volumes:
- ./cache:/data:rw
restart: unless-stopped
lychee6_db:
image: mariadb:10
container_name: lychee6_db
hostname: lychee6_db
security_opt:
- no-new-privileges:true
env_file:
- stack.env
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- MYSQL_DATABASE=${DB_DATABASE}
- MYSQL_USER=${DB_USERNAME}
- MYSQL_PASSWORD=${DB_PASSWORD}
volumes:
- ./db:/var/lib/mysql
networks:
- lychee6_net
restart: unless-stopped
lychee6_app:
image: lycheeorg/lychee
container_name: lychee6_app
hostname: lychee6_app
security_opt:
- no-new-privileges:true
ports:
- 7997:80
volumes:
- ./conf:/conf
- ./uploads:/uploads
- ./sym:/sym
- ./logs:/logs
- ./tmp:/lychee-tmp
env_file:
- stack.env
environment:
- PUID=${PUID}
- PGID=${PGID}
- PHP_TZ=${TIMEZONE}
- TIMEZONE=${TIMEZONE}
- APP_URL=${APP_URL}
- DB_CONNECTION=mysql
- DB_HOST=lychee6_db
- DB_PORT=3306
- DB_DATABASE=${DB_DATABASE}
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
- CACHE_DRIVER=redis
- REDIS_HOST=lychee6_redis
- REDIS_PORT=6379
- REDIS_PASSWORD= # leave empty
- REDIS_USERNAME=default
- STARTUP_DELAY=30
- SKIP_PERMISSIONS_CHECKS=false
depends_on:
- lychee_dblychee6_db
- lychee6_redis
networks:
lychee:- volumes:lychee6_net
mysql:restart: unless-stopped
networks:
lychee6_net:
name: lychee6_net
4️⃣ Déploiement avec Portainer
-
ChangePortainerlanding→backgroundStacks → Add Stack -
Importer
docker-compose.yml+stack.env -
Nommer la stack :
settings > more > landing_background > uploads/background/pic.jpglychee6 -
from
5️⃣ Création de l’admin
-
Accéder d’abord en local :
Lycheehttp://IP-serveur:7997
→canCréerimportlephotoscomptefromadminthe command line usingphp artisan lychee:sync /path/to/import. Folders in this path will be converted to albums, and subfolders as subalbums usingphp artisan lychee:sync /path/to/import --album_id="album ID".
ici.sudo
Change Max Filesize
apt-get update
apt-get install nanocd /etc/php/8.2/clinano php.iniEnsuite seulement, se connecter via :Change "post_max_size = 8M" and "upload_max_filesize = 2M"https://lychee.domain.tld
apt-get