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
TRUSTED_PROXIES=YOURREVERSEPROXYSERVERADRESSE #eg 192.168.1.101
3️⃣ Docker Compose file (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:
- lychee6_db
- lychee6_redis
networks:
- 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
TRUSTED_PROXIES=YOURREVERSEPROXYSERVERADRESSE #eg 192.168.1.101
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:
- lychee6_db
- lychee6_redis
networks:
- lychee6_net
restart: unless-stopped
networks:
lychee6_net:
name: lychee6_net
4️⃣ Déploiement avec Portainer
-
Portainer → Stacks → Add Stack
-
Importer
docker-compose.yml+stack.env -
Nommer la stack : lychee6
-
Déployer.
5️⃣ Création de l’admin
-
Accéder d’abord en local :
http://IP-serveur:7997
→ Créer le compte admin ici. -
Ensuite seulement, se connecter via :
https://lychee.domain.tld