Skip to main content

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 (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

  1. Open Portainer → Stacks → Add Stack

  2. Upload the two files (docker-compose.yml and stack.env)

  3. Set stack name to lychee6

  4. 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:
      - lychee6_db
      - lychee6_redis
    networks:
      - lychee6_net
    restart: unless-stopped

networks:
  lychee6_net:
    name: lychee6_net

4️⃣ Déploiement avec Portainer

  1. Portainer → Stacks → Add Stack

  2. Importer docker-compose.yml + stack.env

  3. Nommer la stack : lychee6

  4. 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